From a3a6c17b3d7520205592292a50735af8ef596e02 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:38:25 -0600 Subject: [PATCH 001/175] Merge roc-6.1.x into docs/6.1.0 (#3055) * update manifest file for ROCm6.1 (#3024) Co-authored-by: Wang, Yanyao * Add ROCm version 6.1.0 to version list (#3023) (#3025) * Merge develop into roc-6.1.x (#3048) * Add ROCm version 6.1.0 to version list (#3023) * Update CHANGELOG.md Added GitHub links to Changelog * Update CHANGELOG.md * Update manifest for ROCm 6.1.0 (#3022) * Reorganize default.xml by group and alphabetically * Add rocDecode to default.xml * Add rocDecode to included names in tag script * update tag to 6.1.0 --------- Co-authored-by: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> * Update CHANGELOG.md Updated ROCm Compiler with fixed issue * docs(tools/autotag/README.md): Add additional note to avoid duplicating data in changelog template (#3018) * Bump rocm-docs-core from 0.38.1 to 1.0.0 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.38.1 to 1.0.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.38.1...v1.0.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Use Ubuntu 22.04 and Python 3.10 in RTD config * Update README.md (#3043) * Update README.md Fix rocSPARSE build link * Update link to just general page, instead of anchor * Add 'JAX for ROCm' link to index.md (#3034) * Add JAX for ROCm link to index.md * Reorder third-party libraries installation guides in index * Update links to rocAL component (#3033) * Update links to rocAL component * Change absolute rocm docs links to relative * Update compatibility/precision-support links (#3030) * Change links to component data type support pages from absolute to relative * Fix rocPRIM data type support links * Empty commit to trigger demo rebuild. * Update excluded and included projects * Separate templates into a module; Fix MIVisionX template * Add hipfort changelog processor * Add rpp custom processor * Add custom processor for rvs * update the code-owner list (#3046) * Update default.xml (#3038) * Remove HIPCC from default.xml HIPCC moved into llvm-project * Remove ROCm-Device-Libs from default.xml ROCm-Device-Libs was moved into llvm-project * Remove ROCm-CompilerSupport from default.xml ROCm-CompilerSupport was moved into llvm-project * Add rocprofiler-register to default.xml Added in 6.1 manifest * Apply mathlibs group to projects in manifest * Bump rocm-docs-core from 0.38.1 to 1.0.0 in /docs/sphinx (#3047) * Bump rocm-docs-core from 0.38.1 to 1.0.0 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.38.1 to 1.0.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.38.1...v1.0.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Set Ubuntu 22.04 and Python 3.10 in ReadtheDocs config --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sam Wu <22262939+samjwu@users.noreply.github.com> * Add 6.1.0.md template * Add AMD SMI to 6.1.0 template * Add ROCm Compiler to 6.1.0 template * Add RDC to 6.1.0 template * Add ROCgdb to 6.1.0 template * Add ROCm SMI to 6.1.0 template * Add ROCProfiler to 6.1.0 template * Add MI200 SR-IOV known issue to 6.1.0 template * Add MI300 RAS fixed defect to 6.1.0 template * docs(6.1.0.md): Add more changelog notes for 6.1.0 * Update 6.1.0.md Added links to GitHub for known issues and ROCm Compiler fixed defect * Test autotag script * Add ck template * Add HIPIFY to included names for tag script * Remove rocprofiler from tag_script * Remove RVS template Determine cause of missing later * Add HIPIFY to template for 6.1.0 * Add extra line to topp of template for formatting changelog * Update 5.7.1.md Fixing the broken link for rocBLAS programmer's guide in 5.7.1 Changelog. * Regenerate changelog with new 5.7.1 link fix * Add note for tag_script included_names * Improve readability of GPU architecture hardware specs (#3009) * move units of measurement to table headers * add glossary explaining table headers * add missed units and update h1 * toc listing to say indicate Accelerators & GPUs * fix typo * update meta description and keywords * Update title in toc to fit in sidebar * update title, toc, and filename * Fix broken link to HIP programming guide * Revert "update title, toc, and filename" This reverts commit 6b9e687805692d3815bea3537e6eb5557710c25a. * Revert glossary; slight fixes * Change 'Pro' to 'PRO' for consistency * Add references to programming and hardware architecture guides * Change 'warp' to 'wavefront' --------- Signed-off-by: dependabot[bot] Co-authored-by: Roopa Malavally <56051583+Rmalavally@users.noreply.github.com> Co-authored-by: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: peter Co-authored-by: amitkumar-amd <120512306+amitkumar-amd@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] Co-authored-by: Yanyao Wang Co-authored-by: Wang, Yanyao Co-authored-by: Roopa Malavally <56051583+Rmalavally@users.noreply.github.com> Co-authored-by: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: peter Co-authored-by: amitkumar-amd <120512306+amitkumar-amd@users.noreply.github.com> --- .github/CODEOWNERS | 2 +- .readthedocs.yaml | 4 +- CHANGELOG.md | 2022 +++++++++++------ default.xml | 58 +- docs/reference/gpu-arch-specs.rst | 767 +++---- docs/sphinx/requirements.in | 2 +- docs/sphinx/requirements.txt | 6 +- tools/autotag/README.md | 2 +- tools/autotag/tag_script.py | 18 +- tools/autotag/templates/rocm_changes/5.7.1.md | 2 +- tools/autotag/templates/rocm_changes/6.1.0.md | 319 +++ tools/autotag/util/__init__.py | 2 +- .../autotag/util/custom_templates/__init__.py | 0 tools/autotag/util/custom_templates/ck.py | 41 + .../autotag/util/custom_templates/hipfort.py | 42 + .../util/{ => custom_templates}/mivisionx.py | 24 +- tools/autotag/util/custom_templates/rpp.py | 42 + 17 files changed, 2192 insertions(+), 1161 deletions(-) create mode 100644 tools/autotag/templates/rocm_changes/6.1.0.md create mode 100644 tools/autotag/util/custom_templates/__init__.py create mode 100644 tools/autotag/util/custom_templates/ck.py create mode 100644 tools/autotag/util/custom_templates/hipfort.py rename tools/autotag/util/{ => custom_templates}/mivisionx.py (67%) mode change 100755 => 100644 create mode 100644 tools/autotag/util/custom_templates/rpp.py diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 77f50cd99..5d678c763 100755 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,4 @@ -* @saadrahim @Rmalavally @amd-aakash @jlgreathouse @samjwu @MathiasMagnus @ROCm/rocm-documentation +* @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation # Documentation files docs/* @ROCm/rocm-documentation *.md @ROCm/rocm-documentation diff --git a/.readthedocs.yaml b/.readthedocs.yaml index fd918a157..8ebe82a90 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -13,6 +13,6 @@ python: - requirements: docs/sphinx/requirements.txt build: - os: ubuntu-20.04 + os: ubuntu-22.04 tools: - python: "3.8" + python: "3.10" diff --git a/CHANGELOG.md b/CHANGELOG.md index 69d9f78ba..8d51867d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,7 +27,7 @@ performance of AMD Instinct™ MI300 GPU applications. Notably, we've added: YUV frames in video memory. With decoded frames in video memory, you can run video post-processing using ROCm HIP, avoiding unnecessary data copies via the PCIe bus. - To learn more, refer to our + To learn more, refer to the rocDecode [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). ### OS and GPU support changes @@ -60,109 +60,6 @@ environments where legacy `DT_RPATH` is the preferred form of linking (instead o do **not** recommend trying to install both sets of packages. ``` -### Library changes in ROCm 6.1.0 - -| Library | Version | -|---------|---------| -| AMDMIGraphX | 2.8 ⇒ [2.9](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.1.0) | -| hipBLAS | 2.0.0 ⇒ [2.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.1.0) | -| hipBLASLt | [0.7.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.1.0) | -| hipCUB | 3.0.0 ⇒ [3.1.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.1.0) | -| hipFFT | 1.0.13 ⇒ [1.0.14](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.1.0) | -| hipRAND | [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.1.0) | -| hipSOLVER | 2.0.0 ⇒ [2.1.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.1.0) | -| hipSPARSE | 3.0.0 ⇒ [3.0.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.1.0) | -| hipSPARSELt | [0.2.0](https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.1.0) | -| hipTensor | 1.1.0 ⇒ [1.2.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.1.0) | -| MIOpen | 2.19.0 ⇒ [3.1.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.1.0) | -| rccl | [2.18.6](https://github.com/ROCm/rccl/releases/tag/rocm-6.1.0) | -| rocALUTION | 3.0.3 ⇒ [3.1.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.1.0) | -| rocBLAS | 4.0.0 ⇒ [4.1.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.1.0) | -| rocDecode | [0.5.0](https://github.com/ROCm/rocDecode/releases/tag/rocm-6.1.0) | -| rocFFT | 1.0.25 ⇒ [1.0.26](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.1.0) | -| rocm-cmake | 0.11.0 ⇒ [0.12.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.1.0) | -| rocPRIM | 3.0.0 ⇒ [3.1.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.1.0) | -| rocRAND | 3.0.0 ⇒ [3.0.1](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.1.0) | -| rocSOLVER | 3.24.0 ⇒ [3.25.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.1.0) | -| rocSPARSE | 3.0.2 ⇒ [3.1.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.1.0) | -| rocThrust | 3.0.0 ⇒ [3.0.1](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.1.0) | -| rocWMMA | 1.3.0 ⇒ [1.4.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.1.0) | -| Tensile | 4.39.0 ⇒ [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.0) | - - -#### AMDMIGraphX - -MIGraphX 2.9 for ROCm 6.1.0 - -##### Additions - -* Added FP8 support -* Created a Docker file 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 RDNA -* 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` operations -* 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 -* Updated 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 - #### AMD SMI AMD SMI for ROCm 6.1.0 @@ -235,26 +132,6 @@ AMD SMI for ROCm 6.1.0 * bad pages results with "ValueError: NULL pointer access" * Some RDNA3 cards may enumerate to `Slot type = UNKNOWN` -#### Composable Kernel - -Composable Kernel for ROCm 6.1.0 - -##### Additions - -* Added generic instances for GEMM XDL operations -* Added gamma and beta parameters for the `layernorm` and `groupnorm` bwd operations -* Introduced wrapper sublibrary (limited functionality). -* Added an option to vary the number of warm-up cycles and iterations for ckProfiler - -##### Optimizations - -* New performance optimizations for GEMM operations on MI200 and MI300 architectures - -##### Fixes - -* Reduced the build time for most GPU architectures -* Fixed some conversion issues for FP8 data type - #### HIP HIP 6.1 for ROCm 6.1 @@ -291,289 +168,6 @@ HIP 6.1 for ROCm 6.1 Note that these complex operations are equivalent to corresponding types/functions on an NVIDIA platform. -#### rocRAND - -rocRAND 3.0.1 for ROCm 6.1.0 - -##### Fixes - -* Implemented workaround for regressions in XORWOW and LFSR on MI200. - -#### rocWMMA - -rocWMMA 1.4.0 for ROCm 6.1.0 - -##### 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 - -#### hipBLAS - -hipBLAS 2.1.0 for ROCm 6.1.0 - -##### 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`, `hipblasSetMathMode` - -##### Deprecations - -* `USE_CUDA` build option; instead, 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 - -#### hipTensor - -hipTensor 1.2.0 for ROCm 6.1.0 - -##### Additions - -* Added 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 - -#### hipBLASLt - -hipBLASLt 0.7.0 for ROCm 6.1.0 - -##### Additions - -* Extension APIs: - * `hipblasltExtSoftmax` - * `hipblasltExtLayerNorm` - * `hipblasltExtAMax` -* `GemmTuning` extension parameter to set split-k by user -* Support for mixed-precision datatype FP16/FP8 in with FP16 out - -#### hipCUB - -hipCUB 3.1.0 for ROCm 6.1.0 - -##### Changes - -* CUB backend references CUB and Thrust version 2.1.0. -* Updated `HIPCUB_HOST_WARP_THREADS` macro definition to match `host_warp_size` changes from - rocPRIM 3.0. -* Implemented `__int128_t` and `__uint128_t` support for `radix_sort`. - -##### Fixes - -* Fixed build issues with `rmake.py` on Windows when using VS 2017 15.8 or later due to a breaking fix - with extended aligned storage. - -##### Additions - -* Added interface `DeviceMemcpy::Batched` for batched `memcpy` from rocPRIM and CUB. - -#### hipFFT - -hipFFT 1.0.14 for ROCm 6.1.0 - -##### 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. - -#### HIPIFY - -HIPIFY for ROCm 6.1.0 - -##### Additions - -* CUDA 12.3.2 support -* cuDNN 8.9.7 support -* LLVM 17.0.6 support -* Full `hipSOLVER` support -* Full `rocSPARSE` support -* New option: `--amap`, which will hipify as much as possible, ignoring `--default-preprocessor` - behavior - -##### Fixes - -* Code blocks skipped by the preprocessor are no longer hipified under the `--default-preprocessor` - option - -#### hipSOLVER - -hipSOLVER 2.1.0 for ROCm 6.1.0 - -##### Additions - -* Added compatibility API with `hipsolverSp` prefix -* Added compatibility-only functions - * `csrlsvchol` - * `hipsolverSpScsrlsvcholHost`, `hipsolverSpDcsrlsvcholHost` - * `hipsolverSpScsrlsvchol`, `hipsolverSpDcsrlsvchol` -* Added rocSPARSE and SuiteSparse as optional dependencies to hipSOLVER (rocSOLVER backend - only). Use the `BUILD_WITH_SPARSE` CMake option to enable functionality for the `hipsolverSp` API - (on by default). -* Added hipSPARSE as an optional dependency to `hipsolver-test`. Use the `BUILD_WITH_SPARSE` - CMake option to enable tests of the `hipsolverSp` API (on by default). - -##### Changes - -* Relax array length requirements for GESVDA - -##### Fixes - -* Fixed incorrect singular vectors returned from GESVDA - -#### hipSPARSE - -hipSPARSE 3.0.1 for ROCm 6.1.0 - -##### Fixes - -* Fixes to the build chain - -#### hipSPARSELt - -hipSPARSELt 0.2.0 for ROCm 6.1.0 - -##### Additions - -* Support Matrix B is a Structured Sparsity Matrix. - -#### rocm-cmake - -rocm-cmake 0.12.0 for ROCm 6.1.0 - -##### Changes - -* ROCMSphinxDoc: Allow separate source and config directories. -* ROCMCreatePackage: Allow additional `PROVIDES` on header-only packages. -* ROCMInstallTargets: Don't install executable targets by default for ASAN builds. -* ROCMTest: Add RPATH for installed tests. -* Finalize rename to ROCmCMakeBuildTools - -##### Fixes - -* ROCMClangTidy: Fixed invalid list index. -* Test failures when ROCM_CMAKE_GENERATOR is empty. - -#### MIOpen - -MIOpen 3.1.0 for ROCm 6.1.0 - -##### Additions - -* 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 and backward data, and backward weight convolution solver with FP8/BFP8 -* Check for packed tensors for convolution solvers -* Integrated CK's layer norm -* Combined GoogleTests into single binary - -##### Fixes - -* Fix for backward passes bwd/wrw for CK group conv 3D -* Fixed out-of-bounds memory access: `ConvOclDirectFwdGen` -* Fixed build failure due to hipRTC - -##### Changes - -* Standardized workspace abstraction -* Use split CK libraries - -##### Removals - -* Clamping to MAX from CastTensor used in Bwd and WrW convolution - -#### RCCL - -RCCL 2.18.6 for ROCm 6.1.0 - -##### Changes - -* Compatibility with NCCL 2.18.6 - - -#### rocALUTION - -rocALUTION 3.1.1 for ROCm 6.1.0 - -##### 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 not currently support matrix sizes that exceed INT32 range -* `PairwiseAMG` might fail when building the hierarchy on certain input matrices - -#### rocBLAS - -rocBLAS 4.1.0 for ROCm 6.1.0 - -##### Additions - -* Level 1 and Level 1 Extension functions have additional ILP64 API for both C and FORTRAN (`_64` - name suffix) with `int64_t` function arguments. -* Cache flush timing for `gemm_ex`. - -##### Changes - -* Some Level 2 function argument names have changed 'm' to 'n' to match legacy BLAS, there was no - change in implementation. -* Standardized the use of non-blocking streams for copying results from device to host. - -##### Fixes - -* Fixed host-pointer mode reductions for non-blocking streams. - -#### rocFFT - -rocFFT 1.0.26 for ROCm 6.1.0 - -##### Changes - -* Multi-device FFTs now allow batch greater than 1 -* Multi-device, real-complex FFTs are now supported -* rocFFT now statically links libstdc++ when only `std::experimental::filesystem` is available (to guard - against ABI incompatibilities with newer libstdc++ libraries that include `std::filesystem`) - #### ROCm Compiler ROCm Compiler for ROCm 6.1.0 @@ -606,6 +200,8 @@ AddressSanitizer (ASan): * For ASan instrumented global, emit two symbols: one with actual size and the other with instrumented size. + [On GitHub](https://github.com/ROCm/ROCm/issues/2551) + ##### Known issues * Due to an issue within the `amd-llvm` compiler shipping with ROCm 6.1, HIPSTDPAR's interposition mode, which is enabled by `--hipstdpar-interpose-alloc` is currently broken. @@ -633,23 +229,6 @@ instruction at the end of a HIP kernel entry function, which caused the stepped is fixed in the ROCm 6.1 release. You can now step over the last instruction of any HIP kernel without debugger hangs or crashes. -#### rocDecode - -rocDecode 0.5.0 for ROCm 6.1.0 - -##### Additions -* AMDGPU package support - -##### Changes -* Set up updates -* README updates - -##### Optimizations -* Package dependencies - -##### Fixes -* Minor bug fixes and updates - #### ROCm SMI ROCm SMI for ROCm 6.1.0 @@ -702,13 +281,405 @@ ROCm SMI for ROCm 6.1.0 * Fixed `rocm-smi --showclkvolt` and `rocm-smi --showvc`, which were displaying 0 for overdrive and that the voltage curve is not supported. -#### rocPRIM +#### ROCProfiler + +ROCProfiler for ROCm 6.1.0 + +##### Fixes + +* Fixed ROCprofiler to match versioning changes in HIP Runtime +* Fixed plugins race condition +* Updated metrics to MI300 + +#### ROCm Validation Suite + +##### Known issue + +* In a future release, the ROCm Validation Suite P2P Benchmark and Qualification Tool (PBQT) tests will be optimized to meet the target bandwidth requirements for MI300X. + + [On GitHub](https://github.com/ROCm/ROCm/issues/3027) + +#### MI200 SR-IOV + +##### Known issue + +* Multimedia applications may encounter compilation errors in the MI200 Single Root Input/Output Virtualization (SR-IOV) environment. This is because MI200 SR-IOV does not currently support multimedia applications. + + [On GitHub](https://github.com/ROCm/ROCm/issues/3028) + +### AMD MI300A RAS + +#### Fixed defect + +##### GFX correctable and uncorrectable error inject failures + +* Previously, the AMD CPU Reliability, Availability, and Serviceability (RAS) installation encountered correctable and uncorrectable failures while injecting an error. + + This issue is resolved in the ROCm 6.1 release, and users will no longer encounter the GFX correctable error (CE) and uncorrectable error (UE) failures. + +### Library changes in ROCm 6.1.0 + +| Library | Version | +|---------|---------| +| AMDMIGraphX | 2.8 ⇒ [2.9](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.1.0) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-6.1.0) | +| hipBLAS | 2.0.0 ⇒ [2.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.1.0) | +| hipBLASLt | [0.7.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.1.0) | +| hipCUB | 3.0.0 ⇒ [3.1.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.1.0) | +| hipFFT | 1.0.13 ⇒ [1.0.14](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.1.0) | +| hipRAND | [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.1.0) | +| hipSOLVER | 2.0.0 ⇒ [2.1.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.1.0) | +| hipSPARSE | 3.0.0 ⇒ [3.0.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.1.0) | +| hipSPARSELt | [0.2.0](https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.1.0) | +| hipTensor | 1.1.0 ⇒ [1.2.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.1.0) | +| MIOpen | 2.19.0 ⇒ [3.1.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.1.0) | +| MIVisionX | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.1.0) | +| rccl | [2.18.6](https://github.com/ROCm/rccl/releases/tag/rocm-6.1.0) | +| rocALUTION | 3.0.3 ⇒ [3.1.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.1.0) | +| rocBLAS | 4.0.0 ⇒ [4.1.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.1.0) | +| rocDecode | [0.5.0](https://github.com/ROCm/rocDecode/releases/tag/rocm-6.1.0) | +| rocFFT | 1.0.25 ⇒ [1.0.26](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.1.0) | +| rocm-cmake | 0.11.0 ⇒ [0.12.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.1.0) | +| rocPRIM | 3.0.0 ⇒ [3.1.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.1.0) | +| rocRAND | 3.0.0 ⇒ [3.0.1](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.1.0) | +| rocSOLVER | 3.24.0 ⇒ [3.25.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.1.0) | +| rocSPARSE | 3.0.2 ⇒ [3.1.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.1.0) | +| rocThrust | 3.0.0 ⇒ [3.0.1](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.1.0) | +| rocWMMA | 1.3.0 ⇒ [1.4.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.1.0) | +| rpp | 1.4.0 ⇒ [1.5.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.1.0) | +| Tensile | 4.39.0 ⇒ [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.0) | + +#### AMDMIGraphX 2.9 + +MIGraphX 2.9 for ROCm 6.1.0 + +##### 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 + +#### hipBLAS 2.1.0 + +hipBLAS 2.1.0 for ROCm 6.1.0 + +##### 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 0.7.0 + +hipBLASLt 0.7.0 for ROCm 6.1.0 + +##### 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 + +#### hipCUB 3.1.0 + +hipCUB 3.1.0 for ROCm 6.1.0 + +##### 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 1.0.14 + +hipFFT 1.0.14 for ROCm 6.1.0 + +##### 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. + +#### hipSOLVER 2.1.0 + +hipSOLVER 2.1.0 for ROCm 6.1.0 + +##### Added + +- Added compatibility API with hipsolverSp prefix +- Added compatibility-only functions + - csrlsvchol + - hipsolverSpScsrlsvcholHost, hipsolverSpDcsrlsvcholHost + - hipsolverSpScsrlsvchol, hipsolverSpDcsrlsvchol +- Added rocSPARSE and SuiteSparse as optional dependencies to hipSOLVER (rocSOLVER backend only). Use the `BUILD_WITH_SPARSE` CMake option to enable + functionality for the hipsolverSp API (on by default). +- Added hipSPARSE as an optional dependency to hipsolver-test. Use the `BUILD_WITH_SPARSE` CMake option to enable tests of the hipsolverSp API (on by default). + +##### Changed + +- Relax array length requirements for GESVDA. + +##### Fixed + +- Fixed incorrect singular vectors returned from GESVDA. + +#### hipSPARSE 3.0.1 + +hipSPARSE 3.0.1 for ROCm 6.1.0 + +##### Fixes + +* Fixes to the build chain + +#### hipSPARSELt 0.2.0 + +hipSPARSELt 0.2.0 for ROCm 6.1.0 + +##### Added + +- Support Matrix B is a Structured Sparsity Matrix. + +#### hipTensor 1.2.0 + +hipTensor 1.2.0 for ROCm 6.1.0 + +##### 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 3.1.0 + +MIOpen 3.1.0 for ROCm 6.1.0 + +##### 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'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 + +#### rccl 2.18.6 + +RCCL 2.18.6 for ROCm 6.1.0 + +##### Changed + +- Compatibility with NCCL 2.18.6 + +#### rocALUTION 3.1.1 + +rocALUTION 3.1.1 for ROCm 6.1.0 + +##### 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 4.1.0 + +rocBLAS 4.1.0 for ROCm 6.1.0 + +##### Additions + +* Level 1 and Level 1 Extension functions have additional ILP64 API for both C and FORTRAN (_64 name suffix) with int64_t function arguments. +* Cache flush timing for gemm_ex. + +##### Changes + +* Some Level 2 function argument names have changed 'm' to 'n' to match legacy BLAS, there was no change in implementation. +* Standardized the use of non-blocking streams for copying results from device to host. + +##### Fixes + +* Fixed host-pointer mode reductions for non-blocking streams. + +#### rocDecode 0.5.0 + +rocDecode 0.5.0 for ROCm 6.1.0 + +##### Changes + +* Changed setup updates +* Added AMDGPU package support +* Optimized package dependencies +* Updated README + +##### Fixes + +* Minor bug fix and updates + +##### Tested Configurations + +* Linux distribution + * Ubuntu - `20.04` / `22.04` +* ROCm: + * rocm-core - `6.1.0.60100-28` + * amdgpu-core - `1:6.1.60100-1731559` +* FFMPEG - `4.2.7` / `4.4.2-0` +* rocDecode Setup Script - `V1.4` + +#### rocFFT 1.0.26 + +rocFFT 1.0.26 for ROCm 6.1.0 + +##### Changes + +* Multi-device FFTs now allow batch greater than 1 +* Multi-device, real-complex FFTs are now supported +* rocFFT now statically links libstdc++ when only `std::experimental::filesystem` is available (to guard + against ABI incompatibilities with newer libstdc++ libraries that include `std::filesystem`) + +#### rocm-cmake 0.12.0 + +rocm-cmake 0.12.0 for ROCm 6.1.0 + +##### Changed + +- ROCMSphinxDoc: Allow separate source and config directories. +- ROCMCreatePackage: Allow additional `PROVIDES` on header-only packages. +- ROCMInstallTargets: Don'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 3.1.0 rocPRIM 3.1.0 for ROCm 6.1.0 ##### Additions -* New primitives: `block_run_length_decode` and `batch_memcpy` +* New primitive: `block_run_length_decode` +* New primitive: `batch_memcpy` ##### Changes @@ -723,7 +694,7 @@ rocPRIM 3.1.0 for ROCm 6.1.0 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) +* Improved the performance of `match_any`, and `block_histogram` which uses it ##### Deprecations @@ -735,46 +706,41 @@ rocPRIM 3.1.0 for ROCm 6.1.0 * Build issues with `rmake.py` on Windows when using VS 2017 15.8 or later (due to a breaking fix with extended aligned storage) -#### ROCProfiler +#### rocRAND 3.0.1 -ROCProfiler for ROCm 6.1.0 +rocRAND 3.0.1 for ROCm 6.1.0 ##### Fixes -* Fixed ROCprofiler to match versioning changes in HIP Runtime -* Fixed plugins race condition -* Updated metrics to MI300 +* Implemented workaround for regressions in XORWOW and LFSR on MI200 -#### rocSOLVER +#### rocSOLVER 3.25.0 rocSOLVER 3.25.0 for ROCm 6.1.0 -##### Additions +##### Added -* EigenSolver routines for symmetric/hermitian matrices using Divide & 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 & Conquer and Jacobi - algorithm: - * SYGVDJ (with `batched` and `strided_batched` versions) - * HEGVDJ (with `batched` and `strided_batched` versions) +- Eigensolver routines for symmetric/hermitian matrices using Divide & 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 & Conquer and Jacobi algorithm: + - SYGVDJ (with batched and strided\_batched versions) + - HEGVDJ (with batched and strided\_batched versions) -##### Changes +##### Changed -* Relaxed array length requirements for GESVDX with `rocblas_srange_index` +- Relaxed array length requirements for GESVDX with `rocblas_srange_index`. -##### Removals +##### Removed -* Removed gfx803 and gfx900 from default build targets +- Removed gfx803 and gfx900 from default build targets. -##### Fixes +##### Fixed -* Corrected singular vector normalization in `BDSVDX` and `GESVDX` -* Fixed potential memory access fault in `STEIN`, `SYEVX/HEEVX`, `SYGVX/HEGVX`, `BDSVDX`, and - `GESVDX` +- 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 rocSPARSE 3.1.2 for ROCm 6.1.0 @@ -786,121 +752,106 @@ rocSPARSE 3.1.2 for ROCm 6.1.0 ##### Optimizations -* Triangular solve with multiple rhs (such as SpSM and csrsm) now calls SpSV, csrsv, etcetera when nrhs - equals 1 +* 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 rocThrust 3.0.1 for ROCm 6.1.0 ##### Fixes -* Ported a fix from Thrust 2.2 that ensures `thrust::optional` is trivially copyable +* Ported a fix from thrust 2.2 that ensures `thrust::optional` is trivially copyable. -#### Tensile +#### rocWMMA 1.4.0 + +rocWMMA 1.4.0 for ROCm 6.1.0 + +##### 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 1.5.0 + +rpp for ROCm 6.1.0 + +##### 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 4.40.0 Tensile 4.40.0 for ROCm 6.1.0 ##### Additions -* New `DisableKernelPieces` values to invalidate local read, local write, and global read -* Added Stream-K kernel generation, including two-tile Stream-K algorithm by setting `StreamK=3` -* New feature to allow testing Stream-K grid multipliers -* Added debug output to check occupancy for Stream-K -* Added reject condition for FractionalLoad + DepthU!=power of 2 -* New `TENSILE_DB` debugging value to dump the common kernel parameters -* Added 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 -* Added initialization type and general batched options to the `rocblas-bench` input creator script +- 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` +- 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 32-bit to 64-bit 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 +- 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) +- 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) -#### ROCm Validation Suite - -##### Known issue - -* In a future release, the ROCm Validation Suite P2P Benchmark and Qualification Tool (PBQT) tests will be optimized to meet the target bandwidth requirements for MI300X. - -#### MI200 SR-IOV - -##### Known issue - -* Multimedia applications may encounter compilation errors in the MI200 Single Root Input/Output Virtualization (SR-IOV) environment. This is because MI200 SR-IOV does not currently support multimedia applications. - -### AMD MI300A RAS - -#### Fixed defect - -##### GFX correctable and uncorrectable error inject failures - -* Previously, the AMD CPU Reliability, Availability, and Serviceability (RAS) installation encountered correctable and uncorrectable failures while injecting an error. - - This issue is resolved in the ROCm 6.1 release, and users will no longer encounter the GFX correctable error (CE) and uncorrectable error (UE) failures. +------------------- ## ROCm 6.0.2 - -The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU -applications. This release introduces several new driver features for system qualification on our partner -server offerings. - -### Library changes in ROCm 6.0.2 - -| Library | Version | -|---------|---------| -| AMDMIGraphX | ⇒ [2.8](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.0.2) | -| hipBLAS | ⇒ [2.0.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.0.2) | -| hipBLASLt | ⇒ [0.6.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.0.2) | -| hipCUB | ⇒ [3.0.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.0.2) | -| hipFFT | ⇒ [1.0.13](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.0.2) | -| hipRAND | ⇒ [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.0.2) | -| hipSOLVER | ⇒ [2.0.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.0.2) | -| hipSPARSE | ⇒ [3.0.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.0.2) | -| hipSPARSELt | ⇒ [0.1.0](https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.0.2) | -| hipTensor | ⇒ [1.1.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.0.2) | -| MIOpen | ⇒ [2.19.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.0.2) | -| rccl | ⇒ [2.15.5](https://github.com/ROCm/rccl/releases/tag/rocm-6.0.2) | -| rocALUTION | ⇒ [3.0.3](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.0.2) | -| rocBLAS | ⇒ [4.0.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.0.2) | -| rocFFT | ⇒ [1.0.25](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.0.2) | -| rocm-cmake | ⇒ [0.11.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.0.2) | -| rocPRIM | ⇒ [3.0.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.0.2) | -| rocRAND | ⇒ [3.0.0](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.0.2) | -| rocSOLVER | ⇒ [3.24.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.0.2) | -| rocSPARSE | ⇒ [3.0.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.0.2) | -| rocThrust | ⇒ [3.0.0](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.0.2) | -| rocWMMA | ⇒ [1.3.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.0.2) | -| Tensile | ⇒ [4.39.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.0.2) | +The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. #### hipFFT 1.0.13 @@ -911,6 +862,66 @@ hipFFT 1.0.13 for ROCm 6.0.2 * Removed the Git submodule for shared files between rocFFT and hipFFT; instead, just copy the files over (this should help simplify downstream builds and packaging) +### Library changes in ROCm 6.0.2 + +| Library | Version | +|---------|---------| +| AMDMIGraphX | [2.8](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.0.2) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-6.0.2) | +| hipBLAS | [2.0.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.0.2) | +| hipCUB | [3.0.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.0.2) | +| hipFFT | [1.0.13](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.0.2) | +| hipRAND | [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.0.2) | +| hipSOLVER | [2.0.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.0.2) | +| hipSPARSE | [3.0.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.0.2) | +| hipTensor | [1.1.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.0.2) | +| MIOpen | [2.19.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.0.2) | +| MIVisionX | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.0.2) | +| rccl | [2.15.5](https://github.com/ROCm/rccl/releases/tag/rocm-6.0.2) | +| rocALUTION | [3.0.3](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.0.2) | +| rocBLAS | [4.0.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.0.2) | +| rocFFT | [1.0.25](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.0.2) | +| rocm-cmake | [0.11.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.0.2) | +| rocPRIM | [3.0.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.0.2) | +| rocRAND | 2.10.17 ⇒ [3.0.0](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.0.2) | +| rocSOLVER | [3.24.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.0.2) | +| rocSPARSE | [3.0.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.0.2) | +| rocThrust | [3.0.0](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.0.2) | +| rocWMMA | [1.3.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.0.2) | +| rpp | [1.4.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.0.2) | +| Tensile | [4.39.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.0.2) | + +#### rocRAND 3.0.0 + +rocRAND 3.0.0 for ROCm 6.0.2 + +##### Changed + +- Generator classes from `rocrand.hpp` are no longer copyable, in previous versions these copies +would copy internal references to the generators and would lead to double free or memory leak errors. + These types should be moved instead of copied, and move constructors and operators are now defined + for them. + +##### Optimized + +- Improved MT19937 initialization and generation performance. + +##### Removed + +- Removed hipRAND submodule from rocRAND. hipRAND is now only available as a separate package. +- Removed references to and workarounds for deprecated hcc + +##### Fixed + +- `mt19937_engine` from `rocrand.hpp` is now move-constructible and move-assignable. Previously the +move constructor and move assignment operator was deleted for this class. +- Various fixes for the C++ wrapper header rocrand.hpp + - fixed the name of `mrg31k3p` it is now correctly spelled (was incorrectly named`mrg31k3a` in + previous versions). + - added missing `order` setter method for `threefry4x64` + - fixed the default ordering parameter for `lfsr113` +- Build error when using clang++ directly due to unsupported references to amdgpu-target + ------------------- ## ROCm 6.0.0 @@ -958,8 +969,6 @@ We've added a new ROCm meta package for easy installation of all ROCm core packa libraries. For example, the following command will install the full ROCm package: `apt-get install rocm` (Ubuntu), or `yum install rocm` (RHEL). - > To use ROCm on Radeon GPUs, refer to [Install Radeon software for Linux with ROCm](https://rocm.docs.amd.com/projects/radeon/en/latest/docs/install/install-radeon.html). - ### Filesystem Hierarchy Standard ROCm 6.0 fully adopts the Filesystem Hierarchy Standard (FHS) reorganization goals. We've removed @@ -981,7 +990,7 @@ CMake support has been added for documentation in the ### AMD Instinct™ MI50 end-of-support notice -AMD Instinct MI50, Radeon™ PRO VII, and Radeon™ VII products (collectively gfx906 GPUs) enters +AMD Instinct MI50, Radeon Pro VII, and Radeon VII products (collectively gfx906 GPUs) enters maintenance mode in ROCm 6.0. As outlined in [5.6.0](https://rocm.docs.amd.com/en/docs-5.6.0/release.html), ROCm 5.7 was the @@ -1144,9 +1153,9 @@ HIP 6.0.0 for ROCm 6.0.0 * `char luid[8];` * `unsigned int luidDeviceNodeMask;` -```{note} +:::{note} HIP only supports LUID on Windows OS. -``` +::: ##### Changes @@ -1199,7 +1208,7 @@ Note: These complex operations are equivalent to corresponding types/functions o * `HIP_ROCclr` * NVIDIA platform * `HIP_PLATFORM_NVCC` -* The `hcc_detail` and `nvcc_detail` directories in the clr repository are removed. +* The [hcc_detail](https://github.com/ROCm/clr/tree/1949b1621a802ffb1492616adbae6154bfbe64ef/hipamd/include/hip/hcc_detail) and [nvcc_detail](https://github.com/ROCm/clr/tree/1949b1621a802ffb1492616adbae6154bfbe64ef/hipamd/include/hips/nvcc_detail) directories in the clr repository are removed. * Deprecated gcnArch is removed from hip device struct `hipDeviceProp_t`. * Deprecated `enum hipMemoryType memoryType;` is removed from HIP struct `hipPointerAttribute_t` union. @@ -1224,25 +1233,6 @@ hipBLAS 2.0.0 for ROCm 6.0.0 * `hipblasXtrmm` (calculates B <- alpha * op(A) * B) has been replaced with `hipblasXtrmm` (calculates C <- alpha * op(A) * B) -#### hipBLASLt 0.6.0 - -hipBLASLt 0.6.0 for ROCm 6.0.0 - -##### Additions - -* Added `UserArguments` for `GroupedGemm` -* Support for datatype: FP16 in with FP32 out -* New samples -* Support for datatype: `Int8` in `Int32` out -* Support for gfx94x platform -* Support for FP8/BF8 datatype (only for gfx94x platform) -* Support Scalar A,B,C,D for FP8/BF8 datatype - -##### Changes - -* Replaced `hipblasDatatype_t` with `hipDataType` -* Replaced `hipblasLtComputeType_t` with `hipblasComputeType_t` -* Deprecated `HIPBLASLT_MATMUL_DESC_D_SCALE_VECTOR_POINTER` #### hipCUB 3.0.0 @@ -1341,41 +1331,15 @@ MIOpen 2.19.0 for ROCm 6.0.0 ##### Fixes -* 3D convolution host API bug -* `[HOTFIX][MI200][FP16]` has been disabled for `ConvHipImplicitGemmBwdXdlops` when `FP16_ALT` is +* 3-D convolution host API bug +* `[HOTFIX][MI200][FP16]` has been disabled for `ConvHipImplicitGemmBwdXdlops` when FP16_ALT is required -#### MIVisionX 2.5.0 +#### MIVisionX -### 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 & bugfix -* CuPy - No longer installed with setup.py - -### Fixes - -* rocAL bug fix and updates - -### Known issues - -* OpenCV 4.X support for some applications is missing -* MIVisionX package install requires manual prerequisites installation +* Added Comprehensive CTests to aid developers +* Introduced Doxygen support for complete API documentation +* Simplified dependencies for rocAL #### OpenMP @@ -1447,14 +1411,13 @@ RCCL 2.15.5 for ROCm 6.0.0 * Removed TransferBench from tools as it exists in standalone repo: [https://github.com/ROCm/TransferBench](https://github.com/ROCm/TransferBench) - #### rocALUTION 3.0.3 rocALUTION 3.0.3 for ROCm 6.0.0 ##### Additions -* Support for 64-bit integer vectors +* Support for 64bit integer vectors * Inclusive and exclusive sum functionality for vector classes * Transpose functionality for `GlobalMatrix` and `LocalMatrix` * `TripleMatrixProduct` functionality for `LocalMatrix` @@ -1493,8 +1456,8 @@ rocBLAS 4.0.0 for ROCm 6.0.0 ##### Additions * Beta API `rocblas_gemm_batched_ex3` and `rocblas_gemm_strided_batched_ex3` -* Input/output type `F16_r`/`BF16_r` and execution type `f32_r` support for Level 2 `gemv_batched` and - `gemv_strided_batched` +* Input/output type f16_r/bf16_r and execution type f32_r support for Level 2 gemv_batched and + gemv_strided_batched * Use of `rocblas_status_excluded_from_build` when calling functions that require Tensile (when using rocBLAS built without Tensile) * System for asynchronous kernel launches that set a `rocblas_status` failure based on a @@ -1514,7 +1477,7 @@ rocBLAS 4.0.0 for ROCm 6.0.0 * `rocblas_gemm_ext2` API function * In-place trmm API from Legacy BLAS is replaced by an API that supports both in-place and out-of-place trmm -* INT8x4 support is removed (INT8 support is unchanged) +* int8x4 support is removed (int8 support is unchanged) * `#define __STDC_WANT_IEC_60559_TYPES_EXT__` is removed from `rocblas-types.h` (if you want ISO/IEC TS 18661-3:2015 functionality, you must define `__STDC_WANT_IEC_60559_TYPES_EXT__` before including `float.h`, `math.h`, and `rocblas.h`) @@ -1571,6 +1534,7 @@ rocFFT 1.0.25 for ROCm 6.0.0 * Built kernels in a solution map to the library kernel cache * Real forward transforms (real-to-complex) no longer overwrite input; rocFFT may still overwrite real inverse (complex-to-real) input, as this allows for faster performance + * `rocfft-rider` and `dyna-rocfft-rider` have been renamed to `rocfft-bench` and `dyna-rocfft-bench`; these are controlled by the `BUILD_CLIENTS_BENCH` CMake option * Links for the former file names are installed, and the former `BUILD_CLIENTS_RIDER` CMake option @@ -1742,7 +1706,7 @@ rocSPARSE 3.0.2 for ROCm 6.0.0 * `rocsparse_inverse_permutation` * Mixed-precisions for SpVV -* Uniform INT8 precision for gather and scatter +* Uniform int8 precision for gather and scatter #### rocThrust 3.0.0 @@ -1777,7 +1741,7 @@ rocWMMA 1.3.0 for ROCm 6.0.0 ##### Additions * Support for gfx942 -* Support for F8, BF8, and xfloat32 data types +* Support for f8, bf8, and xfloat32 data types * support for `HIP_NO_HALF`, `__ HIP_NO_HALF_CONVERSIONS__`, and `__ HIP_NO_HALF_OPERATORS__` (e.g., PyTorch environment) @@ -1798,7 +1762,7 @@ Tensile 4.39.0 for ROCm 6.0.0 ##### Additions -* Added Aqua Vanjaram support: gfx942, FP8/BF8 datatype, F32 datatype, and +* Added `aquavanjaram` support: gfx942, fp8/bf8 datatype, xf32 datatype, and stochastic rounding for various datatypes * Added and updated tuning scripts * Added `DirectToLds` support for larger data types with 32-bit global load (old parameter `DirectToLds` @@ -1812,7 +1776,7 @@ Tensile 4.39.0 for ROCm 6.0.0 ##### Optimizations * Enabled `InitAccVgprOpt` for `MatrixInstruction` cases -* Implemented local read-related parameter calculations with `DirectToVgpr` +* Implemented local read related parameter calculations with `DirectToVgpr` * Enabled dedicated vgpr allocation for local read + pack * Optimized code initialization * Optimized sgpr allocation @@ -1841,7 +1805,7 @@ Tensile 4.39.0 for ROCm 6.0.0 ##### Fixes -* Predicate ordering for FP16alt impl round near zero mode to unbreak distance modes +* Predicate ordering for fp16alt impl round near zero mode to unbreak distance modes * Boundary check for mirror dims and re-enable disabled mirror dims test cases * Merge error affecting i8 with WMMA * Mismatch issue with DTLds + TSGR + TailLoop @@ -1853,19 +1817,21 @@ Tensile 4.39.0 for ROCm 6.0.0 * Compiler directive for gfx942 * Formatting for `DecisionTree_test.cpp` -### Library changes in ROCM 6.0.0 +### Library changes in ROCm 6.0.0 | Library | Version | |---------|---------| | AMDMIGraphX | 2.7 ⇒ [2.8](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.0.0) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-6.0.0) | | hipBLAS | 1.1.0 ⇒ [2.0.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.0.0) | | hipCUB | 2.13.1 ⇒ [3.0.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.0.0) | | hipFFT | 1.0.12 ⇒ [1.0.13](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.0.0) | | hipRAND | 2.10.16 ⇒ [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.0.0) | | hipSOLVER | 1.8.2 ⇒ [2.0.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.0.0) | | hipSPARSE | 2.3.8 ⇒ [3.0.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.0.0) | -| hipTensor | ⇒ [1.1.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.0.0) | +| hipTensor | [1.1.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.0.0) | | MIOpen | [2.19.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.0.0) | +| MIVisionX | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.0.0) | | rccl | [2.15.5](https://github.com/ROCm/rccl/releases/tag/rocm-6.0.0) | | rocALUTION | 2.1.11 ⇒ [3.0.3](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.0.0) | | rocBLAS | 3.1.0 ⇒ [4.0.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.0.0) | @@ -1877,6 +1843,7 @@ Tensile 4.39.0 for ROCm 6.0.0 | rocSPARSE | 2.5.4 ⇒ [3.0.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.0.0) | | rocThrust | 2.18.0 ⇒ [3.0.0](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.0.0) | | rocWMMA | 1.2.0 ⇒ [1.3.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.0.0) | +| rpp | 1.2.0 ⇒ [1.4.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.0.0) | | Tensile | 4.38.0 ⇒ [4.39.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.0.0) | #### AMDMIGraphX 2.8 @@ -1937,8 +1904,8 @@ hipBLAS 2.0.0 for ROCm 6.0.0 ##### Added -- added option to define `HIPBLAS_USE_HIP_BFLOAT16` to switch API to use `hip_bfloat16` type -- added `hipblasGemmExWithFlags` API +- added option to define HIPBLAS_USE_HIP_BFLOAT16 to switch API to use hip_bfloat16 type +- added hipblasGemmExWithFlags API ##### Deprecated @@ -2009,7 +1976,7 @@ hipSPARSE 3.0.0 for ROCm 6.0.0 ##### Changed -- Changed hipsparseSpSV_solve() API function to match cuSPARSE API +- Changed hipsparseSpSV_solve() API function to match cusparse API - Changed generic API functions to use const descriptors - Documentation improved @@ -2079,12 +2046,9 @@ rocBLAS 4.0.0 for ROCm 6.0.0 ##### Added - Addition of beta API rocblas_gemm_batched_ex3 and rocblas_gemm_strided_batched_ex3 -- Added input/output type `F16_r`/`BF16_r` and execution type `f32_r` support for Level 2 - `gemv_batched` and `gemv_strided_batched` -- Added `rocblas_status_excluded_from_build` to be used when calling functions which require Tensile - when using rocBLAS built without Tensile -- Added system for async kernel launches setting a failure `rocblas_status` based on - `hipPeekAtLastError` discrepancy +- Added input/output type f16_r/bf16_r and execution type f32_r support for Level 2 gemv_batched and gemv_strided_batched +- Added rocblas_status_excluded_from_build to be used when calling functions which require Tensile when using rocBLAS built without Tensile +- Added system for async kernel launches setting a failure rocblas_status based on hipPeekAtLastError discrepancy ##### Optimized @@ -2098,7 +2062,7 @@ rocBLAS 4.0.0 for ROCm 6.0.0 - rocblas_gemm_ext2 API function is removed - in-place trmm API from Legacy BLAS is removed. It is replaced by an API that supports both in-place and out-of-place trmm -- INT8x4 support is removed. INT8 support is unchanged +- int8x4 support is removed. int8 support is unchanged - The #define STDC_WANT_IEC_60559_TYPES_EXT has been removed from rocblas-types.h. Users who want ISO/IEC TS 18661-3:2015 functionality must define STDC_WANT_IEC_60559_TYPES_EXT before including float.h, math.h, and rocblas.h - The default build removes device code for gfx803 architecture from the fat binary @@ -2123,7 +2087,7 @@ rocFFT 1.0.25 for ROCm 6.0.0 `rocfft_field` is a new type that can be added to a plan description, to describe layout of FFT input or output. `rocfft_field_add_brick` can be called one or more times to describe a brick decomposition of an FFT field, where each brick can be assigned a different device. - These interfaces are still experimental and subject to change. We are interested to hear feedback on them. Questions and concerns may be raised by opening issues on the [rocFFT issue tracker](https://github.com/ROCm/rocFFT/issues). + These interfaces are still experimental and subject to change. We are interested to hear feedback on them. Questions and concerns may be raised by opening issues on the [rocFFT issue tracker](https://github.com/ROCmSoftwarePlatform/rocFFT/issues). Note that at this time, multi-device FFTs have several limitations: @@ -2164,8 +2128,8 @@ rocm-cmake 0.11.0 for ROCm 6.0.0 ##### Fixed -- ROCMClangTidy: Fixed extra make flags passed for Clang-Tidy -- ROCMTest: Fixed issues when using module in a subdirectory +- ROCMClangTidy: Fixed extra make flags passed for clang tidy. +- ROCMTest: Fixed issues when using module in a subdirectory. #### rocPRIM 3.0.0 @@ -2206,7 +2170,7 @@ rocSPARSE 3.0.2 for ROCm 6.0.0 - Added rocsparse_inverse_permutation - Added mixed precisions for SpVV -- Added uniform INT8 precision for Gather and Scatter +- Added uniform int8 precision for Gather and Scatter ##### Optimized @@ -2254,7 +2218,7 @@ rocThrust 3.0.0 for ROCm 6.0.0 ##### Removed -- Removed CUB symlink from the root of the repository. +- Removed cub symlink from the root of the repository. - Removed support for deprecated macros (THRUST_DEVICE_BACKEND and THRUST_HOST_BACKEND). ##### Fixed @@ -2272,13 +2236,13 @@ rocWMMA 1.3.0 for ROCm 6.0.0 ##### Added - Added support for gfx940, gfx941 and gfx942 targets -- Added support for f8, BF8 and xfloat32 datatypes +- Added support for f8, bf8 and xfloat32 datatypes - Added support for HIP_NO_HALF, __ HIP_NO_HALF_CONVERSIONS__ and __ HIP_NO_HALF_OPERATORS__ (e.g. pytorch environment) ##### Changed -- rocWMMA with hipRTC now supports `bfloat16_t` datatype -- gfx11 WMMA now uses lane swap instead of broadcast for layout adjustment +- rocWMMA with hipRTC now supports bfloat16_t datatype +- gfx11 wmma now uses lane swap instead of broadcast for layout adjustment - Updated samples GEMM parameter validation on host arch ##### Fixed @@ -2286,13 +2250,88 @@ rocWMMA 1.3.0 for ROCm 6.0.0 - Disabled gtest static library deployment - Extended tests now build in large code model +#### rpp 1.4.0 + +rpp for ROCm 6.0.0 + +##### Added + +* New Tests + +##### Optimizations + +* Readme Updates + +##### Changed + +* **Backend** - Default Backend set to `HIP` + +##### Fixed + +* Minor bugs and warnings + +##### Tested Configurations + +* Linux distribution + + Ubuntu - `18.04` / `20.04` + + CentOS - `8` +* ROCm: rocm-core - `5.0.0.50000-49` +* Clang - Version `6.0` +* CMake - Version `3.22.3` +* Boost - Version `1.72` +* IEEE 754-based half-precision floating-point library - Version `1.12.0` + +##### Rpp 1.3.0 + + + +##### Rpp 1.2.0 + + + +##### Known Issues + +* `CPU` only backend not enabled + +##### Rpp 1.1.0 + + + +##### Rpp 1.0.0 + + + +##### Rpp 0.99 + + + +##### Rpp 0.98 + + + +##### Rpp 0.97 + + + +##### Rpp 0.96 + + + +##### Rpp 0.95 + + + +##### Rpp 0.93 + + + #### Tensile 4.39.0 Tensile 4.39.0 for ROCm 6.0.0 ##### Added -- Added aquavanjaram support: gfx940/gfx941/gfx942, FP8/BF8 datatype, xF32 datatype, and stochastic rounding for various datatypes +- Added aquavanjaram support: gfx940/gfx941/gfx942, fp8/bf8 datatype, xf32 datatype, and stochastic rounding for various datatypes - Added/updated tuning scripts - Added DirectToLds support for larger data types with 32bit global load (old parameter DirectToLds is replaced with DirectToLdsA and DirectToLdsB), and the corresponding test cases - Added the average of frequency, power consumption, and temperature information for the winner kernels to the CSV file @@ -2331,9 +2370,9 @@ Tensile 4.39.0 for ROCm 6.0.0 ##### Fixed -- Fixed predicate ordering for FP16alt impl round near zero mode to unbreak distance modes +- Fixed predicate ordering for fp16alt impl round near zero mode to unbreak distance modes - Fixed boundary check for mirror dims and re-enable disabled mirror dims test cases -- Fixed merge error affecting i8 with WMMA +- Fixed merge error affecting i8 with wmma - Fixed mismatch issue with DTLds + TSGR + TailLoop - Fixed a bug with InitAccVgprOpt + GSU>1 and a mismatch issue with PGR=0 - Fixed override for unloaded solutions when lazy loading @@ -2389,7 +2428,7 @@ kernels found by setting the environment variable ROCBLAS_TENSILE_GEMM_OVERRIDE_ points to the stored file. For more details, refer to the -[rocBLAS Programmer's Guide](https://rocm.docs.amd.com/projects/rocBLAS/en/latest/Programmers_Guide.html#rocblas-gemm-tune). +[rocBLAS Programmer's Guide](https://rocm.docs.amd.com/projects/rocBLAS/en/docs-5.7.1/Programmers_Guide.html). #### HIP 5.7.1 (for ROCm 5.7.1) @@ -2400,11 +2439,12 @@ ROCm 5.7.1 is a point release with several bug fixes in the HIP runtime. The `hipPointerGetAttributes` API returns the correct HIP memory type as `hipMemoryTypeManaged` for managed memory. -### Library changes in ROCM 5.7.1 +### Library changes in ROCm 5.7.1 | Library | Version | |---------|---------| | AMDMIGraphX | [2.7](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-5.7.1) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-5.7.1) | | hipBLAS | [1.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-5.7.1) | | hipCUB | [2.13.1](https://github.com/ROCm/hipCUB/releases/tag/rocm-5.7.1) | | hipFFT | [1.0.12](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.7.1) | @@ -2412,6 +2452,7 @@ for managed memory. | hipSOLVER | 1.8.1 ⇒ [1.8.2](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.7.1) | | hipSPARSE | [2.3.8](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.7.1) | | MIOpen | [2.19.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-5.7.1) | +| MIVisionX | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.7.1) | | rocALUTION | [2.1.11](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.7.1) | | rocBLAS | [3.1.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.7.1) | | rocFFT | [1.0.24](https://github.com/ROCm/rocFFT/releases/tag/rocm-5.7.1) | @@ -2422,6 +2463,7 @@ for managed memory. | rocSPARSE | [2.5.4](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-5.7.1) | | rocThrust | [2.18.0](https://github.com/ROCm/rocThrust/releases/tag/rocm-5.7.1) | | rocWMMA | [1.2.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-5.7.1) | +| rpp | [1.2.0](https://github.com/ROCm/rpp/releases/tag/rocm-5.7.1) | | Tensile | [4.38.0](https://github.com/ROCm/Tensile/releases/tag/rocm-5.7.1) | #### hipSOLVER 1.8.2 @@ -2450,15 +2492,15 @@ New features include: Note that ROCm 5.7.0 is EOS for MI50. 5.7 versions of ROCm are the last major releases in the ROCm 5 series. This release is Linux-only. -```{important} +:::{important} The next major ROCm release (ROCm 6.0) will not be backward compatible with the ROCm 5 series. Changes will include: splitting LLVM packages into more manageable sizes, changes to the HIP runtime API, splitting rocRAND and hipRAND into separate packages, and reorganizing our file structure. -``` +::: #### AMD Instinct™ MI50 end-of-support notice -AMD Instinct MI50, Radeon PRO VII, and Radeon VII products (collectively gfx906 GPUs) will enter +AMD Instinct MI50, Radeon Pro VII, and Radeon VII products (collectively gfx906 GPUs) will enter maintenance mode starting Q3 2023. As outlined in [5.6.0](https://rocm.docs.amd.com/en/docs-5.6.0/release.html), ROCm 5.7 will be the @@ -2536,7 +2578,7 @@ the GPU in heterogeneous applications. Ideally, developers should treat heteroge OpenMP applications like pure CPU applications. However, this simplicity has not been achieved yet. Refer to the documentation on LLVM ASan with the GPU at -{doc}`LLVM AddressSanitizer User Guide`. +[LLVM AddressSanitizer User Guide](../conceptual/using-gpu-sanitizer.md). :::{note} The beta release of LLVM ASan for ROCm is currently tested and validated on Ubuntu 20.04. @@ -2634,11 +2676,12 @@ The following defects are fixed in ROCm v5.7: * Remove `hiparray*` and make it opaque with `hipArray_t` -### Library changes in ROCM 5.7.0 +### Library changes in ROCm 5.7.0 | Library | Version | |---------|---------| | AMDMIGraphX | 2.5 ⇒ [2.7](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-5.7.0) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-5.7.0) | | hipBLAS | 0.54.0 ⇒ [1.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-5.7.0) | | hipCUB | [2.13.1](https://github.com/ROCm/hipCUB/releases/tag/rocm-5.7.0) | | hipFFT | [1.0.12](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.7.0) | @@ -2646,6 +2689,7 @@ The following defects are fixed in ROCm v5.7: | hipSOLVER | 1.8.0 ⇒ [1.8.1](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.7.0) | | hipSPARSE | 2.3.7 ⇒ [2.3.8](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.7.0) | | MIOpen | [2.19.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-5.7.0) | +| MIVisionX | 2.4.0 ⇒ [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.7.0) | | rocALUTION | 2.1.9 ⇒ [2.1.11](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.7.0) | | rocBLAS | 3.0.0 ⇒ [3.1.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.7.0) | | rocFFT | 1.0.23 ⇒ [1.0.24](https://github.com/ROCm/rocFFT/releases/tag/rocm-5.7.0) | @@ -2656,6 +2700,7 @@ The following defects are fixed in ROCm v5.7: | rocSPARSE | 2.5.2 ⇒ [2.5.4](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-5.7.0) | | rocThrust | [2.18.0](https://github.com/ROCm/rocThrust/releases/tag/rocm-5.7.0) | | rocWMMA | 1.1.0 ⇒ [1.2.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-5.7.0) | +| rpp | [1.2.0](https://github.com/ROCm/rpp/releases/tag/rocm-5.7.0) | | Tensile | 4.37.0 ⇒ [4.38.0](https://github.com/ROCm/Tensile/releases/tag/rocm-5.7.0) | #### AMDMIGraphX 2.7 @@ -2708,9 +2753,37 @@ MIGraphX 2.7 for ROCm 5.7.0 ##### Removed -- Removed INT8x4 rocBlas calls due to deprecation +- Removed int8x4 rocBlas calls due to deprecation - removed std::reduce usage since not all OS' support it +#### composable_kernel 0.2.0 + +CK 0.2.0 for ROCm 5.7.0 + +##### Fixed + +- Fixed a bug in 6-dimensional kernels (#555). +- Fixed grouped ConvBwdWeight test case failure (#524). + +##### Optimizations + +- Improve proformance of normalization kernel + +##### Added + +- Added support on NAVI3x. +- Added user tutorial (#563). +- Added more instances for irregular GEMM sizes (#560). +- Added inter-wave consumer-producer programming model for GEMM kernels (#310). +- Added multi-D GEMM client APIs (#534). +- Added multi-embeddings support (#542). +- Added Navi3x blockwise GEMM and real GEMM support (#541). +- Added Navi grouped ConvBwdWeight support (#505). + +##### Changed + +- Changed ... + #### hipBLAS 1.1.0 hipBLAS 1.1.0 for ROCm 5.7.0 @@ -2737,11 +2810,96 @@ hipSPARSE 2.3.8 for ROCm 5.7.0 ##### Improved -- Fix compilation failures when using cuSPARSE 12.1.0 backend -- Fix compilation failures when using cuSPARSE 12.0.0 backend -- Fix compilation failures when using cuSPARSE 10.1 (non-update versions) as backend +- Fix compilation failures when using cusparse 12.1.0 backend +- Fix compilation failures when using cusparse 12.0.0 backend +- Fix compilation failures when using cusparse 10.1 (non-update versions) as backend - Minor improvements +#### MIVisionX 2.5.0 + +MIVisionX for ROCm 5.7.0 + +##### Added + +* CTest - OpenVX Tests +* Hardware Support + +##### Optimizations + +* CMakeList Cleanup + +##### Changed + +* rocAL - PyBind Link to prebuilt library + + PyBind11 + + RapidJSON +* Setup Updates +* RPP Version - 1.2.0 +* Dockerfiles - Updates & bugfix + +##### Fixed + +* 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.4.3.50403-121` +* miopen-hip - `2.19.0.50403-121` +* miopen-opencl - `2.18.0.50300-63` +* migraphx - `2.4.0.50403-121` +* 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.2.0](https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp/releases/tag/1.2.0) +* FFMPEG - [n4.4.2](https://github.com/FFmpeg/FFmpeg/releases/tag/n4.4.2) +* Dependencies for all the above packages +* MIVisionX Setup Script - `V2.5.4` + +##### Known Issues + +* OpenCV 4.X support for some apps missing + +##### Mivisionx Dependency Map + + + +##### Hip Backend + +**Docker Image:** `sudo docker build -f docker/ubuntu20/{DOCKER_LEVEL_FILE_NAME}.dockerfile -t {mivisionx-level-NUMBER} .` + +- ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `new component added to the level` +- ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `existing component from the previous level` + +| Build Level | MIVisionX Dependencies | Modules | Libraries and Executables | Docker Tag | +| ----------- | -------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Level_1` | cmake <br> gcc <br> g++ | amd_openvx <br> utilities | ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libopenvx.so` - OpenVX&trade; Lib - CPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runvx` - OpenVX&trade; Graph Executor - CPU with Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-1?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_2` | ROCm HIP <br> +Level 1 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libopenvx.so` - OpenVX&trade; Lib - CPU/GPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU/GPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runvx` - OpenVX&trade; Graph Executor - Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-2?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_3` | OpenCV <br> FFMPEG <br> +Level 2 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `mv_compile` - Neural Net Model Compile <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-3?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_4` | MIOpenGEMM <br> MIOpen <br> ProtoBuf <br> +Level 3 | amd_openvx <br> amd_openvx_extensions <br> apps <br> utilities | ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_nn.so` - OpenVX&trade; Neural Net Extension | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-4?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_5` | AMD_RPP <br> rocAL deps <br> +Level 4 | amd_openvx <br> amd_openvx_extensions <br> apps <br> rocAL <br> utilities | ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_rpp.so` - OpenVX&trade; RPP Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `librocal.so` - Radeon Augmentation Library <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `rocal_pybind.so` - rocAL Pybind Lib | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-5?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | + +##### Opencl Backend + +**Docker Image:** `sudo docker build -f docker/ubuntu20/{DOCKER_LEVEL_FILE_NAME}.dockerfile -t {mivisionx-level-NUMBER} .` + +- ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `new component added to the level` +- ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `existing component from the previous level` + +| Build Level | MIVisionX Dependencies | Modules | Libraries and Executables | Docker Tag | +| ----------- | -------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Level_1` | cmake <br> gcc <br> g++ | amd_openvx <br> utilities | ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libopenvx.so` - OpenVX&trade; Lib - CPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runvx` - OpenVX&trade; Graph Executor - CPU with Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-1?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_2` | ROCm OpenCL <br> +Level 1 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libopenvx.so` - OpenVX&trade; Lib - CPU/GPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU/GPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `loom_shell` - 360 Stitch App <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runvx` - OpenVX&trade; Graph Executor - Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-2?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_3` | OpenCV <br> FFMPEG <br> +Level 2 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `mv_compile` - Neural Net Model Compile <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-3?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_4` | MIOpenGEMM <br> MIOpen <br> ProtoBuf <br> +Level 3 | amd_openvx <br> amd_openvx_extensions <br> apps <br> utilities | ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `inference_server_app` - Cloud Inference App | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-4?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_5` | AMD_RPP <br> rocAL deps <br> +Level 4 | amd_openvx <br> amd_openvx_extensions <br> apps <br> rocAL <br> utilities | ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `inference_server_app` - Cloud Inference App <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_rpp.so` - OpenVX&trade; RPP Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `librocal.so` - Radeon Augmentation Library <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `rocal_pybind.so` - rocAL Pybind Lib | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-5?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | + +**NOTE:** OpenVX and the OpenVX logo are trademarks of the Khronos Group Inc. + #### rocALUTION 2.1.11 rocALUTION 2.1.11 for ROCm 5.7.0 @@ -2875,6 +3033,73 @@ rocWMMA 1.2.0 for ROCm 5.7.0 - Fixed a bug with synchronization - Updated rocWMMA cmake versioning +#### rpp 1.2.0 + +rpp for ROCm 5.7.0 + +##### Added + +* New Tests + +##### Optimizations + +* Readme Updates + +##### Changed + +* **Backend** - Default Backend set to `HIP` + +##### Fixed + +* Minor bugs and warnings + +##### Tested Configurations + +* Linux distribution + + Ubuntu - `18.04` / `20.04` + + CentOS - `8` +* ROCm: rocm-core - `5.0.0.50000-49` +* Clang - Version `6.0` +* CMake - Version `3.22.3` +* Boost - Version `1.72` +* IEEE 754-based half-precision floating-point library - Version `1.12.0` + +##### Known Issues + +* `CPU` only backend not enabled + +##### Rpp 1.1.0 + + + +##### Rpp 1.0.0 + + + +##### Rpp 0.99 + + + +##### Rpp 0.98 + + + +##### Rpp 0.97 + + + +##### Rpp 0.96 + + + +##### Rpp 0.95 + + + +##### Rpp 0.93 + + + #### Tensile 4.38.0 Tensile 4.38.0 for ROCm 5.7.0 @@ -2924,7 +3149,7 @@ ROCm 5.6.1 is a point release with several bug fixes in the HIP runtime. * Memory leak when code object files are loaded/unloaded via hipModuleLoad/hipModuleUnload APIs * Using `hipGraphAddMemFreeNode` no longer results in a crash -### Library changes in ROCM 5.6.1 +### Library changes in ROCm 5.6.1 | Library | Version | |---------|---------| @@ -2936,6 +3161,7 @@ ROCm 5.6.1 is a point release with several bug fixes in the HIP runtime. | hipSOLVER | [1.8.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.6.1) | | hipSPARSE | 2.3.6 ⇒ [2.3.7](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.6.1) | | MIOpen | [2.19.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-5.6.1) | +| MIVisionX | [2.4.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.6.1) | | rccl | [2.15.5](https://github.com/ROCm/rccl/releases/tag/rocm-5.6.1) | | rocALUTION | [2.1.9](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.6.1) | | rocBLAS | [3.0.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.6.1) | @@ -2981,7 +3207,7 @@ few examples include: ### OS and GPU support changes * SLES15 SP5 support was added this release. SLES15 SP3 support was dropped. -* AMD Instinct MI50, Radeon PRO VII, and Radeon VII products (collectively referred to as gfx906 GPUs) +* AMD Instinct MI50, Radeon Pro VII, and Radeon VII products (collectively referred to as gfx906 GPUs) will be entering the maintenance mode starting Q3 2023. This will be aligned with ROCm 5.7 GA release date. * No new features and performance optimizations will be supported for the gfx906 GPUs beyond @@ -3023,7 +3249,7 @@ few examples include: #### Additions -* Added hipRTC support for `amd_hip_fp16` +* Added hipRTC support for amd_hip_fp16 * Added hipStreamGetDevice implementation to get the device associated with the stream * Added HIP_AD_FORMAT_SIGNED_INT16 in hipArray formats * hipArrayGetInfo for getting information about the specified array @@ -3163,7 +3389,7 @@ The resulting `a.out` will depend on * rocprof in ROCm/5.4.1 fails to generate kernel info. * rocprof clobbers LD_PRELOAD. -### Library changes in ROCM 5.6.0 +### Library changes in ROCm 5.6.0 | Library | Version | |---------|---------| @@ -3175,6 +3401,7 @@ The resulting `a.out` will depend on | hipSOLVER | 1.7.0 ⇒ [1.8.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.6.0) | | hipSPARSE | 2.3.5 ⇒ [2.3.6](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.6.0) | | MIOpen | [2.19.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-5.6.0) | +| MIVisionX | 2.3.0 ⇒ [2.4.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.6.0) | | rccl | [2.15.5](https://github.com/ROCm/rccl/releases/tag/rocm-5.6.0) | | rocALUTION | 2.1.8 ⇒ [2.1.9](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.6.0) | | rocBLAS | 2.47.0 ⇒ [3.0.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.6.0) | @@ -3220,6 +3447,82 @@ hipSPARSE 2.3.6 for ROCm 5.6.0 - For hipsparseXbsr2csr and hipsparseXcsr2bsr, blockDim == 0 now returns HIPSPARSE_STATUS_INVALID_SIZE +#### MIVisionX 2.4.0 + +MIVisionX for ROCm 5.6.0 + +##### Added + +* OpenVX FP16 Support +* rocAL - CPU, HIP, & OCL backends +* AMD RPP - CPU, HIP, & OCL backends +* MIVisionX Setup Support for RHEL +* Extended OS Support +* Docker Support for Ubuntu `22.04` +* Tests + +##### Optimizations + +* CMakeList Cleanup +* MIGraphX Extension Updates +* rocAL - Documentation +* CMakeList Updates & Cleanup + +##### Changed + +* rocAL - Changing Python Lib Path +* Docker Support - Ubuntu 18 Support Dropped +* RPP - Link to Version 1.0.0 +* rocAL - support updates +* Setup Updates + +##### Fixed + +* rocAL bug fix and updates +* AMD RPP - bug fixes +* CMakeLists - Issues +* RPATH - Link Issues + +##### Tested Configurations + +* Windows `10` / `11` +* Linux distribution + + Ubuntu - `20.04` / `22.04` + + CentOS - `7` / `8` + + RHEL - `8` / `9` + + SLES - `15-SP3` +* ROCm: rocm-core - `5.4.3.50403-121` +* miopen-hip - `2.19.0.50403-121` +* miopen-opencl - `2.18.0.50300-63` +* migraphx - `2.4.0.50403-121` +* 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.0.0](https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp/releases/tag/1.0.0) +* FFMPEG - [n4.4.2](https://github.com/FFmpeg/FFmpeg/releases/tag/n4.4.2) +* Dependencies for all the above packages +* MIVisionX Setup Script - `V2.4.2` + +##### Known Issues + +* OpenCV 4.X support for some apps missing + +##### Mivisionx Dependency Map + +**Docker Image:** `sudo docker build -f docker/ubuntu20/{DOCKER_LEVEL_FILE_NAME}.dockerfile -t {mivisionx-level-NUMBER} .` + +- ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `new component added to the level` +- ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `existing component from the previous level` + +| Build Level | MIVisionX Dependencies | Modules | Libraries and Executables | Docker Tag | +| ----------- | -------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Level_1` | cmake <br> gcc <br> g++ | amd_openvx <br> utilities | ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libopenvx.so` - OpenVX&trade; Lib - CPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runvx` - OpenVX&trade; Graph Executor - CPU with Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-1?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_2` | ROCm OpenCL <br> +Level 1 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libopenvx.so` - OpenVX&trade; Lib - CPU/GPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU/GPU <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `loom_shell` - 360 Stitch App <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runvx` - OpenVX&trade; Graph Executor - Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-2?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_3` | OpenCV <br> FFMPEG <br> +Level 2 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `mv_compile` - Neural Net Model Compile <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-3?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_4` | MIOpenGEMM <br> MIOpen <br> ProtoBuf <br> +Level 3 | amd_openvx <br> amd_openvx_extensions <br> apps <br> utilities | ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `inference_server_app` - Cloud Inference App | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-4?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_5` | AMD_RPP <br> rocAL deps <br> +Level 4 | amd_openvx <br> amd_openvx_extensions <br> apps <br> rocAL <br> utilities | ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#1589F0](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/blue_square.png) `inference_server_app` - Cloud Inference App <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `libvx_rpp.so` - OpenVX&trade; RPP Extension <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `librocal.so` - Radeon Augmentation Library <br> ![#c5f015](https://raw.githubusercontent.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/develop/docs/data/green_square.png) `rocal_pybind.so` - rocAL Pybind Lib | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-5?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | + +**NOTE:** OpenVX and the OpenVX logo are trademarks of the Khronos Group Inc. + #### rocALUTION 2.1.9 rocALUTION 2.1.9 for ROCm 5.6.0 @@ -3239,7 +3542,7 @@ rocBLAS 3.0.0 for ROCm 5.6.0 ##### Added -- Added BF16 inputs and F32 compute support to Level 1 rocBLAS Extension functions axpy_ex, scal_ex and nrm2_ex. +- Added bf16 inputs and f32 compute support to Level 1 rocBLAS Extension functions axpy_ex, scal_ex and nrm2_ex. ##### Deprecated @@ -3341,7 +3644,7 @@ rocThrust 2.18.0 for ROCm 5.6.0 ##### Changed -- Updated `docs` directory structure to match the standard of [rocm-docs-core](https://github.com/ROCm/rocm-docs-core). +- Updated `docs` directory structure to match the standard of [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core). #### rocWMMA 1.1.0 @@ -3360,7 +3663,7 @@ rocWMMA 1.1.0 for ROCm 5.6.0 ##### Changed - Default to GPU rocBLAS validation against rocWMMA -- Re-enabled INT8 gemm tests on gfx9 +- Re-enabled int8 gemm tests on gfx9 - Upgraded to C++17 - Restructured unit test folder for consistency - Consolidated rocWMMA samples common code @@ -3374,7 +3677,7 @@ Tensile 4.37.0 for ROCm 5.6.0 - Added user driven tuning API - Added decision tree fallback feature - Added SingleBuffer + AtomicAdd option for GlobalSplitU -- DirectToVgpr support for FP16 and Int8 with TN orientation +- DirectToVgpr support for fp16 and Int8 with TN orientation - Added new test cases for various functions - Added SingleBuffer algorithm for ZGEMM/CGEMM - Added joblib for parallel map calls @@ -3450,18 +3753,20 @@ The following HIP API is updated in the ROCm 5.5.1 release: * The return value for `hipDeviceSetCacheConfig` is updated from `hipErrorNotSupported` to `hipSuccess` -### Library changes in ROCM 5.5.1 +### Library changes in ROCm 5.5.1 | Library | Version | |---------|---------| | AMDMIGraphX | [2.5](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-5.5.1) | | hipBLAS | [0.54.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-5.5.1) | +| hipBLASLt | [0.1.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-5.5.1) | | hipCUB | [2.13.1](https://github.com/ROCm/hipCUB/releases/tag/rocm-5.5.1) | | hipFFT | [1.0.11](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.5.1) | | hipRAND | [2.10.16](https://github.com/ROCm/hipRAND/releases/tag/rocm-5.5.1) | | hipSOLVER | [1.7.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.5.1) | | hipSPARSE | [2.3.5](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.5.1) | | MIOpen | [2.19.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-5.5.1) | +| MIVisionX | [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.5.1) | | rccl | [2.15.5](https://github.com/ROCm/rccl/releases/tag/rocm-5.5.1) | | rocALUTION | [2.1.8](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.5.1) | | rocBLAS | [2.47.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.5.1) | @@ -3624,7 +3929,7 @@ The new HIP graph management APIs are as follows: This release consists of the following OpenMP enhancements: * Additional support for OMPT functions `get_device_time` and `get_record_type` -* Added support for min/max fast FP atomics on AMD GPUs +* Added support for min/max fast fp atomics on AMD GPUs * Fixed the use of the abs function in C device regions ### Deprecations and warnings @@ -3802,18 +4107,20 @@ communicators repeatedly, subsequent communicators may fail to initialize. This issue is under investigation and will be resolved in a future release. -### Library changes in ROCM 5.5.0 +### Library changes in ROCm 5.5.0 | Library | Version | |---------|---------| -| AMDMIGraphX | ⇒ [2.5](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-5.5.0) | +| AMDMIGraphX | [2.5](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-5.5.0) | | hipBLAS | 0.53.0 ⇒ [0.54.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-5.5.0) | +| hipBLASLt | [0.1.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-5.5.0) | | hipCUB | 2.13.0 ⇒ [2.13.1](https://github.com/ROCm/hipCUB/releases/tag/rocm-5.5.0) | | hipFFT | 1.0.10 ⇒ [1.0.11](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.5.0) | -| hipRAND | ⇒ [2.10.16](https://github.com/ROCm/hipRAND/releases/tag/rocm-5.5.0) | +| hipRAND | [2.10.16](https://github.com/ROCm/hipRAND/releases/tag/rocm-5.5.0) | | hipSOLVER | 1.6.0 ⇒ [1.7.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.5.0) | | hipSPARSE | 2.3.3 ⇒ [2.3.5](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.5.0) | -| MIOpen | ⇒ [2.19.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-5.5.0) | +| MIOpen | [2.19.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-5.5.0) | +| MIVisionX | [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.5.0) | | rccl | 2.13.4 ⇒ [2.15.5](https://github.com/ROCm/rccl/releases/tag/rocm-5.5.0) | | rocALUTION | 2.1.3 ⇒ [2.1.8](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.5.0) | | rocBLAS | 2.46.0 ⇒ [2.47.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.5.0) | @@ -3834,9 +4141,9 @@ MIGraphX 2.5 for ROCm 5.5.0 ##### Added - Y-Model feature to store tuning information with the optimized model -- Added Python 3.10 bindings +- Added Python 3.10 bindings - Accuracy checker tool based on ONNX Runtime -- ONNX Operators parse_split, and Trilu +- ONNX Operators parse_split, and Trilu - Build support for ROCm MLIR - Added migraphx-driver flag to print optimizations in python (--python) - Added JIT implementation of the Gather and Pad operator which results in better handling of larger tensor sizes. @@ -3850,9 +4157,9 @@ MIGraphX 2.5 for ROCm 5.5.0 ##### Fixed -- Improved parsing Tensorflow Protobuf files +- Improved parsing Tensorflow Protobuf files - Resolved various accuracy issues with some onnx models -- Resolved a gcc-12 issue with MIVisionX +- Resolved a gcc-12 issue with mivisionx - Improved support for larger sized models and batches - Use --offload-arch instead of --cuda-gpu-arch for the HIP compiler - Changes inside JIT to use float accumulator for large reduce ops of half type to avoid overflow. @@ -3887,6 +4194,28 @@ hipBLAS 0.54.0 for ROCm 5.5.0 - changed reference code for Windows to OpenBLAS - hipblas client executables all now begin with hipblas- prefix +#### hipBLASLt 0.1.0 + +hipBLASLt 0.1.0 for ROCm 5.5.0 + +##### Added + +- Enable hipBLASLt APIs +- Support gfx90a +- Support problem type: fp32, fp16, bf16 +- Support activation: relu, gelu +- Support bias vector +- Support Scale D vector +- Integreate with tensilelite kernel generator +- Add Gtest: hipblaslt-test +- Add full function tool: hipblaslt-bench +- Add sample app: example_hipblaslt_preference + +##### Optimizations + +- Gridbase solution search algorithm for untuned size +- Tune 10k sizes for each problem type + #### hipCUB 2.13.1 hipCUB 2.13.1 for ROCm 5.5.0 @@ -3951,7 +4280,7 @@ hipSPARSE 2.3.5 for ROCm 5.5.0 ##### Improved - Fixed an issue, where the rocm folder was not removed on upgrade of meta packages -- Fixed a compilation issue with cuSPARSE backend +- Fixed a compilation issue with cusparse backend - Added more detailed messages on unit test failures due to missing input data - Improved documentation - Fixed a bug with deprecation messages when using gcc9 (Thanks @Maetveis) @@ -3998,7 +4327,7 @@ RCCL 2.15.5 for ROCm 5.5.0 ##### Removed -- Removed TransferBench from tools. Exists in standalone repo: https://github.com/ROCm/TransferBench +- Removed TransferBench from tools. Exists in standalone repo: https://github.com/ROCmSoftwarePlatform/TransferBench #### rocALUTION 2.1.8 @@ -4417,7 +4746,7 @@ most `-save-temps` use cases work correctly, this error may appear occasionally. This issue is under investigation, and the known workaround is not to use `-save-temps` when the error appears. -### Library changes in ROCM 5.4.3 +### Library changes in ROCm 5.4.3 | Library | Version | |---------|---------| @@ -4426,6 +4755,7 @@ appears. | hipFFT | [1.0.10](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.4.3) | | hipSOLVER | [1.6.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.4.3) | | hipSPARSE | [2.3.3](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.4.3) | +| MIVisionX | [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.4.3) | | rccl | [2.13.4](https://github.com/ROCm/rccl/releases/tag/rocm-5.4.3) | | rocALUTION | [2.1.3](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.4.3) | | rocBLAS | [2.46.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.4.3) | @@ -4490,7 +4820,7 @@ with one of the following error messages: This is a known issue and will be fixed in a future release. -### Library changes in ROCM 5.4.2 +### Library changes in ROCm 5.4.2 | Library | Version | |---------|---------| @@ -4499,6 +4829,7 @@ This is a known issue and will be fixed in a future release. | hipFFT | [1.0.10](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.4.2) | | hipSOLVER | [1.6.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.4.2) | | hipSPARSE | [2.3.3](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.4.2) | +| MIVisionX | [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.4.2) | | rccl | [2.13.4](https://github.com/ROCm/rccl/releases/tag/rocm-5.4.2) | | rocALUTION | [2.1.3](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.4.2) | | rocBLAS | [2.46.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.4.2) | @@ -4591,7 +4922,7 @@ Instructions on how to download and apply MI200 maintenance updates are availabl Maintenance update #3, combined with ROCm 5.4.1, now provides SRIOV virtualization support for all AMD Instinct™ MI200 devices. -### Library changes in ROCM 5.4.1 +### Library changes in ROCm 5.4.1 | Library | Version | |---------|---------| @@ -4600,6 +4931,7 @@ AMD Instinct™ MI200 devices. | hipFFT | [1.0.10](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.4.1) | | hipSOLVER | [1.6.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.4.1) | | hipSPARSE | [2.3.3](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.4.1) | +| MIVisionX | [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.4.1) | | rccl | [2.13.4](https://github.com/ROCm/rccl/releases/tag/rocm-5.4.1) | | rocALUTION | [2.1.3](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.4.1) | | rocBLAS | [2.46.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.4.1) | @@ -4881,7 +5213,7 @@ globally unique and guaranteed to be consistent across APIs and processes. GPU IDs reported by ROCTracer and ROCProfiler or ROCm Tools are HSA Driver Node ID of that GPU, as it is a unique ID for that device in that particular node. -### Library changes in ROCM 5.4.0 +### Library changes in ROCm 5.4.0 | Library | Version | |---------|---------| @@ -4890,6 +5222,7 @@ as it is a unique ID for that device in that particular node. | hipFFT | 1.0.9 ⇒ [1.0.10](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.4.0) | | hipSOLVER | 1.5.0 ⇒ [1.6.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.4.0) | | hipSPARSE | 2.3.1 ⇒ [2.3.3](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.4.0) | +| MIVisionX | [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.4.0) | | rccl | 2.12.10 ⇒ [2.13.4](https://github.com/ROCm/rccl/releases/tag/rocm-5.4.0) | | rocALUTION | 2.1.0 ⇒ [2.1.3](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.4.0) | | rocBLAS | 2.45.0 ⇒ [2.46.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.4.0) | @@ -4909,7 +5242,7 @@ hipBLAS 0.53.0 for ROCm 5.4.0 ##### Added -- Allow for selection of INT8 datatype +- Allow for selection of int8 datatype - Added support for hipblasXgels and hipblasXgelsStridedBatched operations (with s,d,c,z precisions), only supported with rocBLAS backend - Added support for hipblasXgelsBatched operations (with s,d,c,z precisions) @@ -4963,7 +5296,7 @@ hipSPARSE 2.3.3 for ROCm 5.4.0 ##### Changed -- HIPSPARSE_ORDER_COLUMN has been renamed to HIPSPARSE_ORDER_COL to match cuSPARSE +- HIPSPARSE_ORDER_COLUMN has been renamed to HIPSPARSE_ORDER_COL to match cusparse #### rccl 2.13.4 @@ -5021,7 +5354,7 @@ rocBLAS 2.46.0 for ROCm 5.4.0 - Level 2, Level 1, and Extension functions: argument checking when the handle is set to rocblas_pointer_mode_host now returns the status of rocblas_status_invalid_pointer only for pointers that must be dereferenced based on the alpha and beta argument values. With handle mode rocblas_pointer_mode_device only pointers that are always dereferenced regardless of alpha and beta values are checked and so may lead to a return status of rocblas_status_invalid_pointer. This improves consistency with legacy BLAS behaviour. - Add variable to turn on/off ieee16/ieee32 tests for mixed precision gemm -- Allow hipBLAS to select INT8 datatype +- Allow hipBLAS to select int8 datatype - Disallow B == C && ldb != ldc in rocblas_xtrmm_outofplace ##### Fixed @@ -5212,7 +5545,7 @@ This issue is resolved with the following fixes to compilation failures: * rocPRIM: in device_merge if the two key iterators do not match. * rocTHRUST: in thrust::merge if the two key iterators do not match. -### Library changes in ROCM 5.3.3 +### Library changes in ROCm 5.3.3 | Library | Version | |---------|---------| @@ -5221,6 +5554,7 @@ This issue is resolved with the following fixes to compilation failures: | hipFFT | [1.0.9](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.3.3) | | hipSOLVER | [1.5.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.3.3) | | hipSPARSE | [2.3.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.3.3) | +| MIVisionX | [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.3.3) | | rccl | [2.12.10](https://github.com/ROCm/rccl/releases/tag/rocm-5.3.3) | | rocALUTION | [2.1.0](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.3.3) | | rocBLAS | [2.45.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.3.3) | @@ -5290,7 +5624,7 @@ ROCm v5.3.x releases. This issue is currently under investigation and will be resolved in a future release. -### Library changes in ROCM 5.3.2 +### Library changes in ROCm 5.3.2 | Library | Version | |---------|---------| @@ -5299,6 +5633,7 @@ This issue is currently under investigation and will be resolved in a future rel | hipFFT | [1.0.9](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.3.2) | | hipSOLVER | [1.5.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.3.2) | | hipSPARSE | [2.3.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.3.2) | +| MIVisionX | [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.3.2) | | rccl | [2.12.10](https://github.com/ROCm/rccl/releases/tag/rocm-5.3.2) | | rocALUTION | [2.1.0](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.3.2) | | rocBLAS | [2.45.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.3.2) | @@ -5504,7 +5839,7 @@ clinfo, and HelloWord.cl and cause a system crash. Workaround: To avoid the system crash, add `amd_iommu=on iommu=pt` as the kernel bootparam, as indicated in the warning message. -### Library changes in ROCM 5.3.0 +### Library changes in ROCm 5.3.0 | Library | Version | |---------|---------| @@ -5513,11 +5848,12 @@ indicated in the warning message. | hipFFT | 1.0.8 ⇒ [1.0.9](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.3.0) | | hipSOLVER | 1.4.0 ⇒ [1.5.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.3.0) | | hipSPARSE | 2.2.0 ⇒ [2.3.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.3.0) | +| MIVisionX | [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.3.0) | | rccl | [2.12.10](https://github.com/ROCm/rccl/releases/tag/rocm-5.3.0) | | rocALUTION | 2.0.3 ⇒ [2.1.0](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.3.0) | | rocBLAS | 2.44.0 ⇒ [2.45.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.3.0) | | rocFFT | 1.0.17 ⇒ [1.0.18](https://github.com/ROCm/rocFFT/releases/tag/rocm-5.3.0) | -| rocm-cmake | ⇒ [0.8.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-5.3.0) | +| rocm-cmake | [0.8.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-5.3.0) | | rocPRIM | 2.10.14 ⇒ [2.11.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-5.3.0) | | rocRAND | 2.10.14 ⇒ [2.10.15](https://github.com/ROCm/rocRAND/releases/tag/rocm-5.3.0) | | rocSOLVER | 3.18.0 ⇒ [3.19.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-5.3.0) | @@ -5675,8 +6011,7 @@ rocBLAS 2.45.0 for ROCm 5.3.0 ##### Removed -- `install.sh` options `--hip-clang`, `--no-hip-clang`, `--merge-files`, and `--no-merge-files` were - removed +- install.sh options --hip-clang , --no-hip-clang, --merge-files, --no-merge-files are removed. #### rocFFT 1.0.18 @@ -5745,16 +6080,16 @@ rocSOLVER 3.19.0 for ROCm 5.3.0 ##### Added -- Partial EigenSolver routines for symmetric/hermitian matrices: +- Partial eigensolver routines for symmetric/hermitian matrices: - SYEVX (with batched and strided\_batched versions) - HEEVX (with batched and strided\_batched versions) -- Generalized symmetric- and hermitian-definite partial EigenSolvers: +- Generalized symmetric- and hermitian-definite partial eigensolvers: - SYGVX (with batched and strided\_batched versions) - HEGVX (with batched and strided\_batched versions) -- EigenSolver routines for symmetric/hermitian matrices using Jacobi algorithm: +- Eigensolver routines for symmetric/hermitian matrices using Jacobi algorithm: - SYEVJ (with batched and strided\_batched versions) - HEEVJ (with batched and strided\_batched versions) -- Generalized symmetric- and hermitian-definite EigenSolvers using Jacobi algorithm: +- Generalized symmetric- and hermitian-definite eigensolvers using Jacobi algorithm: - SYGVJ (with batched and strided\_batched versions) - HEGVJ (with batched and strided\_batched versions) - Added --profile_kernels option to rocsolver-bench, which will include kernel calls in the @@ -5902,7 +6237,7 @@ No notable changes in this release for deployment and management tools. For release information for older ROCm releases, refer to -### Library changes in ROCM 5.2.3 +### Library changes in ROCm 5.2.3 | Library | Version | |---------|---------| @@ -5911,6 +6246,7 @@ For release information for older ROCm releases, refer to | hipFFT | [1.0.8](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.2.3) | | hipSOLVER | [1.4.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.2.3) | | hipSPARSE | [2.2.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.2.3) | +| MIVisionX | [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.2.3) | | rccl | 2.11.4 ⇒ [2.12.10](https://github.com/ROCm/rccl/releases/tag/rocm-5.2.3) | | rocALUTION | [2.0.3](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.2.3) | | rocBLAS | [2.44.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.2.3) | @@ -5949,7 +6285,7 @@ RCCL 2.12.10 for ROCm 5.2.3 ## ROCm 5.2.1 -### Library changes in ROCM 5.2.1 +### Library changes in ROCm 5.2.1 | Library | Version | |---------|---------| @@ -5958,6 +6294,7 @@ RCCL 2.12.10 for ROCm 5.2.3 | hipFFT | [1.0.8](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.2.1) | | hipSOLVER | [1.4.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.2.1) | | hipSPARSE | [2.2.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.2.1) | +| MIVisionX | 2.2.0 ⇒ [2.3.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.2.1) | | rccl | [2.11.4](https://github.com/ROCm/rccl/releases/tag/rocm-5.2.1) | | rocALUTION | [2.0.3](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.2.1) | | rocBLAS | [2.44.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.2.1) | @@ -5970,6 +6307,63 @@ RCCL 2.12.10 for ROCm 5.2.3 | rocWMMA | [0.7](https://github.com/ROCm/rocWMMA/releases/tag/rocm-5.2.1) | | Tensile | [4.33.0](https://github.com/ROCm/Tensile/releases/tag/rocm-5.2.1) | +#### MIVisionX 2.3.0 + +MIVisionX for ROCm 5.2.1 + +##### Added + +* Docker Support for ROCm `5.2.X` + +##### Optimizations + +* + +##### Changed + +* + +##### Fixed + +* + +##### Tested Configurations + +* Windows `10` / `11` +* Linux distribution + + Ubuntu - `18.04` / `20.04` + + CentOS - `7` / `8` + + SLES - `15-SP2` +* ROCm: rocm-core - `5.2.0.50200-65` +* miopen-hip - `2.16.0.50101-48` +* miopen-opencl - `2.16.0.50101-48` +* migraphx - `2.1.0.50101-48` +* Protobuf - [V3.12.4](https://github.com/protocolbuffers/protobuf/releases/tag/v3.12.4) +* OpenCV - [4.5.5](https://github.com/opencv/opencv/releases/tag/4.5.5) +* RPP - [0.93](https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp/releases/tag/0.93) +* FFMPEG - [n4.4.2](https://github.com/FFmpeg/FFmpeg/releases/tag/n4.4.2) +* Dependencies for all the above packages +* MIVisionX Setup Script - `V2.3.4` + +##### Known Issues + +* OpenCV 4.X support for some apps missing + +##### Mivisionx Dependency Map + +**Docker Image:** `sudo docker build -f docker/ubuntu20/{DOCKER_LEVEL_FILE_NAME}.dockerfile -t {mivisionx-level-NUMBER} .` + +- ![#c5f015](docs/images/green_square.png) `new component added to the level` +- ![#1589F0](docs/images/blue_square.png) `existing component from the previous level` + +| Build Level | MIVisionX Dependencies | Modules | Libraries and Executables | Docker Tag | +| ----------- | -------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Level_1` | cmake <br> gcc <br> g++ | amd_openvx <br> utilities | ![#c5f015](docs/images/green_square.png) `libopenvx.so` - OpenVX&trade; Lib - CPU <br> ![#c5f015](docs/images/green_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU <br> ![#c5f015](docs/images/green_square.png) `runvx` - OpenVX&trade; Graph Executor - CPU with Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-1?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_2` | ROCm OpenCL <br> +Level 1 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#c5f015](docs/images/green_square.png) `libopenvx.so` - OpenVX&trade; Lib - CPU/GPU <br> ![#c5f015](docs/images/green_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU/GPU <br> ![#c5f015](docs/images/green_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#c5f015](docs/images/green_square.png) `loom_shell` - 360 Stitch App <br> ![#c5f015](docs/images/green_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](docs/images/green_square.png) `runvx` - OpenVX&trade; Graph Executor - Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-2?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_3` | OpenCV <br> FFMPEG <br> +Level 2 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#1589F0](docs/images/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](docs/images/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](docs/images/blue_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](docs/images/blue_square.png) `loom_shell` - 360 Stitch App <br> ![#1589F0](docs/images/blue_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](docs/images/green_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#c5f015](docs/images/green_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#c5f015](docs/images/green_square.png) `mv_compile` - Neural Net Model Compile <br> ![#c5f015](docs/images/green_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-3?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_4` | MIOpenGEMM <br> MIOpen <br> ProtoBuf <br> +Level 3 | amd_openvx <br> amd_openvx_extensions <br> apps <br> utilities | ![#1589F0](docs/images/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](docs/images/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](docs/images/blue_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](docs/images/blue_square.png) `loom_shell` - 360 Stitch App <br> ![#1589F0](docs/images/blue_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](docs/images/blue_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](docs/images/blue_square.png) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](docs/images/blue_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](docs/images/blue_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#c5f015](docs/images/green_square.png) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#c5f015](docs/images/green_square.png) `inference_server_app` - Cloud Inference App | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-4?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_5` | AMD_RPP <br> rocAL deps <br> +Level 4 | amd_openvx <br> amd_openvx_extensions <br> apps <br> rocAL <br> utilities | ![#1589F0](docs/images/blue_square.png) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](docs/images/blue_square.png) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](docs/images/blue_square.png) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](docs/images/blue_square.png) `loom_shell` - 360 Stitch App <br> ![#1589F0](docs/images/blue_square.png) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](docs/images/blue_square.png) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](docs/images/blue_square.png) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](docs/images/blue_square.png) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](docs/images/blue_square.png) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#1589F0](docs/images/blue_square.png) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#1589F0](docs/images/blue_square.png) `inference_server_app` - Cloud Inference App <br> ![#c5f015](docs/images/green_square.png) `libvx_rpp.so` - OpenVX&trade; RPP Extension <br> ![#c5f015](docs/images/green_square.png) `librali.so` - Radeon Augmentation Library <br> ![#c5f015](docs/images/green_square.png) `rali_pybind.so` - rocAL Pybind Lib | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-5?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | + ------------------- ## ROCm 5.2.0 @@ -6515,7 +6909,7 @@ ambiguous kernel execution. `noundef` attribute, if it finds that argument is tagged with shuffle attribute. Refer to for more information. -* Introduce Clang builtin for `__shfl` to identify it and skip adding `noundef` attribute. +* Introduce clang builtin for `__shfl` to identify it and skip adding `noundef` attribute. * Introduce `__builtin_freeze` to use on the relevant arguments in library wrappers. The library/header need to insert freezes on the relevant inputs. @@ -6527,7 +6921,7 @@ ROCgdb is used on AMD Instinct™ MI50 and MI100 systems. This issue is under investigation and will be fixed in a future release. -### Library changes in ROCM 5.2.0 +### Library changes in ROCm 5.2.0 | Library | Version | |---------|---------| @@ -6536,6 +6930,7 @@ This issue is under investigation and will be fixed in a future release. | hipFFT | 1.0.7 ⇒ [1.0.8](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.2.0) | | hipSOLVER | 1.3.0 ⇒ [1.4.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.2.0) | | hipSPARSE | 2.1.0 ⇒ [2.2.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.2.0) | +| MIVisionX | [2.2.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.2.0) | | rccl | [2.11.4](https://github.com/ROCm/rccl/releases/tag/rocm-5.2.0) | | rocALUTION | 2.0.2 ⇒ [2.0.3](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.2.0) | | rocBLAS | 2.43.0 ⇒ [2.44.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.2.0) | @@ -6545,7 +6940,7 @@ This issue is under investigation and will be fixed in a future release. | rocSOLVER | 3.17.0 ⇒ [3.18.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-5.2.0) | | rocSPARSE | 2.1.0 ⇒ [2.2.0](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-5.2.0) | | rocThrust | 2.14.0 ⇒ [2.15.0](https://github.com/ROCm/rocThrust/releases/tag/rocm-5.2.0) | -| rocWMMA | ⇒ [0.7](https://github.com/ROCm/rocWMMA/releases/tag/rocm-5.2.0) | +| rocWMMA | [0.7](https://github.com/ROCm/rocWMMA/releases/tag/rocm-5.2.0) | | Tensile | 4.32.0 ⇒ [4.33.0](https://github.com/ROCm/Tensile/releases/tag/rocm-5.2.0) | #### hipBLAS 0.51.0 @@ -6755,25 +7150,25 @@ rocWMMA 0.7 for ROCm 5.2.0 - Added GEMM sample - Added DLRM sample - Added SGEMV sample -- Added unit tests for cooperative WMMA load and stores +- Added unit tests for cooperative wmma load and stores - Added unit tests for IOBarrier.h -- Added WMMA load/ store tests for different matrix types (A, B and Accumulator) +- Added wmma load/ store tests for different matrix types (A, B and Accumulator) - Added more block sizes 1, 2, 4, 8 to test MmaSyncMultiTest - Added block sizes 4, 8 to test MmaSynMultiLdsTest -- Added support for WMMA load / store layouts with block dimension greater than 64 -- Added IOShape structure to define the attributes of mapping and layouts for all WMMA matrix types +- Added support for wmma load / store layouts with block dimension greater than 64 +- Added IOShape structure to define the attributes of mapping and layouts for all wmma matrix types - Added CI testing for rocWMMA ##### Changed -- Renamed WMMA to rocWMMA in cmake, header files and documentation +- Renamed wmma to rocwmma in cmake, header files and documentation - Renamed library files - Modified Layout.h to use different matrix offset calculations (base offset, incremental offset and cumulative offset) - Opaque load/store continue to use incrementatl offsets as they fill the entire block - Cooperative load/store use cumulative offsets as they fill only small portions for the entire block - Increased Max split counts to 64 for cooperative load/store -- Moved all the WMMA definitions, API headers to rocWMMA namespace -- Modified WMMA fill unit tests to validate all matrix types (A, B, Accumulator) +- Moved all the wmma definitions, API headers to rocwmma namespace +- Modified wmma fill unit tests to validate all matrix types (A, B, Accumulator) #### Tensile 4.33.0 @@ -6807,7 +7202,7 @@ Tensile 4.33.0 for ROCm 5.2.0 ## ROCm 5.1.3 -### Library changes in ROCM 5.1.3 +### Library changes in ROCm 5.1.3 | Library | Version | |---------|---------| @@ -6817,6 +7212,7 @@ Tensile 4.33.0 for ROCm 5.2.0 | hipRAND | [2.10.13](https://github.com/ROCm/hipRAND/releases/tag/rocm-5.1.3) | | hipSOLVER | [1.3.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.1.3) | | hipSPARSE | [2.1.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.1.3) | +| MIVisionX | 2.1.0 ⇒ [2.2.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.1.3) | | rccl | [2.11.4](https://github.com/ROCm/rccl/releases/tag/rocm-5.1.3) | | rocALUTION | [2.0.2](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.1.3) | | rocBLAS | [2.43.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.1.3) | @@ -6828,12 +7224,69 @@ Tensile 4.33.0 for ROCm 5.2.0 | rocThrust | [2.14.0](https://github.com/ROCm/rocThrust/releases/tag/rocm-5.1.3) | | Tensile | [4.32.0](https://github.com/ROCm/Tensile/releases/tag/rocm-5.1.3) | +#### MIVisionX 2.2.0 + +MIVisionX for ROCm 5.1.3 + +##### Added + +* + +##### Optimizations + +* + +##### Changed + +* DockerFiles - Updates to install ROCm 5.1.1 Plus + +##### Fixed + +* + +##### Tested Configurations + +* Windows `10` / `11` +* Linux distribution + + Ubuntu - `18.04` / `20.04` + + CentOS - `7` / `8` + + SLES - `15-SP2` +* ROCm: rocm-core - `5.1.1.50101-48 ` +* miopen-hip - `2.16.0.50101-48` +* miopen-opencl - `2.16.0.50101-48` +* migraphx - `2.1.0.50101-48` +* Protobuf - [V3.12.0](https://github.com/protocolbuffers/protobuf/releases/tag/v3.12.0) +* OpenCV - [4.5.5](https://github.com/opencv/opencv/releases/tag/4.5.5) +* RPP - [0.93](https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp/releases/tag/0.93) +* FFMPEG - [n4.0.4](https://github.com/FFmpeg/FFmpeg/releases/tag/n4.0.4) +* Dependencies for all the above packages +* MIVisionX Setup Script - `V2.3.0` + +##### Known Issues + +* + +##### Mivisionx Dependency Map + +**Docker Image:** `sudo docker build -f docker/ubuntu20/{DOCKER_LEVEL_FILE_NAME}.dockerfile -t {mivisionx-level-NUMBER} .` + +- ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `new component added to the level` +- ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `existing component from the previous level` + +| Build Level | MIVisionX Dependencies | Modules | Libraries and Executables | Docker Tag | +| ----------- | -------------------------------------------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Level_1` | cmake <br> gcc <br> g++ | amd_openvx <br> utilities | ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib - CPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - CPU with Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-1?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_2` | ROCm OpenCL <br> +Level 1 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib - CPU/GPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU/GPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-2?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_3` | OpenCV <br> FFMPEG <br> +Level 2 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `mv_compile` - Neural Net Model Compile <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display ON | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-3?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_4` | MIOpenGEMM <br> MIOpen <br> ProtoBuf <br> +Level 3 | amd_openvx <br> amd_openvx_extensions <br> apps <br> utilities | ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `inference_server_app` - Cloud Inference App | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-4?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_5` | AMD_RPP <br> rocAL deps <br> +Level 4 | amd_openvx <br> amd_openvx_extensions <br> apps <br> rocAL <br> utilities | ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `inference_server_app` - Cloud Inference App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_rpp.so` - OpenVX&trade; RPP Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `librali.so` - Radeon Augmentation Library <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `rali_pybind.so` - rocAL Pybind Lib | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-5?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | + ------------------- ## ROCm 5.1.1 -### Library changes in ROCM 5.1.1 +### Library changes in ROCm 5.1.1 | Library | Version | |---------|---------| @@ -6843,6 +7296,7 @@ Tensile 4.33.0 for ROCm 5.2.0 | hipRAND | [2.10.13](https://github.com/ROCm/hipRAND/releases/tag/rocm-5.1.1) | | hipSOLVER | [1.3.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.1.1) | | hipSPARSE | [2.1.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.1.1) | +| MIVisionX | [2.1.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.1.1) | | rccl | [2.11.4](https://github.com/ROCm/rccl/releases/tag/rocm-5.1.1) | | rocALUTION | [2.0.2](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.1.1) | | rocBLAS | [2.43.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.1.1) | @@ -6940,7 +7394,7 @@ new inferior. #### MIOpen support for RDNA GPUs -This release includes support for AMD Radeon PRO W6800, in addition to other bug fixes and +This release includes support for AMD Radeon™ Pro W6800, in addition to other bug fixes and performance improvements as listed below: * MIOpen now supports RDNA GPUs!! (via MIOpen PRs 973, 780, 764, 740, 739, 677, 660, 653, 493, 498) @@ -7086,7 +7540,7 @@ As a workaround, use an older version of the kernel. For example, Ubuntu 5.11.0- Workloads that use the cooperative groups function to ensure all waves can be resident at the same time may fail to restore correctly. This issue is under investigation and will be fixed in a future release. -#### Radeon PRO V620 and W6800 workstation GPUs +#### Radeon Pro V620 and W6800 workstation GPUs ##### No support for ROCDebugger on SRIOV @@ -7100,16 +7554,17 @@ Random error messages are generated by unsupported functions or commands. This is a known issue and will be fixed in a future release. -### Library changes in ROCM 5.1.0 +### Library changes in ROCm 5.1.0 | Library | Version | |---------|---------| | hipBLAS | 0.49.0 ⇒ [0.50.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-5.1.0) | | hipCUB | 2.10.13 ⇒ [2.11.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-5.1.0) | | hipFFT | 1.0.4 ⇒ [1.0.7](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.1.0) | -| hipRAND | ⇒ [2.10.13](https://github.com/ROCm/hipRAND/releases/tag/rocm-5.1.0) | +| hipRAND | [2.10.13](https://github.com/ROCm/hipRAND/releases/tag/rocm-5.1.0) | | hipSOLVER | 1.2.0 ⇒ [1.3.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.1.0) | | hipSPARSE | 2.0.0 ⇒ [2.1.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.1.0) | +| MIVisionX | [2.1.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.1.0) | | rccl | 2.10.3 ⇒ [2.11.4](https://github.com/ROCm/rccl/releases/tag/rocm-5.1.0) | | rocALUTION | 2.0.1 ⇒ [2.0.2](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.1.0) | | rocBLAS | 2.42.0 ⇒ [2.43.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.1.0) | @@ -7153,7 +7608,7 @@ hipCUB 2.11.0 for ROCm 5.1.0 ##### Added - Device segmented sort -- Warp merge sort, WarpMask and thread sort from CUB 1.15.0 supported in hipCUB +- Warp merge sort, WarpMask and thread sort from cub 1.15.0 supported in hipCUB - Device three way partition ##### Changed @@ -7318,7 +7773,7 @@ rocFFT 1.0.16 for ROCm 5.1.0 ##### Removed -- The hipFFT API (header) has been removed from after a long deprecation period. Please use the [hipFFT](https://github.com/ROCm/hipFFT) package/repository to obtain the hipFFT API. +- The hipFFT API (header) has been removed from after a long deprecation period. Please use the [hipFFT](https://github.com/ROCmSoftwarePlatform/hipFFT) package/repository to obtain the hipFFT API. #### rocPRIM 2.10.13 @@ -7356,7 +7811,7 @@ rocRAND 2.10.13 for ROCm 5.1.0 ##### Changed -- [hipRAND](https://github.com/ROCm/hipRAND.git) split into a separate package +- [hipRAND](https://github.com/ROCmSoftwarePlatform/hipRAND.git) split into a separate package - Header file installation location changed to match other libraries. - Using the `rocrand.h` header file should now use `#include <rocrand/rocrand.h>`, rather than `#include <rocrand/rocrand.h>` - rocRAND still includes hipRAND using a submodule @@ -7473,10 +7928,10 @@ This fix may lead to breakage in some OpenMP offload use cases, which use print and result in an abort in device code. The issue will be fixed in a future release. ::: -The compatibility matrix in the {doc}`Deep-learning guide` is updated for +The compatibility matrix in the [Deep-learning guide](./how-to/deep-learning-rocm.md) is updated for ROCm v5.0.2. -### Library changes in ROCM 5.0.2 +### Library changes in ROCm 5.0.2 | Library | Version | |---------|---------| @@ -7485,6 +7940,7 @@ ROCm v5.0.2. | hipFFT | [1.0.4](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.0.2) | | hipSOLVER | [1.2.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.0.2) | | hipSPARSE | [2.0.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.0.2) | +| MIVisionX | 2.0.1 ⇒ [2.1.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.0.2) | | rccl | [2.10.3](https://github.com/ROCm/rccl/releases/tag/rocm-5.0.2) | | rocALUTION | [2.0.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.0.2) | | rocBLAS | [2.42.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.0.2) | @@ -7496,6 +7952,65 @@ ROCm v5.0.2. | rocThrust | [2.13.0](https://github.com/ROCm/rocThrust/releases/tag/rocm-5.0.2) | | Tensile | [4.31.0](https://github.com/ROCm/Tensile/releases/tag/rocm-5.0.2) | +#### MIVisionX 2.1.0 + +MIVisionX for ROCm 5.0.2 + +##### Added + +* New Tests - AMD_MEDIA + +##### Optimizations + +* Readme Updates +* HIP Buffer Transfer - Eliminate cupy usage + +##### Changed + +* **Backend** - Default Backend set to `HIP` + +##### Fixed + +* Minor bugs and warnings +* AMD_MEDIA - Bug Fixes + +##### Tested Configurations + +* Windows 10 +* Linux distribution + + Ubuntu - `18.04` / `20.04` + + CentOS - `7` / `8` + + SLES - `15-SP2` +* ROCm: rocm-dev - `4.5.2.40502-164` +* rocm-cmake - [rocm-4.2.0](https://github.com/RadeonOpenCompute/rocm-cmake/releases/tag/rocm-4.2.0) +* MIOpenGEMM - [1.1.5](https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/releases/tag/1.1.5) +* MIOpen - [2.14.0](https://github.com/ROCmSoftwarePlatform/MIOpen/releases/tag/2.14.0) +* Protobuf - [V3.12.0](https://github.com/protocolbuffers/protobuf/releases/tag/v3.12.0) +* OpenCV - [4.5.5](https://github.com/opencv/opencv/releases/tag/4.5.5) +* RPP - [0.92](https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp/releases/tag/0.92) +* FFMPEG - [n4.0.4](https://github.com/FFmpeg/FFmpeg/releases/tag/n4.0.4) +* Dependencies for all the above packages +* MIVisionX Setup Script - `V2.0.0` + +##### Known Issues + +* `TBD` + +##### Mivisionx Dependency Map + +**Docker Image:** `sudo docker build -f docker/ubuntu20/{DOCKER_LEVEL_FILE_NAME}.dockerfile -t {mivisionx-level-NUMBER} .` + +- ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `new component added to the level` +- ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `existing component from the previous level` + +| Build Level | MIVisionX Dependencies | Modules | Libraries and Executables | Docker Tag | +| ----------- | -------------------------------------------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Level_1` | cmake <br> gcc <br> g++ | amd_openvx <br> utilities | ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib - CPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - CPU with Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-1?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_2` | ROCm OpenCL <br> +Level 1 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib - CPU/GPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU/GPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-2?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_3` | OpenCV <br> FFMPEG <br> +Level 2 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `mv_compile` - Neural Net Model Compile <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display ON | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-3?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_4` | MIOpenGEMM <br> MIOpen <br> ProtoBuf <br> +Level 3 | amd_openvx <br> amd_openvx_extensions <br> apps <br> utilities | ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `inference_server_app` - Cloud Inference App | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-4?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_5` | AMD_RPP <br> rocAL deps <br> +Level 4 | amd_openvx <br> amd_openvx_extensions <br> apps <br> rocAL <br> utilities | ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `inference_server_app` - Cloud Inference App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_rpp.so` - OpenVX&trade; RPP Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `librali.so` - Radeon Augmentation Library <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `rali_pybind.so` - rocAL Pybind Lib | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-5?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | + ------------------- ## ROCm 5.0.1 @@ -7519,7 +8034,7 @@ scripts. Subsequent Perl scripts will no longer be available in ROCm in a future release. -### Library changes in ROCM 5.0.1 +### Library changes in ROCm 5.0.1 | Library | Version | |---------|---------| @@ -7528,6 +8043,7 @@ Subsequent Perl scripts will no longer be available in ROCm in a future release. | hipFFT | [1.0.4](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.0.1) | | hipSOLVER | [1.2.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.0.1) | | hipSPARSE | [2.0.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.0.1) | +| MIVisionX | [2.0.1](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.0.1) | | rccl | [2.10.3](https://github.com/ROCm/rccl/releases/tag/rocm-5.0.1) | | rocALUTION | [2.0.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.0.1) | | rocBLAS | [2.42.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.0.1) | @@ -7869,7 +8385,7 @@ follows: 5. Users can find the values of the collected counters in the output file generated in step 2. -#### Radeon PRO V620 and W6800 workstation GPUs +#### Radeon Pro V620 and W6800 workstation GPUs ##### No support for SMI and ROCDebugger on SRIOV @@ -7933,7 +8449,7 @@ In this release, arithmetic operators of HIP complex and vector types are deprec `std::complex` types. * As alternatives to arithmetic operators of HIP vector types, users can use the operators of the native - Clang vector type associated with the data member of HIP vector types. + clang vector type associated with the data member of HIP vector types. During the deprecation, two macros `_HIP_ENABLE_COMPLEX_OPERATORS` and `_HIP_ENABLE_VECTOR_OPERATORS` are provided to allow users to conditionally enable arithmetic @@ -7956,25 +8472,26 @@ The current default is code object version 4. MIOpenTensile will be deprecated in a future release. -### Library changes in ROCM 5.0.0 +### Library changes in ROCm 5.0.0 | Library | Version | |---------|---------| -| hipBLAS | ⇒ [0.49.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-5.0.0) | -| hipCUB | ⇒ [2.10.13](https://github.com/ROCm/hipCUB/releases/tag/rocm-5.0.0) | -| hipFFT | ⇒ [1.0.4](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.0.0) | -| hipSOLVER | ⇒ [1.2.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.0.0) | -| hipSPARSE | ⇒ [2.0.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.0.0) | -| rccl | ⇒ [2.10.3](https://github.com/ROCm/rccl/releases/tag/rocm-5.0.0) | -| rocALUTION | ⇒ [2.0.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.0.0) | -| rocBLAS | ⇒ [2.42.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.0.0) | -| rocFFT | ⇒ [1.0.13](https://github.com/ROCm/rocFFT/releases/tag/rocm-5.0.0) | -| rocPRIM | ⇒ [2.10.12](https://github.com/ROCm/rocPRIM/releases/tag/rocm-5.0.0) | -| rocRAND | ⇒ [2.10.12](https://github.com/ROCm/rocRAND/releases/tag/rocm-5.0.0) | -| rocSOLVER | ⇒ [3.16.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-5.0.0) | -| rocSPARSE | ⇒ [2.0.0](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-5.0.0) | -| rocThrust | ⇒ [2.13.0](https://github.com/ROCm/rocThrust/releases/tag/rocm-5.0.0) | -| Tensile | ⇒ [4.31.0](https://github.com/ROCm/Tensile/releases/tag/rocm-5.0.0) | +| hipBLAS | [0.49.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-5.0.0) | +| hipCUB | [2.10.13](https://github.com/ROCm/hipCUB/releases/tag/rocm-5.0.0) | +| hipFFT | [1.0.4](https://github.com/ROCm/hipFFT/releases/tag/rocm-5.0.0) | +| hipSOLVER | [1.2.0](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-5.0.0) | +| hipSPARSE | [2.0.0](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-5.0.0) | +| MIVisionX | [2.0.1](https://github.com/ROCm/MIVisionX/releases/tag/rocm-5.0.0) | +| rccl | [2.10.3](https://github.com/ROCm/rccl/releases/tag/rocm-5.0.0) | +| rocALUTION | [2.0.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-5.0.0) | +| rocBLAS | [2.42.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-5.0.0) | +| rocFFT | [1.0.13](https://github.com/ROCm/rocFFT/releases/tag/rocm-5.0.0) | +| rocPRIM | [2.10.12](https://github.com/ROCm/rocPRIM/releases/tag/rocm-5.0.0) | +| rocRAND | [2.10.12](https://github.com/ROCm/rocRAND/releases/tag/rocm-5.0.0) | +| rocSOLVER | [3.16.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-5.0.0) | +| rocSPARSE | [2.0.0](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-5.0.0) | +| rocThrust | [2.13.0](https://github.com/ROCm/rocThrust/releases/tag/rocm-5.0.0) | +| Tensile | [4.31.0](https://github.com/ROCm/Tensile/releases/tag/rocm-5.0.0) | #### hipBLAS 0.49.0 @@ -8002,7 +8519,7 @@ hipCUB 2.10.13 for ROCm 5.0.0 ##### Fixed -- Added missing includes to `hipcub.hpp` +- Added missing includes to hipcub.hpp ##### Added @@ -8052,6 +8569,69 @@ hipSPARSE 2.0.0 for ROCm 5.0.0 - Added (conjugate) transpose support for csrmv, hybmv and spmv routines +#### MIVisionX 2.0.1 + +MIVisionX for ROCm 5.0.0 + +##### Added + +* Support for cmake 3.22.X +* Support for OpenCV 4.X.X +* Support for mv_compile with the HIP GPU backend +* Support for tensor_compare node (less/greater/less_than/greater_than/equal onnx operators) + +##### Optimizations + +* Code Cleanup +* Readme Updates + +##### Changed + +* License Updates + +##### Fixed + +* Minor bugs and warnings +* Inference server application - OpenCL Backend +* vxCreateThreshold Fix - Apps & Sample + +##### Tested Configurations + +* Windows 10 +* Linux distribution + + Ubuntu - `18.04` / `20.04` + + CentOS - `7` / `8` + + SLES - `15-SP2` +* ROCm: rocm-dev - `4.5.2.40502-164` +* rocm-cmake - [rocm-4.2.0](https://github.com/RadeonOpenCompute/rocm-cmake/releases/tag/rocm-4.2.0) +* MIOpenGEMM - [1.1.5](https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/releases/tag/1.1.5) +* MIOpen - [2.14.0](https://github.com/ROCmSoftwarePlatform/MIOpen/releases/tag/2.14.0) +* Protobuf - [V3.12.0](https://github.com/protocolbuffers/protobuf/releases/tag/v3.12.0) +* OpenCV - [3.4.0](https://github.com/opencv/opencv/releases/tag/3.4.0) +* RPP - [0.92](https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp/releases/tag/0.92) +* FFMPEG - [n4.0.4](https://github.com/FFmpeg/FFmpeg/releases/tag/n4.0.4) +* Dependencies for all the above packages +* MIVisionX Setup Script - `V2.0.0` + +##### Known Issues + +* Package install requires **OpenCV** `v3.4.X` to execute `AMD OpenCV extensions` + +##### Mivisionx Dependency Map + +**Docker Image:** `docker pull kiritigowda/ubuntu-18.04:{TAGNAME}` + +- ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `new component added to the level` +- ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `existing component from the previous level` + +| Build Level | MIVisionX Dependencies | Modules | Libraries and Executables | Docker Tag | +|-------------|----------------------------------------------------|--------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `Level_1` | cmake <br> gcc <br> g++ | amd_openvx <br> utilities | ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib - CPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - CPU with Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-1?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_2` | ROCm OpenCL <br> +Level 1 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib - CPU/GPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib - CPU/GPU <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display OFF | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-2?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_3` | OpenCV <br> FFMPEG <br> +Level 2 | amd_openvx <br> amd_openvx_extensions <br> utilities | ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `mv_compile` - Neural Net Model Compile <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display ON | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-3?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_4` | MIOpenGEMM <br> MIOpen <br> ProtoBuf <br> +Level 3 | amd_openvx <br> amd_openvx_extensions <br> apps <br> utilities | ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `inference_server_app` - Cloud Inference App | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-4?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | +| `Level_5` | AMD_RPP <br> rocAL deps <br> +Level 4 | amd_openvx <br> amd_openvx_extensions <br> apps <br> rocAL <br> utilities | ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libopenvx.so` - OpenVX&trade; Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvxu.so` - OpenVX&trade; immediate node Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_loomsl.so` - Loom 360 Stitch Lib <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `loom_shell` - 360 Stitch App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_amd_media.so` - OpenVX&trade; Media Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_opencv.so` - OpenVX&trade; OpenCV InterOp Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `mv_compile` - Neural Net Model Compile <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runcl` - OpenCL&trade; program debug App <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `runvx` - OpenVX&trade; Graph Executor - Display ON <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `libvx_nn.so` - OpenVX&trade; Neural Net Extension <br> ![#1589F0](https://via.placeholder.com/15/1589F0/000000?text=+) `inference_server_app` - Cloud Inference App <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `libvx_rpp.so` - OpenVX&trade; RPP Extension <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `librali.so` - Radeon Augmentation Library <br> ![#c5f015](https://via.placeholder.com/15/c5f015/000000?text=+) `rali_pybind.so` - rocAL Pybind Lib | [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/kiritigowda/ubuntu-18.04/mivisionx-level-5?style=flat-square)](https://hub.docker.com/repository/docker/kiritigowda/ubuntu-18.04) | + #### rccl 2.10.3 RCCL 2.10.3 for ROCm 5.0.0 diff --git a/default.xml b/default.xml index a6507bc51..52e702297 100644 --- a/default.xml +++ b/default.xml @@ -1,67 +1,69 @@ + + - + + + + - - - - + - - + - + - + + + + - + - + - - - - - - - - - + + + - - - - - - - - + + + + + + + + + + + + diff --git a/docs/reference/gpu-arch-specs.rst b/docs/reference/gpu-arch-specs.rst index 083f822e3..b8647e830 100644 --- a/docs/reference/gpu-arch-specs.rst +++ b/docs/reference/gpu-arch-specs.rst @@ -1,15 +1,15 @@ .. meta:: - :description: AMD Instinct™ GPU architecture information - :keywords: Instinct, CDNA, GPU, architecture, VRAM, Compute Units, Cache, Registers, LDS, Register File + :description: AMD Instinct™ accelerator, AMD Radeon PRO™, and AMD Radeon™ GPU architecture information + :keywords: Instinct, Radeon, accelerator, CDNA, GPU, architecture, VRAM, Compute Units, Cache, Registers, LDS, Register File -AMD hardware specifications -######################################## +Accelerator and GPU hardware specifications +###################################################### -The following tables provide an overview of the hardware specifications for AMD Instinct™ accelerators, AMD Radeon™ and AMD Radeon™ Pro GPUs. +The following tables provide an overview of the hardware specifications for AMD Instinct™ accelerators, and AMD Radeon™ PRO and Radeon™ GPUs. .. tab-set:: - .. tab-item:: AMD Instinct Accelerators + .. tab-item:: AMD Instinct accelerators .. list-table:: :header-rows: 1 @@ -19,199 +19,199 @@ The following tables provide an overview of the hardware specifications for AMD - Model - Architecture - LLVM target name - - VRAM + - VRAM (GiB) - Compute Units - - Warp Size - - LDS - - L3 Cache - - L2 Cache - - L1 Vector Cache - - L1 Scalar Cache - - L1 Instruction Cache - - VGPR File - - SGPR File + - Wavefront Size + - LDS (KiB) + - L3 Cache (MiB) + - L2 Cache (MiB) + - L1 Vector Cache (KiB) + - L1 Scalar Cache (KiB) + - L1 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) * - MI300X - CDNA3 - gfx941 or gfx942 - - 192 GiB + - 192 - 304 - 64 - - 64 KiB - - 256 MiB - - 32 MiB - - 32 KiB - - 16 KiB per 2 CUs - - 64 KiB per 2 CUs - - 512 KiB - - 12.5 KiB + - 64 + - 256 + - 32 + - 32 + - 16 per 2 CUs + - 64 per 2 CUs + - 512 + - 12.5 * - MI300A - CDNA3 - gfx940 or gfx942 - - 128 GiB + - 128 - 228 - 64 - - 64 KiB - - 256 MiB - - 24 MiB - - 32 KiB - - 16 KiB per 2 CUs - - 64 KiB per 2 CUs - - 512 KiB - - 12.5 KiB + - 64 + - 256 + - 24 + - 32 + - 16 per 2 CUs + - 64 per 2 CUs + - 512 + - 12.5 * - MI250X - CDNA2 - gfx90a - - 128 GiB + - 128 - 220 (110 per GCD) - 64 - - 64 KiB + - 64 - - - 16 MiB (8 MiB per GCD) - - 16 KiB - - 16 KiB per 2 CUs - - 32 KiB per 2 CUs - - 512 KiB - - 12.5 KiB + - 16 (8 per GCD) + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 * - MI250 - CDNA2 - gfx90a - - 128 GiB + - 128 - 208 - 64 - - 64 KiB + - 64 - - - 16 MiB (8 MiB per GCD) - - 16 KiB - - 16 KiB per 2 CUs - - 32 KiB per 2 CUs - - 512 KiB - - 12.5 KiB + - 16 (8 per GCD) + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 * - MI210 - CDNA2 - gfx90a - - 64 GiB + - 64 - 104 - 64 - - 64 KiB + - 64 - - - 8 MiB - - 16 KiB - - 16 KiB per 2 CUs - - 32 KiB per 2 CUs - - 512 KiB - - 12.5 KiB + - 8 + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 * - MI100 - CDNA - gfx908 - - 32 GiB + - 32 - 120 - 64 - - 64 KiB + - 64 - - - 8 MiB - - 16 KiB - - 16 KiB per 3 CUs - - 32 KiB per 3 CUs - - 256 KiB VGPR and 256 KiB AccVGPR - - 12.5 KiB + - 8 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 VGPR and 256 AccVGPR + - 12.5 * - MI60 - GCN5.1 - gfx906 - - 32 GiB + - 32 + - 64 - 64 - 64 - - 64 KiB - - - 4 MiB - - 16 KiB - - 16 KiB per 3 CUs - - 32 KiB per 3 CUs - - 256 KiB - - 12.5 KiB + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 * - MI50 (32GB) - GCN5.1 - gfx906 - - 32 GiB + - 32 - 60 - 64 - - 64 KiB + - 64 - - - 4 MiB - - 16 KiB - - 16 KiB per 3 CUs - - 32 KiB per 3 CUs - - 256 KiB - - 12.5 KiB + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 * - MI50 (16GB) - GCN5.1 - gfx906 - - 16 GiB + - 16 - 60 - 64 - - 64 KiB + - 64 - - - 4 MiB - - 16 KiB - - 16 KiB per 3 CUs - - 32 KiB per 3 CUs - - 256 KiB - - 12.5 KiB + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 * - MI25 - GCN5.0 - gfx900 - - 16 GiB + - 16  - 64 - 64 - - 64 KiB + - 64  - - - 4 MiB - - 16 KiB - - 16 KiB per 3 CUs - - 32 KiB per 3 CUs - - 256 KiB - - 12.5 KiB + - 4  + - 16  + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 * - MI8 - GCN3.0 - gfx803 - - 4 GiB + - 4 + - 64 - 64 - 64 - - 64 KiB - - - 2 MiB - - 16 KiB - - 16 KiB per 4 CUs - - 32 KiB per 4 CUs - - 256 KiB - - 12.5 KiB + - 2 + - 16 + - 16 per 4 CUs + - 32 per 4 CUs + - 256 + - 12.5 * - MI6 - GCN4.0 - gfx803 - - 16 GiB + - 16 - 36 - 64 - - 64 KiB + - 64 - - - 2 MiB - - 16 KiB - - 16 KiB per 4 CUs - - 32 KiB per 4 CUs - - 256 KiB - - 12.5 KiB + - 2 + - 16 + - 16 per 4 CUs + - 32 per 4 CUs + - 256 + - 12.5 - .. tab-item:: AMD Radeon Pro GPUs + .. tab-item:: AMD Radeon PRO GPUs .. list-table:: :header-rows: 1 @@ -221,146 +221,146 @@ The following tables provide an overview of the hardware specifications for AMD - Model - Architecture - LLVM target name - - VRAM + - VRAM (GiB) - Compute Units - - Warp Size - - LDS - - Infinity Cache - - L2 Cache - - Graphics L1 Cache - - L0 Vector Cache - - L0 Scalar Cache - - L0 Instruction Cache - - VGPR File - - SGPR File + - Wavefront Size + - LDS (KiB) + - Infinity Cache (MiB) + - L2 Cache (MiB) + - Graphics L1 Cache (KiB) + - L0 Vector Cache (KiB) + - L0 Scalar Cache (KiB) + - L0 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) * - Radeon PRO W7900 - RDNA3 - gfx1100 - - 48 GiB + - 48 - 96 - 32 - - 128 KiB - - 96 MiB - - 6 MiB - - 256 KiB - - 32 KiB - - 16 KiB - - 32 KiB - - 384 KiB - - 20 KiB + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 * - Radeon PRO W7800 - RDNA3 - gfx1100 - - 32 GiB + - 32 - 70 - 32 - - 128 KiB - - 64 MiB - - 6 MiB - - 256 KiB - - 32 KiB - - 16 KiB - - 32 KiB - - 384 KiB - - 20 KiB + - 128 + - 64 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 * - Radeon PRO W7700 - RDNA3 - gfx1101 - - 16 GiB + - 16 - 48 - 32 - - 128 KiB - - 64 MiB - - 4 MiB - - 256 KiB - - 32 KiB - - 16 KiB - - 32 KiB - - 384 KiB - - 20 KiB + - 128 + - 64 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 * - Radeon PRO W6800 - RDNA2 - gfx1030 - - 32 GiB + - 32 - 60 - 32 - - 128 KiB - - 128 MiB - - 4 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon PRO W6600 - RDNA2 - gfx1032 - - 8 GiB + - 8 - 28 - 32 - - 128 KiB - - 32 MiB - - 2 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon PRO V620 - RDNA2 - gfx1030 - - 32 GiB + - 32 - 72 - 32 - - 128 KiB - - 128 MiB - - 4 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon Pro W5500 - RDNA - gfx1012 - - 8 GiB + - 8 - 22 - 32 - - 128 KiB + - 128 - - - 4 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon Pro VII - GCN5.1 - gfx906 - - 16 GiB + - 16 - 60 - 64 - - 64 KiB + - 64 - - - 4 MiB + - 4 - - - 16 KiB - - 16 KiB per 3 CUs - - 32 KiB per 3 CUs - - 256 KiB - - 12.5 KiB + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 .. tab-item:: AMD Radeon GPUs @@ -372,289 +372,290 @@ The following tables provide an overview of the hardware specifications for AMD - Model - Architecture - LLVM target name - - VRAM + - VRAM (GiB) - Compute Units - - Warp Size - - LDS - - Infinity Cache - - L2 Cache - - Graphics L1 Cache - - L0 Vector Cache - - L0 Scalar Cache - - L0 Instruction Cache - - VGPR File - - SGPR File + - Wavefront Size + - LDS (KiB) + - Infinity Cache (MiB) + - L2 Cache (MiB) + - Graphics L1 Cache (KiB) + - L0 Vector Cache (KiB) + - L0 Scalar Cache (KiB) + - L0 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) * - Radeon RX 7900 XTX - RDNA3 - gfx1100 - - 24 GiB + - 24 - 96 - 32 - - 128 KiB - - 96 MiB - - 6 MiB - - 256 KiB - - 32 KiB - - 16 KiB - - 32 KiB - - 384 KiB - - 20 KiB + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 * - Radeon RX 7900 XT - RDNA3 - gfx1100 - - 20 GiB + - 20 - 84 - 32 - - 128 KiB - - 80 MiB - - 6 MiB - - 256 KiB - - 32 KiB - - 16 KiB - - 32 KiB - - 384 KiB - - 20 KiB + - 128 + - 80 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 * - Radeon RX 7900 GRE - RDNA3 - gfx1100 - - 16 GiB + - 16 - 80 - 32 - - 128 KiB - - 64 MiB - - 6 MiB - - 256 KiB - - 32 KiB - - 16 KiB - - 32 KiB - - 384 KiB - - 20 KiB + - 128 + - 64 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 * - Radeon RX 7800 XT - RDNA3 - gfx1101 - - 16 GiB + - 16 - 60 - 32 - - 128 KiB - - 64 MiB - - 4 MiB - - 256 KiB - - 32 KiB - - 16 KiB - - 32 KiB - - 384 KiB - - 20 KiB + - 128 + - 64 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 * - Radeon RX 7700 XT - RDNA3 - gfx1101 - - 12 GiB + - 12 - 54 - 32 - - 128 KiB - - 48 MiB - - 4 MiB - - 256 KiB - - 32 KiB - - 16 KiB - - 32 KiB - - 384 KiB - - 20 KiB + - 128 + - 48 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 * - Radeon RX 7600 - RDNA3 - gfx1102 - - 8 GiB + - 8 - 32 - 32 - - 128 KiB - - 32 MiB - - 2 MiB - - 256 KiB - - 32 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 32 + - 2 + - 256 + - 32 + - 16 + - 32 + - 256 + - 20 * - Radeon RX 6950 XT - RDNA2 - gfx1030 - - 16 GiB + - 16 - 80 - 32 - - 128 KiB - - 128 MiB - - 4 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon RX 6900 XT - RDNA2 - gfx1030 - - 16 GiB + - 16 - 80 - 32 - - 128 KiB - - 128 MiB - - 4 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon RX 6800 XT - RDNA2 - gfx1030 - - 16 GiB + - 16 - 72 - 32 - - 128 KiB - - 128 MiB - - 4 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon RX 6800 - RDNA2 - gfx1030 - - 16 GiB + - 16 - 60 - 32 - - 128 KiB - - 128 MiB - - 4 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon RX 6750 XT - RDNA2 - gfx1031 - - 12 GiB + - 12 - 40 - 32 - - 128 KiB - - 96 MiB - - 3 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 96 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon RX 6700 XT - RDNA2 - gfx1031 - - 12 GiB + - 12 - 40 - 32 - - 128 KiB - - 96 MiB - - 3 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 96 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon RX 6700 - RDNA2 - gfx1031 - - 10 GiB + - 10 - 36 - 32 - - 128 KiB - - 80 MiB - - 3 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 80 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon RX 6650 XT - RDNA2 - gfx1032 - - 8 GiB + - 8 - 32 - 32 - - 128 KiB - - 32 MiB - - 2 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon RX 6600 XT - RDNA2 - gfx1032 - - 8 GiB + - 8 - 32 - 32 - - 128 KiB - - 32 MiB - - 2 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon RX 6600 - RDNA2 - gfx1032 - - 8 GiB + - 8 - 28 - 32 - - 128 KiB - - 32 MiB - - 2 MiB - - 128 KiB - - 16 KiB - - 16 KiB - - 32 KiB - - 256 KiB - - 20 KiB + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 * - Radeon VII - GCN5.1 - gfx906 - - 16 GiB + - 16 - 60 - 64 - - 64 KiB per CU + - 64 per CU - - - 4 MiB + - 4 - - - 16 KiB - - 16 KiB per 3 CUs - - 32 KiB per 3 CUs - - 256 KiB - - 12.5 KiB + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + +For more information on the terms used here, see the :ref:`specific documents and guides `, the :doc:`conceptual overview of the HIP programming model`, or the :doc:`HIP reference guide`. -For a detailed explanation of the terms refer to the :ref:`specific documents and guides ` or the :ref:`HIP programming guide `. diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index e4e76fa1b..24dbfcc2a 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1,2 +1,2 @@ -rocm-docs-core==0.38.1 +rocm-docs-core==1.0.0 sphinx-reredirects==0.1.3 \ No newline at end of file diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 677450c6b..2e8b53fe7 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -100,9 +100,9 @@ requests==2.31.0 # via # pygithub # sphinx -rocm-docs-core==0.38.1 - # via -r docs/sphinx/requirements.in -smmap==5.0.1 +rocm-docs-core==1.0.0 + # via -r requirements.in +smmap==5.0.0 # via gitdb snowballstemmer==2.2.0 # via sphinx diff --git a/tools/autotag/README.md b/tools/autotag/README.md index 59717c363..437f5d9ce 100755 --- a/tools/autotag/README.md +++ b/tools/autotag/README.md @@ -13,7 +13,7 @@ ## Updating the changelog -> 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 script +> 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. * 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 diff --git a/tools/autotag/tag_script.py b/tools/autotag/tag_script.py index b1b04031f..8fd0f7228 100755 --- a/tools/autotag/tag_script.py +++ b/tools/autotag/tag_script.py @@ -84,11 +84,9 @@ class TaggingArgs(argparse.Namespace): "MIOpenGEMM", "MIOpenKernels", "MIOpenTensile", - "ROCmValidationSuite", - "half", - "hipFORT", - "rccl-rdma-sharp-plugins", "MLSEQA_TestRepo", + "half", + "rccl-rdma-sharp-plugins", ] return defaults + (self._exclude if self._exclude is not None else []) @@ -236,10 +234,16 @@ def run_tagging(): # Find all the math libraries and their remotes. included_names = [ - "rocm-cmake", - "MIOpen", "AMDMIGraphX", - "rocprofiler" + "HIPIFY", # + "MIOpen", + "MIVisionX", + "ROCmValidationSuite", # + "composable_kernel", + "hipfort", + "rocDecode", + "rocm-cmake", + "rpp", ] included_groups = [ "mathlibs" diff --git a/tools/autotag/templates/rocm_changes/5.7.1.md b/tools/autotag/templates/rocm_changes/5.7.1.md index bfed61206..cb4678650 100644 --- a/tools/autotag/templates/rocm_changes/5.7.1.md +++ b/tools/autotag/templates/rocm_changes/5.7.1.md @@ -41,7 +41,7 @@ kernels found by setting the environment variable ROCBLAS_TENSILE_GEMM_OVERRIDE_ points to the stored file. For more details, refer to the -[rocBLAS Programmer's Guide](https://rocm.docs.amd.com/projects/rocBLAS/en/latest/Programmers_Guide.html#rocblas-gemm-tune). +[rocBLAS Programmer's Guide](https://rocm.docs.amd.com/projects/rocBLAS/en/docs-5.7.1/Programmers_Guide.html). #### HIP 5.7.1 (for ROCm 5.7.1) diff --git a/tools/autotag/templates/rocm_changes/6.1.0.md b/tools/autotag/templates/rocm_changes/6.1.0.md new file mode 100644 index 000000000..0395990e7 --- /dev/null +++ b/tools/autotag/templates/rocm_changes/6.1.0.md @@ -0,0 +1,319 @@ + +The ROCm™ 6.1 release consists of new features and fixes to improve the stability and +performance of AMD Instinct™ MI300 GPU applications. Notably, we've added: + +* Full support for Ubuntu 22.04.4. + +* **rocDecode**, a new ROCm component that provides high-performance video decode support for + AMD GPUs. With rocDecode, you can decode compressed video streams while keeping the resulting + YUV frames in video memory. With decoded frames in video memory, you can run video + post-processing using ROCm HIP, avoiding unnecessary data copies via the PCIe bus. + + To learn more, refer to the rocDecode + [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). + +### OS and GPU support changes + +ROCm 6.1 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 our general offering. For older +generations of supported AMD Instinct products, we’ve added Ubuntu 22.04.4 support. + +```{tip} +To view the complete list of supported GPUs and operating systems, refer to the system requirements +page for +[Linux](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html) +and +[Windows](https://rocm.docs.amd.com/projects/install-on-windows/en/latest/reference/system-requirements.html). +``` + +### Installation packages + +This release includes a new set of packages for every module (all libraries and binaries default to +`DT_RPATH`). Package names have the suffix `rpath`; for example, the `rpath` variant of `rocminfo` is +`rocminfo-rpath`. + +```{warning} +The new `rpath` packages will conflict with the default packages; they are meant to be used only in +environments where legacy `DT_RPATH` is the preferred form of linking (instead of `DT_RUNPATH`). We +do **not** recommend trying to install both sets of packages. +``` + +#### AMD SMI + +AMD SMI for ROCm 6.1.0 + +##### Additions + +* **Added Monitor command**. This provides users the ability to customize GPU metrics to capture, + collect, and observe. Output is provided in a table view. This aligns closer to ROCm SMI `rocm-smi` + (no argument), and allows you to customize per the data that are helpful for your use-case. + +* **Integrated ESMI Tool**. You can get CPU metrics and telemetry through our API and CLI tools. + You can get this information using the `amd-smi static` and `amd-smi metric` commands. This is only + available for limited target processors. As of ROCm 6.0.2, this is listed as: + * AMD Zen3 based CPU Family 19h Models 0h-Fh and 30h-3Fh + * AMD Zen4 based CPU Family 19h Models 10h-1Fh and A0-AFh + +* **Added support for new metrics: VCN, JPEG engines, and PCIe errors**. Using the AMD SMIrccl + tool, you can retrieve VCN, JPEG engines, and PCIe errors by calling `amd-smi metric -P` or + `amd-smi metric --usage`. Depending on device support, `VCN_ACTIVITY` will update for MI3x ASICs + (with 4 separate VCN engine activities) for older ASICs `MM_ACTIVITY` with UVD/VCN engine activity + (average of all engines). `JPEG_ACTIVITY` is a new field for MI3x ASICs, where device can support up + to 32 JPEG engine activities. See our documentation for more in-depth understanding of these new + fields. + +* **Added AMDSMI Tool version**. AMD SMI will report *three versions*: AMDSMI Tool, AMDSMI + Library version, and ROCm version. + + The AMDSMI Tool version is the CLI/tool version number with commit ID appended after the `+` sign. + The AMDSMI Library version is the library package version number. The ROCm version is the system's + installed ROCm version; if ROCm is not installed, it reports N/A. + +* **Added XGMI table**. Displays XGMI information for AMD GPU devices in a table format. This is + only available on supported ASICs (e.g., MI300). Here, users can view read/write data XGMI or PCIe + accumulated data transfer size (in KiloBytes). + +* **Added units of measure to JSON output.**. We added unit of measure to JSON/CSV + `amd-smi metric`, `amd-smi static`, and `amd-smi monitor` commands. + +##### Changes + +* **Topology is now left-aligned with BDF for each device listed individual table's row/columns**. + We provided each device's BDF for every table's row/columns, then left-aligned data. We want AMD + SMI Tool output to be easy to understand and digest. Having to scroll up to find this information + made it difficult to follow, especially for devices that have many devices associated with one ASIC. + +##### Fixes + +* **Fix for RDNA3/RDNA2/MI100 'amdsmi_get_gpu_pci_bandwidth()' in 'frequencies_read' tests**. + For devices that do not report (e.g., RDNA3/RDNA2/MI100), we have added checks to confirm that + these devices return `AMDSMI_STATUS_NOT_SUPPORTED`. Otherwise, tests now display a return + string. + +* **Fix for devices that have an older PyYAML installed**. For platforms that are identified as having + an older PyYAML version or pip, we now manually update both pip and PyYAML as needed. This + fix impacts the following CLI commands: + * `amd-smi list` + * `amd-smi static` + * `amd-smi firmware` + * `amd-smi metric` + * `amd-smi topology` + +* **Fix for crash when user is not a member of video/render groups**. AMD SMI now uses the + same mutex handler for devices as ROCm SMI. This helps avoid crashes when DRM/device data are + inaccessible to the logged-in user. + +##### Known issues + +* There is an `AttributeError` while running `amd-smi process --csv` +* GPU reset results in an "*Unable to reset non-amd GPU*" error +* bad pages results with "ValueError: NULL pointer access" +* Some RDNA3 cards may enumerate to `Slot type = UNKNOWN` + +#### HIP + +HIP 6.1 for ROCm 6.1 + +##### Additions + +* New environment variable, `HIP_LAUNCH_BLOCKING`, which is used for serialization on kernel + execution. +* The default value is 0 (disable): kernel runs normally, as defined in the queue +* When set as 1 (enable): HIP runtime serializes the kernel enqueue and behaves the same as + `AMD_SERIALIZE_KERNEL` +* Added HIPRTC support for hip headers `driver_types`, `math_functions`, `library_types`, + `math_functions`, `hip_math_constants`, `channel_descriptor`, `device_functions`, `hip_complex`, + `surface_types`, `texture_types` + +##### Changes + +* HIPRTC now assumes WGP mode for gfx10+. You can enable CU mode by passing `-mcumode` to the + compile options from `hiprtcCompileProgram`. + +##### Fixes + +* HIP complex vector type multiplication and division operations. + On an AMD platform, some duplicated complex operators are removed to avoid compilation failures. + In HIP, `hipFloatComplex` and `hipDoubleComplex` are defined as complex datatypes: + * `typedef float2 hipFloatComplex` + * `typedef double2 hipDoubleComplex` + + Any application that uses complex multiplication and division operations must replace `*` and `/` + operators with the following: + * `hipCmulf() and hipCdivf() for hipFloatComplex` + * `hipCmul() and hipCdiv() for hipDoubleComplex` + + Note that these complex operations are equivalent to corresponding types/functions on an NVIDIA + platform. + +#### HIPIFY + +HIPIFY for ROCm 6.1.0 + +##### Additions + +* CUDA 12.3.2 support +* cuDNN 8.9.7 support +* LLVM 17.0.6 support +* Full `hipSOLVER` support +* Full `rocSPARSE` support +* New option: `--amap`, which will hipify as much as possible, ignoring `--default-preprocessor` + behavior + +##### Fixes + +* Code blocks skipped by the preprocessor are no longer hipified under the `--default-preprocessor` + option + +#### ROCm Compiler + +ROCm Compiler for ROCm 6.1.0 + +##### Additions + +* Compiler now generates `.uniform_work_group_size` and records it in the metadata. It indicates if the + kernel requires that each dimension of global size is a multiple of the corresponding dimension of + work-group size. A value of 1 is true, and 0 is false. This metadata is only provided when the value is + 1. +* Added the `rocm-llvm-docs` package. +* Added ROCm Device-Libs, ROCm Compiler Support, and hipCC within the `llvm-project/amd` + subdirectory to AMD’s fork of the LLVM project. +* Added support for C++ Parallel Algorithm Offload via HIP (HIPSTDPAR), which allows parallel + algorithms to run on the GPU. + +##### Changes + +* `rocm-clang-ocl` is now an optional package and will require manual installation. + +##### Deprecations + +* hipCC adds `-mllvm`, `-amdgpu-early-inline-all=true`, and `-mllvm` `-amdgpu-function-calls=false` by + default to compiler invocations. These flags will be removed from hipCC in a future ROCm release. + +##### Fixes + +AddressSanitizer (ASan): +* Added `sanitized_padded_global` LLVM ir attribute to identify sanitizer instrumented globals. +* For ASan instrumented global, emit two symbols: one with actual size and the other with + instrumented size. + + [On GitHub](https://github.com/ROCm/ROCm/issues/2551) + +##### Known issues + +* Due to an issue within the `amd-llvm` compiler shipping with ROCm 6.1, HIPSTDPAR's interposition mode, which is enabled by `--hipstdpar-interpose-alloc` is currently broken. + +The temporary workaround is to use the upstream LLVM 18 (or newer) compiler. This issue will be addressed in a future ROCm release ." + +#### ROCm Data Center (RDC) + +RDC for ROCm 6.1.0 + +##### Changes + +* Added `--address` flag to rdcd +* Upgraded from C++11 to C++17 +* Upgraded gRPC + +#### ROCDebugger (ROCgdb) + +ROCgdb for ROCm 6.1.0 + +##### Fixes + +Previously, ROCDebugger encountered hangs and crashes when stepping over the `s_endpgm` +instruction at the end of a HIP kernel entry function, which caused the stepped wave to exit. This issue +is fixed in the ROCm 6.1 release. You can now step over the last instruction of any HIP kernel without +debugger hangs or crashes. + +#### ROCm SMI + +ROCm SMI for ROCm 6.1.0 + +##### Additions + +* **Added support to set max/min clock level for sclk ('RSMI_CLK_TYPE_SYS') or mclk ('RSMI_CLK_TYPE_MEM')**. + You can now set a maximum or minimum `sclk` or `mclk` value through the + `rsmi_dev_clk_extremum_set()` API provided ASIC support. Alternatively, you can use our Python CLI + tool (`rocm-smi --setextremum max sclk 1500`). + +* **Added `rsmi_dev_target_graphics_version_get()`**. You can now query through ROCm SMI API + (`rsmi_dev_target_graphics_version_get()`) to retreive the target graphics version for a GPU device. + Currently, this output is not supplied through our ROCm SMI CLI. + +##### Changes + +* **Removed non-unified API headers: Individual GPU metric APIs are no longer supported**. + The individual metric APIs (`rsmi_dev_metrics_*`) were removed in order to keep updates easier for + new GPU metric support. By providing a simple API (`rsmi_dev_gpu_metrics_info_get()`) with its + reported device metrics, it is worth noting there is a risk for ABI break-age using + `rsmi_dev_gpu_metrics_info_get()`. It is vital to understand that ABI breaks are necessary (in some + cases) in order to support newer ASICs and metrics for our customers. We will continue to support + `rsmi_dev_gpu_metrics_info_get()` with these considerations and limitations in mind. + +* **Deprecated 'rsmi_dev_power_ave_get()'; use the newer API, 'rsmi_dev_power_get()'**. As + outlined in the change for 6.0.0 (*Added a generic power API: rsmi_dev_power_get*), is now + deprecated. You must update your ROCm SMI API calls accordingly. + +##### Fixes + +* Fixed `--showpids` reporting `[PID] [PROCESS NAME] 1 UNKNOWN UNKNOWN UNKNOWN`. + Output was failing because `cu_occupancy debugfs` method is not provided on some graphics cards + by design. `get_compute_process_info_by_pid` was updated to reflect this and returns with the output + needed by the CLI. + +* Fixed `rocm-smi --showpower` output, which was inconsistent on some RDNA3 devices. + We updated this to use `rsmi_dev_power_get()` within the CLI to provide a consistent device power + output. This was caused by using the now-deprecated `rsmi_dev_average_power_get()` API. + +* Fixed `rocm-smi --setcomputepartition` and `rocm-smi --resetcomputepartition` to notate if device is + `EBUSY` + +* Fixed `rocm-smi --setmemorypartition` and `rocm-smi --resetmemorypartition` read only SYSFS to + return `RSMI_STATUS_NOT_SUPPORTED` + The `rsmi_dev_memory_partition_set` API is updated to handle the read-only SYSFS check. + Corresponding tests and CLI (`rocm-smi --setmemorypartition` and + `rocm-smi --resetmemorypartition`) calls were updated accordingly. + +* Fixed `rocm-smi --showclkvolt` and `rocm-smi --showvc`, which were displaying 0 for overdrive and + that the voltage curve is not supported. + +#### ROCProfiler + +ROCProfiler for ROCm 6.1.0 + +##### Fixes + +* Fixed ROCprofiler to match versioning changes in HIP Runtime +* Fixed plugins race condition +* Updated metrics to MI300 + +#### ROCm Validation Suite + +##### Known issue + +* In a future release, the ROCm Validation Suite P2P Benchmark and Qualification Tool (PBQT) tests will be optimized to meet the target bandwidth requirements for MI300X. + + [On GitHub](https://github.com/ROCm/ROCm/issues/3027) + +#### MI200 SR-IOV + +##### Known issue + +* Multimedia applications may encounter compilation errors in the MI200 Single Root Input/Output Virtualization (SR-IOV) environment. This is because MI200 SR-IOV does not currently support multimedia applications. + + [On GitHub](https://github.com/ROCm/ROCm/issues/3028) + +### AMD MI300A RAS + +#### Fixed defect + +##### GFX correctable and uncorrectable error inject failures + +* Previously, the AMD CPU Reliability, Availability, and Serviceability (RAS) installation encountered correctable and uncorrectable failures while injecting an error. + + This issue is resolved in the ROCm 6.1 release, and users will no longer encounter the GFX correctable error (CE) and uncorrectable error (UE) failures. diff --git a/tools/autotag/util/__init__.py b/tools/autotag/util/__init__.py index 8bfc2a8f2..40a4fdbd4 100755 --- a/tools/autotag/util/__init__.py +++ b/tools/autotag/util/__init__.py @@ -1,2 +1,2 @@ from .defaults import TEMPLATES, PROCESSORS -from . import mivisionx +from .custom_templates import hipfort, mivisionx, rpp, rvs diff --git a/tools/autotag/util/custom_templates/__init__.py b/tools/autotag/util/custom_templates/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tools/autotag/util/custom_templates/ck.py b/tools/autotag/util/custom_templates/ck.py new file mode 100644 index 000000000..b53fc4f87 --- /dev/null +++ b/tools/autotag/util/custom_templates/ck.py @@ -0,0 +1,41 @@ +import re + +from util.release_data import ReleaseLib +from util.defaults import TEMPLATES, PROCESSORS + +TEMPLATES['composable_kernel'] = ( + ( + r"## (\(Unreleased\))? CK (?P\d+\.\d+(?:\.\d+))?" + r"(?P for ROCm )?" + r"(?P(?(for_rocm)\d+\.\d+(?:\.\d+)?|.*))?" + r"\n" + r"(?P(?:(?!## ).*(?:(?!\n## )\n|(?=\n## )))*)" + ) +) + + +def composable_kernel_processor(data: ReleaseLib, template: str, _, __) -> bool: + """Processor for releases.""" + changelog = data.repo.get_contents("CHANGELOG.md", data.commit) + changelog = changelog.decoded_content.decode() + pattern = re.compile(template) + match = pattern.search(changelog) + lib_version = match["lib_version"] + data.message = ( + f"composable_kernel for ROCm" + f" {data.full_version}" + ) + + data.lib_version = lib_version + data.notes = f"""{match["body"]}""" + + change_pattern = re.compile( + r"^#+ +(?P[^\n]+)$\n*(?P(^(?!#).*\n*)*)", + re.RegexFlag.MULTILINE + ) + for match in change_pattern.finditer(data.notes): + data.data.changes[match["type"]] = match["change"] + + return True + +PROCESSORS['composable_kernel'] = composable_kernel_processor diff --git a/tools/autotag/util/custom_templates/hipfort.py b/tools/autotag/util/custom_templates/hipfort.py new file mode 100644 index 000000000..65d6876f6 --- /dev/null +++ b/tools/autotag/util/custom_templates/hipfort.py @@ -0,0 +1,42 @@ +import re + +from util.release_data import ReleaseLib +from util.defaults import TEMPLATES, PROCESSORS + +TEMPLATES['hipfort'] = ( + ( + r"## hipfort (?P\d+\.\d+(?:\.\d+))?" + r"(?P for ROCm )?" + r"(?P(?(for_rocm)\d+\.\d+(?:\.\d+)?|.*))?" + r"( \(Unreleased\))?" + r"\n" + r"(?P(?:(?!## ).*(?:(?!\n## )\n|(?=\n## )))*)" + ) +) + + +def hipfort_processor(data: ReleaseLib, template: str, _, __) -> bool: + """Processor for releases.""" + changelog = data.repo.get_contents("CHANGELOG.md", data.commit) + changelog = changelog.decoded_content.decode() + pattern = re.compile(template) + match = pattern.search(changelog) + lib_version = match["lib_version"] + data.message = ( + f"hipfort for ROCm" + f" {data.full_version}" + ) + + data.lib_version = lib_version + data.notes = f"""{match["body"]}""" + + change_pattern = re.compile( + r"^#+ +(?P[^\n]+)$\n*(?P(^(?!#).*\n*)*)", + re.RegexFlag.MULTILINE + ) + for match in change_pattern.finditer(data.notes): + data.data.changes[match["type"]] = match["change"] + + return True + +PROCESSORS['hipfort'] = hipfort_processor diff --git a/tools/autotag/util/mivisionx.py b/tools/autotag/util/custom_templates/mivisionx.py old mode 100755 new mode 100644 similarity index 67% rename from tools/autotag/util/mivisionx.py rename to tools/autotag/util/custom_templates/mivisionx.py index 98bfa4dbe..81280913b --- a/tools/autotag/util/mivisionx.py +++ b/tools/autotag/util/custom_templates/mivisionx.py @@ -13,12 +13,13 @@ TEMPLATES['MIVisionX'] = ( ) -def mivisionx_processor(data: ReleaseLib, template: str, _) -> bool: +def mivisionx_processor(data: ReleaseLib, template: str, _, __) -> bool: """Processor for MIVisionX releases.""" changelog = data.repo.get_contents("CHANGELOG.md", data.commit) changelog = changelog.decoded_content.decode() pattern = re.compile(template) match = pattern.search(changelog) + lib_version = match["lib_version"] data.message = ( f"MIVisionX for ROCm" f" {data.full_version}" @@ -27,19 +28,18 @@ def mivisionx_processor(data: ReleaseLib, template: str, _) -> bool: readme = data.repo.get_contents("README.md", data.commit) readme = readme.decoded_content.decode() dependency_map = readme[readme.find("## MIVisionX Dependency Map"):] - data.notes = f""" -

- -

- -## Online Documentation -[MIVisionX Documentation](https://rocm.docs.amd.com/projects/MIVisionX/en/latest/doxygen/html/index.html) -## MIVisionX {match['lib_version']} -{match["body"]} + data.lib_version = lib_version + data.notes = f"""{match["body"]} {dependency_map} """ + + change_pattern = re.compile( + r"^#+ +(?P[^\n]+)$\n*(?P(^(?!#).*\n*)*)", + re.RegexFlag.MULTILINE + ) + for match in change_pattern.finditer(data.notes): + data.data.changes[match["type"]] = match["change"] + return True - PROCESSORS['MIVisionX'] = mivisionx_processor diff --git a/tools/autotag/util/custom_templates/rpp.py b/tools/autotag/util/custom_templates/rpp.py new file mode 100644 index 000000000..22dc9dde1 --- /dev/null +++ b/tools/autotag/util/custom_templates/rpp.py @@ -0,0 +1,42 @@ +import re + +from util.release_data import ReleaseLib +from util.defaults import TEMPLATES, PROCESSORS + +TEMPLATES['rpp'] = ( + ( + r"## RPP (?P\d+\.\d+(?:\.\d+))?" + r"(?P for ROCm )?" + r"(?P(?(for_rocm)\d+\.\d+(?:\.\d+)?|.*))?" + r"( \(Unreleased\))?" + r"\n" + r"(?P(?:(?!## ).*(?:(?!\n## )\n|(?=\n## )))*)" + ) +) + + +def rpp_processor(data: ReleaseLib, template: str, _, __) -> bool: + """Processor for releases.""" + changelog = data.repo.get_contents("CHANGELOG.md", data.commit) + changelog = changelog.decoded_content.decode() + pattern = re.compile(template) + match = pattern.search(changelog) + lib_version = match["lib_version"] + data.message = ( + f"rpp for ROCm" + f" {data.full_version}" + ) + + data.lib_version = lib_version + data.notes = f"""{match["body"]}""" + + change_pattern = re.compile( + r"^#+ +(?P[^\n]+)$\n*(?P(^(?!#).*\n*)*)", + re.RegexFlag.MULTILINE + ) + for match in change_pattern.finditer(data.notes): + data.data.changes[match["type"]] = match["change"] + + return True + +PROCESSORS['rpp'] = rpp_processor From abd9530ab274b9601520dcece2480d1fa2c926f8 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Thu, 25 Apr 2024 17:10:30 -0600 Subject: [PATCH 002/175] update --- docs/sphinx/requirements.txt | 98 +++++++++++++++++++++++------------- 1 file changed, 63 insertions(+), 35 deletions(-) diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 2e8b53fe7..15756f678 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -1,12 +1,12 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --resolver=backtracking docs/sphinx/requirements.in +# pip-compile --resolver=backtracking requirements.in # accessible-pygments==0.0.4 # via pydata-sphinx-theme -alabaster==0.7.13 +alabaster==0.7.16 # via sphinx babel==2.14.0 # via @@ -25,17 +25,26 @@ cffi==1.16.0 charset-normalizer==3.3.2 # via requests click==8.1.7 - # via sphinx-external-toc + # via + # click-log + # doxysphinx + # sphinx-external-toc +click-log==0.4.0 + # via doxysphinx cryptography==42.0.5 # via pyjwt deprecated==1.2.14 # via pygithub -docutils==0.19 +docutils==0.21.2 # via # breathe # myst-parser + # pybtex-docutils # pydata-sphinx-theme # sphinx + # sphinxcontrib-bibtex +doxysphinx==3.3.7 + # via rocm-docs-core fastjsonschema==2.19.1 # via rocm-docs-core gitdb==4.0.11 @@ -46,33 +55,45 @@ idna==3.7 # via requests imagesize==1.4.1 # via sphinx -importlib-metadata==7.1.0 - # via sphinx -importlib-resources==6.4.0 - # via rocm-docs-core jinja2==3.1.3 # via # myst-parser # sphinx -markdown-it-py==2.2.0 +latexcodec==3.0.0 + # via pybtex +libsass==0.22.0 + # via doxysphinx +lxml==4.9.4 + # via doxysphinx +markdown-it-py==3.0.0 # via # mdit-py-plugins # myst-parser markupsafe==2.1.5 # via jinja2 -mdit-py-plugins==0.3.5 +mdit-py-plugins==0.4.0 # via myst-parser mdurl==0.1.2 # via markdown-it-py -myst-parser==1.0.0 +mpire==2.10.1 + # via doxysphinx +myst-parser==3.0.0 # via rocm-docs-core +numpy==1.26.4 + # via -r requirements.in packaging==24.0 # via # pydata-sphinx-theme # sphinx +pybtex==0.24.0 + # via + # pybtex-docutils + # sphinxcontrib-bibtex +pybtex-docutils==1.0.3 + # via sphinxcontrib-bibtex pycparser==2.22 # via cffi -pydata-sphinx-theme==0.14.4 +pydata-sphinx-theme==0.15.2 # via # rocm-docs-core # sphinx-book-theme @@ -81,34 +102,38 @@ pygithub==2.3.0 pygments==2.17.2 # via # accessible-pygments + # mpire # pydata-sphinx-theme # sphinx +pyjson5==1.6.6 + # via doxysphinx pyjwt[crypto]==2.8.0 - # via - # pygithub - # pyjwt + # via pygithub pynacl==1.5.0 # via pygithub -pytz==2024.1 - # via babel +pyparsing==3.1.2 + # via doxysphinx pyyaml==6.0.1 # via # myst-parser + # pybtex # rocm-docs-core # sphinx-external-toc requests==2.31.0 # via # pygithub # sphinx -rocm-docs-core==1.0.0 +rocm-docs-core[api_reference]==1.1.0 # via -r requirements.in -smmap==5.0.0 +six==1.16.0 + # via pybtex +smmap==5.0.1 # via gitdb snowballstemmer==2.2.0 # via sphinx soupsieve==2.5 # via beautifulsoup4 -sphinx==5.3.0 +sphinx==7.3.7 # via # breathe # myst-parser @@ -119,31 +144,38 @@ sphinx==5.3.0 # sphinx-design # sphinx-external-toc # sphinx-notfound-page - # sphinx-reredirects -sphinx-book-theme==1.0.1 + # sphinxcontrib-bibtex + # sphinxcontrib-moderncmakedomain +sphinx-book-theme==1.1.2 # via rocm-docs-core sphinx-copybutton==0.5.2 # via rocm-docs-core sphinx-design==0.5.0 # via rocm-docs-core -sphinx-external-toc==0.3.1 +sphinx-external-toc==1.0.1 # via rocm-docs-core sphinx-notfound-page==1.0.0 # via rocm-docs-core -sphinx-reredirects==0.1.3 - # via -r docs/sphinx/requirements.in -sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-applehelp==1.0.8 # via sphinx -sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-bibtex==2.6.2 + # via -r requirements.in +sphinxcontrib-devhelp==1.0.6 # via sphinx -sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-htmlhelp==2.0.5 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-moderncmakedomain==3.27.0 + # via -r requirements.in +sphinxcontrib-qthelp==1.0.7 # via sphinx -sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib-serializinghtml==1.1.10 # via sphinx +tomli==2.0.1 + # via sphinx +tqdm==4.66.2 + # via mpire typing-extensions==4.11.0 # via # pydata-sphinx-theme @@ -154,7 +186,3 @@ urllib3==2.2.1 # requests wrapt==1.16.0 # via deprecated -zipp==3.18.1 - # via - # importlib-metadata - # importlib-resources From ddea25c329e2ffd53167b96222141f9ef6529999 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Thu, 25 Apr 2024 17:31:15 -0600 Subject: [PATCH 003/175] rocm-docs update --- .readthedocs.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 8ebe82a90..b6df97c26 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -4,15 +4,15 @@ version: 2 sphinx: - configuration: docs/conf.py + configuration: docs/conf.py formats: [htmlzip, pdf] python: - install: - - requirements: docs/sphinx/requirements.txt + install: + - requirements: docs/sphinx/requirements.txt build: - os: ubuntu-22.04 - tools: - python: "3.10" + os: ubuntu-22.04 + tools: + python: "3.10" From c48e8f1dbb8870c9a5cb05c5041fb850feae7e2a Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Thu, 2 May 2024 09:23:38 -0600 Subject: [PATCH 004/175] Update documentation requirements --- .readthedocs.yaml | 18 ++++++++-------- docs/sphinx/requirements.in | 13 +++++++++-- docs/sphinx/requirements.txt | 42 +++++++++++++++++++++++++++++++++--- 3 files changed, 59 insertions(+), 14 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index b6df97c26..0f6d1e61a 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,16 +3,16 @@ version: 2 -sphinx: - configuration: docs/conf.py +build: + os: ubuntu-22.04 + tools: + python: "3.10" -formats: [htmlzip, pdf] +sphinx: + configuration: docs/conf.py python: - install: - - requirements: docs/sphinx/requirements.txt + install: + - requirements: docs/sphinx/requirements.txt -build: - os: ubuntu-22.04 - tools: - python: "3.10" +formats: [htmlzip, pdf, epub] diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index 24dbfcc2a..c475029e1 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1,2 +1,11 @@ -rocm-docs-core==1.0.0 -sphinx-reredirects==0.1.3 \ No newline at end of file +rocm-docs-core[api_reference]==1.1.1 +--extra-index-url https://test.pypi.org/simple/ +Sphinx-Substitution-Extensions +autodoc +hip-python +hip-python-as-cuda +numpy +sphinx-collapse +sphinxcontrib-bibtex +sphinxcontrib-moderncmakedomain +sphinxcontrib.datatemplates diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 15756f678..201d1c377 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -2,18 +2,24 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --resolver=backtracking requirements.in +# pip-compile requirements.in # +--extra-index-url https://test.pypi.org/simple/ + accessible-pygments==0.0.4 # via pydata-sphinx-theme alabaster==0.7.16 # via sphinx +autodoc==0.5.0 + # via -r requirements.in babel==2.14.0 # via # pydata-sphinx-theme # sphinx beautifulsoup4==4.12.3 - # via pydata-sphinx-theme + # via + # pydata-sphinx-theme + # webtest breathe==4.35.0 # via rocm-docs-core certifi==2024.2.2 @@ -33,6 +39,10 @@ click-log==0.4.0 # via doxysphinx cryptography==42.0.5 # via pyjwt +decorator==5.1.1 + # via autodoc +defusedxml==0.7.1 + # via sphinxcontrib-datatemplates deprecated==1.2.14 # via pygithub docutils==0.21.2 @@ -42,6 +52,7 @@ docutils==0.21.2 # pybtex-docutils # pydata-sphinx-theme # sphinx + # sphinx-substitution-extensions # sphinxcontrib-bibtex doxysphinx==3.3.7 # via rocm-docs-core @@ -51,6 +62,12 @@ gitdb==4.0.11 # via gitpython gitpython==3.1.43 # via rocm-docs-core +hip-python==6.1.0.470.16 + # via + # -r requirements.in + # hip-python-as-cuda +hip-python-as-cuda==6.1.0.470.16 + # via -r requirements.in idna==3.7 # via requests imagesize==1.4.1 @@ -119,11 +136,12 @@ pyyaml==6.0.1 # pybtex # rocm-docs-core # sphinx-external-toc + # sphinxcontrib-datatemplates requests==2.31.0 # via # pygithub # sphinx -rocm-docs-core[api_reference]==1.1.0 +rocm-docs-core[api-reference]==1.1.1 # via -r requirements.in six==1.16.0 # via pybtex @@ -140,14 +158,20 @@ sphinx==7.3.7 # pydata-sphinx-theme # rocm-docs-core # sphinx-book-theme + # sphinx-collapse # sphinx-copybutton # sphinx-design # sphinx-external-toc # sphinx-notfound-page + # sphinx-substitution-extensions # sphinxcontrib-bibtex + # sphinxcontrib-datatemplates # sphinxcontrib-moderncmakedomain + # sphinxcontrib-runcmd sphinx-book-theme==1.1.2 # via rocm-docs-core +sphinx-collapse==0.1.3 + # via -r requirements.in sphinx-copybutton==0.5.2 # via rocm-docs-core sphinx-design==0.5.0 @@ -156,10 +180,14 @@ sphinx-external-toc==1.0.1 # via rocm-docs-core sphinx-notfound-page==1.0.0 # via rocm-docs-core +sphinx-substitution-extensions==2022.2.16 + # via -r requirements.in sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-bibtex==2.6.2 # via -r requirements.in +sphinxcontrib-datatemplates==0.11.0 + # via -r requirements.in sphinxcontrib-devhelp==1.0.6 # via sphinx sphinxcontrib-htmlhelp==2.0.5 @@ -170,6 +198,8 @@ sphinxcontrib-moderncmakedomain==3.27.0 # via -r requirements.in sphinxcontrib-qthelp==1.0.7 # via sphinx +sphinxcontrib-runcmd==0.2.0 + # via sphinxcontrib-datatemplates sphinxcontrib-serializinghtml==1.1.10 # via sphinx tomli==2.0.1 @@ -184,5 +214,11 @@ urllib3==2.2.1 # via # pygithub # requests +waitress==3.0.0 + # via webtest +webob==1.8.7 + # via webtest +webtest==3.0.0 + # via autodoc wrapt==1.16.0 # via deprecated From d98eb6f4bb46a594f26fb215ee22012b7136d980 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Thu, 2 May 2024 09:42:51 -0600 Subject: [PATCH 005/175] Update documentation requirements --- docs/sphinx/requirements.in | 1 + docs/sphinx/requirements.txt | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index c475029e1..0d6afb18d 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -6,6 +6,7 @@ hip-python hip-python-as-cuda numpy sphinx-collapse +sphinx-reredirects sphinxcontrib-bibtex sphinxcontrib-moderncmakedomain sphinxcontrib.datatemplates diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 201d1c377..67d791c97 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -141,7 +141,7 @@ requests==2.31.0 # via # pygithub # sphinx -rocm-docs-core[api-reference]==1.1.1 +rocm-docs-core[api_reference]==1.1.1 # via -r requirements.in six==1.16.0 # via pybtex @@ -163,6 +163,7 @@ sphinx==7.3.7 # sphinx-design # sphinx-external-toc # sphinx-notfound-page + # sphinx-reredirects # sphinx-substitution-extensions # sphinxcontrib-bibtex # sphinxcontrib-datatemplates @@ -180,6 +181,8 @@ sphinx-external-toc==1.0.1 # via rocm-docs-core sphinx-notfound-page==1.0.0 # via rocm-docs-core +sphinx-reredirects==0.1.3 + # via -r requirements.in sphinx-substitution-extensions==2022.2.16 # via -r requirements.in sphinxcontrib-applehelp==1.0.8 From 942aeedd7285275740c08c5e42e02ce7c5c141ba Mon Sep 17 00:00:00 2001 From: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> Date: Mon, 6 May 2024 16:45:24 -0400 Subject: [PATCH 006/175] Add compatibility matrix (#3082) (#3087) * Add compatibility matrix (#3082) * add compatibility matrix and custom css * fix toc * reorder some components in matrix, add missing tools to reference page * Update docs/compatibility/compatibility-matrix.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> --------- Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * update OS strings to be more readable and searchable (#3088) --------- Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> --- docs/compatibility/compatibility-matrix.rst | 125 ++ .../compatibility/precision-support.rst | 2 +- docs/conf.py | 3 + docs/index.md | 3 +- docs/reference/gpu-arch-specs.rst | 1282 +++++++++-------- docs/reference/rocm-tools.md | 2 + docs/sphinx/_toc.yml.in | 4 +- docs/sphinx/static/css/rocm_custom.css | 53 + 8 files changed, 831 insertions(+), 643 deletions(-) create mode 100644 docs/compatibility/compatibility-matrix.rst rename docs/{about => }/compatibility/precision-support.rst (99%) create mode 100644 docs/sphinx/static/css/rocm_custom.css diff --git a/docs/compatibility/compatibility-matrix.rst b/docs/compatibility/compatibility-matrix.rst new file mode 100644 index 000000000..2702079b6 --- /dev/null +++ b/docs/compatibility/compatibility-matrix.rst @@ -0,0 +1,125 @@ +.. meta:: + :description: ROCm compatibility matrix + :keywords: AMD, GPU, architecture, hardware, compatibility, requirements + +************************************************************************************** +Compatibility matrix +************************************************************************************** + +Use this matrix to view the ROCm compatibility across successive major and minor releases. + + +.. container:: format-big-table + + .. csv-table:: + :header: "ROCm Version", "6.1.0", "6.0.0" + :stub-columns: 1 + + :doc:`Operating Systems `, "Ubuntu 22.04.4, 22.04.3","Ubuntu 22.04.4, 22.04.3" + ,"Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5" + ,"RHEL 9.3, 9.2","RHEL 9.3, 9.2" + ,"RHEL 8.9, 8.8","RHEL 8.9, 8.8" + ,"SLES 15 SP5, SP4","SLES 15 SP5, SP4" + ,CentOS 7.9,CentOS 7.9 + ,, + :doc:`GFX Architecture `,CDNA3,CDNA3 + ,CDNA2,CDNA2 + ,CDNA,CDNA + ,RDNA3,RDNA3 + ,RDNA2,RDNA2 + ,, + :doc:`GFX Card `,gfx1100,gfx1100 + ,gfx1030,gfx1030 + ,gfx942 [#]_, gfx942 [#]_ + ,gfx90a,gfx90a + ,gfx908,gfx908 + ,, + ECOSYSTEM SUPPORT:,, + :doc:`PyTorch `,"2.1, 2.0, 1.13","2.1, 2.0, 1.13" + :doc:`Tensorflow `,"2.15, 2.14, 2.13","2.14, 2.13, 2.12" + :doc:`JAX `,0.4.26,0.4.26 + `ONNX-RT `_,1.17.3,1.14.1 + ,, + 3RD PARTY COMMUNICATION LIBS:,, + `UCC `_,>=1.2.0,>=1.2.0 + `UCX `_,>=1.14.1,>=1.14.1 + ,, + 3RD PARTY ALGORITHM LIBS:,, + Thrust,2.1.0,2.0.1 + CUB,2.1.0,2.0.1 + ,, + ML & COMPUTER VISION LIBS:,, + :doc:`Composable Kernel `,1.1.0,1.1.0 + :doc:`MIGraphX `,2.9.0,2.8.0 + :doc:`MIOpen `,3.1.0,3.0.0 + :doc:`MIVisionX `,2.5.0,2.5.0 + :doc:`rocDecode `,0.5.0,N/A + :doc:`RPP `,1.5.0,1.4.0 + ,, + COMMUNICATION:,, + :doc:`rccl `,2.18.6,2.18.3 + ,, + MATH LIBS:,, + `half `_ ,1.12.0,1.12.0 + :doc:`hipBLAS `,2.1.0,2.0.0 + :doc:`hipBLASLt `,0.7.0,0.6.0 + :doc:`hipFFT `,1.0.14,1.0.13 + :doc:`hipFORT `,0.4.0,0.4.0 + :doc:`hipRAND `,2.10.16,2.10.16 + :doc:`hipSOLVER `,2.1.0,2.0.0 + :doc:`hipSPARSE `,3.0.1,3.0.0 + :doc:`hipSPARSELt `,0.1.0,0.1.0 + :doc:`rocALUTION `,3.1.1,3.0.3 + :doc:`rocBLAS `,4.1.0,4.0.0 + :doc:`rocFFT `,1.0.27,1.0.23 + :doc:`rocRAND `,3.0.1,2.10.17 + :doc:`rocSOLVER `,3.25.0,3.24.0 + :doc:`rocSPARSE `,3.1.2,3.0.2 + :doc:`rocWMMA `,1.4.0,1.3.0 + `Tensile `_,4.40.0,4.39.0 + ,, + PRIMITIVES:,, + :doc:`hipCUB `,3.1.0,3.0.0 + :doc:`hipTensor `,1.2.0,1.1.0 + :doc:`rocPRIM `,3.1.0,3.0.0 + :doc:`rocThrust `,3.0.1,3.0.0 + ,, + SUPPORT LIBS:,, + `hipother `_,6.1.40091,6.0.32830 + `rocm-cmake `_,0.12.0,0.11.0 + `rocm-core `_,6.1.0,6.0.0 + `ROCT-Thunk-Interface `_,20240125.3.30,20231016.2.245 + ,, + TOOLS:,, + :doc:`HIPIFY `,17.0.0,17.0.0 + :doc:`ROCdbgapi `,0.71.0,0.71.0 + `ROCdebug-Agent `_,2.0.3,2.0.3 + :doc:`rocGDB `,14.1.0,13.2.0 + :doc:`rocProfiler `,2.0.60100,2.0.0 + `rocprofiler-register `_,0.3.0,N/A + :doc:`rocTracer `,4.1.60100,4.1.0 + `rocm_bandwidth_test `_,1.4.0,1.4.0 + :doc:`ROCm Data Center Tool `,0.3.0,0.3.0 + `rocminfo `_,1.0.0,1.0.0 + :doc:`ROCm SMI Lib `,7.0.0,6.0.0 + :doc:`ROCm Validation Suite `,rocm-6.1.0,rocm-6.0.0 + :doc:`TransferBench `,1.48,1.46 + ,, + COMPILERS:,, + `AOMP `_,17.60.0,17.60.0 + `clang-ocl `_,0.5.0,0.5.0 + `Flang `_,17.0.0.24103,17.0.0.23483 + `llvm-project `_,17.0.0.24103,17.0.0.23483 + `OpenMP `_,17.0.0.24103,17.0.0.23483 + ,, + RUNTIMES:,, + :doc:`HIP `,6.1.40091,6.0.32830 + `OpenCL Runtime `_,2.0.0,2.0.0 + `ROCR Runtime `_,1.13.0,1.12.0 + + +.. rubric:: Footnotes +.. [#] **For ROCm 6.1** - MI300A (gfx942) is supported on Ubuntu 22.04.4, RHEL 9.3 & 8.9 and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.4. +.. [#] **For ROCm 6.0** - MI300A (gfx942) is supported on Ubuntu 22.04.3, RHEL 8.9 and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.3. + + diff --git a/docs/about/compatibility/precision-support.rst b/docs/compatibility/precision-support.rst similarity index 99% rename from docs/about/compatibility/precision-support.rst rename to docs/compatibility/precision-support.rst index fa0a385ad..3474dd67a 100644 --- a/docs/about/compatibility/precision-support.rst +++ b/docs/compatibility/precision-support.rst @@ -47,7 +47,7 @@ Floating-point types The floating-point types that are supported by ROCm are listed in the following table, together with their corresponding HIP type and a short description. -.. image:: ../../data/about/compatibility/floating-point-data-types.png +.. image:: ../data/about/compatibility/floating-point-data-types.png :alt: Supported floating-point types .. list-table:: diff --git a/docs/conf.py b/docs/conf.py index eade37a8f..3d31982d2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -98,6 +98,9 @@ external_projects_current_project = "rocm" html_theme = "rocm_docs_theme" html_theme_options = {"flavor": "rocm-docs-home"} +html_static_path = ["sphinx/static/css"] +html_css_files = ["rocm_custom.css"] + html_title = "ROCm Documentation" html_theme_options = { diff --git a/docs/index.md b/docs/index.md index 862330ac8..b85ab88f3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -51,13 +51,14 @@ Our documentation is organized into the following categories: :img-alt: Compatibility information :padding: 2 +* [Compatibility matrix](./compatibility/compatibility-matrix.rst) * {doc}`System requirements (Linux)` * {doc}`System requirements (Windows)` * {doc}`Third-party support` * {doc}`User/kernel space` * {doc}`Docker` * [OpenMP](./about/compatibility/openmp.md) -* [Precision support](./about/compatibility/precision-support.rst) +* [Precision support](./compatibility/precision-support.rst) * {doc}`ROCm on Radeon GPUs` ::: diff --git a/docs/reference/gpu-arch-specs.rst b/docs/reference/gpu-arch-specs.rst index b8647e830..b72c3b142 100644 --- a/docs/reference/gpu-arch-specs.rst +++ b/docs/reference/gpu-arch-specs.rst @@ -7,655 +7,657 @@ Accelerator and GPU hardware specifications The following tables provide an overview of the hardware specifications for AMD Instinct™ accelerators, and AMD Radeon™ PRO and Radeon™ GPUs. -.. tab-set:: +.. container:: horizontal-scrolling-container - .. tab-item:: AMD Instinct accelerators + .. tab-set:: - .. list-table:: - :header-rows: 1 - :name: instinct-arch-spec-table + .. tab-item:: AMD Instinct accelerators - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - L3 Cache (MiB) - - L2 Cache (MiB) - - L1 Vector Cache (KiB) - - L1 Scalar Cache (KiB) - - L1 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - MI300X - - CDNA3 - - gfx941 or gfx942 - - 192 - - 304 - - 64 - - 64 - - 256 - - 32 - - 32 - - 16 per 2 CUs - - 64 per 2 CUs - - 512 - - 12.5 - * - - MI300A - - CDNA3 - - gfx940 or gfx942 - - 128 - - 228 - - 64 - - 64 - - 256 - - 24 - - 32 - - 16 per 2 CUs - - 64 per 2 CUs - - 512 - - 12.5 - * - - MI250X - - CDNA2 - - gfx90a - - 128 - - 220 (110 per GCD) - - 64 - - 64 - - - - 16 (8 per GCD) - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI250 - - CDNA2 - - gfx90a - - 128 - - 208 - - 64 - - 64 - - - - 16 (8 per GCD) - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI210 - - CDNA2 - - gfx90a - - 64 - - 104 - - 64 - - 64 - - - - 8 - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI100 - - CDNA - - gfx908 - - 32 - - 120 - - 64 - - 64 - - - - 8 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 VGPR and 256 AccVGPR - - 12.5 - * - - MI60 - - GCN5.1 - - gfx906 - - 32 - - 64 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI50 (32GB) - - GCN5.1 - - gfx906 - - 32 - - 60 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI50 (16GB) - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI25 - - GCN5.0 - - gfx900 - - 16  - - 64 - - 64 - - 64  - - - - 4  - - 16  - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI8 - - GCN3.0 - - gfx803 - - 4 - - 64 - - 64 - - 64 - - - - 2 - - 16 - - 16 per 4 CUs - - 32 per 4 CUs - - 256 - - 12.5 - * - - MI6 - - GCN4.0 - - gfx803 - - 16 - - 36 - - 64 - - 64 - - - - 2 - - 16 - - 16 per 4 CUs - - 32 per 4 CUs - - 256 - - 12.5 + .. list-table:: + :header-rows: 1 + :name: instinct-arch-spec-table - .. tab-item:: AMD Radeon PRO GPUs + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - L3 Cache (MiB) + - L2 Cache (MiB) + - L1 Vector Cache (KiB) + - L1 Scalar Cache (KiB) + - L1 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - MI300X + - CDNA3 + - gfx941 or gfx942 + - 192 + - 304 + - 64 + - 64 + - 256 + - 32 + - 32 + - 16 per 2 CUs + - 64 per 2 CUs + - 512 + - 12.5 + * + - MI300A + - CDNA3 + - gfx940 or gfx942 + - 128 + - 228 + - 64 + - 64 + - 256 + - 24 + - 32 + - 16 per 2 CUs + - 64 per 2 CUs + - 512 + - 12.5 + * + - MI250X + - CDNA2 + - gfx90a + - 128 + - 220 (110 per GCD) + - 64 + - 64 + - + - 16 (8 per GCD) + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI250 + - CDNA2 + - gfx90a + - 128 + - 208 + - 64 + - 64 + - + - 16 (8 per GCD) + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI210 + - CDNA2 + - gfx90a + - 64 + - 104 + - 64 + - 64 + - + - 8 + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI100 + - CDNA + - gfx908 + - 32 + - 120 + - 64 + - 64 + - + - 8 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 VGPR and 256 AccVGPR + - 12.5 + * + - MI60 + - GCN5.1 + - gfx906 + - 32 + - 64 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI50 (32GB) + - GCN5.1 + - gfx906 + - 32 + - 60 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI50 (16GB) + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI25 + - GCN5.0 + - gfx900 + - 16  + - 64 + - 64 + - 64  + - + - 4  + - 16  + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI8 + - GCN3.0 + - gfx803 + - 4 + - 64 + - 64 + - 64 + - + - 2 + - 16 + - 16 per 4 CUs + - 32 per 4 CUs + - 256 + - 12.5 + * + - MI6 + - GCN4.0 + - gfx803 + - 16 + - 36 + - 64 + - 64 + - + - 2 + - 16 + - 16 per 4 CUs + - 32 per 4 CUs + - 256 + - 12.5 - .. list-table:: - :header-rows: 1 - :name: radeon-pro-arch-spec-table + .. tab-item:: AMD Radeon PRO GPUs - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - Infinity Cache (MiB) - - L2 Cache (MiB) - - Graphics L1 Cache (KiB) - - L0 Vector Cache (KiB) - - L0 Scalar Cache (KiB) - - L0 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - Radeon PRO W7900 - - RDNA3 - - gfx1100 - - 48 - - 96 - - 32 - - 128 - - 96 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W7800 - - RDNA3 - - gfx1100 - - 32 - - 70 - - 32 - - 128 - - 64 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W7700 - - RDNA3 - - gfx1101 - - 16 - - 48 - - 32 - - 128 - - 64 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W6800 - - RDNA2 - - gfx1030 - - 32 - - 60 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon PRO W6600 - - RDNA2 - - gfx1032 - - 8 - - 28 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon PRO V620 - - RDNA2 - - gfx1030 - - 32 - - 72 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon Pro W5500 - - RDNA - - gfx1012 - - 8 - - 22 - - 32 - - 128 - - - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon Pro VII - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 - - - - 4 - - - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 + .. list-table:: + :header-rows: 1 + :name: radeon-pro-arch-spec-table - .. tab-item:: AMD Radeon GPUs + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - Infinity Cache (MiB) + - L2 Cache (MiB) + - Graphics L1 Cache (KiB) + - L0 Vector Cache (KiB) + - L0 Scalar Cache (KiB) + - L0 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - Radeon PRO W7900 + - RDNA3 + - gfx1100 + - 48 + - 96 + - 32 + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W7800 + - RDNA3 + - gfx1100 + - 32 + - 70 + - 32 + - 128 + - 64 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W7700 + - RDNA3 + - gfx1101 + - 16 + - 48 + - 32 + - 128 + - 64 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W6800 + - RDNA2 + - gfx1030 + - 32 + - 60 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon PRO W6600 + - RDNA2 + - gfx1032 + - 8 + - 28 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon PRO V620 + - RDNA2 + - gfx1030 + - 32 + - 72 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon Pro W5500 + - RDNA + - gfx1012 + - 8 + - 22 + - 32 + - 128 + - + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon Pro VII + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 + - + - 4 + - + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 - .. list-table:: - :header-rows: 1 - :name: radeon-arch-spec-table + .. tab-item:: AMD Radeon GPUs - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - Infinity Cache (MiB) - - L2 Cache (MiB) - - Graphics L1 Cache (KiB) - - L0 Vector Cache (KiB) - - L0 Scalar Cache (KiB) - - L0 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - Radeon RX 7900 XTX - - RDNA3 - - gfx1100 - - 24 - - 96 - - 32 - - 128 - - 96 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7900 XT - - RDNA3 - - gfx1100 - - 20 - - 84 - - 32 - - 128 - - 80 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7900 GRE - - RDNA3 - - gfx1100 - - 16 - - 80 - - 32 - - 128 - - 64 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7800 XT - - RDNA3 - - gfx1101 - - 16 - - 60 - - 32 - - 128 - - 64 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7700 XT - - RDNA3 - - gfx1101 - - 12 - - 54 - - 32 - - 128 - - 48 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7600 - - RDNA3 - - gfx1102 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 256 - - 32 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6950 XT - - RDNA2 - - gfx1030 - - 16 - - 80 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6900 XT - - RDNA2 - - gfx1030 - - 16 - - 80 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6800 XT - - RDNA2 - - gfx1030 - - 16 - - 72 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6800 - - RDNA2 - - gfx1030 - - 16 - - 60 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6750 XT - - RDNA2 - - gfx1031 - - 12 - - 40 - - 32 - - 128 - - 96 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6700 XT - - RDNA2 - - gfx1031 - - 12 - - 40 - - 32 - - 128 - - 96 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6700 - - RDNA2 - - gfx1031 - - 10 - - 36 - - 32 - - 128 - - 80 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6650 XT - - RDNA2 - - gfx1032 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6600 XT - - RDNA2 - - gfx1032 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6600 - - RDNA2 - - gfx1032 - - 8 - - 28 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon VII - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 per CU - - - - 4 - - - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 + .. list-table:: + :header-rows: 1 + :name: radeon-arch-spec-table + + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - Infinity Cache (MiB) + - L2 Cache (MiB) + - Graphics L1 Cache (KiB) + - L0 Vector Cache (KiB) + - L0 Scalar Cache (KiB) + - L0 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - Radeon RX 7900 XTX + - RDNA3 + - gfx1100 + - 24 + - 96 + - 32 + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7900 XT + - RDNA3 + - gfx1100 + - 20 + - 84 + - 32 + - 128 + - 80 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7900 GRE + - RDNA3 + - gfx1100 + - 16 + - 80 + - 32 + - 128 + - 64 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7800 XT + - RDNA3 + - gfx1101 + - 16 + - 60 + - 32 + - 128 + - 64 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7700 XT + - RDNA3 + - gfx1101 + - 12 + - 54 + - 32 + - 128 + - 48 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7600 + - RDNA3 + - gfx1102 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 256 + - 32 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6950 XT + - RDNA2 + - gfx1030 + - 16 + - 80 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6900 XT + - RDNA2 + - gfx1030 + - 16 + - 80 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6800 XT + - RDNA2 + - gfx1030 + - 16 + - 72 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6800 + - RDNA2 + - gfx1030 + - 16 + - 60 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6750 XT + - RDNA2 + - gfx1031 + - 12 + - 40 + - 32 + - 128 + - 96 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6700 XT + - RDNA2 + - gfx1031 + - 12 + - 40 + - 32 + - 128 + - 96 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6700 + - RDNA2 + - gfx1031 + - 10 + - 36 + - 32 + - 128 + - 80 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6650 XT + - RDNA2 + - gfx1032 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6600 XT + - RDNA2 + - gfx1032 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6600 + - RDNA2 + - gfx1032 + - 8 + - 28 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon VII + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 per CU + - + - 4 + - + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 For more information on the terms used here, see the :ref:`specific documents and guides `, the :doc:`conceptual overview of the HIP programming model`, or the :doc:`HIP reference guide`. diff --git a/docs/reference/rocm-tools.md b/docs/reference/rocm-tools.md index 60801dd92..1a53a3273 100644 --- a/docs/reference/rocm-tools.md +++ b/docs/reference/rocm-tools.md @@ -19,6 +19,7 @@ :img-alt: Development tools :padding: 2 +* {doc}`HIPIFY ` * {doc}`ROCdbgapi ` * [ROCmCC](./rocmcc.md) * [ROCm Debug Agent](https://github.com/ROCm/rocr_debug_agent) @@ -35,6 +36,7 @@ * [RocBandwidthTest](https://github.com/ROCm/rocm_bandwidth_test) * {doc}`ROCProfiler ` +* [rocprofiler-register](https://github.com/ROCm/rocprofiler-register) * {doc}`ROCTracer ` ::: diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index af68deae1..433e30e81 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -25,11 +25,13 @@ subtrees: - caption: Compatibility entries: + - file: compatibility/compatibility-matrix.rst + title: Compatibility matrix - url: https://rocm.docs.amd.com/projects/install-on-linux/en/${branch}/reference/system-requirements.html title: Linux - url: https://rocm.docs.amd.com/projects/install-on-windows/en/${branch}/reference/system-requirements.html title: Windows - - file: about/compatibility/precision-support.rst + - file: compatibility/precision-support.rst title: Precision support - url: https://rocm.docs.amd.com/projects/install-on-linux/en/${branch}/reference/3rd-party-support-matrix.html title: Third-party diff --git a/docs/sphinx/static/css/rocm_custom.css b/docs/sphinx/static/css/rocm_custom.css new file mode 100644 index 000000000..7d14bb961 --- /dev/null +++ b/docs/sphinx/static/css/rocm_custom.css @@ -0,0 +1,53 @@ + +/* Adds container for big tables, used for Compatibility Matrix */ + + +/* Header row to have opaque background colour when sticky */ +.format-big-table th { + background-color: var(--pst-color-background); + white-space: nowrap; + } + + /* Turn on borders for whole table */ + .format-big-table th, + .format-big-table td { + border-width: 1px; + } + + /* .format-big-table th.head { */ + /* background-color: var(--pst-color-on-surface); */ + /* } */ + + /* Sticky header for table excluding the stub*/ + .format-big-table th.head:not(.stub) { + position: sticky; + top: 3rem; + z-index: 1; + } + + /* Sticky header for the head & stub: top left cell */ + .format-big-table th.head.stub { + position: sticky; + top: 3rem; + z-index: 1; + background-color: var(--pst-color-background); + white-space: nowrap; + } + + /* Sticky for the stub column */ + /*.format-big-table tbody th:not(:empty) { + position: sticky; + top: 3rem; + z-index: 2; + }*/ + + /* Removes borders for stub column */ + .format-big-table tbody th { + border-top: none; + border-bottom: none; + } + + /* For horizontal scrolling only. Can't be combined with format-big-table container */ + .horizontal-scrolling-container { + overflow-x: scroll; + } From 4110af38d62e0e4bdc72e84bd359865159aa15e3 Mon Sep 17 00:00:00 2001 From: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> Date: Mon, 6 May 2024 19:13:41 -0400 Subject: [PATCH 007/175] Compatibility Matrix - include AMDSMI (#3090) (#3093) --- docs/compatibility/compatibility-matrix.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/compatibility/compatibility-matrix.rst b/docs/compatibility/compatibility-matrix.rst index 2702079b6..6c629a3cd 100644 --- a/docs/compatibility/compatibility-matrix.rst +++ b/docs/compatibility/compatibility-matrix.rst @@ -91,6 +91,7 @@ Use this matrix to view the ROCm compatibility across successive major and minor `ROCT-Thunk-Interface `_,20240125.3.30,20231016.2.245 ,, TOOLS:,, + :doc:`AMD SMI `,24.4.1,23.4.2 :doc:`HIPIFY `,17.0.0,17.0.0 :doc:`ROCdbgapi `,0.71.0,0.71.0 `ROCdebug-Agent `_,2.0.3,2.0.3 From 2d0c702f6534e26c7044b74d9fa061639da4c36c Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Wed, 8 May 2024 15:57:49 -0600 Subject: [PATCH 008/175] Merge develop into roc-6.1.x (#3099) * Add ROCm version 6.1.0 to version list (#3023) * Update CHANGELOG.md Added GitHub links to Changelog * Update CHANGELOG.md * Update manifest for ROCm 6.1.0 (#3022) * Reorganize default.xml by group and alphabetically * Add rocDecode to default.xml * Add rocDecode to included names in tag script * update tag to 6.1.0 --------- Co-authored-by: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> * Update CHANGELOG.md Updated ROCm Compiler with fixed issue * docs(tools/autotag/README.md): Add additional note to avoid duplicating data in changelog template (#3018) * Bump rocm-docs-core from 0.38.1 to 1.0.0 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.38.1 to 1.0.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.38.1...v1.0.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Use Ubuntu 22.04 and Python 3.10 in RTD config * Update README.md (#3043) * Update README.md Fix rocSPARSE build link * Update link to just general page, instead of anchor * Add 'JAX for ROCm' link to index.md (#3034) * Add JAX for ROCm link to index.md * Reorder third-party libraries installation guides in index * Update links to rocAL component (#3033) * Update links to rocAL component * Change absolute rocm docs links to relative * Update compatibility/precision-support links (#3030) * Change links to component data type support pages from absolute to relative * Fix rocPRIM data type support links * Empty commit to trigger demo rebuild. * Update excluded and included projects * Separate templates into a module; Fix MIVisionX template * Add hipfort changelog processor * Add rpp custom processor * Add custom processor for rvs * update the code-owner list (#3046) * Update default.xml (#3038) * Remove HIPCC from default.xml HIPCC moved into llvm-project * Remove ROCm-Device-Libs from default.xml ROCm-Device-Libs was moved into llvm-project * Remove ROCm-CompilerSupport from default.xml ROCm-CompilerSupport was moved into llvm-project * Add rocprofiler-register to default.xml Added in 6.1 manifest * Apply mathlibs group to projects in manifest * Bump rocm-docs-core from 0.38.1 to 1.0.0 in /docs/sphinx (#3047) * Bump rocm-docs-core from 0.38.1 to 1.0.0 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.38.1 to 1.0.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.38.1...v1.0.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Set Ubuntu 22.04 and Python 3.10 in ReadtheDocs config --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sam Wu <22262939+samjwu@users.noreply.github.com> * Add 6.1.0.md template * Add AMD SMI to 6.1.0 template * Add ROCm Compiler to 6.1.0 template * Add RDC to 6.1.0 template * Add ROCgdb to 6.1.0 template * Add ROCm SMI to 6.1.0 template * Add ROCProfiler to 6.1.0 template * Add MI200 SR-IOV known issue to 6.1.0 template * Add MI300 RAS fixed defect to 6.1.0 template * docs(6.1.0.md): Add more changelog notes for 6.1.0 * Update 6.1.0.md Added links to GitHub for known issues and ROCm Compiler fixed defect * Test autotag script * Add ck template * Add HIPIFY to included names for tag script * Remove rocprofiler from tag_script * Remove RVS template Determine cause of missing later * Add HIPIFY to template for 6.1.0 * Add extra line to topp of template for formatting changelog * Update 5.7.1.md Fixing the broken link for rocBLAS programmer's guide in 5.7.1 Changelog. * Regenerate changelog with new 5.7.1 link fix * Add note for tag_script included_names * Improve readability of GPU architecture hardware specs (#3009) * move units of measurement to table headers * add glossary explaining table headers * add missed units and update h1 * toc listing to say indicate Accelerators & GPUs * fix typo * update meta description and keywords * Update title in toc to fit in sidebar * update title, toc, and filename * Fix broken link to HIP programming guide * Revert "update title, toc, and filename" This reverts commit 6b9e687805692d3815bea3537e6eb5557710c25a. * Revert glossary; slight fixes * Change 'Pro' to 'PRO' for consistency * Add references to programming and hardware architecture guides * Change 'warp' to 'wavefront' * Update changelog.jinja to exclude version number in header for lindividual libraries (#3058) * Base set of Azure DevOps pipeline library source (#3021) * Base set of Azure DevOps pipeline library source A base set of yaml files to orchestrate the build and testing of ROCm compiler and runtime components in an Azure DevOps project. * Use hipcc in llvm-project, also build OpenCL runtime. * Adding llvm-lit tests to llvm-project pipeline. Added comgr ctest as well. * rocm-cmake unit testing in pipeline * Pipeline changes corresponding to 6.1 release * Bump rocm-docs-core from 1.0.0 to 1.1.0 in /docs/sphinx (#3063) Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 1.0.0 to 1.1.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v1.0.0...v1.1.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump rocm-docs-core from 1.0.0 to 1.1.0 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 1.0.0 to 1.1.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v1.0.0...v1.1.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * update the default.xml for ROCm6.1 (#3067) Co-authored-by: Wang, Yanyao * Bump urllib3 from 1.26.13 to 1.26.18 in /docs/sphinx (#3068) Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.13 to 1.26.18. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.13...1.26.18) --- updated-dependencies: - dependency-name: urllib3 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add 6.1.1.md template * Bump rocm-docs-core from 1.1.0 to 1.1.1 in /docs/sphinx (#3070) Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 1.1.0 to 1.1.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v1.1.0...v1.1.1) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix broken link on hardware specs page (#3075) * Fix broken link Fix broken link on hardware specs page to HIP programming model due to refactoring of HIP docs. * Update link anchor * Tagged builds of External CI components (#3078) * Tagged builds of External CI components Adding capability to kick off builds of ROCm components based on a tag ref, without the need of the yaml file in the corresponding repo that is used for pre-submit and on-submit builds. This unblocks the team from creating an initial set of pipelines to verify things work. Also made some improvements to the code structure and added support for more repos. --------- Co-authored-by: abhimeda Co-authored-by: alexxu-amd * More external CI pipelines (#3083) Changing default behaviour for PRs with tag-builds. Changing build system for some jobs based on execution time. Co-authored-by: abhimeda Co-authored-by: alexxu-amd * Add compatibility matrix (#3082) * add compatibility matrix and custom css * fix toc * reorder some components in matrix, add missing tools to reference page * Update docs/compatibility/compatibility-matrix.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> --------- Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * update OS strings to be more readable and searchable (#3088) * Tag build pipelines for four more ROCm repos (#3085) -rocgdb -hipother via HIP build with targeted platform -hipSOLVER -hipSPARSELt * Bump jinja2 from 3.1.3 to 3.1.4 in /docs/sphinx (#3089) Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/3.1.3...3.1.4) --- updated-dependencies: - dependency-name: jinja2 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Compatibility Matrix - include AMDSMI (#3090) * Extend codeowners for docs (#3091) * Add release notes Improve wording Clarify Ubuntu 22.04.5 is pre-release Add AMD SMI changes Fix md headings and some words Reword highlight Add feedback from Leo to release highlight Add generated changelog Add RELEASE.md for 6.1.1 Update highlight in RELEASE.md with change in 6.1.1 template Change h1 in CHANGELOG.md to ROCm 6.1.1 changelog Change release notes to changelog in CHANGELOG.md Fix missing info in CHANGELOG.md pre-6.1.1 Add HIPIFY 6.1.1 to changelog Add HIPIFY to RELEASE.md Also fix typo in changelog Add HIPIFY to 6.1.1 template * Fix util imports * Skip and log missing branches for release_data.py * Update autotag readme * Remove ck template * Fix changelog and release notes Add \n to top of 6.0.2 template Update RELEASE.md and 6.1.1.md Regenerate changelog Add minor wording changes in RELEASE.md Incorporate Leo's feedback Reformat RELEASE.md to fix build issue Fixes an issue preventing Changelog from appearing in the TOC. Update AMDSMI link & change 'release highlights' to 'release notes' Change AMD SMI link from develop to docs/6.1.1 * Bump rocm-docs-core from 1.1.0 to 1.1.1 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 1.1.0 to 1.1.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v1.1.0...v1.1.1) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update changelog and release notes for 6.1.1 Reformat 6.1.0 to 6.0.0 changelog Add ROCm SMI known issues to RN Tweak ROCm SMI wording Add known issue Reword known issue rn Fix headings and wording Remove redundancy Fix headings and known issue words Leo changes Remove known issue with Radeon GPUs Specify Navi3 GPUs in ROCM SMI known issue Change Navi 3x to RDNA3 Add OS support note Fix 6.1.1 template link to amdsmi Update 6.1.1 library table, add hipBLASLt to 6.1.1 CL/RN, update HIPCC upcoming changes wording Remove extra bullet Change gpu to GPU in rocFFT --------- Signed-off-by: dependabot[bot] Co-authored-by: Roopa Malavally <56051583+Rmalavally@users.noreply.github.com> Co-authored-by: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: peter Co-authored-by: amitkumar-amd <120512306+amitkumar-amd@users.noreply.github.com> Co-authored-by: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Co-authored-by: Yanyao Wang Co-authored-by: Wang, Yanyao Co-authored-by: abhimeda Co-authored-by: alexxu-amd Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> --- .azuredevops/README.md | 30 + .azuredevops/components/HIP.yml | 165 +++ .azuredevops/components/HIPIFY.yml | 52 + .azuredevops/components/MIVisionX.yml | 38 + .azuredevops/components/ROCR-Runtime.yml | 62 + .../components/ROCT-Thunk-Interface.yml | 32 + .azuredevops/components/ROCdbgapi.yml | 38 + .../components/ROCmValidationSuite.yml | 47 + .azuredevops/components/amdsmi.yml | 34 + .azuredevops/components/copyHIP.yml | 32 + .azuredevops/components/half.yml | 41 + .azuredevops/components/hipBLAS.yml | 55 + .azuredevops/components/hipBLASLt.yml | 54 + .azuredevops/components/hipCUB.yml | 42 + .azuredevops/components/hipFFT.yml | 47 + .azuredevops/components/hipRAND.yml | 48 + .azuredevops/components/hipSOLVER.yml | 58 + .azuredevops/components/hipSPARSE.yml | 40 + .azuredevops/components/hipSPARSELt.yml | 55 + .azuredevops/components/llvm-project.yml | 112 ++ .azuredevops/components/rccl.yml | 38 + .azuredevops/components/rocALUTION.yml | 40 + .azuredevops/components/rocBLAS.yml | 56 + .azuredevops/components/rocDecode.yml | 47 + .azuredevops/components/rocFFT.yml | 48 + .azuredevops/components/rocPRIM.yml | 45 + .azuredevops/components/rocRAND.yml | 44 + .azuredevops/components/rocThrust.yml | 47 + .azuredevops/components/rocgdb.yml | 35 + .azuredevops/components/rocm-cmake.yml | 48 + .azuredevops/components/rocm-core.yml | 33 + .azuredevops/components/rocm-examples.yml | 24 + .../components/rocm_bandwidth_test.yml | 46 + .azuredevops/components/rocm_smi_lib.yml | 27 + .azuredevops/components/rocminfo.yml | 42 + .../components/rocprofiler-register.yml | 24 + .azuredevops/components/rocprofiler.yml | 58 + .azuredevops/components/rocr_debug_agent.yml | 42 + .azuredevops/components/roctracer.yml | 61 + .azuredevops/tag-builds/HIP.yml | 39 + .azuredevops/tag-builds/HIPIFY.yml | 29 + .azuredevops/tag-builds/MIVisionX.yml | 29 + .azuredevops/tag-builds/ROCR-Runtime.yml | 29 + .../tag-builds/ROCT-Thunk-Interface.yml | 29 + .azuredevops/tag-builds/ROCdbgapi.yml | 29 + .../tag-builds/ROCmValidationSuite.yml | 29 + .azuredevops/tag-builds/amdsmi.yml | 29 + .azuredevops/tag-builds/half.yml | 29 + .azuredevops/tag-builds/hipBLAS.yml | 29 + .azuredevops/tag-builds/hipBLASLt.yml | 29 + .azuredevops/tag-builds/hipCUB.yml | 29 + .azuredevops/tag-builds/hipFFT.yml | 29 + .azuredevops/tag-builds/hipRAND.yml | 29 + .azuredevops/tag-builds/hipSOLVER.yml | 29 + .azuredevops/tag-builds/hipSPARSE.yml | 29 + .azuredevops/tag-builds/hipSPARSELt.yml | 29 + .azuredevops/tag-builds/llvm-project.yml | 29 + .azuredevops/tag-builds/rccl.yml | 29 + .azuredevops/tag-builds/rocALUTION.yml | 29 + .azuredevops/tag-builds/rocBLAS.yml | 29 + .azuredevops/tag-builds/rocDecode.yml | 29 + .azuredevops/tag-builds/rocFFT.yml | 29 + .azuredevops/tag-builds/rocPRIM.yml | 29 + .azuredevops/tag-builds/rocRAND.yml | 29 + .azuredevops/tag-builds/rocThrust.yml | 29 + .azuredevops/tag-builds/rocgdb.yml | 29 + .azuredevops/tag-builds/rocm-cmake.yml | 29 + .azuredevops/tag-builds/rocm-core.yml | 29 + .../tag-builds/rocm_bandwidth_test.yml | 29 + .azuredevops/tag-builds/rocm_smi_lib.yml | 29 + .azuredevops/tag-builds/rocminfo.yml | 29 + .../tag-builds/rocprofiler-register.yml | 29 + .azuredevops/tag-builds/rocprofiler.yml | 29 + .azuredevops/tag-builds/rocr_debug_agent.yml | 29 + .azuredevops/tag-builds/roctracer.yml | 29 + .../templates/steps/artifact-download.yml | 39 + .../steps/artifact-prepare-package.yml | 25 + .../templates/steps/artifact-upload.yml | 33 + .../templates/steps/build-autotools.yml | 36 + .azuredevops/templates/steps/build-cmake.yml | 43 + .azuredevops/templates/steps/build-script.yml | 22 + .azuredevops/templates/steps/ccache.yml | 11 + .azuredevops/templates/steps/checkout.yml | 17 + .azuredevops/templates/steps/dependencies.yml | 38 + .azuredevops/templates/steps/preamble.yml | 27 + .azuredevops/templates/steps/test.yml | 36 + .azuredevops/variables-global.yml | 21 + .github/CODEOWNERS | 6 +- CHANGELOG.md | 680 +++++---- RELEASE.md | 300 ++-- docs/compatibility/compatibility-matrix.rst | 126 ++ .../compatibility/precision-support.rst | 2 +- docs/conf.py | 3 + docs/index.md | 3 +- docs/reference/gpu-arch-specs.rst | 1283 +++++++++-------- docs/reference/rocm-tools.md | 2 + docs/sphinx/_toc.yml.in | 6 +- docs/sphinx/requirements.in | 4 +- docs/sphinx/requirements.txt | 22 +- docs/sphinx/static/css/rocm_custom.css | 53 + tools/autotag/README.md | 8 +- tools/autotag/templates/changelog.jinja | 2 +- tools/autotag/templates/rocm_changes/6.0.2.md | 3 +- tools/autotag/templates/rocm_changes/6.1.1.md | 67 + tools/autotag/util/__init__.py | 2 +- tools/autotag/util/release_data.py | 14 +- 106 files changed, 4719 insertions(+), 1156 deletions(-) create mode 100644 .azuredevops/README.md create mode 100644 .azuredevops/components/HIP.yml create mode 100644 .azuredevops/components/HIPIFY.yml create mode 100644 .azuredevops/components/MIVisionX.yml create mode 100644 .azuredevops/components/ROCR-Runtime.yml create mode 100644 .azuredevops/components/ROCT-Thunk-Interface.yml create mode 100644 .azuredevops/components/ROCdbgapi.yml create mode 100644 .azuredevops/components/ROCmValidationSuite.yml create mode 100644 .azuredevops/components/amdsmi.yml create mode 100644 .azuredevops/components/copyHIP.yml create mode 100644 .azuredevops/components/half.yml create mode 100644 .azuredevops/components/hipBLAS.yml create mode 100644 .azuredevops/components/hipBLASLt.yml create mode 100644 .azuredevops/components/hipCUB.yml create mode 100644 .azuredevops/components/hipFFT.yml create mode 100644 .azuredevops/components/hipRAND.yml create mode 100644 .azuredevops/components/hipSOLVER.yml create mode 100644 .azuredevops/components/hipSPARSE.yml create mode 100644 .azuredevops/components/hipSPARSELt.yml create mode 100644 .azuredevops/components/llvm-project.yml create mode 100644 .azuredevops/components/rccl.yml create mode 100644 .azuredevops/components/rocALUTION.yml create mode 100644 .azuredevops/components/rocBLAS.yml create mode 100644 .azuredevops/components/rocDecode.yml create mode 100644 .azuredevops/components/rocFFT.yml create mode 100644 .azuredevops/components/rocPRIM.yml create mode 100644 .azuredevops/components/rocRAND.yml create mode 100644 .azuredevops/components/rocThrust.yml create mode 100644 .azuredevops/components/rocgdb.yml create mode 100644 .azuredevops/components/rocm-cmake.yml create mode 100644 .azuredevops/components/rocm-core.yml create mode 100644 .azuredevops/components/rocm-examples.yml create mode 100644 .azuredevops/components/rocm_bandwidth_test.yml create mode 100644 .azuredevops/components/rocm_smi_lib.yml create mode 100644 .azuredevops/components/rocminfo.yml create mode 100644 .azuredevops/components/rocprofiler-register.yml create mode 100644 .azuredevops/components/rocprofiler.yml create mode 100644 .azuredevops/components/rocr_debug_agent.yml create mode 100644 .azuredevops/components/roctracer.yml create mode 100644 .azuredevops/tag-builds/HIP.yml create mode 100644 .azuredevops/tag-builds/HIPIFY.yml create mode 100644 .azuredevops/tag-builds/MIVisionX.yml create mode 100644 .azuredevops/tag-builds/ROCR-Runtime.yml create mode 100644 .azuredevops/tag-builds/ROCT-Thunk-Interface.yml create mode 100644 .azuredevops/tag-builds/ROCdbgapi.yml create mode 100644 .azuredevops/tag-builds/ROCmValidationSuite.yml create mode 100644 .azuredevops/tag-builds/amdsmi.yml create mode 100644 .azuredevops/tag-builds/half.yml create mode 100644 .azuredevops/tag-builds/hipBLAS.yml create mode 100644 .azuredevops/tag-builds/hipBLASLt.yml create mode 100644 .azuredevops/tag-builds/hipCUB.yml create mode 100644 .azuredevops/tag-builds/hipFFT.yml create mode 100644 .azuredevops/tag-builds/hipRAND.yml create mode 100644 .azuredevops/tag-builds/hipSOLVER.yml create mode 100644 .azuredevops/tag-builds/hipSPARSE.yml create mode 100644 .azuredevops/tag-builds/hipSPARSELt.yml create mode 100644 .azuredevops/tag-builds/llvm-project.yml create mode 100644 .azuredevops/tag-builds/rccl.yml create mode 100644 .azuredevops/tag-builds/rocALUTION.yml create mode 100644 .azuredevops/tag-builds/rocBLAS.yml create mode 100644 .azuredevops/tag-builds/rocDecode.yml create mode 100644 .azuredevops/tag-builds/rocFFT.yml create mode 100644 .azuredevops/tag-builds/rocPRIM.yml create mode 100644 .azuredevops/tag-builds/rocRAND.yml create mode 100644 .azuredevops/tag-builds/rocThrust.yml create mode 100644 .azuredevops/tag-builds/rocgdb.yml create mode 100644 .azuredevops/tag-builds/rocm-cmake.yml create mode 100644 .azuredevops/tag-builds/rocm-core.yml create mode 100644 .azuredevops/tag-builds/rocm_bandwidth_test.yml create mode 100644 .azuredevops/tag-builds/rocm_smi_lib.yml create mode 100644 .azuredevops/tag-builds/rocminfo.yml create mode 100644 .azuredevops/tag-builds/rocprofiler-register.yml create mode 100644 .azuredevops/tag-builds/rocprofiler.yml create mode 100644 .azuredevops/tag-builds/rocr_debug_agent.yml create mode 100644 .azuredevops/tag-builds/roctracer.yml create mode 100644 .azuredevops/templates/steps/artifact-download.yml create mode 100644 .azuredevops/templates/steps/artifact-prepare-package.yml create mode 100644 .azuredevops/templates/steps/artifact-upload.yml create mode 100644 .azuredevops/templates/steps/build-autotools.yml create mode 100644 .azuredevops/templates/steps/build-cmake.yml create mode 100644 .azuredevops/templates/steps/build-script.yml create mode 100644 .azuredevops/templates/steps/ccache.yml create mode 100644 .azuredevops/templates/steps/checkout.yml create mode 100644 .azuredevops/templates/steps/dependencies.yml create mode 100644 .azuredevops/templates/steps/preamble.yml create mode 100644 .azuredevops/templates/steps/test.yml create mode 100644 .azuredevops/variables-global.yml create mode 100644 docs/compatibility/compatibility-matrix.rst rename docs/{about => }/compatibility/precision-support.rst (99%) create mode 100644 docs/sphinx/static/css/rocm_custom.css create mode 100644 tools/autotag/templates/rocm_changes/6.1.1.md diff --git a/.azuredevops/README.md b/.azuredevops/README.md new file mode 100644 index 000000000..83808a55d --- /dev/null +++ b/.azuredevops/README.md @@ -0,0 +1,30 @@ +# ROCm-CI Azure DevOps Pipelines + +ROCm-CI Azure DevOps Pipelines contains markup language files that orchestrate build and test pipelines for ROCm components using [Azure DevOps](https://dev.azure.com/ROCm-CI/ROCm-CI/_build). + +## Project Organization + +- `/.azuredevops/variables-global.yml` - set of global variables accessible across any and all pipelines + - protected keywords such as tokens and passwords are kept as secrets within the Azure DevOps project +- `/.azuredevops/components` - the sequence of templated steps for the job that checks out source, builds, packages, and runs tests for a ROCm repo +- `/.azuredevops/scheduled` - the sequence of templated steps for jobs that are schedule-based and not tied to a specific ROCm repo +- `/.azuredevops/tag-builds` - yml files to orchestrate manual builds based on specific tags (e.g., releases) without needing the corresponding yaml file in the component's repo +- `/.azuredevops/templates` - reusable yml files representing the templated steps that form the sequences in the above directories + +### Per ROCm Repo + +- `/.azuredevops/rocm-ci.yml` - contains the CI and PR trigger definitions associated with that repo, pointing to the corresponding yml file in the components folder in this central repository + +## Key Azure Reference Links + +- [Pipeline Basics](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/key-pipelines-concepts?view=azure-devops) +- [Templates](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops&pivots=templates-includes) +- [Use Predefined Variables](https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml) +- [YAML schema](https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/?view=azure-pipelines&viewFallbackFrom=azure-devops) +- [Azure Pipelines Task Index](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/?view=azure-pipelines) + +## Disclaimer + +The information presented in this document is for informational purposes only and may contain technical inaccuracies, omissions, and typographical errors. The information contained herein is subject to change and may be rendered inaccurate for many reasons, including but not limited to product and roadmap changes, component and motherboard versionchanges, new model and/or product releases, product differences between differing manufacturers, software changes, BIOS flashes, firmware upgrades, or the like. Any computer system has risks of security vulnerabilities that cannot be completely prevented or mitigated.AMD assumes no obligation to update or otherwise correct or revise this information. However, AMD reserves the right to revise this information and to make changes from time to time to the content hereof without obligation of AMD to notify any person of such revisions or changes.THIS INFORMATION IS PROVIDED ‘AS IS.” AMD MAKES NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE CONTENTS HEREOF AND ASSUMES NO RESPONSIBILITY FOR ANY INACCURACIES, ERRORS, OR OMISSIONS THAT MAY APPEAR IN THIS INFORMATION. AMD SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT WILL AMD BE LIABLE TO ANY PERSON FOR ANY RELIANCE, DIRECT, INDIRECT, SPECIAL, OR OTHER CONSEQUENTIAL DAMAGES ARISING FROM THE USE OF ANY INFORMATION CONTAINED HEREIN, EVEN IF AMD IS EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. AMD, the AMD Arrow logo, and combinations thereof are trademarks of Advanced Micro Devices, Inc. Other product names used in this publication are for identification purposes only and may be trademarks of their respective companies. + +© 2024 Advanced Micro Devices, Inc. All Rights Reserved. diff --git a/.azuredevops/components/HIP.yml b/.azuredevops/components/HIP.yml new file mode 100644 index 000000000..5d78f0144 --- /dev/null +++ b/.azuredevops/components/HIP.yml @@ -0,0 +1,165 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libnuma-dev + - mesa-common-dev +- name: pipModules + type: object + default: + - CppHeaderParser + +# hip and clr are tightly-coupled +# run this same template for both repos +# any changes for clr should just trigger HIP pipeline +# similarly for hipother repo, for Nvidia backend + +# HIP with AMD backend +jobs: +- job: hip_clr_combined_amd + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} +# checkout triggering repo (either HIP or clr) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# if this is triggered by HIP repo, matching repo is clr +# if this is triggered by clr repo, matching repo is HIP + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: matching_repo +# download tasks has built in 4x retry download count +# these will download last passing build for that branch +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + branchName: master + pipelineId: $(roct-thunk-interface-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + branchName: master + pipelineId: $(rocr-runtime-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocprofiler-register + branchName: amd-mainline + pipelineId: $(rocprofiler-register-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + pipelineId: $(roct-thunk-interface-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + pipelineId: $(rocr-runtime-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocprofiler-register + pipelineId: $(rocprofiler-register-tagged-pipeline-id) + - script: 'ls -1R $(Agent.BuildDirectory)/rocm' + displayName: 'Artifact listing' +# compile clr + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: clr + cmakeBuildDir: 'clr/build' + extraBuildFlags: >- + -DHIP_COMMON_DIR="$(Build.SourcesDirectory)/HIP" + -DHIP_PLATFORM=amd + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + -DROCM_PATH="$(Agent.BuildDirectory)/rocm" + -DHIPCC_BIN_DIR="$(Agent.BuildDirectory)/rocm/bin" + -DCLR_BUILD_HIP=ON + -DCLR_BUILD_OCL=ON + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + artifactName: amd + +# HIP with Nvidia backend +- job: hip_clr_combined_nvidia + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} +# checkout triggering repo (either HIP or clr) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# if this is triggered by HIP repo, matching repo is clr +# if this is triggered by clr repo, matching repo is HIP + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: matching_repo + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: hipother_repo +# download tasks has built in 4x retry download count +# these will download last passing build for that branch +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - script: 'ls -1R $(Agent.BuildDirectory)/rocm' + displayName: 'Artifact listing' +# compile clr + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: clr + cmakeBuildDir: 'clr/build' + extraBuildFlags: >- + -DHIP_COMMON_DIR="$(Build.SourcesDirectory)/HIP" + -DHIP_PLATFORM=nvidia + -DHIPCC_BIN_DIR="$(Agent.BuildDirectory)/rocm/bin" + -DCLR_BUILD_HIP=ON + -DCLR_BUILD_OCL=OFF + -DHIPNV_DIR="$(Build.SourcesDirectory)/hipother/hipnv" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + artifactName: nvidia diff --git a/.azuredevops/components/HIPIFY.yml b/.azuredevops/components/HIPIFY.yml new file mode 100644 index 000000000..16ae0ff41 --- /dev/null +++ b/.azuredevops/components/HIPIFY.yml @@ -0,0 +1,52 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libnuma-dev + +jobs: +- job: HIPIFY + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: \tag-builds\llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm" + -DROCM_PATH="$(Agent.BuildDirectory)/rocm" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/MIVisionX.yml b/.azuredevops/components/MIVisionX.yml new file mode 100644 index 000000000..cbcd92562 --- /dev/null +++ b/.azuredevops/components/MIVisionX.yml @@ -0,0 +1,38 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + +jobs: +- job: MIVisionX + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - task: Bash@3 + displayName: 'Dependency Setup' + inputs: + targetType: inline + script: 'python3 MIVisionX-setup.py' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCR-Runtime.yml b/.azuredevops/components/ROCR-Runtime.yml new file mode 100644 index 000000000..4e388407f --- /dev/null +++ b/.azuredevops/components/ROCR-Runtime.yml @@ -0,0 +1,62 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libelf-dev + - g++ + - libdrm-dev + - libnuma-dev + +jobs: +- job: ROCR_Runtime + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + branchName: master + pipelineId: $(roct-thunk-interface-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + pipelineId: $(roct-thunk-interface-tagged-pipeline-id) + - script: 'ls -1R $(Agent.BuildDirectory)/rocm' + displayName: 'Artifact listing' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + cmakeBuildDir: 'src/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCT-Thunk-Interface.yml b/.azuredevops/components/ROCT-Thunk-Interface.yml new file mode 100644 index 000000000..c3d51f2e7 --- /dev/null +++ b/.azuredevops/components/ROCT-Thunk-Interface.yml @@ -0,0 +1,32 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libnuma-dev + - libdrm-dev + +jobs: +- job: ROCT_Thunk_Interface + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCdbgapi.yml b/.azuredevops/components/ROCdbgapi.yml new file mode 100644 index 000000000..dd930c7c3 --- /dev/null +++ b/.azuredevops/components/ROCdbgapi.yml @@ -0,0 +1,38 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + +jobs: +- job: ROCdbgapi + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCmValidationSuite.yml b/.azuredevops/components/ROCmValidationSuite.yml new file mode 100644 index 000000000..3c7f26ab9 --- /dev/null +++ b/.azuredevops/components/ROCmValidationSuite.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocblas + - libyaml-cpp-dev + - libpci-dev + - libpci3 + - googletest + - git + +jobs: +- job: ROCmValidationSuite + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DROCM_PATH=/opt/rocm + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCPACK_PACKAGING_INSTALL_PREFIX='$(Build.BinariesDirectory)' + -DAMDGPU_TARGETS=gfx1100 + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/amdsmi.yml b/.azuredevops/components/amdsmi.yml new file mode 100644 index 000000000..c8b7ee794 --- /dev/null +++ b/.azuredevops/components/amdsmi.yml @@ -0,0 +1,34 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libdrm-dev + +jobs: +- job: amdsmi + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DBUILD_TESTS=ON + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/copyHIP.yml b/.azuredevops/components/copyHIP.yml new file mode 100644 index 000000000..a5c0ab8ba --- /dev/null +++ b/.azuredevops/components/copyHIP.yml @@ -0,0 +1,32 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +# hip and clr are tightly-coupled +# run this same template for both repos +# any changes for clr should just trigger HIP pipeline +jobs: +- job: hip_clr_combined + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: +# checkout nothing, just copy artifacts from triggering HIP job +# and then publish for this clr job or for this hipother job to maintain latest + - checkout: none + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: HIP + branchName: develop + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml + parameters: + sourceDir: $(Agent.BuildDirectory)/rocm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/half.yml b/.azuredevops/components/half.yml new file mode 100644 index 000000000..1496d21ce --- /dev/null +++ b/.azuredevops/components/half.yml @@ -0,0 +1,41 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + +jobs: +- job: half + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_BUILD_TYPE=Release + -DBUILD_CLIENTS=ON + -L + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipBLAS.yml b/.azuredevops/components/hipBLAS.yml new file mode 100644 index 000000000..12e349ef8 --- /dev/null +++ b/.azuredevops/components/hipBLAS.yml @@ -0,0 +1,55 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocblas + - rocsparse + - rocsolver + - gfortran + - libopenblas-dev + - git + +jobs: +- job: hipBLAS + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# build external gtest and lapack + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: external + cmakeBuildDir: 'deps/build' + installDir: '$(Pipeline.Workspace)/deps-install' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake + -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DHIP_PLATFORM=amd + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipBLASLt.yml b/.azuredevops/components/hipBLASLt.yml new file mode 100644 index 000000000..b03da47bf --- /dev/null +++ b/.azuredevops/components/hipBLASLt.yml @@ -0,0 +1,54 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - python3-venv + - libmsgpack-dev + - hipblas-dev + - git +- name: pipModules + type: object + default: + - joblib + +jobs: +- job: hipBLASLt + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx90a + -DTensile_LOGIC= + -DTensile_CPU_THREADS= + -DTensile_CODE_OBJECT_VERSION=default + -DTensile_LIBRARY_FORMAT=msgpack + -DCMAKE_PREFIX_PATH="/opt/rocm" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipCUB.yml b/.azuredevops/components/hipCUB.yml new file mode 100644 index 000000000..921db9fe3 --- /dev/null +++ b/.azuredevops/components/hipCUB.yml @@ -0,0 +1,42 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - rocprim + - googletest + - git + +jobs: +- job: hipCUB + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_PREFIX_PATH="/opt/rocm" + -DBUILD_TEST=ON + -DAMDGPU_TARGETS=gfx1100 + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipFFT.yml b/.azuredevops/components/hipFFT.yml new file mode 100644 index 000000000..f20dfc304 --- /dev/null +++ b/.azuredevops/components/hipFFT.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocrand + - hiprand + - rocfft + - libboost-program-options-dev + - googletest + - libfftw3-dev + +jobs: +- job: hipFFT + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_BUILD_TYPE=Release + -DBUILD_CLIENTS=ON + -L + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipRAND.yml b/.azuredevops/components/hipRAND.yml new file mode 100644 index 000000000..ef61cb5e8 --- /dev/null +++ b/.azuredevops/components/hipRAND.yml @@ -0,0 +1,48 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - googletest + - git + - rocrand + +jobs: +- job: hipRAND + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DBUILD_TEST=ON + -DCMAKE_MODULE_PATH="/opt/rocm/lib/cmake/hip" + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_BUILD_TYPE=Release + -DAMDGPU_TARGETS=gfx1100 + -DHIP_COMPILER=clang + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipSOLVER.yml b/.azuredevops/components/hipSOLVER.yml new file mode 100644 index 000000000..b1913188d --- /dev/null +++ b/.azuredevops/components/hipSOLVER.yml @@ -0,0 +1,58 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocblas + - rocsparse + - hipsparse + - rocsolver + - libsuitesparse-dev + - gfortran + - git + +jobs: +- job: hipSOLVER + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# build external gtest and lapack + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: external + cmakeBuildDir: 'deps/build' + installDir: '$(Pipeline.Workspace)/deps-install' + extraBuildFlags: -DBUILD_BOOST=OFF + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DBUILD_CLIENTS_TESTS=ON + -DUSE_CUDA=OFF + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipSPARSE.yml b/.azuredevops/components/hipSPARSE.yml new file mode 100644 index 000000000..8f8d24bb6 --- /dev/null +++ b/.azuredevops/components/hipSPARSE.yml @@ -0,0 +1,40 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libboost-program-options-dev + - googletest + - libfftw3-dev + - rocsparse + - git + +jobs: +- job: hipSPARSE + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-script.yml + parameters: + scriptExecutable: sudo ./install.sh + scriptParameters: -c -i -d diff --git a/.azuredevops/components/hipSPARSELt.yml b/.azuredevops/components/hipSPARSELt.yml new file mode 100644 index 000000000..cfdc736c6 --- /dev/null +++ b/.azuredevops/components/hipSPARSELt.yml @@ -0,0 +1,55 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - python3-venv + - libmsgpack-dev + - hipsparse-dev + - git +- name: pipModules + type: object + default: + - joblib + +jobs: +- job: hipSPARSELt + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=all + -DTensile_LOGIC= + -DTensile_CPU_THREADS= + -DTensile_CODE_OBJECT_VERSION=default + -DTensile_LIBRARY_FORMAT=msgpack + -DCMAKE_PREFIX_PATH="/opt/rocm" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/llvm-project.yml b/.azuredevops/components/llvm-project.yml new file mode 100644 index 000000000..c9cf8d294 --- /dev/null +++ b/.azuredevops/components/llvm-project.yml @@ -0,0 +1,112 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - python3-pip + - libnuma-dev + - ninja-build + - ccache + +jobs: +- job: llvm_project + variables: + - group: common + - template: /.azuredevops/variables-global.yml + - name: HIP_DEVICE_LIB_PATH + value: '$(Build.BinariesDirectory)/amdgcn/bitcode' + pool: ${{ variables.CLOUD_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocm-cmake + branchName: develop + pipelineId: $(rocm-cmake-pipeline-id) + testFailuresOkay: true +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocm-cmake + pipelineId: $(rocm-cmake-tagged-pipeline-id) + testFailuresOkay: true + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: rocm-llvm + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Build.BinariesDirectory)/llvm;$(Build.BinariesDirectory)" + -DCMAKE_BUILD_TYPE=Release + -DLLVM_ENABLE_PROJECTS="llvm;clang;lld;clang-tools-extra" + -DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind" + -DCLANG_ENABLE_AMDCLANG="ON" + -DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" + -GNinja + cmakeBuildDir: 'llvm/build' + installDir: '$(Build.BinariesDirectory)/llvm' +# use llvm-lit to run unit tests for llvm, clang, and lld + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: check-llvm + testDir: 'llvm/build' + testExecutable: './bin/llvm-lit' + testParameters: '-q --xunit-xml-output=llvm_test_output.xml ./test' + testOutputFile: llvm_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: check-clang + testDir: 'llvm/build' + testExecutable: './bin/llvm-lit' + testParameters: '-q --xunit-xml-output=clang_test_output.xml ./tools/clang/test' + testOutputFile: clang_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: check-lld + testDir: 'llvm/build' + testExecutable: './bin/llvm-lit' + testParameters: '-q --xunit-xml-output=lld_test_output.xml ./tools/lld/test' + testOutputFile: lld_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: device-libs + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Build.SourcesDirectory)/llvm/build" + -DCMAKE_BUILD_TYPE=Release + cmakeBuildDir: 'amd/device-libs/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: comgr + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Build.SourcesDirectory)/llvm/build;$(Build.SourcesDirectory)/amd/device-libs/build" + -DCMAKE_BUILD_TYPE=Release + cmakeBuildDir: 'amd/comgr/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: comgr + testParameters: '--output-on-failure --force-new-ctest-process --output-junit comgr_test_output.xml' + testDir: 'amd/comgr/build' + testOutputFile: comgr_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: hipcc + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DHIPCC_BACKWARD_COMPATIBILITY=OFF + cmakeBuildDir: 'amd/hipcc/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rccl.yml b/.azuredevops/components/rccl.yml new file mode 100644 index 000000000..9d30ea5bc --- /dev/null +++ b/.azuredevops/components/rccl.yml @@ -0,0 +1,38 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libboost-program-options-dev + - googletest + - libfftw3-dev + - git + +jobs: +- job: rccl + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-script.yml + parameters: + scriptExecutable: ./install.sh + scriptParameters: -d -t diff --git a/.azuredevops/components/rocALUTION.yml b/.azuredevops/components/rocALUTION.yml new file mode 100644 index 000000000..aff32eae4 --- /dev/null +++ b/.azuredevops/components/rocALUTION.yml @@ -0,0 +1,40 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libboost-program-options-dev + - libgtest-dev + - libfftw3-dev + - git + - mpich + +jobs: +- job: rocALUTION + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-script.yml + parameters: + scriptExecutable: ./install.sh + scriptParameters: -i -c -d diff --git a/.azuredevops/components/rocBLAS.yml b/.azuredevops/components/rocBLAS.yml new file mode 100644 index 000000000..7caf96ab0 --- /dev/null +++ b/.azuredevops/components/rocBLAS.yml @@ -0,0 +1,56 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - python3-venv + - git + - libmsgpack-dev +- name: pipModules + type: object + default: + - joblib + +jobs: +- job: rocBLAS + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DTensile_CODE_OBJECT_VERSION=default + -DTensile_LOGIC=asm_full + -DTensile_SEPARATE_ARCHITECTURES=ON + -DTensile_LAZY_LIBRARY_LOADING=ON + -DTensile_LIBRARY_FORMAT=msgpack + -DTENSILE_VENV_UPGRADE_PIP=ON + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocDecode.yml b/.azuredevops/components/rocDecode.yml new file mode 100644 index 000000000..10ff7a881 --- /dev/null +++ b/.azuredevops/components/rocDecode.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - pkg-config + - ffmpeg + - libavcodec-dev + - libavformat-dev + - libavutil-dev + - libstdc++-12-dev + - mesa-amdgpu-multimedia-devel + +jobs: +- job: rocDecode + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DBUILD_CLIENTS=ON + -L + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocFFT.yml b/.azuredevops/components/rocFFT.yml new file mode 100644 index 000000000..b32ae8791 --- /dev/null +++ b/.azuredevops/components/rocFFT.yml @@ -0,0 +1,48 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocrand + - hiprand + - libboost-program-options-dev + - libgtest-dev + - libfftw3-dev + +jobs: +- job: rocFFT + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_BUILD_TYPE=Release + -DAMDGPU_TARGETS=gfx1100 + -DUSE_HIP_CLANG=ON + -DHIP_COMPILER=clang + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocPRIM.yml b/.azuredevops/components/rocPRIM.yml new file mode 100644 index 000000000..2ea019ae3 --- /dev/null +++ b/.azuredevops/components/rocPRIM.yml @@ -0,0 +1,45 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libgtest-dev + - git + +jobs: +- job: rocPRIM + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# ${{ }} are resolved during compile-time +# so this next step is skipped completely until +# we define explicit aptPackages needed to install + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DBUILD_BENCHMARK=ON + -DCMAKE_CXX_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocRAND.yml b/.azuredevops/components/rocRAND.yml new file mode 100644 index 000000000..10abb2780 --- /dev/null +++ b/.azuredevops/components/rocRAND.yml @@ -0,0 +1,44 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - googletest + - git + +jobs: +- job: rocRAND + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="/opt/rocm" + -DBUILD_TEST=ON + -DCMAKE_CXX_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DAMDGPU_TEST_TARGETS=gfx1100 + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocThrust.yml b/.azuredevops/components/rocThrust.yml new file mode 100644 index 000000000..cdfa229d4 --- /dev/null +++ b/.azuredevops/components/rocThrust.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - hiprand + - rocprim-dev + - libboost-program-options-dev + - googletest + - libfftw3-dev + - git + +jobs: +- job: rocThrust + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -GNinja + -DCMAKE_CXX_COMPILER=hipcc + -DROCM_PATH=/opt/rocm + -DCMAKE_PREFIX_PATH=/opt/rocm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + diff --git a/.azuredevops/components/rocgdb.yml b/.azuredevops/components/rocgdb.yml new file mode 100644 index 000000000..185190d06 --- /dev/null +++ b/.azuredevops/components/rocgdb.yml @@ -0,0 +1,35 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libgmp-dev + - libmpfr-dev + - texinfo + - bison + - flex + +jobs: +- job: rocgdb + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-autotools.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm-cmake.yml b/.azuredevops/components/rocm-cmake.yml new file mode 100644 index 000000000..94d6e85dd --- /dev/null +++ b/.azuredevops/components/rocm-cmake.yml @@ -0,0 +1,48 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - doxygen + - doxygen-doc + - ninja-build + - python3-sphinx +- name: pipModules + type: object + default: + - cget + - ninja + +jobs: +- job: rocm_cmake + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml +# extra steps for ctest suite + - script: | + python -m pip install -r $(Build.SourcesDirectory)/docs/requirements.txt + python -m pip install -r $(Build.SourcesDirectory)/test/docsphinx/docs/.sphinx/requirements.txt + git config --global user.email "you@example.com" + git config --global user.name "Your Name" + displayName: "ctest setup" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm-core.yml b/.azuredevops/components/rocm-core.yml new file mode 100644 index 000000000..d78f26ce2 --- /dev/null +++ b/.azuredevops/components/rocm-core.yml @@ -0,0 +1,33 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocm_core + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CURRENT_BINARY_DIR=$PWD + -DCMAKE_CURRENT_SOURCE_DIR=$PWD/../ + -DCMAKE_VERBOSE_MAKEFILE=1 + -DCPACK_GENERATOR=DEB + -DCPACK_DEBIAN_PACKAGE_RELEASE="local.9999~99.99" + -DCPACK_RPM_PACKAGE_RELEASE="local.9999" + -DROCM_VERSION="$(last-release)" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm-examples.yml b/.azuredevops/components/rocm-examples.yml new file mode 100644 index 000000000..37cfafe56 --- /dev/null +++ b/.azuredevops/components/rocm-examples.yml @@ -0,0 +1,24 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocm_examples + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm_bandwidth_test.yml b/.azuredevops/components/rocm_bandwidth_test.yml new file mode 100644 index 000000000..79f27dfa9 --- /dev/null +++ b/.azuredevops/components/rocm_bandwidth_test.yml @@ -0,0 +1,46 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build +- name: pipModules + type: object + default: + - CppHeaderParser + - argparse + +jobs: +- job: rocm_bandwidth_test + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=release + -DCMAKE_MODULE_PATH="$(Build.SourcesDirectory)/cmake_modules" + -DCMAKE_PREFIX_PATH=/opt/rocm + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm_smi_lib.yml b/.azuredevops/components/rocm_smi_lib.yml new file mode 100644 index 000000000..d5b1b1cd1 --- /dev/null +++ b/.azuredevops/components/rocm_smi_lib.yml @@ -0,0 +1,27 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocm_smi_lib + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DBUILD_TESTS=ON + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocminfo.yml b/.azuredevops/components/rocminfo.yml new file mode 100644 index 000000000..b9ec4c1ec --- /dev/null +++ b/.azuredevops/components/rocminfo.yml @@ -0,0 +1,42 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocminfo + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + branchName: master + pipelineId: $(rocr-runtime-pipeline-id) + testFailuresOkay: true +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + pipelineId: $(rocr-runtime-tagged-pipeline-id) + testFailuresOkay: true + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocprofiler-register.yml b/.azuredevops/components/rocprofiler-register.yml new file mode 100644 index 000000000..3f5e5c15e --- /dev/null +++ b/.azuredevops/components/rocprofiler-register.yml @@ -0,0 +1,24 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocprofiler_register + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocprofiler.yml b/.azuredevops/components/rocprofiler.yml new file mode 100644 index 000000000..81060fc66 --- /dev/null +++ b/.azuredevops/components/rocprofiler.yml @@ -0,0 +1,58 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libgtest-dev + - libdw-dev + - libsystemd-dev + - libelf-dev + - libnuma-dev + - libpciaccess-dev + - rocm-llvm-dev +- name: pipModules + type: object + default: + - pyyaml==5.3.1 + - Cppheaderparser + - websockets + - matplotlib + - lxml + - barectf + - pandas + +jobs: +- job: rocprofiler + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_MODULE_PATH="$(Build.SourcesDirectory)/cmake_modules;/opt/rocm/lib/cmake" + -DCMAKE_PREFIX_PATH="/opt/rocm" + -DENABLE_LDCONFIG=OFF + -DUSE_PROF_API=1 + -DGPU_TARGETS="gfx1100" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocr_debug_agent.yml b/.azuredevops/components/rocr_debug_agent.yml new file mode 100644 index 000000000..0c7056866 --- /dev/null +++ b/.azuredevops/components/rocr_debug_agent.yml @@ -0,0 +1,42 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libelf-dev + - libdw-dev + +jobs: +- job: rocr_debug_agent + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DROCM_PATH=/opt/rocm + -DCMAKE_MODULE_PATH=/opt/rocm/lib/cmake + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/roctracer.yml b/.azuredevops/components/roctracer.yml new file mode 100644 index 000000000..a7380f509 --- /dev/null +++ b/.azuredevops/components/roctracer.yml @@ -0,0 +1,61 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build +- name: pipModules + type: object + default: + - CppHeaderParser + - argparse + +jobs: +- job: roctracer + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=release + -DCMAKE_MODULE_PATH="$(Agent.BuildDirectory)/rocm/lib/cmake" + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm" + -DENABLE_LDCONFIG=OFF + -DGPU_TARGETS="gfx1100" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/tag-builds/HIP.yml b/.azuredevops/tag-builds/HIP.yml new file mode 100644 index 000000000..0592d4b88 --- /dev/null +++ b/.azuredevops/tag-builds/HIP.yml @@ -0,0 +1,39 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/HIP + ref: ${{ parameters.checkoutRef }} + - repository: matching_repo + type: github + endpoint: ROCm + name: ROCm/clr + ref: ${{ parameters.checkoutRef }} + - repository: hipother_repo + type: github + endpoint: ROCm + name: ROCm/hipother + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/HIP.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/HIPIFY.yml b/.azuredevops/tag-builds/HIPIFY.yml new file mode 100644 index 000000000..93973bd7a --- /dev/null +++ b/.azuredevops/tag-builds/HIPIFY.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/HIPIFY + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/HIPIFY.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/MIVisionX.yml b/.azuredevops/tag-builds/MIVisionX.yml new file mode 100644 index 000000000..3b43fa232 --- /dev/null +++ b/.azuredevops/tag-builds/MIVisionX.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/MIVisionX + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/MIVisionX.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCR-Runtime.yml b/.azuredevops/tag-builds/ROCR-Runtime.yml new file mode 100644 index 000000000..e9b2fe8fd --- /dev/null +++ b/.azuredevops/tag-builds/ROCR-Runtime.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/ROCR-Runtime + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCR-Runtime.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml b/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml new file mode 100644 index 000000000..b06da04c3 --- /dev/null +++ b/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/ROCT-Thunk-Interface + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCT-Thunk-Interface.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCdbgapi.yml b/.azuredevops/tag-builds/ROCdbgapi.yml new file mode 100644 index 000000000..bf1e0715d --- /dev/null +++ b/.azuredevops/tag-builds/ROCdbgapi.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/ROCdbgapi + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCdbgapi.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCmValidationSuite.yml b/.azuredevops/tag-builds/ROCmValidationSuite.yml new file mode 100644 index 000000000..a3eb0f974 --- /dev/null +++ b/.azuredevops/tag-builds/ROCmValidationSuite.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/ROCmValidationSuite + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCmValidationSuite.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/amdsmi.yml b/.azuredevops/tag-builds/amdsmi.yml new file mode 100644 index 000000000..9eae30bb2 --- /dev/null +++ b/.azuredevops/tag-builds/amdsmi.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/amdsmi + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/amdsmi.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/half.yml b/.azuredevops/tag-builds/half.yml new file mode 100644 index 000000000..f1dcde928 --- /dev/null +++ b/.azuredevops/tag-builds/half.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/half + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/half.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipBLAS.yml b/.azuredevops/tag-builds/hipBLAS.yml new file mode 100644 index 000000000..e98b6584f --- /dev/null +++ b/.azuredevops/tag-builds/hipBLAS.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipBLAS + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipBLAS.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipBLASLt.yml b/.azuredevops/tag-builds/hipBLASLt.yml new file mode 100644 index 000000000..cf2414301 --- /dev/null +++ b/.azuredevops/tag-builds/hipBLASLt.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipBLASLt + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipBLASLt.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipCUB.yml b/.azuredevops/tag-builds/hipCUB.yml new file mode 100644 index 000000000..ddf467006 --- /dev/null +++ b/.azuredevops/tag-builds/hipCUB.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipCUB + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipCUB.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipFFT.yml b/.azuredevops/tag-builds/hipFFT.yml new file mode 100644 index 000000000..6245c1384 --- /dev/null +++ b/.azuredevops/tag-builds/hipFFT.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipFFT + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipFFT.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipRAND.yml b/.azuredevops/tag-builds/hipRAND.yml new file mode 100644 index 000000000..5515494ad --- /dev/null +++ b/.azuredevops/tag-builds/hipRAND.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipRAND + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipRAND.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSOLVER.yml b/.azuredevops/tag-builds/hipSOLVER.yml new file mode 100644 index 000000000..5f1d85d18 --- /dev/null +++ b/.azuredevops/tag-builds/hipSOLVER.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipSOLVER + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSOLVER.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSPARSE.yml b/.azuredevops/tag-builds/hipSPARSE.yml new file mode 100644 index 000000000..00eb03439 --- /dev/null +++ b/.azuredevops/tag-builds/hipSPARSE.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipSPARSE + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSPARSE.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSPARSELt.yml b/.azuredevops/tag-builds/hipSPARSELt.yml new file mode 100644 index 000000000..70dfd285d --- /dev/null +++ b/.azuredevops/tag-builds/hipSPARSELt.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipSPARSELt + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSPARSELt.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/llvm-project.yml b/.azuredevops/tag-builds/llvm-project.yml new file mode 100644 index 000000000..9ebeaf78f --- /dev/null +++ b/.azuredevops/tag-builds/llvm-project.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/llvm-project + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/llvm-project.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rccl.yml b/.azuredevops/tag-builds/rccl.yml new file mode 100644 index 000000000..e5a8a8c76 --- /dev/null +++ b/.azuredevops/tag-builds/rccl.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rccl + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rccl.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocALUTION.yml b/.azuredevops/tag-builds/rocALUTION.yml new file mode 100644 index 000000000..1bef693a3 --- /dev/null +++ b/.azuredevops/tag-builds/rocALUTION.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocALUTION + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocALUTION.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocBLAS.yml b/.azuredevops/tag-builds/rocBLAS.yml new file mode 100644 index 000000000..4f65183d8 --- /dev/null +++ b/.azuredevops/tag-builds/rocBLAS.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocBLAS + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocBLAS.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocDecode.yml b/.azuredevops/tag-builds/rocDecode.yml new file mode 100644 index 000000000..01bcca5d6 --- /dev/null +++ b/.azuredevops/tag-builds/rocDecode.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocDecode + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocDecode.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocFFT.yml b/.azuredevops/tag-builds/rocFFT.yml new file mode 100644 index 000000000..d572418a1 --- /dev/null +++ b/.azuredevops/tag-builds/rocFFT.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocFFT + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocFFT.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocPRIM.yml b/.azuredevops/tag-builds/rocPRIM.yml new file mode 100644 index 000000000..2498b4052 --- /dev/null +++ b/.azuredevops/tag-builds/rocPRIM.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocPRIM + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocPRIM.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocRAND.yml b/.azuredevops/tag-builds/rocRAND.yml new file mode 100644 index 000000000..9980d2827 --- /dev/null +++ b/.azuredevops/tag-builds/rocRAND.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocRAND + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocRAND.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocThrust.yml b/.azuredevops/tag-builds/rocThrust.yml new file mode 100644 index 000000000..0ffea0d14 --- /dev/null +++ b/.azuredevops/tag-builds/rocThrust.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocThrust + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocThrust.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocgdb.yml b/.azuredevops/tag-builds/rocgdb.yml new file mode 100644 index 000000000..0b420e7f8 --- /dev/null +++ b/.azuredevops/tag-builds/rocgdb.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocgdb + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocgdb.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm-cmake.yml b/.azuredevops/tag-builds/rocm-cmake.yml new file mode 100644 index 000000000..1ef560b1b --- /dev/null +++ b/.azuredevops/tag-builds/rocm-cmake.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocm-cmake + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-cmake.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm-core.yml b/.azuredevops/tag-builds/rocm-core.yml new file mode 100644 index 000000000..f6631f6e4 --- /dev/null +++ b/.azuredevops/tag-builds/rocm-core.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocm-core + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-core.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm_bandwidth_test.yml b/.azuredevops/tag-builds/rocm_bandwidth_test.yml new file mode 100644 index 000000000..bf15ad830 --- /dev/null +++ b/.azuredevops/tag-builds/rocm_bandwidth_test.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocm_bandwidth_test + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm_bandwidth_test.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm_smi_lib.yml b/.azuredevops/tag-builds/rocm_smi_lib.yml new file mode 100644 index 000000000..110141f06 --- /dev/null +++ b/.azuredevops/tag-builds/rocm_smi_lib.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocm_smi_lib + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm_smi_lib.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocminfo.yml b/.azuredevops/tag-builds/rocminfo.yml new file mode 100644 index 000000000..ea19e8576 --- /dev/null +++ b/.azuredevops/tag-builds/rocminfo.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocminfo + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocminfo.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocprofiler-register.yml b/.azuredevops/tag-builds/rocprofiler-register.yml new file mode 100644 index 000000000..3d6d4f827 --- /dev/null +++ b/.azuredevops/tag-builds/rocprofiler-register.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocprofiler-register + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler-register.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocprofiler.yml b/.azuredevops/tag-builds/rocprofiler.yml new file mode 100644 index 000000000..708f362af --- /dev/null +++ b/.azuredevops/tag-builds/rocprofiler.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocprofiler + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocr_debug_agent.yml b/.azuredevops/tag-builds/rocr_debug_agent.yml new file mode 100644 index 000000000..b92fb012e --- /dev/null +++ b/.azuredevops/tag-builds/rocr_debug_agent.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocr_debug_agent + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocr_debug_agent.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/roctracer.yml b/.azuredevops/tag-builds/roctracer.yml new file mode 100644 index 000000000..782e5eafc --- /dev/null +++ b/.azuredevops/tag-builds/roctracer.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/roctracer + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/roctracer.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml new file mode 100644 index 000000000..f5f36ed32 --- /dev/null +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -0,0 +1,39 @@ +parameters: +# assumption componentName and pipeline name the same +- name: componentName + type: string + default: '' +- name: pipelineId + type: string + default: '' +- name: branchName + type: string + default: '$(Build.SourceBranchName)' # for tagged builds +- name: testFailuresOkay + type: boolean + default: false + +steps: +- task: DownloadPipelineArtifact@2 + displayName: Download ${{ parameters.componentName }} + inputs: + buildType: 'specific' + project: ROCm-CI + pipeline: ${{ parameters.pipelineId }} + specificBuildWithTriggering: true + allowPartiallySucceededBuilds: ${{ parameters.testFailuresOkay }} + branchName: ${{ parameters.branchName }} + targetPath: '$(System.ArtifactsDirectory)' +- task: ExtractFiles@1 + displayName: Extract ${{ parameters.componentName }} + inputs: + archiveFilePatterns: '$(System.ArtifactsDirectory)/**/*.tar.gz' + destinationFolder: '$(Agent.BuildDirectory)/rocm' + cleanDestinationFolder: false + overwriteExistingFiles: true +- task: DeleteFiles@1 + displayName: Cleanup Compressed ${{ parameters.componentName }} + inputs: + SourceFolder: '$(System.ArtifactsDirectory)' + Contents: '/**/*.tar.gz' + RemoveDotFiles: true diff --git a/.azuredevops/templates/steps/artifact-prepare-package.yml b/.azuredevops/templates/steps/artifact-prepare-package.yml new file mode 100644 index 000000000..4dccc38bb --- /dev/null +++ b/.azuredevops/templates/steps/artifact-prepare-package.yml @@ -0,0 +1,25 @@ +# optional step if not using cmake --install +# prepare the next package to upload +parameters: +- name: sourceDir # REQUIRED PARAMETER + type: string + default: '' +- name: contentsString + type: string + default: '**' +- name: targetDir + type: string + default: '$(Build.BinariesDirectory)' +- name: clean + type: boolean + default: true + +steps: +- task: CopyFiles@2 + displayName: 'Prepare for packaging' + inputs: + CleanTargetFolder: ${{ parameters.clean }} + SourceFolder: '${{ parameters.sourceDir }}' + Contents: '${{ parameters.contentsString }}' + TargetFolder: '${{ parameters.targetDir }}' + retryCount: 3 diff --git a/.azuredevops/templates/steps/artifact-upload.yml b/.azuredevops/templates/steps/artifact-upload.yml new file mode 100644 index 000000000..43adf2f4b --- /dev/null +++ b/.azuredevops/templates/steps/artifact-upload.yml @@ -0,0 +1,33 @@ +# compress build products into tarball +# delete build products after compression +# publish can be toggled off for jobs that produce multiple tarballs +# for those cases, only publish the last call which puts all the tarballs in one container folder +parameters: +- name: artifactName + type: string + default: 'drop' +- name: publish + type: boolean + default: true + +steps: +- task: ArchiveFiles@2 + displayName: '${{ parameters.artifactName }} Compress' + inputs: + includeRootFolder: false + archiveType: 'tar' + tarCompression: 'gz' + archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.DefinitionName)_$(Build.SourceBranchName)_$(Build.BuildId)_$(Build.BuildNumber)_ubuntu2204_${{ parameters.artifactName }}.tar.gz' +- task: DeleteFiles@1 + displayName: 'Cleanup Staging Area' + inputs: + SourceFolder: '$(Build.BinariesDirectory)' + Contents: '/**/*' + RemoveDotFiles: true +# then publish it +- ${{ if parameters.publish }}: + - task: PublishPipelineArtifact@1 + displayName: '${{ parameters.artifactName }} Publish' + retryCountOnTaskFailure: 3 + inputs: + targetPath: '$(Build.ArtifactStagingDirectory)' diff --git a/.azuredevops/templates/steps/build-autotools.yml b/.azuredevops/templates/steps/build-autotools.yml new file mode 100644 index 000000000..b207b3d43 --- /dev/null +++ b/.azuredevops/templates/steps/build-autotools.yml @@ -0,0 +1,36 @@ +parameters: +- name: componentName + type: string + default: '' +- name: configureFlags + type: string + default: '' +- name: buildDir + type: string + default: '$(Build.SourcesDirectory)' +- name: installDir + type: string + default: '$(Build.BinariesDirectory)' + +steps: +- task: Bash@3 + displayName: '${{ parameters.componentName }} configure flags' + continueOnError: true + inputs: + targetType: inline + script: ./configure --prefix=${{ parameters.installDir }} ${{ parameters.configureFlags }} + workingDirectory: ${{ parameters.buildDir }} +- task: Bash@3 + displayName: '${{ parameters.componentName }} make' + continueOnError: true + inputs: + targetType: inline + script: make -j$(nproc) + workingDirectory: ${{ parameters.buildDir }} +- task: Bash@3 + displayName: '${{ parameters.componentName }} make install' + continueOnError: true + inputs: + targetType: inline + script: make install + workingDirectory: ${{ parameters.buildDir }} diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml new file mode 100644 index 000000000..ffaa77c0e --- /dev/null +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -0,0 +1,43 @@ +parameters: +- name: componentName + type: string + default: '' +- name: extraBuildFlags + type: string + default: '' +- name: cmakeBuildDir + type: string + default: 'build' +- name: cmakeTarget + type: string + default: 'install' +- name: cmakeTargetDir + type: string + default: '.' +- name: installDir + type: string + default: '$(Build.BinariesDirectory)' + +steps: +# create workingDirectory if it does not exist and change into it +# call cmake from within that directory using $cmakeArgs as its parameters +- task: CMake@1 + displayName: '${{parameters.componentName }} CMake Flags' + inputs: + workingDirectory: ${{ parameters.cmakeBuildDir }} + cmakeArgs: -DCMAKE_INSTALL_PREFIX=${{ parameters.installDir }} ${{ parameters.extraBuildFlags }} .. +# equivalent to running make $cmakeTargetDir from $cmakeBuildDir +# i.e., cd $cmakeBuildDir; make $cmakeTargetDir +- task: CMake@1 + displayName: '${{parameters.componentName }} Build' + inputs: + workingDirectory: ${{ parameters.cmakeBuildDir }} + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }}' + retryCountOnTaskFailure: 10 +# equivalent to running make $cmakeTarget from $cmakeBuildDir +# e.g., make install +- task: CMake@1 + displayName: '${{parameters.componentName }} Install' + inputs: + workingDirectory: ${{ parameters.cmakeBuildDir }} + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} --target ${{ parameters.cmakeTarget }}' diff --git a/.azuredevops/templates/steps/build-script.yml b/.azuredevops/templates/steps/build-script.yml new file mode 100644 index 000000000..61782acf6 --- /dev/null +++ b/.azuredevops/templates/steps/build-script.yml @@ -0,0 +1,22 @@ +parameters: +- name: componentName + type: string + default: '' +- name: scriptDir + type: string + default: '.' +- name: scriptExecutable + type: string + default: './install.sh' +- name: scriptParameters + type: string + default: '' + +steps: +- task: Bash@3 + displayName: '${{ parameters.componentName }} Building via script' + continueOnError: true + inputs: + targetType: inline + script: ${{ parameters.scriptExecutable }} ${{ parameters.scriptParameters }} + workingDirectory: ${{ parameters.scriptDir }} diff --git a/.azuredevops/templates/steps/ccache.yml b/.azuredevops/templates/steps/ccache.yml new file mode 100644 index 000000000..324054e3d --- /dev/null +++ b/.azuredevops/templates/steps/ccache.yml @@ -0,0 +1,11 @@ +# to use ccache, run this template step before build-cmake.yml +# and add this cmake flag to extraBuildFlags +# -DCMAKE_CXX_COMPILER_LAUNCHER=ccache +steps: +- task: Cache@2 + displayName: Ccache caching + inputs: + key: 'ccache | "$(Agent.OS)" | $(Build.SourceVersion)' + path: $(CCACHE_DIR) + restoreKeys: | + ccache | "$(Agent.OS)" diff --git a/.azuredevops/templates/steps/checkout.yml b/.azuredevops/templates/steps/checkout.yml new file mode 100644 index 000000000..b73d83ffa --- /dev/null +++ b/.azuredevops/templates/steps/checkout.yml @@ -0,0 +1,17 @@ +parameters: +# name of the repo to checkout +# for most cases, leave as default 'self' +- name: checkoutRepo + type: string + default: 'self' +# submodule download behaviour +# change to 'recursive' for repos with submodules +- name: submoduleBehaviour + type: string + default: 'true' + +steps: + - checkout: ${{ parameters.checkoutRepo }} + clean: true + submodules: ${{ parameters.submoduleBehaviour }} + retryCountOnTaskFailure: 3 diff --git a/.azuredevops/templates/steps/dependencies.yml b/.azuredevops/templates/steps/dependencies.yml new file mode 100644 index 000000000..73f226d64 --- /dev/null +++ b/.azuredevops/templates/steps/dependencies.yml @@ -0,0 +1,38 @@ +parameters: +# space-delimited list of packages to install via apt-get install command +# TODO convert to string array and split with spaces +- name: aptPackages + type: object + default: [] +- name: pipModules + type: object + default: [] + +steps: +- task: Bash@3 + displayName: 'sudo apt-get update' + inputs: + targetType: inline + script: sudo apt-get update +- task: Bash@3 + displayName: 'sudo apt-get upgrade' + inputs: + targetType: inline + script: sudo apt-get update +- task: Bash@3 + displayName: 'sudo apt-get fix' + inputs: + targetType: inline + script: sudo apt --yes --fix-broken install +- ${{ if gt(length(parameters.aptPackages), 0) }}: + - task: Bash@3 + displayName: 'sudo apt-get install ...' + inputs: + targetType: inline + script: sudo apt-get --yes install ${{ join(' ', parameters.aptPackages) }} +- ${{ if gt(length(parameters.pipModules), 0) }}: + - task: Bash@3 + displayName: 'pip install ...' + inputs: + targetType: inline + script: pip install ${{ join(' ', parameters.pipModules) }} diff --git a/.azuredevops/templates/steps/preamble.yml b/.azuredevops/templates/steps/preamble.yml new file mode 100644 index 000000000..9f76ff19b --- /dev/null +++ b/.azuredevops/templates/steps/preamble.yml @@ -0,0 +1,27 @@ +# build artifacts not automatically cleaned up +# force cleanup, always +# also display installed components and packages +steps: +- task: Bash@3 + displayName: 'apt installed list' + inputs: + targetType: inline + script: apt list --installed +- task: Bash@3 + displayName: 'python version' + inputs: + targetType: inline + script: python3 --version +- script: pip list + displayName: 'list python packages' +- task: DeleteFiles@1 + displayName: 'Cleanup checkout space' + inputs: + SourceFolder: '$(Agent.BuildDirectory)/s' + Contents: '**/*' +- task: DeleteFiles@1 + displayName: 'Cleanup Staging Area' + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)' + Contents: '/**/*' + RemoveDotFiles: true diff --git a/.azuredevops/templates/steps/test.yml b/.azuredevops/templates/steps/test.yml new file mode 100644 index 000000000..14142b569 --- /dev/null +++ b/.azuredevops/templates/steps/test.yml @@ -0,0 +1,36 @@ +parameters: +- name: componentName + type: string + default: '' +- name: testDir + type: string + default: 'build' +- name: testExecutable + type: string + default: 'ctest' +- name: testParameters + type: string + default: '--output-on-failure --force-new-ctest-process --output-junit test_output.xml' +- name: testOutputFile + type: string + default: test_output.xml +- name: testOutputFormat + type: string + default: 'junit' + +steps: +# run test, continue on failure to publish results +# and to publish build artifacts +- task: Bash@3 + displayName: '${{ parameters.componentName }} Test' + continueOnError: true + inputs: + targetType: inline + script: ${{ parameters.testExecutable }} ${{ parameters.testParameters }} + workingDirectory: ${{ parameters.testDir }} +- task: PublishTestResults@2 + displayName: '${{ parameters.componentName }} Publish Results' + inputs: + testResultsFormat: ${{ parameters.testOutputFormat }} + testResultsFiles: '**/${{ parameters.testOutputFile }}' + condition: succeededOrFailed() diff --git a/.azuredevops/variables-global.yml b/.azuredevops/variables-global.yml new file mode 100644 index 000000000..508b9f0a0 --- /dev/null +++ b/.azuredevops/variables-global.yml @@ -0,0 +1,21 @@ +# specify non-secret global variables reused across pipelines here + +variables: +- name: CI_ROOT_PATH + value: /.azuredevops +- name: CI_COMPONENT_PATH + value: ${{ variables.CI_ROOT_PATH }}/components +- name: CI_TEMPLATE_PATH + value: ${{ variables.CI_ROOT_PATH }}/templates +- name: LOW_END_BUILD_POOL + value: ubuntu-22.04 +- name: HIGH_END_BUILD_POOL + value: rocm-ci_build_pool +- name: CLOUD_BUILD_POOL + value: rocm-ci_cloud_build_pool +- name: LATEST_RELEASE_TAG + value: rocm-6.1.0 +- name: DOCKER_IMAGE_NAME + value: rocm/dev-ubuntu-22.04 +- name: LATEST_DOCKER_VERSION + value: 6.1 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5d678c763..1954c6d0f 100755 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1,5 @@ * @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation # Documentation files -docs/* @ROCm/rocm-documentation -*.md @ROCm/rocm-documentation -*.rst @ROCm/rocm-documentation +docs/* @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation +*.md @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation +*.rst @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d51867d6..5f7995dea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,149 @@ This page contains the changelog for AMD ROCm Software. ------------------- +## ROCm 6.1.1 + +ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and libraries. + +### OS support + +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). + +### AMD SMI + +AMD SMI for ROCm 6.1.1 + +#### Additions + +* Added deferred error correctable counts to `amd-smi metric -ecc -ecc-blocks`. + +#### Changes + +* Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks. +* Updated the output of `amd-smi metric --clock` to reflect each engine. +* Updated the output of `amd-smi topology --json` to align with output reported by host and guest systems. + +#### Fixes + +* Fixed `amd-smi metric --clock`'s clock lock status and deep sleep status. +* Fixed an issue that would cause an error when attempting to reset non-AMD GPUs. +* Fixed `amd-smi metric --pcie` and `amdsmi_get_pcie_info()` when using RDNA3 (Navi 32 and Navi 31) hardware to prevent "UNKNOWN" reports. +* Fixed the output results of `amd-smi process` when getting processes running on a device. + +##### Removals + +* Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release. + +##### Known issues + +* `amd-smi bad-pages` can result in a `ValueError: Null pointer access` error when using certain PMU firmware versions. + +```{note} +See the [detailed changelog](https://github.com/ROCm/amdsmi/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` + +#### HIPCC + +HIPCC for ROCm 6.1.1 + +##### Changes + +* **Upcoming:** a future release will enable use of compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users; you may continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`. +* **Upcoming:** a subsequent release will remove high-level Perl scripts `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly. +* **Upcoming:** a subsequent release will remove `hipcc.pl` and `hipconfig.pl`. + +### HIPIFY + +HIPIFY for ROCm 6.1.1 + +#### Additions + +* Added support for LLVM 18.1.2. +* Added support for cuDNN 9.0.0. +* Added a new option: `--clang-resource-directory` to specify the clang resource path (the path to the parent folder for the `include` folder that contains `__clang_cuda_runtime_wrapper.h` and other header files used during the hipification process). + +### ROCm SMI + +ROCm SMI for ROCm 6.1.1 + +##### Known issues + +* ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. + +### Library changes in ROCm 6.1.1 + +| Library | Version | +|---------|---------| +| AMDMIGraphX | [2.9](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.1.1) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-6.1.1) | +| hipBLAS | [2.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.1.1) | +| hipBLASLt | [0.7.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.1.1) | +| hipCUB | [3.1.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.1.1) | +| hipFFT | [1.0.14](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.1.1) | +| hipRAND | [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.1.1) | +| hipSOLVER | 2.1.0 ⇒ [2.1.1](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.1.1) | +| hipSPARSE | [3.0.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.1.1) | +| hipSPARSELt | [0.2.0](https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.1.1) | +| hipTensor | [1.2.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.1.1) | +| MIOpen | [3.1.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.1.1) | +| MIVisionX | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.1.1) | +| rccl | [2.18.6](https://github.com/ROCm/rccl/releases/tag/rocm-6.1.1) | +| rocALUTION | [3.1.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.1.1) | +| rocBLAS | [4.1.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.1.1) | +| rocDecode | [0.5.0](https://github.com/ROCm/rocDecode/releases/tag/rocm-6.1.1) | +| rocFFT | 1.0.26 ⇒ [1.0.27](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.1.1) | +| rocm-cmake | [0.12.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.1.1) | +| rocPRIM | [3.1.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.1.1) | +| rocRAND | [3.0.1](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.1.1) | +| rocSOLVER | [3.25.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.1.1) | +| rocSPARSE | [3.1.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.1.1) | +| rocThrust | [3.0.1](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.1.1) | +| rocWMMA | [1.4.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.1.1) | +| rpp | [1.5.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.1.1) | +| Tensile | [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.1) | + +#### hipBLASLt 0.7.0 + +hipBLASLt 0.7.0 for ROCm 6.1.1 + +##### Additions + +- Added `hipblasltExtSoftmax` extension API. +- Added `hipblasltExtLayerNorm` extension API. +- Added `hipblasltExtAMax` extension API. +- Added `GemmTuning` extension parameter to set split-k by user. +- Added support for mixed precision datatype: fp16/fp8 in with fp16 outk. + +##### Deprecations + +- **Upcoming**: `algoGetHeuristic()` ext API for GroupGemm will be deprecated in a future release of hipBLASLt. + +#### hipSOLVER 2.1.1 + +hipSOLVER 2.1.1 for ROCm 6.1.1 + +##### Changes + +- `BUILD_WITH_SPARSE` now defaults to OFF on Windows. + +##### Fixes + +- Fixed benchmark client build when `BUILD_WITH_SPARSE` is OFF. + +#### rocFFT 1.0.27 + +rocFFT 1.0.27 for ROCm 6.1.1 + +##### Additions + +* Enable multi-GPU testing on systems without direct GPU-interconnects. + +##### Fixes + +* Fixed kernel launch failure on execute of very large odd-length real-complex transforms. + +------------------- + ## ROCm 6.1.0 The ROCm™ 6.1 release consists of new features and fixes to improve the stability and @@ -27,7 +170,7 @@ performance of AMD Instinct™ MI300 GPU applications. Notably, we've added: YUV frames in video memory. With decoded frames in video memory, you can run video post-processing using ROCm HIP, avoiding unnecessary data copies via the PCIe bus. - To learn more, refer to the rocDecode + To learn more, refer to the rocDecode [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). ### OS and GPU support changes @@ -60,11 +203,11 @@ environments where legacy `DT_RPATH` is the preferred form of linking (instead o do **not** recommend trying to install both sets of packages. ``` -#### AMD SMI +### AMD SMI AMD SMI for ROCm 6.1.0 -##### Additions +#### Additions * **Added Monitor command**. This provides users the ability to customize GPU metrics to capture, collect, and observe. Output is provided in a table view. This aligns closer to ROCm SMI `rocm-smi` @@ -98,14 +241,14 @@ AMD SMI for ROCm 6.1.0 * **Added units of measure to JSON output.**. We added unit of measure to JSON/CSV `amd-smi metric`, `amd-smi static`, and `amd-smi monitor` commands. -##### Changes +#### Changes * **Topology is now left-aligned with BDF for each device listed individual table's row/columns**. We provided each device's BDF for every table's row/columns, then left-aligned data. We want AMD SMI Tool output to be easy to understand and digest. Having to scroll up to find this information made it difficult to follow, especially for devices that have many devices associated with one ASIC. -##### Fixes +#### Fixes * **Fix for RDNA3/RDNA2/MI100 'amdsmi_get_gpu_pci_bandwidth()' in 'frequencies_read' tests**. For devices that do not report (e.g., RDNA3/RDNA2/MI100), we have added checks to confirm that @@ -125,18 +268,18 @@ AMD SMI for ROCm 6.1.0 same mutex handler for devices as ROCm SMI. This helps avoid crashes when DRM/device data are inaccessible to the logged-in user. -##### Known issues +#### Known issues * There is an `AttributeError` while running `amd-smi process --csv` * GPU reset results in an "*Unable to reset non-amd GPU*" error * bad pages results with "ValueError: NULL pointer access" * Some RDNA3 cards may enumerate to `Slot type = UNKNOWN` -#### HIP +### HIP HIP 6.1 for ROCm 6.1 -##### Additions +#### Additions * New environment variable, `HIP_LAUNCH_BLOCKING`, which is used for serialization on kernel execution. @@ -147,12 +290,12 @@ HIP 6.1 for ROCm 6.1 `math_functions`, `hip_math_constants`, `channel_descriptor`, `device_functions`, `hip_complex`, `surface_types`, `texture_types` -##### Changes +#### Changes * HIPRTC now assumes WGP mode for gfx10+. You can enable CU mode by passing `-mcumode` to the compile options from `hiprtcCompileProgram`. -##### Fixes +#### Fixes * HIP complex vector type multiplication and division operations. On an AMD platform, some duplicated complex operators are removed to avoid compilation failures. @@ -168,11 +311,30 @@ HIP 6.1 for ROCm 6.1 Note that these complex operations are equivalent to corresponding types/functions on an NVIDIA platform. -#### ROCm Compiler +### HIPIFY + +HIPIFY for ROCm 6.1.0 + +#### Additions + +* CUDA 12.3.2 support +* cuDNN 8.9.7 support +* LLVM 17.0.6 support +* Full `hipSOLVER` support +* Full `rocSPARSE` support +* New option: `--amap`, which will hipify as much as possible, ignoring `--default-preprocessor` + behavior + +#### Fixes + +* Code blocks skipped by the preprocessor are no longer hipified under the `--default-preprocessor` + option + +### ROCm Compiler ROCm Compiler for ROCm 6.1.0 -##### Additions +#### Additions * Compiler now generates `.uniform_work_group_size` and records it in the metadata. It indicates if the kernel requires that each dimension of global size is a multiple of the corresponding dimension of @@ -184,16 +346,11 @@ ROCm Compiler for ROCm 6.1.0 * Added support for C++ Parallel Algorithm Offload via HIP (HIPSTDPAR), which allows parallel algorithms to run on the GPU. -##### Changes +#### Changes * `rocm-clang-ocl` is now an optional package and will require manual installation. -##### Deprecations - -* hipCC adds `-mllvm`, `-amdgpu-early-inline-all=true`, and `-mllvm` `-amdgpu-function-calls=false` by - default to compiler invocations. These flags will be removed from hipCC in a future ROCm release. - -##### Fixes +#### Fixes AddressSanitizer (ASan): * Added `sanitized_padded_global` LLVM ir attribute to identify sanitizer instrumented globals. @@ -202,38 +359,43 @@ AddressSanitizer (ASan): [On GitHub](https://github.com/ROCm/ROCm/issues/2551) -##### Known issues +#### Deprecations + +* hipCC adds `-mllvm`, `-amdgpu-early-inline-all=true`, and `-mllvm` `-amdgpu-function-calls=false` by + default to compiler invocations. These flags will be removed from hipCC in a future ROCm release. + +#### Known issues * Due to an issue within the `amd-llvm` compiler shipping with ROCm 6.1, HIPSTDPAR's interposition mode, which is enabled by `--hipstdpar-interpose-alloc` is currently broken. The temporary workaround is to use the upstream LLVM 18 (or newer) compiler. This issue will be addressed in a future ROCm release ." -#### ROCm Data Center (RDC) +### ROCm Data Center (RDC) RDC for ROCm 6.1.0 -##### Changes +#### Changes * Added `--address` flag to rdcd * Upgraded from C++11 to C++17 * Upgraded gRPC -#### ROCDebugger (ROCgdb) +### ROCDebugger (ROCgdb) ROCgdb for ROCm 6.1.0 -##### Fixes +#### Fixes Previously, ROCDebugger encountered hangs and crashes when stepping over the `s_endpgm` instruction at the end of a HIP kernel entry function, which caused the stepped wave to exit. This issue is fixed in the ROCm 6.1 release. You can now step over the last instruction of any HIP kernel without debugger hangs or crashes. -#### ROCm SMI +### ROCm SMI ROCm SMI for ROCm 6.1.0 -##### Additions +#### Additions * **Added support to set max/min clock level for sclk ('RSMI_CLK_TYPE_SYS') or mclk ('RSMI_CLK_TYPE_MEM')**. You can now set a maximum or minimum `sclk` or `mclk` value through the @@ -244,7 +406,7 @@ ROCm SMI for ROCm 6.1.0 (`rsmi_dev_target_graphics_version_get()`) to retreive the target graphics version for a GPU device. Currently, this output is not supplied through our ROCm SMI CLI. -##### Changes +#### Changes * **Removed non-unified API headers: Individual GPU metric APIs are no longer supported**. The individual metric APIs (`rsmi_dev_metrics_*`) were removed in order to keep updates easier for @@ -258,7 +420,7 @@ ROCm SMI for ROCm 6.1.0 outlined in the change for 6.0.0 (*Added a generic power API: rsmi_dev_power_get*), is now deprecated. You must update your ROCm SMI API calls accordingly. -##### Fixes +#### Fixes * Fixed `--showpids` reporting `[PID] [PROCESS NAME] 1 UNKNOWN UNKNOWN UNKNOWN`. Output was failing because `cu_occupancy debugfs` method is not provided on some graphics cards @@ -281,41 +443,39 @@ ROCm SMI for ROCm 6.1.0 * Fixed `rocm-smi --showclkvolt` and `rocm-smi --showvc`, which were displaying 0 for overdrive and that the voltage curve is not supported. -#### ROCProfiler +### ROCProfiler ROCProfiler for ROCm 6.1.0 -##### Fixes +#### Fixes * Fixed ROCprofiler to match versioning changes in HIP Runtime * Fixed plugins race condition * Updated metrics to MI300 -#### ROCm Validation Suite +### ROCm Validation Suite -##### Known issue +#### Known issue * In a future release, the ROCm Validation Suite P2P Benchmark and Qualification Tool (PBQT) tests will be optimized to meet the target bandwidth requirements for MI300X. [On GitHub](https://github.com/ROCm/ROCm/issues/3027) -#### MI200 SR-IOV +### MI200 SR-IOV -##### Known issue +#### Known issue -* Multimedia applications may encounter compilation errors in the MI200 Single Root Input/Output Virtualization (SR-IOV) environment. This is because MI200 SR-IOV does not currently support multimedia applications. +* Multimedia applications may encounter compilation errors in the MI200 Single Root Input/Output Virtualization (SR-IOV) environment. This is because MI200 SR-IOV does not currently support multimedia applications. [On GitHub](https://github.com/ROCm/ROCm/issues/3028) ### AMD MI300A RAS -#### Fixed defect +#### Fixes -##### GFX correctable and uncorrectable error inject failures +* GFX correctable and uncorrectable error inject failures. Previously, the AMD CPU Reliability, Availability, and Serviceability (RAS) installation encountered correctable and uncorrectable failures while injecting an error. -* Previously, the AMD CPU Reliability, Availability, and Serviceability (RAS) installation encountered correctable and uncorrectable failures while injecting an error. - - This issue is resolved in the ROCm 6.1 release, and users will no longer encounter the GFX correctable error (CE) and uncorrectable error (UE) failures. +This issue is resolved in the ROCm 6.1 release, and users will no longer encounter the GFX correctable error (CE) and uncorrectable error (UE) failures. ### Library changes in ROCm 6.1.0 @@ -396,6 +556,12 @@ MIGraphX 2.9 for ROCm 6.1.0 * Added support for uneven Split operations * Improved unit testing to run in python virtual environments +##### Changes + +* Cleanup LSTM and RNN activation functions +* Placed gemm_pointwise at a higher priority than layernorm_pointwise +* Updated README to mention the need to include GPU_TARGETS when building MIGraphX + ##### Fixes * Fixed outstanding issues in autogenerated documentation @@ -409,12 +575,6 @@ MIGraphX 2.9 for ROCm 6.1.0 * Fixed wrong size check when axes not present for slice * Set the .SO version correctly -##### Changes - -* Cleanup LSTM and RNN activation functions -* Placed gemm_pointwise at a higher priority than layernorm_pointwise -* Updated README to mention the need to include GPU_TARGETS when building MIGraphX - ##### Removals * Removed unused device kernels from Gather and Pad operators @@ -431,10 +591,6 @@ hipBLAS 2.1.0 for ROCm 6.1.0 suffix) with int64_t function arguments * New functions hipblasGetMathMode and hipblasSetMathMode -##### Deprecations - -* USE_CUDA build option; use HIP_PLATFORM=amd or HIP_PLATFORM=nvidia to override hipconfig - ##### Changes * Some Level 2 function argument names have changed from `m` to `n` to match legacy BLAS; there @@ -443,6 +599,10 @@ hipBLAS 2.1.0 for ROCm 6.1.0 * Renamed `.doxygen` and `.sphinx` folders to `doxygen` and `sphinx`, respectively * Added CMake support for documentation +##### Deprecations + +* USE_CUDA build option; use HIP_PLATFORM=amd or HIP_PLATFORM=nvidia to override hipconfig + #### hipBLASLt 0.7.0 hipBLASLt 0.7.0 for ROCm 6.1.0 @@ -459,20 +619,20 @@ hipBLASLt 0.7.0 for ROCm 6.1.0 hipCUB 3.1.0 for ROCm 6.1.0 -##### Changed +##### Additions + +- Added interface `DeviceMemcpy::Batched` for batched memcpy from rocPRIM and CUB. + +##### Changes - CUB backend references CUB and Thrust version 2.1.0. - Updated `HIPCUB_HOST_WARP_THREADS` macro definition to match `host_warp_size` changes from rocPRIM 3.0. - Implemented `__int128_t` and `__uint128_t` support for radix_sort. -##### Fixed +##### Fixes - Fixed build issues with `rmake.py` on Windows when using VS 2017 15.8 or later due to a breaking fix with extended aligned storage. -##### Added - -- Added interface `DeviceMemcpy::Batched` for batched memcpy from rocPRIM and CUB. - #### hipFFT 1.0.14 hipFFT 1.0.14 for ROCm 6.1.0 @@ -489,7 +649,7 @@ hipFFT 1.0.14 for ROCm 6.1.0 hipSOLVER 2.1.0 for ROCm 6.1.0 -##### Added +##### Additions - Added compatibility API with hipsolverSp prefix - Added compatibility-only functions @@ -500,11 +660,11 @@ hipSOLVER 2.1.0 for ROCm 6.1.0 functionality for the hipsolverSp API (on by default). - Added hipSPARSE as an optional dependency to hipsolver-test. Use the `BUILD_WITH_SPARSE` CMake option to enable tests of the hipsolverSp API (on by default). -##### Changed +##### Changes - Relax array length requirements for GESVDA. -##### Fixed +##### Fixes - Fixed incorrect singular vectors returned from GESVDA. @@ -520,7 +680,7 @@ hipSPARSE 3.0.1 for ROCm 6.1.0 hipSPARSELt 0.2.0 for ROCm 6.1.0 -##### Added +##### Additions - Support Matrix B is a Structured Sparsity Matrix. @@ -543,7 +703,7 @@ hipTensor 1.2.0 for ROCm 6.1.0 MIOpen 3.1.0 for ROCm 6.1.0 -##### Added +##### Additions - CK-based 2d/3d convolution solvers to support nchw/ncdhw layout - Fused solver for Fwd Convolution with Residual, Bias and activation @@ -553,18 +713,18 @@ MIOpen 3.1.0 for ROCm 6.1.0 - Integrate CK's layer norm - Combine gtests into single binary -##### Fixed +##### Changes + +- Standardize workspace abstraction +- Use split CK libraries + +##### Fixes - fix for backward passes bwd/wrw for CK group conv 3d - Fixed out-of-bounds memory access : ConvOclDirectFwdGen - fixed build failure due to hipRTC -##### Changed - -- Standardize workspace abstraction -- Use split CK libraries - -##### Removed +##### Removals - clamping to MAX from CastTensor used in Bwd and WrW convolution @@ -572,7 +732,7 @@ MIOpen 3.1.0 for ROCm 6.1.0 RCCL 2.18.6 for ROCm 6.1.0 -##### Changed +##### Changes - Compatibility with NCCL 2.18.6 @@ -634,7 +794,7 @@ rocDecode 0.5.0 for ROCm 6.1.0 * Minor bug fix and updates -##### Tested Configurations +###### Tested Configurations * Linux distribution * Ubuntu - `20.04` / `22.04` @@ -659,7 +819,7 @@ rocFFT 1.0.26 for ROCm 6.1.0 rocm-cmake 0.12.0 for ROCm 6.1.0 -##### Changed +##### Changes - ROCMSphinxDoc: Allow separate source and config directories. - ROCMCreatePackage: Allow additional `PROVIDES` on header-only packages. @@ -667,7 +827,7 @@ rocm-cmake 0.12.0 for ROCm 6.1.0 - ROCMTest: Add RPATH for installed tests. - Finalize rename to ROCmCMakeBuildTools -##### Fixed +##### Fixes - ROCMClangTidy: Fixed invalid list index. - Test failures when ROCM_CMAKE_GENERATOR is empty. @@ -696,16 +856,16 @@ rocPRIM 3.1.0 for ROCm 6.1.0 * Added support for `__int128_t` in `device_radix_sort` and `block_radix_sort` * Improved the performance of `match_any`, and `block_histogram` which uses it -##### Deprecations - -* Removed `reduce_by_key_config`, `MatchAny`, `scan_config`, `scan_by_key_config`, and - `radix_sort_config` - ##### Fixes * Build issues with `rmake.py` on Windows when using VS 2017 15.8 or later (due to a breaking fix with extended aligned storage) +##### Deprecations + +* Removed `reduce_by_key_config`, `MatchAny`, `scan_config`, `scan_by_key_config`, and + `radix_sort_config` + #### rocRAND 3.0.1 rocRAND 3.0.1 for ROCm 6.1.0 @@ -731,15 +891,15 @@ rocSOLVER 3.25.0 for ROCm 6.1.0 - Relaxed array length requirements for GESVDX with `rocblas_srange_index`. -##### Removed - -- Removed gfx803 and gfx900 from default build targets. - ##### Fixed - Corrected singular vector normalization in BDSVDX and GESVDX - Fixed potential memory access fault in STEIN, SYEVX/HEEVX, SYGVX/HEGVX, BDSVDX and GESVDX +##### Removals + +- Removed gfx803 and gfx900 from default build targets. + #### rocSPARSE 3.1.2 rocSPARSE 3.1.2 for ROCm 6.1.0 @@ -792,7 +952,7 @@ rpp for ROCm 6.1.0 * Prerequisites -##### Tested Configurations +###### Tested Configurations * Linux distribution * Ubuntu - `20.04` / `22.04` @@ -851,7 +1011,8 @@ Tensile 4.40.0 for ROCm 6.1.0 ------------------- ## ROCm 6.0.2 -The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. + +The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. #### hipFFT 1.0.13 @@ -895,23 +1056,18 @@ hipFFT 1.0.13 for ROCm 6.0.2 rocRAND 3.0.0 for ROCm 6.0.2 -##### Changed +##### Optimizations + +- Improved MT19937 initialization and generation performance. + +##### Changes - Generator classes from `rocrand.hpp` are no longer copyable, in previous versions these copies would copy internal references to the generators and would lead to double free or memory leak errors. These types should be moved instead of copied, and move constructors and operators are now defined for them. -##### Optimized - -- Improved MT19937 initialization and generation performance. - -##### Removed - -- Removed hipRAND submodule from rocRAND. hipRAND is now only available as a separate package. -- Removed references to and workarounds for deprecated hcc - -##### Fixed +##### Fixes - `mt19937_engine` from `rocrand.hpp` is now move-constructible and move-assignable. Previously the move constructor and move assignment operator was deleted for this class. @@ -922,6 +1078,11 @@ move constructor and move assignment operator was deleted for this class. - fixed the default ordering parameter for `lfsr113` - Build error when using clang++ directly due to unsupported references to amdgpu-target +##### Removals + +- Removed hipRAND submodule from rocRAND. hipRAND is now only available as a separate package. +- Removed references to and workarounds for deprecated hcc + ------------------- ## ROCm 6.0.0 @@ -1019,6 +1180,7 @@ final release for gfx906 GPUs in a fully supported state. | Library | Version | |---------|---------| | AMDMIGraphX | ⇒ [2.8](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.0.0) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-6.0.0) | | HIP | [6.0.0](https://github.com/ROCm/HIP/releases/tag/rocm-6.0.0) | | hipBLAS | ⇒ [2.0.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.0.0) | | hipCUB | ⇒ [3.0.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.0.0) | @@ -1247,6 +1409,11 @@ hipCUB 3.0.0 for ROCm 6.0.0 hipFFT 1.0.13 for ROCm 6.0.0 +##### Additions + +* `hipfftXtSetGPUs`, `hipfftXtMalloc, hipfftXtMemcpy`, `hipfftXtFree`, and `hipfftXtExecDescriptor` APIs + have been implemented to allow FFT computing on multiple devices in a single process + ##### Changes * `hipfft-rider` has been renamed to `hipfft-bench`; it is controlled by the `BUILD_CLIENTS_BENCH` @@ -1255,11 +1422,6 @@ hipFFT 1.0.13 for ROCm 6.0.0 * Binaries in debug builds no longer have a `-d` suffix * The minimum rocFFT required version has been updated to 1.0.21 -##### Additions - -* `hipfftXtSetGPUs`, `hipfftXtMalloc, hipfftXtMemcpy`, `hipfftXtFree`, and `hipfftXtExecDescriptor` APIs - have been implemented to allow FFT computing on multiple devices in a single process - #### hipSOLVER 2.0.0 hipSOLVER 2.0.0 for ROCm 6.0.0 @@ -1388,11 +1550,6 @@ MIOpen 2.19.0 for ROCm 6.0.0 RCCL 2.15.5 for ROCm 6.0.0 -##### Changes - -* Compatibility with NCCL 2.15.5 -* Renamed the unit test executable to `rccl-UnitTests` - ##### Additions * HW-topology-aware binary tree implementation @@ -1400,6 +1557,11 @@ RCCL 2.15.5 for ROCm 6.0.0 * New unit tests for hipGraph support * NPKit integration +##### Changes + +* Compatibility with NCCL 2.15.5 +* Renamed the unit test executable to `rccl-UnitTests` + ##### Fixes * rocm-smi ID conversion @@ -1433,6 +1595,12 @@ rocALUTION 3.0.3 for ROCm 6.0.0 * Matrix dimensions and number of non-zeros are now stored using 64-bit integers * Improved the ILUT preconditioner +##### Fixes + +* Unit tests no longer ignore BCSR block dimension +* Fixed documentation typos +* Bug in multi-coloring for non-symmetric matrix patterns + ##### Removals * `LocalVector::GetIndexValues(ValueType*)` @@ -1443,12 +1611,6 @@ rocALUTION 3.0.3 for ROCm 6.0.0 * `LocalMatrix::AMGSmoothedAggregation(ValueType, const LocalVector&, const LocalVector&, LocalMatrix*, LocalMatrix*, int)` * `LocalMatrix::AMGAggregation(const LocalVector&, LocalMatrix*, LocalMatrix*)` -##### Fixes - -* Unit tests no longer ignore BCSR block dimension -* Fixed documentation typos -* Bug in multi-coloring for non-symmetric matrix patterns - #### rocBLAS 4.0.0 rocBLAS 4.0.0 for ROCm 6.0.0 @@ -1467,6 +1629,20 @@ rocBLAS 4.0.0 for ROCm 6.0.0 * TRSM performance for small sizes (m < 32 && n < 32) +##### Fixes + +* Made offset calculations for 64-bit rocBLAS functions safe + * Fixes for very large leading dimension or increment potentially causing overflow: + * Level2: `gbmv`, `gemv`, `hbmv`, `sbmv`, `spmv`, `tbmv`, `tpmv`, `tbsv`, and `tpsv` +* Lazy loading supports heterogeneous architecture setup and load-appropriate tensile library files, + based on device architecture +* Guards against no-op kernel launches that result in a potential `hipGetLastError` + +##### Changes + +* Reduced the default verbosity of `rocblas-test` (you can see all tests by setting the + `GTEST_LISTENER=PASS_LINE_IN_LOG` environment variable) + ##### Deprecations * Atomic operations will be disabled by default in a future release of rocBLAS (you can enable atomic @@ -1483,20 +1659,6 @@ rocBLAS 4.0.0 for ROCm 6.0.0 before including `float.h`, `math.h`, and `rocblas.h`) * The default build removes device code for gfx803 architecture from the fat binary -##### Fixes - -* Made offset calculations for 64-bit rocBLAS functions safe - * Fixes for very large leading dimension or increment potentially causing overflow: - * Level2: `gbmv`, `gemv`, `hbmv`, `sbmv`, `spmv`, `tbmv`, `tpmv`, `tbsv`, and `tpsv` -* Lazy loading supports heterogeneous architecture setup and load-appropriate tensile library files, - based on device architecture -* Guards against no-op kernel launches that result in a potential `hipGetLastError` - -##### Changes - -* Reduced the default verbosity of `rocblas-test` (you can see all tests by setting the - `GTEST_LISTENER=PASS_LINE_IN_LOG` environment variable) - #### rocFFT 1.0.25 rocFFT 1.0.25 for ROCm 6.0.0 @@ -1635,7 +1797,11 @@ Roc Profiler 2.0.0 for ROCm 6.0.0 rocRAND 2.10.17 for ROCm 6.0.0 -### Changes +##### Optimizations + +* Improved MT19937 initialization and generation performance + +##### Changes * Generator classes from `rocrand.hpp` are no longer copyable (in previous versions these copies would copy internal references to the generators and would lead to double free or memory leak @@ -1643,17 +1809,7 @@ rocRAND 2.10.17 for ROCm 6.0.0 * These types should be moved instead of copied; move constructors and operators are now defined -### Optimizations - -* Improved MT19937 initialization and generation performance - -### Removals - -* Removed the hipRAND submodule from rocRAND; hipRAND is now only available as a separate - package -* Removed references to, and workarounds for, the deprecated hcc - -### Fixes +##### Fixes * `mt19937_engine` from `rocrand.hpp` is now move-constructible and move-assignable (the move constructor and move assignment operator was deleted for this class) @@ -1664,6 +1820,12 @@ rocRAND 2.10.17 for ROCm 6.0.0 * Fixed the default ordering parameter for `lfsr113` * Build error when using Clang++ directly resulting from unsupported `amdgpu-target` references +##### Removals + +* Removed the hipRAND submodule from rocRAND; hipRAND is now only available as a separate + package +* Removed references to, and workarounds for, the deprecated hcc + #### rocSOLVER 3.24.0 rocSOLVER 3.24.0 for ROCm 6.0.0 @@ -1681,6 +1843,12 @@ rocSOLVER 3.24.0 for ROCm 6.0.0 rocSPARSE 3.0.2 for ROCm 6.0.0 +##### Additions + +* `rocsparse_inverse_permutation` +* Mixed-precisions for SpVV +* Uniform int8 precision for gather and scatter + ##### Changes * Function arguments for `rocsparse_spmv` @@ -1690,23 +1858,17 @@ rocSPARSE 3.0.2 for ROCm 6.0.0 * Improved documentation * Improved verbose output during argument checking on API function calls -##### Removals - -* Auto stages from `spmv`, `spmm`, `spgemm`, `spsv`, `spsm`, and `spitsv` -* Formerly deprecated `rocsparse_spmm_ex` routine - -### Fixes +##### Fixes * Bug in `rocsparse-bench` where the SpMV algorithm was not taken into account in CSR format * BSR and GEBSR routines (`bsrmv`, `bsrsv`, `bsrmm`, `bsrgeam`, `gebsrmv`, `gebsrmm`) didn't always show `block_dim==0` as an invalid size * Passing `nnz = 0` to `doti` or `dotci` wasn't always returning a dot product of 0 -### Additions +##### Removals -* `rocsparse_inverse_permutation` -* Mixed-precisions for SpVV -* Uniform int8 precision for gather and scatter +* Auto stages from `spmv`, `spmm`, `spgemm`, `spsv`, `spsm`, and `spitsv` +* Formerly deprecated `rocsparse_spmm_ex` routine #### rocThrust 3.0.0 @@ -1902,18 +2064,18 @@ MIGraphX 2.8 for ROCm 6.0.0 hipBLAS 2.0.0 for ROCm 6.0.0 -##### Added +##### Additions - added option to define HIPBLAS_USE_HIP_BFLOAT16 to switch API to use hip_bfloat16 type - added hipblasGemmExWithFlags API -##### Deprecated +##### Deprecatations - hipblasDatatype_t is deprecated and will be removed in a future release and replaced with hipDataType - hipblasComplex and hipblasDoubleComplex are deprecated and will be removed in a future release and replaced with hipComplex and hipDoubleComplex - use of hipblasDatatype_t for hipblasGemmEx for compute-type is deprecated and will be replaced with hipblasComputeType_t in a future release -##### Removed +##### Removals - hipblasXtrmm that calculates B <- alpha * op(A) * B is removed and replaced with hipblasXtrmm that calculates C <- alpha * op(A) * B @@ -1921,7 +2083,7 @@ hipBLAS 2.0.0 for ROCm 6.0.0 hipCUB 3.0.0 for ROCm 6.0.0 -##### Changed +##### Changes - Removed `DOWNLOAD_ROCPRIM`, forcing rocPRIM to download can be done with `DEPENDENCIES_FORCE_DOWNLOAD`. @@ -1929,23 +2091,23 @@ hipCUB 3.0.0 for ROCm 6.0.0 hipFFT 1.0.13 for ROCm 6.0.0 -##### Changed +##### Additions -- hipfft-rider has been renamed to hipfft-bench, controlled by the BUILD_CLIENTS_BENCH CMake option. A link for the - old file name is installed, and the old BUILD_CLIENTS_RIDER CMake option is accepted for compatibility but both +- Implemented hipfftXtSetGPUs, hipfftXtMalloc, hipfftXtMemcpy, hipfftXtFree, hipfftXtExecDescriptor APIs to allow computing FFTs on multiple devices in a single process. + +##### Changes + +- hipfft-rider has been renamed to hipfft-bench, controlled by the BUILD_CLIENTS_BENCH CMake option. A link for the + old file name is installed, and the old BUILD_CLIENTS_RIDER CMake option is accepted for compatibility but both will be removed in a future release. - Binaries in debug builds no longer have a "-d" suffix. - The minimum rocFFT required version has been updated to 1.0.21. -##### Added - -- Implemented hipfftXtSetGPUs, hipfftXtMalloc, hipfftXtMemcpy, hipfftXtFree, hipfftXtExecDescriptor APIs to allow computing FFTs on multiple devices in a single process. - #### hipRAND 2.10.17 hipRAND 2.10.17 for ROCm 6.0.0 -##### Fixed +##### Fixes - Fixed benchmark and unit test builds on Windows. @@ -1953,15 +2115,15 @@ hipRAND 2.10.17 for ROCm 6.0.0 hipSOLVER 2.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Added hipBLAS as an optional dependency to hipsolver-test. Use the `BUILD_HIPBLAS_TESTS` CMake option to test compatibility between hipSOLVER and hipBLAS. -##### Changed +##### Changes - Types hipsolverOperation_t, hipsolverFillMode_t, and hipsolverSideMode_t are now aliases of hipblasOperation_t, hipblasFillMode_t, and hipblasSideMode_t. -##### Fixed +##### Fixes - Fixed tests for hipsolver info updates in ORGBR/UNGBR, ORGQR/UNGQR, ORGTR/UNGTR, ORMQR/UNMQR, and ORMTR/UNMTR. @@ -1970,11 +2132,11 @@ hipSOLVER 2.0.0 for ROCm 6.0.0 hipSPARSE 3.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Added hipsparseGetErrorName and hipsparseGetErrorString -##### Changed +##### Changes - Changed hipsparseSpSV_solve() API function to match cusparse API - Changed generic API functions to use const descriptors @@ -2005,7 +2167,7 @@ hipTensor 1.1.0 for ROCm 6.0.0 rocALUTION 3.0.3 for ROCm 6.0.0 -##### Added +##### Additions - Added support for 64bit integer vectors - Added inclusive and exclusive sum functionality for Vector classes @@ -2014,16 +2176,22 @@ rocALUTION 3.0.3 for ROCm 6.0.0 - Added Sort() function for LocalVector class - Added multiple stream support to the HIP backend -##### Optimized +##### Optimizations - GlobalMatrix::Apply() now uses multiple streams to better hide communication -##### Changed +##### Changes - Matrix dimensions and number of non-zeros are now stored using 64bit integers - Improved ILUT preconditioner -##### Removed +##### Fixes + +- Unit tests do not ignore BCSR block dimension anymore +- Fixed typos in the documentation +- Fixed a bug in multicoloring for non-symmetric matrix patterns + +##### Removals - Removed LocalVector::GetIndexValues(ValueType\*) - Removed LocalVector::SetIndexValues(const ValueType\*) @@ -2033,32 +2201,37 @@ rocALUTION 3.0.3 for ROCm 6.0.0 - Removed LocalMatrix::AMGSmoothedAggregation(ValueType, const LocalVector&, const LocalVector&, LocalMatrix\*, LocalMatrix\*, int) - Removed LocalMatrix::AMGAggregation(const LocalVector&, LocalMatrix\*, LocalMatrix\*) -##### Fixed - -- Unit tests do not ignore BCSR block dimension anymore -- Fixed typos in the documentation -- Fixed a bug in multicoloring for non-symmetric matrix patterns - #### rocBLAS 4.0.0 rocBLAS 4.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Addition of beta API rocblas_gemm_batched_ex3 and rocblas_gemm_strided_batched_ex3 - Added input/output type f16_r/bf16_r and execution type f32_r support for Level 2 gemv_batched and gemv_strided_batched - Added rocblas_status_excluded_from_build to be used when calling functions which require Tensile when using rocBLAS built without Tensile - Added system for async kernel launches setting a failure rocblas_status based on hipPeekAtLastError discrepancy -##### Optimized +##### Optimizations - Trsm performance for small sizes m < 32 && n < 32 -##### Deprecated +##### Fixes + +- Make offset calculations for rocBLAS functions 64 bit safe. Fixes for very large leading dimension or increment potentially causing overflow: + - Level2: gbmv, gemv, hbmv, sbmv, spmv, tbmv, tpmv, tbsv, tpsv +- Lazy loading to support heterogeneous architecture setup and load appropriate tensile library files based on the device's architecture +- Guard against no-op kernel launches resulting in potential hipGetLastError + +##### Changes + +- Default verbosity of rocblas-test reduced. To see all tests set environment variable GTEST_LISTENER=PASS_LINE_IN_LOG + +##### Deprecatations - In a future release atomic operations will be disabled by default so results will be repeatable. Atomic operations can always be enabled or disabled using the function rocblas_set_atomics_mode. Enabling atomic operations can improve performance. -##### Removed +##### Removals - rocblas_gemm_ext2 API function is removed - in-place trmm API from Legacy BLAS is removed. It is replaced by an API that supports both in-place and out-of-place trmm @@ -2066,22 +2239,11 @@ rocBLAS 4.0.0 for ROCm 6.0.0 - The #define STDC_WANT_IEC_60559_TYPES_EXT has been removed from rocblas-types.h. Users who want ISO/IEC TS 18661-3:2015 functionality must define STDC_WANT_IEC_60559_TYPES_EXT before including float.h, math.h, and rocblas.h - The default build removes device code for gfx803 architecture from the fat binary -##### Fixed - -- Make offset calculations for rocBLAS functions 64 bit safe. Fixes for very large leading dimension or increment potentially causing overflow: - - Level2: gbmv, gemv, hbmv, sbmv, spmv, tbmv, tpmv, tbsv, tpsv -- Lazy loading to support heterogeneous architecture setup and load appropriate tensile library files based on the device's architecture -- Guard against no-op kernel launches resulting in potential hipGetLastError - -##### Changed - -- Default verbosity of rocblas-test reduced. To see all tests set environment variable GTEST_LISTENER=PASS_LINE_IN_LOG - #### rocFFT 1.0.25 rocFFT 1.0.25 for ROCm 6.0.0 -##### Added +##### Additions - Implemented experimental APIs to allow computing FFTs on data distributed across multiple devices in a single process. @@ -2104,7 +2266,7 @@ rocFFT 1.0.25 for ROCm 6.0.0 by offline tuning. - Removed an extra kernel launch from even-length real-complex FFTs that use callbacks. -##### Changed +##### Changes - Built kernels in solution-map to library kernel cache. - Real forward transforms (real-to-complex) no longer overwrite input. rocFFT still may overwrite real inverse (complex-to-real) input, as this allows for faster performance. @@ -2114,7 +2276,7 @@ rocFFT 1.0.25 for ROCm 6.0.0 BUILD_CLIENTS_RIDER CMake option is accepted for compatibility but both will be removed in a future release. - Binaries in debug builds no longer have a "-d" suffix. -##### Fixed +##### Fixes - rocFFT now correctly handles load callbacks that convert data from a smaller data type (e.g. 16-bit integers -> 32-bit float). @@ -2122,11 +2284,11 @@ rocFFT 1.0.25 for ROCm 6.0.0 rocm-cmake 0.11.0 for ROCm 6.0.0 -##### Changed +##### Changes - ROCMSphinxDoc: Improved validation, documentation and rocm-docs-core integration. -##### Fixed +##### Fixes - ROCMClangTidy: Fixed extra make flags passed for clang tidy. - ROCMTest: Fixed issues when using module in a subdirectory. @@ -2135,7 +2297,7 @@ rocm-cmake 0.11.0 for ROCm 6.0.0 rocPRIM 3.0.0 for ROCm 6.0.0 -##### Added +##### Additions - `block_sort::sort()` overload for keys and values with a dynamic size, for all block sort algorithms. Additionally, all `block_sort::sort()` overloads with a dynamic size are now supported for `block_sort_algorithm::merge_sort` and `block_sort_algorithm::bitonic_sort`. - New two-way partition primitive `partition_two_way` which can write to two separate iterators. @@ -2144,7 +2306,7 @@ rocPRIM 3.0.0 for ROCm 6.0.0 - Improved the performance of `partition`. -##### Fixed +##### Fixes - Fixed `rocprim::MatchAny` for devices with 64-bit warp size. The function `rocprim::MatchAny` is deprecated and `rocprim::match_any` is preferred instead. @@ -2152,13 +2314,13 @@ rocPRIM 3.0.0 for ROCm 6.0.0 rocSOLVER 3.24.0 for ROCm 6.0.0 -##### Added +##### Additions - Cholesky refactorization for sparse matrices - CSRRF_REFACTCHOL - Added `rocsolver_rfinfo_mode` and the ability to specify the desired refactorization routine (see `rocsolver_set_rfinfo_mode`). -##### Changed +##### Changes - CSRRF_ANALYSIS and CSRRF_SOLVE now support sparse Cholesky factorization @@ -2166,18 +2328,18 @@ rocSOLVER 3.24.0 for ROCm 6.0.0 rocSPARSE 3.0.2 for ROCm 6.0.0 -##### Added +##### Additions - Added rocsparse_inverse_permutation - Added mixed precisions for SpVV - Added uniform int8 precision for Gather and Scatter -##### Optimized +##### Optimizations - Optimization to doti routine - Optimization to spin-looping algorithms -##### Changed +##### Changes - Changed rocsparse_spmv function arguments - Changed rocsparse_xbsrmv routines function arguments @@ -2185,47 +2347,47 @@ rocSPARSE 3.0.2 for ROCm 6.0.0 - Improved documentation - Improved verbose output during argument checking on API function calls -##### Deprecated - -- Deprecated rocsparse_spmv_ex -- Deprecated rocsparse_xbsrmv_ex routines - -##### Removed - -- Removed auto stages from spmv, spmm, spgemm, spsv, spsm, and spitsv. -- Removed rocsparse_spmm_ex routine - -##### Fixed +##### Fixes - Fixed a bug in rocsparse-bench, where SpMV algorithm was not taken into account in CSR format - Fixed the BSR/GEBSR routines bsrmv, bsrsv, bsrmm, bsrgeam, gebsrmv, gebsrmm so that block_dim==0 is considered an invalid size - Fixed bug where passing nnz = 0 to doti or dotci did not always return a dot product of 0 +##### Deprecatations + +- Deprecated rocsparse_spmv_ex +- Deprecated rocsparse_xbsrmv_ex routines + +##### Removals + +- Removed auto stages from spmv, spmm, spgemm, spsv, spsm, and spitsv. +- Removed rocsparse_spmm_ex routine + #### rocThrust 3.0.0 rocThrust 3.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Updated to match upstream Thrust 2.0.1 - NV_IF_TARGET macro from libcu++ for NVIDIA backend and HIP implementation for HIP backend. -##### Changed +##### Changes - The cmake build system now additionally accepts `GPU_TARGETS` in addition to `AMDGPU_TARGETS` for setting the targeted gpu architectures. `GPU_TARGETS=all` will compile for all supported architectures. `AMDGPU_TARGETS` is only provided for backwards compatibility, `GPU_TARGETS` should be preferred. -##### Removed +##### Fixes + +- Fixed a segmentation fault when binary search / upper bound / lower bound / equal range was invoked with `hip_rocprim::execute_on_stream_base` policy. + +##### Removals - Removed cub symlink from the root of the repository. - Removed support for deprecated macros (THRUST_DEVICE_BACKEND and THRUST_HOST_BACKEND). -##### Fixed - -- Fixed a segmentation fault when binary search / upper bound / lower bound / equal range was invoked with `hip_rocprim::execute_on_stream_base` policy. - -##### Known Issues +##### Known issues - For NVIDIA backend, `NV_IF_TARGET` and `THRUST_RDC_ENABLED` intend to substitute the `THRUST_HAS_CUDART` macro, which is now no longer used in Thrust (provided for legacy support only). However, there is no `THRUST_RDC_ENABLED` macro available for the HIP backend, so some branches in Thrust's code may be unreachable in the HIP backend. @@ -2233,19 +2395,19 @@ rocThrust 3.0.0 for ROCm 6.0.0 rocWMMA 1.3.0 for ROCm 6.0.0 -##### Added +##### Additions - Added support for gfx940, gfx941 and gfx942 targets - Added support for f8, bf8 and xfloat32 datatypes - Added support for HIP_NO_HALF, __ HIP_NO_HALF_CONVERSIONS__ and __ HIP_NO_HALF_OPERATORS__ (e.g. pytorch environment) -##### Changed +##### Changes - rocWMMA with hipRTC now supports bfloat16_t datatype - gfx11 wmma now uses lane swap instead of broadcast for layout adjustment - Updated samples GEMM parameter validation on host arch -##### Fixed +##### Fixes - Disabled gtest static library deployment - Extended tests now build in large code model @@ -2254,7 +2416,7 @@ rocWMMA 1.3.0 for ROCm 6.0.0 rpp for ROCm 6.0.0 -##### Added +##### Additions * New Tests @@ -2262,15 +2424,15 @@ rpp for ROCm 6.0.0 * Readme Updates -##### Changed +##### Changes * **Backend** - Default Backend set to `HIP` -##### Fixed +##### Fixes * Minor bugs and warnings -##### Tested Configurations +###### Tested Configurations * Linux distribution + Ubuntu - `18.04` / `20.04` @@ -2281,55 +2443,11 @@ rpp for ROCm 6.0.0 * Boost - Version `1.72` * IEEE 754-based half-precision floating-point library - Version `1.12.0` -##### Rpp 1.3.0 - - - -##### Rpp 1.2.0 - - - -##### Known Issues - -* `CPU` only backend not enabled - -##### Rpp 1.1.0 - - - -##### Rpp 1.0.0 - - - -##### Rpp 0.99 - - - -##### Rpp 0.98 - - - -##### Rpp 0.97 - - - -##### Rpp 0.96 - - - -##### Rpp 0.95 - - - -##### Rpp 0.93 - - - #### Tensile 4.39.0 Tensile 4.39.0 for ROCm 6.0.0 -##### Added +##### Additions - Added aquavanjaram support: gfx940/gfx941/gfx942, fp8/bf8 datatype, xf32 datatype, and stochastic rounding for various datatypes - Added/updated tuning scripts @@ -2350,7 +2468,7 @@ Tensile 4.39.0 for ROCm 6.0.0 - Supported DGEMM TLUB + RLVW=2 for odd N (edge shift change) - Enabled miLatency optimization for (gfx940/gfx941 + MFMA) for specific data types, and fixed instruction scheduling -##### Changed +##### Changes - Removed old code for DTL + (bpe * GlobalReadVectorWidth > 4) - Changed/updated failed CI tests for gfx11xx, InitAccVgprOpt, and DTLds @@ -2368,7 +2486,7 @@ Tensile 4.39.0 for ROCm 6.0.0 - Enabled ROCm SMI for gfx940/941. - Modified non-lazy load build to skip experimental logic -##### Fixed +##### Fixes - Fixed predicate ordering for fp16alt impl round near zero mode to unbreak distance modes - Fixed boundary check for mirror dims and re-enable disabled mirror dims test cases @@ -2726,7 +2844,7 @@ MIGraphX 2.7 for ROCm 5.7.0 - Improved compile times by only building for the GPU on the system - Improve performance of pointwise/reduction kernels when using NHWC layouts - Load specific version of the migraphx_py library -- Annotate functions with the block size so the compiler can do a better job of optimizing +- Annotate functions with the block size so the compiler can do a better job of optimizing - Enable reshape on nonstandard shapes - Use half HIP APIs to compute max and min - Added support for broadcasted scalars to unsqueeze operator @@ -3638,7 +3756,7 @@ rocSPARSE 2.5.2 for ROCm 5.6.0 rocThrust 2.18.0 for ROCm 5.6.0 -##### Fixed +##### Fixed - `lower_bound`, `upper_bound`, and `binary_search` failed to compile for certain types. @@ -5259,7 +5377,7 @@ function or by parameters. ##### Changed -- Improved build parallelism of the test suite by splitting up large compilation units for `DeviceRadixSort`, +- Improved build parallelism of the test suite by splitting up large compilation units for `DeviceRadixSort`, `DeviceSegmentedRadixSort` and `DeviceSegmentedSort`. - CUB backend references CUB and thrust version 1.17.1. @@ -5379,8 +5497,8 @@ rocFFT 1.0.19 for ROCm 5.4.0 ##### Changed -- Moved runtime compilation cache to in-memory by default. A default on-disk cache can encounter contention problems -on multi-node clusters with a shared filesystem. rocFFT can still be told to use an on-disk cache by setting the +- Moved runtime compilation cache to in-memory by default. A default on-disk cache can encounter contention problems +on multi-node clusters with a shared filesystem. rocFFT can still be told to use an on-disk cache by setting the ROCFFT_RTC_CACHE_PATH environment variable. #### rocPRIM 2.12.0 @@ -5389,7 +5507,7 @@ rocPRIM 2.12.0 for ROCm 5.4.0 ##### Changed -- `device_partition`, `device_unique`, and `device_reduce_by_key` now support problem +- `device_partition`, `device_unique`, and `device_reduce_by_key` now support problem sizes larger than 2^32 items. ##### Removed @@ -7113,7 +7231,7 @@ rocSPARSE 2.2.0 for ROCm 5.2.0 ##### Added -- batched SpMM for CSR, COO and Blocked ELL formats. +- batched SpMM for CSR, COO and Blocked ELL formats. - Packages for test and benchmark executables on all supported OSes using CPack. - Clients file importers and exporters. @@ -7850,7 +7968,7 @@ rocSPARSE 2.1.0 for ROCm 5.1.0 ##### Added -- gtsv_interleaved_batch +- gtsv_interleaved_batch - gpsv_interleaved_batch - SpGEMM_reuse - Allow copying of mat info struct diff --git a/RELEASE.md b/RELEASE.md index dd2fb3284..b4ac827e7 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,4 +1,5 @@ -# ROCm 6.1 release highlights +# ROCm 6.1.1 release notes + @@ -8,245 +9,140 @@ -The ROCm™ 6.1 release consists of new features and fixes to improve the stability and -performance of AMD Instinct™ MI300 GPU applications. Notably, we've added: +ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and libraries. -* Full support for Ubuntu 22.04.4. +## OS support -* **rocDecode**, a new ROCm component that provides high-performance video decode support for - AMD GPUs. With rocDecode, you can decode compressed video streams while keeping the resulting - YUV frames in video memory. With decoded frames in video memory, you can run video - post-processing using ROCm HIP, avoiding unnecessary data copies via the PCIe bus. +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). - To learn more, refer to the rocDecode - [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). +## AMD SMI -## OS and GPU support changes +AMD SMI for ROCm 6.1.1 -ROCm 6.1 adds the following operating system support: +### Additions -* MI300A: Ubuntu 22.04.4 and RHEL 9.3 -* MI300X: Ubuntu 22.04.4 +- Added deferred error correctable counts to `amd-smi metric -ecc -ecc-blocks`. -Future releases will add additional operating systems to match the general offering. For older -generations of supported AMD Instinct products, we’ve added Ubuntu 22.04.4 support. +### Changes -```{tip} -To view the complete list of supported GPUs and operating systems, refer to the system requirements -page for -[Linux](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html) -and -[Windows](https://rocm.docs.amd.com/projects/install-on-windows/en/latest/reference/system-requirements.html). +- Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks. +- Updated the output of `amd-smi metric --clock` to reflect each engine. +- Updated the output of `amd-smi topology --json` to align with output reported by host and guest systems. + +### Fixes + +- Fixed `amd-smi metric --clock`'s clock lock and deep sleep status. +- Fixed an issue that would cause an error when resetting non-AMD GPUs. +- Fixed `amd-smi metric --pcie` and `amdsmi_get_pcie_info()` when using RDNA3 (Navi 32 and Navi 31) hardware to prevent "UNKNOWN" reports. +- Fixed the output results of `amd-smi process` when getting processes running on a device. + +### Removals + +- Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release. + +### Known issues + +- `amd-smi bad-pages` can result in a `ValueError: Null pointer access` error when using some PMU firmware versions. + +```{note} +See the [detailed changelog](https://github.com/ROCm/amdsmi/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. ``` -## Installation packages +## HIPCC -This release includes a new set of packages for every module (all libraries and binaries default to -`DT_RPATH`). Package names have the suffix `rpath`; for example, the `rpath` variant of `rocminfo` is -`rocminfo-rpath`. +HIPCC for ROCm 6.1.1 -```{warning} -The new `rpath` packages will conflict with the default packages; they are meant to be used only in -environments where legacy `DT_RPATH` is the preferred form of linking (instead of `DT_RUNPATH`). We -do **not** recommend installing both sets of packages. -``` +### Changes -## ROCm components +- **Upcoming:** a future release will enable use of compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users. You can continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`. +- **Upcoming:** a subsequent release will remove high-level Perl scripts `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly. +- **Upcoming:** a subsequent release will remove `hipcc.pl` and `hipconfig.pl`. -The following sections highlight select component-specific changes. For additional details, refer to the -[Changelog](https://rocm.docs.amd.com/en/develop/about/CHANGELOG.html). +## HIPIFY -### AMD System Management Interface (SMI) Tool +HIPIFY for ROCm 6.1.1 -* **New monitor command for GPU metrics**. - Use the monitor command to customize, capture, collect, and observe GPU metrics on - target devices. +### Additions -* **Integration with E-SMI**. - The EPYC™ System Management Interface In-band Library is a Linux C-library that provides in-band - user space software APIs to monitor and control your CPU’s power, energy, performance, and other - system management functionality. This integration enables access to CPU metrics and telemetry - through the AMD SMI API and CLI tools. +- Added support for LLVM 18.1.2. +- Added support for cuDNN 9.0.0. +- Added a new option: `--clang-resource-directory` to specify the clang resource path (the path to the parent folder for the `include` folder that contains `__clang_cuda_runtime_wrapper.h` and other header files used during the hipification process). -### Composable Kernel (CK) +## ROCm SMI -* **New architecture support**. - CK now supports to the following architectures to enable efficient image denoising on the following - AMD GPUs: gfx1030, gfx1100, gfx1031, gfx1101, gfx1032, gfx1102, gfx1034, gfx1103, gfx1035, - gfx1036 +ROCm SMI for ROCm 6.1.1 -* **FP8 rounding logic is replaced with stochastic rounding**. - Stochastic rounding mimics a more realistic data behavior and improves model convergence. +### Known issues -### HIP +- ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. -* **New environment variable to enable kernel run serialization**. - The default `HIP_LAUNCH_BLOCKING` value is `0` (disable); which causes kernels to run as defined in - the queue. When set to `1` (enable), the HIP runtime serializes the kernel queue, which behaves the - same as `AMD_SERIALIZE_KERNEL`. +## Library changes in ROCm 6.1.1 -### hipBLASLt +| Library | Version | +| ----------- | -------------------------------------------------------------------------- | +| AMDMIGraphX | [2.9](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.1.1) | +| hipBLAS | [2.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.1.1) | +| hipBLASLt | [0.7.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.1.1) | +| hipCUB | [3.1.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.1.1) | +| hipFFT | [1.0.14](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.1.1) | +| hipRAND | [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.1.1) | +| hipSOLVER | 2.1.0 ⇒ [2.1.1](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.1.1) | +| hipSPARSE | [3.0.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.1.1) | +| hipSPARSELt | [0.2.0](https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.1.1) | +| hipTensor | [1.2.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.1.1) | +| MIOpen | [3.1.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.1.1) | +| MIVisionX | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.1.1) | +| rccl | [2.18.6](https://github.com/ROCm/rccl/releases/tag/rocm-6.1.1) | +| rocALUTION | [3.1.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.1.1) | +| rocBLAS | [4.1.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.1.1) | +| rocDecode | [0.5.0](https://github.com/ROCm/rocDecode/releases/tag/rocm-6.1.1) | +| rocFFT | 1.0.26 ⇒ [1.0.27](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.1.1) | +| rocm-cmake | [0.12.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.1.1) | +| rocPRIM | [3.1.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.1.1) | +| rocRAND | [3.0.1](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.1.1) | +| rocSOLVER | [3.25.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.1.1) | +| rocSPARSE | [3.1.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.1.1) | +| rocThrust | [3.0.1](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.1.1) | +| rocWMMA | [1.4.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.1.1) | +| rpp | [1.5.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.1.1) | +| Tensile | [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.1) | -* **New GemmTuning extension parameter** GemmTuning allows you to set a split-k value for each solution, which is more feasible for - performance tuning. +#### hipBLASLt 0.7.0 -### hipFFT +hipBLASLt 0.7.0 for ROCm 6.1.1 -* **New multi-GPU support for single-process transforms** Multiple GPUs can be used to perform a transform in a single process. Note that this initial - implementation is a functional preview. +##### Additions -### HIPIFY +- Added `hipblasltExtSoftmax` extension API. +- Added `hipblasltExtLayerNorm` extension API. +- Added `hipblasltExtAMax` extension API. +- Added `GemmTuning` extension parameter to set split-k by user. +- Added support for mixed precision datatype: fp16/fp8 in with fp16 outk. -* **Skipped code blocks**: Code blocks that are skipped by the preprocessor are no longer hipified under the - `--default-preprocessor` option. To hipify everything, despite conditional preprocessor directives - (`#if`, `#ifdef`, `#ifndef`, `#elif`, or `#else`), don't use the `--default-preprocessor` or `--amap` options. +##### Deprecations -### hipSPARSELt +- **Upcoming**: `algoGetHeuristic()` ext API for GroupGemm will be deprecated in a future release of hipBLASLt. -* **Structured sparsity matrix support extensions** - Structured sparsity matrices help speed up deep-learning workloads. We now support `B` as the - sparse matrix and `A` as the dense matrix in Sparse Matrix-Matrix Multiplication (SPMM). Prior to this - release, we only supported sparse (matrix A) x dense (matrix B) matrix multiplication. Structured - sparsity matrices help speed up deep learning workloads. +### hipSOLVER 2.1.1 -### hipTensor +hipSOLVER 2.1.1 for ROCm 6.1.1 -* **4D tensor permutation and contraction support**. - You can now perform tensor permutation on 4D tensors and 4D contractions for F16, BF16, and - Complex F32/F64 datatypes. +#### Changes -### MIGraphX +- By default, `BUILD_WITH_SPARSE` is now set to OFF on Microsoft Windows. -* **Improved performance for transformer-based models**. - We added support for FlashAttention, which benefits models like BERT, GPT, and Stable Diffusion. +#### Fixes -* **New Torch-MIGraphX driver**. - This driver calls MIGraphX directly from PyTorch. It provides an `mgx_module` object that you can - invoke like any other Torch module, but which utilizes the MIGraphX inference engine internally. - Torch-MIGraphX supports FP32, FP16, and INT8 datatypes. +- Fixed benchmark client build when `BUILD_WITH_SPARSE` is OFF. - * **FP8 support**. We now offer functional support for inference in the FP8E4M3FNUZ datatype. You - can load an ONNX model in FP8E4M3FNUZ using C++ or Python APIs, or `migraphx-driver`. - You can quantize a floating point model to FP8 format by using the `--fp8` flag with `migraphx-driver`. - To accelerate inference, MIGraphX uses hardware acceleration on MI300 for FP8 by leveraging FP8 - support in various backend kernel libraries. +### rocFFT 1.0.27 -### MIOpen +rocFFT 1.0.27 for ROCm 6.1.1 -* **Improved performance for inference and convolutions**. - Inference support now provided for Find 2.0 fusion plans. Additionally, we've enhanced the Number of - samples, Height, Width, and Channels (NHWC) convolution kernels for heuristics. NHWC stores data - in a format where the height and width dimensions come first, followed by channels. +#### Additions -### OpenMP +- Enable multi-GPU testing on systems without direct GPU-interconnects. -* **Implicit Zero-copy is triggered automatically in XNACK-enabled MI300A systems**. - Implicit Zero-copy behavior in `non unified_shared_memory` programs is triggered automatically in - XNACK-enabled MI300A systems (for example, when using the `HSA_XNACK=1` environment - variable). OpenMP supports the 'requires `unified_shared_memory`' directive to support programs - that don’t want to copy data explicitly between the CPU and GPU. However, this requires that you add - these directives to every translation unit of the program. +#### Fixes -* **New MI300 FP atomics**. Application performance can now improve by leveraging fast floating-point atomics on MI300 (gfx942). - - -### RCCL - -* **NCCL 2.18.6 compatibility**. - RCCL is now compatible with NCCL 2.18.6, which includes increasing the maximum IB network interfaces to 32 and fixing network device ordering when creating communicators with only one GPU - per node. - -* **Doubled simultaneous communication channels**. - We improved MI300X performance by increasing the maximum number of simultaneous - communication channels from 32 to 64. - -### rocALUTION - -* **New multiple node and GPU support**. - Unsmoothed and smoothed aggregations and Ruge-Stueben AMG now work with multiple nodes - and GPUs. For more information, refer to the - [API documentation](https://rocm.docs.amd.com/projects/rocALUTION/en/latest/usermanual/solvers.html#unsmoothed-aggregation-amg). - -### rocDecode - -* **New ROCm component**. - rocDecode ROCm's newest component, providing high-performance video decode support for AMD - GPUs. To learn more, refer to the - [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). - -### ROCm Compiler - -* **Combined projects**. ROCm Device-Libs, ROCm Compiler Support, and hipCC are now located in - the `llvm-project/amd` subdirectory of AMD's fork of the LLVM project. Previously, these projects - were maintained in separate repositories. Note that the projects themselves will continue to be - packaged separately. - -* **Split the 'rocm-llvm' package**. This package has been split into a required and an optional package: - - * **rocm-llvm(required)**: A package containing the essential binaries needed for compilation. - - * **rocm-llvm-dev(optional)**: A package containing binaries for compiler and application developers. - - -### ROCm Data Center Tool (RDC) - -* **C++ upgrades**. - RDC was upgraded from C++11 to C++17 to enable a more modern C++ standard when writing RDC plugins. - -### ROCm Performance Primitives (RPP) - -* **New backend support**. - Audio processing support added for the `HOST` backend and 3D Voxel kernels support - for the `HOST` and `HIP` backends. - -### ROCm Validation Suite - -* **New datatype support**. -Added BF16 and FP8 datatypes based on General Matrix Multiply(GEMM) operations in the GPU Stress Test (GST) module. This provides additional performance benchmarking and stress testing based on the newly supported datatypes. - -### rocSOLVER - -* **New EigenSolver routine**. -Based on the Jacobi algorithm, a new EigenSolver routine was added to the library. This routine computes the eigenvalues and eigenvectors of a matrix with improved performance. - -### ROCTracer - -* **New versioning and callback enhancements**. -Improved to match versioning changes in HIP Runtime and supports runtime API callbacks and activity record logging. The APIs of different runtimes at different levels are considered different API domains with assigned domain IDs. - -## Upcoming changes - -* ROCm SMI will be deprecated in a future release. We advise **migrating to AMD SMI** now to - prevent future workflow disruptions. - -* hipCC supports, by default, the following compiler invocation flags: - - * `-mllvm -amdgpu-early-inline-all=true` - * `-mllvm -amdgpu-function-calls=false` - - In a future ROCm release, hipCC will no longer support these flags. It will, instead, use the Clang - defaults: - - * `-mllvm -amdgpu-early-inline-all=false` - * `-mllvm -amdgpu-function-calls=true` - - To evaluate the impact of this change, include `--hipcc-func-supp` in your hipCC invocation. - - For information on these flags, and the differences between hipCC and Clang, refer to - [ROCm Compiler Interfaces](https://rocm.docs.amd.com/en/latest/reference/rocmcc.html#rocm-compiler-interfaces). - -* Future ROCm releases will not provide `clang-ocl`. For more information, refer to the - [`clang-ocl` README](https://github.com/ROCm/clang-ocl). - -* The following operating systems will be supported in a future ROCm release. They are currently - only available in beta. - - * RHEL 9.4 - * RHEL 8.10 - * SLES 15 SP6 - -* As of ROCm 6.2, we’ve planned for **end-of-support** for: - - * Ubuntu 20.04.5 - * SLES 15 SP4 - * RHEL/CentOS 7.9 +- Fixed kernel launch failure on execute of very large odd-length real-complex transforms. diff --git a/docs/compatibility/compatibility-matrix.rst b/docs/compatibility/compatibility-matrix.rst new file mode 100644 index 000000000..6c629a3cd --- /dev/null +++ b/docs/compatibility/compatibility-matrix.rst @@ -0,0 +1,126 @@ +.. meta:: + :description: ROCm compatibility matrix + :keywords: AMD, GPU, architecture, hardware, compatibility, requirements + +************************************************************************************** +Compatibility matrix +************************************************************************************** + +Use this matrix to view the ROCm compatibility across successive major and minor releases. + + +.. container:: format-big-table + + .. csv-table:: + :header: "ROCm Version", "6.1.0", "6.0.0" + :stub-columns: 1 + + :doc:`Operating Systems `, "Ubuntu 22.04.4, 22.04.3","Ubuntu 22.04.4, 22.04.3" + ,"Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5" + ,"RHEL 9.3, 9.2","RHEL 9.3, 9.2" + ,"RHEL 8.9, 8.8","RHEL 8.9, 8.8" + ,"SLES 15 SP5, SP4","SLES 15 SP5, SP4" + ,CentOS 7.9,CentOS 7.9 + ,, + :doc:`GFX Architecture `,CDNA3,CDNA3 + ,CDNA2,CDNA2 + ,CDNA,CDNA + ,RDNA3,RDNA3 + ,RDNA2,RDNA2 + ,, + :doc:`GFX Card `,gfx1100,gfx1100 + ,gfx1030,gfx1030 + ,gfx942 [#]_, gfx942 [#]_ + ,gfx90a,gfx90a + ,gfx908,gfx908 + ,, + ECOSYSTEM SUPPORT:,, + :doc:`PyTorch `,"2.1, 2.0, 1.13","2.1, 2.0, 1.13" + :doc:`Tensorflow `,"2.15, 2.14, 2.13","2.14, 2.13, 2.12" + :doc:`JAX `,0.4.26,0.4.26 + `ONNX-RT `_,1.17.3,1.14.1 + ,, + 3RD PARTY COMMUNICATION LIBS:,, + `UCC `_,>=1.2.0,>=1.2.0 + `UCX `_,>=1.14.1,>=1.14.1 + ,, + 3RD PARTY ALGORITHM LIBS:,, + Thrust,2.1.0,2.0.1 + CUB,2.1.0,2.0.1 + ,, + ML & COMPUTER VISION LIBS:,, + :doc:`Composable Kernel `,1.1.0,1.1.0 + :doc:`MIGraphX `,2.9.0,2.8.0 + :doc:`MIOpen `,3.1.0,3.0.0 + :doc:`MIVisionX `,2.5.0,2.5.0 + :doc:`rocDecode `,0.5.0,N/A + :doc:`RPP `,1.5.0,1.4.0 + ,, + COMMUNICATION:,, + :doc:`rccl `,2.18.6,2.18.3 + ,, + MATH LIBS:,, + `half `_ ,1.12.0,1.12.0 + :doc:`hipBLAS `,2.1.0,2.0.0 + :doc:`hipBLASLt `,0.7.0,0.6.0 + :doc:`hipFFT `,1.0.14,1.0.13 + :doc:`hipFORT `,0.4.0,0.4.0 + :doc:`hipRAND `,2.10.16,2.10.16 + :doc:`hipSOLVER `,2.1.0,2.0.0 + :doc:`hipSPARSE `,3.0.1,3.0.0 + :doc:`hipSPARSELt `,0.1.0,0.1.0 + :doc:`rocALUTION `,3.1.1,3.0.3 + :doc:`rocBLAS `,4.1.0,4.0.0 + :doc:`rocFFT `,1.0.27,1.0.23 + :doc:`rocRAND `,3.0.1,2.10.17 + :doc:`rocSOLVER `,3.25.0,3.24.0 + :doc:`rocSPARSE `,3.1.2,3.0.2 + :doc:`rocWMMA `,1.4.0,1.3.0 + `Tensile `_,4.40.0,4.39.0 + ,, + PRIMITIVES:,, + :doc:`hipCUB `,3.1.0,3.0.0 + :doc:`hipTensor `,1.2.0,1.1.0 + :doc:`rocPRIM `,3.1.0,3.0.0 + :doc:`rocThrust `,3.0.1,3.0.0 + ,, + SUPPORT LIBS:,, + `hipother `_,6.1.40091,6.0.32830 + `rocm-cmake `_,0.12.0,0.11.0 + `rocm-core `_,6.1.0,6.0.0 + `ROCT-Thunk-Interface `_,20240125.3.30,20231016.2.245 + ,, + TOOLS:,, + :doc:`AMD SMI `,24.4.1,23.4.2 + :doc:`HIPIFY `,17.0.0,17.0.0 + :doc:`ROCdbgapi `,0.71.0,0.71.0 + `ROCdebug-Agent `_,2.0.3,2.0.3 + :doc:`rocGDB `,14.1.0,13.2.0 + :doc:`rocProfiler `,2.0.60100,2.0.0 + `rocprofiler-register `_,0.3.0,N/A + :doc:`rocTracer `,4.1.60100,4.1.0 + `rocm_bandwidth_test `_,1.4.0,1.4.0 + :doc:`ROCm Data Center Tool `,0.3.0,0.3.0 + `rocminfo `_,1.0.0,1.0.0 + :doc:`ROCm SMI Lib `,7.0.0,6.0.0 + :doc:`ROCm Validation Suite `,rocm-6.1.0,rocm-6.0.0 + :doc:`TransferBench `,1.48,1.46 + ,, + COMPILERS:,, + `AOMP `_,17.60.0,17.60.0 + `clang-ocl `_,0.5.0,0.5.0 + `Flang `_,17.0.0.24103,17.0.0.23483 + `llvm-project `_,17.0.0.24103,17.0.0.23483 + `OpenMP `_,17.0.0.24103,17.0.0.23483 + ,, + RUNTIMES:,, + :doc:`HIP `,6.1.40091,6.0.32830 + `OpenCL Runtime `_,2.0.0,2.0.0 + `ROCR Runtime `_,1.13.0,1.12.0 + + +.. rubric:: Footnotes +.. [#] **For ROCm 6.1** - MI300A (gfx942) is supported on Ubuntu 22.04.4, RHEL 9.3 & 8.9 and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.4. +.. [#] **For ROCm 6.0** - MI300A (gfx942) is supported on Ubuntu 22.04.3, RHEL 8.9 and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.3. + + diff --git a/docs/about/compatibility/precision-support.rst b/docs/compatibility/precision-support.rst similarity index 99% rename from docs/about/compatibility/precision-support.rst rename to docs/compatibility/precision-support.rst index fa0a385ad..3474dd67a 100644 --- a/docs/about/compatibility/precision-support.rst +++ b/docs/compatibility/precision-support.rst @@ -47,7 +47,7 @@ Floating-point types The floating-point types that are supported by ROCm are listed in the following table, together with their corresponding HIP type and a short description. -.. image:: ../../data/about/compatibility/floating-point-data-types.png +.. image:: ../data/about/compatibility/floating-point-data-types.png :alt: Supported floating-point types .. list-table:: diff --git a/docs/conf.py b/docs/conf.py index eade37a8f..3d31982d2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -98,6 +98,9 @@ external_projects_current_project = "rocm" html_theme = "rocm_docs_theme" html_theme_options = {"flavor": "rocm-docs-home"} +html_static_path = ["sphinx/static/css"] +html_css_files = ["rocm_custom.css"] + html_title = "ROCm Documentation" html_theme_options = { diff --git a/docs/index.md b/docs/index.md index 862330ac8..b85ab88f3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -51,13 +51,14 @@ Our documentation is organized into the following categories: :img-alt: Compatibility information :padding: 2 +* [Compatibility matrix](./compatibility/compatibility-matrix.rst) * {doc}`System requirements (Linux)` * {doc}`System requirements (Windows)` * {doc}`Third-party support` * {doc}`User/kernel space` * {doc}`Docker` * [OpenMP](./about/compatibility/openmp.md) -* [Precision support](./about/compatibility/precision-support.rst) +* [Precision support](./compatibility/precision-support.rst) * {doc}`ROCm on Radeon GPUs` ::: diff --git a/docs/reference/gpu-arch-specs.rst b/docs/reference/gpu-arch-specs.rst index b8647e830..df9068c48 100644 --- a/docs/reference/gpu-arch-specs.rst +++ b/docs/reference/gpu-arch-specs.rst @@ -7,655 +7,656 @@ Accelerator and GPU hardware specifications The following tables provide an overview of the hardware specifications for AMD Instinct™ accelerators, and AMD Radeon™ PRO and Radeon™ GPUs. -.. tab-set:: +.. container:: horizontal-scrolling-container - .. tab-item:: AMD Instinct accelerators + .. tab-set:: - .. list-table:: - :header-rows: 1 - :name: instinct-arch-spec-table + .. tab-item:: AMD Instinct accelerators - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - L3 Cache (MiB) - - L2 Cache (MiB) - - L1 Vector Cache (KiB) - - L1 Scalar Cache (KiB) - - L1 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - MI300X - - CDNA3 - - gfx941 or gfx942 - - 192 - - 304 - - 64 - - 64 - - 256 - - 32 - - 32 - - 16 per 2 CUs - - 64 per 2 CUs - - 512 - - 12.5 - * - - MI300A - - CDNA3 - - gfx940 or gfx942 - - 128 - - 228 - - 64 - - 64 - - 256 - - 24 - - 32 - - 16 per 2 CUs - - 64 per 2 CUs - - 512 - - 12.5 - * - - MI250X - - CDNA2 - - gfx90a - - 128 - - 220 (110 per GCD) - - 64 - - 64 - - - - 16 (8 per GCD) - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI250 - - CDNA2 - - gfx90a - - 128 - - 208 - - 64 - - 64 - - - - 16 (8 per GCD) - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI210 - - CDNA2 - - gfx90a - - 64 - - 104 - - 64 - - 64 - - - - 8 - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI100 - - CDNA - - gfx908 - - 32 - - 120 - - 64 - - 64 - - - - 8 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 VGPR and 256 AccVGPR - - 12.5 - * - - MI60 - - GCN5.1 - - gfx906 - - 32 - - 64 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI50 (32GB) - - GCN5.1 - - gfx906 - - 32 - - 60 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI50 (16GB) - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI25 - - GCN5.0 - - gfx900 - - 16  - - 64 - - 64 - - 64  - - - - 4  - - 16  - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI8 - - GCN3.0 - - gfx803 - - 4 - - 64 - - 64 - - 64 - - - - 2 - - 16 - - 16 per 4 CUs - - 32 per 4 CUs - - 256 - - 12.5 - * - - MI6 - - GCN4.0 - - gfx803 - - 16 - - 36 - - 64 - - 64 - - - - 2 - - 16 - - 16 per 4 CUs - - 32 per 4 CUs - - 256 - - 12.5 + .. list-table:: + :header-rows: 1 + :name: instinct-arch-spec-table - .. tab-item:: AMD Radeon PRO GPUs + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - L3 Cache (MiB) + - L2 Cache (MiB) + - L1 Vector Cache (KiB) + - L1 Scalar Cache (KiB) + - L1 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - MI300X + - CDNA3 + - gfx941 or gfx942 + - 192 + - 304 + - 64 + - 64 + - 256 + - 32 + - 32 + - 16 per 2 CUs + - 64 per 2 CUs + - 512 + - 12.5 + * + - MI300A + - CDNA3 + - gfx940 or gfx942 + - 128 + - 228 + - 64 + - 64 + - 256 + - 24 + - 32 + - 16 per 2 CUs + - 64 per 2 CUs + - 512 + - 12.5 + * + - MI250X + - CDNA2 + - gfx90a + - 128 + - 220 (110 per GCD) + - 64 + - 64 + - + - 16 (8 per GCD) + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI250 + - CDNA2 + - gfx90a + - 128 + - 208 + - 64 + - 64 + - + - 16 (8 per GCD) + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI210 + - CDNA2 + - gfx90a + - 64 + - 104 + - 64 + - 64 + - + - 8 + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI100 + - CDNA + - gfx908 + - 32 + - 120 + - 64 + - 64 + - + - 8 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 VGPR and 256 AccVGPR + - 12.5 + * + - MI60 + - GCN5.1 + - gfx906 + - 32 + - 64 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI50 (32GB) + - GCN5.1 + - gfx906 + - 32 + - 60 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI50 (16GB) + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI25 + - GCN5.0 + - gfx900 + - 16  + - 64 + - 64 + - 64  + - + - 4  + - 16  + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI8 + - GCN3.0 + - gfx803 + - 4 + - 64 + - 64 + - 64 + - + - 2 + - 16 + - 16 per 4 CUs + - 32 per 4 CUs + - 256 + - 12.5 + * + - MI6 + - GCN4.0 + - gfx803 + - 16 + - 36 + - 64 + - 64 + - + - 2 + - 16 + - 16 per 4 CUs + - 32 per 4 CUs + - 256 + - 12.5 - .. list-table:: - :header-rows: 1 - :name: radeon-pro-arch-spec-table + .. tab-item:: AMD Radeon PRO GPUs - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - Infinity Cache (MiB) - - L2 Cache (MiB) - - Graphics L1 Cache (KiB) - - L0 Vector Cache (KiB) - - L0 Scalar Cache (KiB) - - L0 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - Radeon PRO W7900 - - RDNA3 - - gfx1100 - - 48 - - 96 - - 32 - - 128 - - 96 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W7800 - - RDNA3 - - gfx1100 - - 32 - - 70 - - 32 - - 128 - - 64 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W7700 - - RDNA3 - - gfx1101 - - 16 - - 48 - - 32 - - 128 - - 64 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W6800 - - RDNA2 - - gfx1030 - - 32 - - 60 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon PRO W6600 - - RDNA2 - - gfx1032 - - 8 - - 28 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon PRO V620 - - RDNA2 - - gfx1030 - - 32 - - 72 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon Pro W5500 - - RDNA - - gfx1012 - - 8 - - 22 - - 32 - - 128 - - - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon Pro VII - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 - - - - 4 - - - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 + .. list-table:: + :header-rows: 1 + :name: radeon-pro-arch-spec-table - .. tab-item:: AMD Radeon GPUs + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - Infinity Cache (MiB) + - L2 Cache (MiB) + - Graphics L1 Cache (KiB) + - L0 Vector Cache (KiB) + - L0 Scalar Cache (KiB) + - L0 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - Radeon PRO W7900 + - RDNA3 + - gfx1100 + - 48 + - 96 + - 32 + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W7800 + - RDNA3 + - gfx1100 + - 32 + - 70 + - 32 + - 128 + - 64 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W7700 + - RDNA3 + - gfx1101 + - 16 + - 48 + - 32 + - 128 + - 64 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W6800 + - RDNA2 + - gfx1030 + - 32 + - 60 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon PRO W6600 + - RDNA2 + - gfx1032 + - 8 + - 28 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon PRO V620 + - RDNA2 + - gfx1030 + - 32 + - 72 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon Pro W5500 + - RDNA + - gfx1012 + - 8 + - 22 + - 32 + - 128 + - + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon Pro VII + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 + - + - 4 + - + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 - .. list-table:: - :header-rows: 1 - :name: radeon-arch-spec-table + .. tab-item:: AMD Radeon GPUs - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - Infinity Cache (MiB) - - L2 Cache (MiB) - - Graphics L1 Cache (KiB) - - L0 Vector Cache (KiB) - - L0 Scalar Cache (KiB) - - L0 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - Radeon RX 7900 XTX - - RDNA3 - - gfx1100 - - 24 - - 96 - - 32 - - 128 - - 96 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7900 XT - - RDNA3 - - gfx1100 - - 20 - - 84 - - 32 - - 128 - - 80 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7900 GRE - - RDNA3 - - gfx1100 - - 16 - - 80 - - 32 - - 128 - - 64 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7800 XT - - RDNA3 - - gfx1101 - - 16 - - 60 - - 32 - - 128 - - 64 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7700 XT - - RDNA3 - - gfx1101 - - 12 - - 54 - - 32 - - 128 - - 48 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7600 - - RDNA3 - - gfx1102 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 256 - - 32 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6950 XT - - RDNA2 - - gfx1030 - - 16 - - 80 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6900 XT - - RDNA2 - - gfx1030 - - 16 - - 80 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6800 XT - - RDNA2 - - gfx1030 - - 16 - - 72 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6800 - - RDNA2 - - gfx1030 - - 16 - - 60 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6750 XT - - RDNA2 - - gfx1031 - - 12 - - 40 - - 32 - - 128 - - 96 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6700 XT - - RDNA2 - - gfx1031 - - 12 - - 40 - - 32 - - 128 - - 96 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6700 - - RDNA2 - - gfx1031 - - 10 - - 36 - - 32 - - 128 - - 80 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6650 XT - - RDNA2 - - gfx1032 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6600 XT - - RDNA2 - - gfx1032 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6600 - - RDNA2 - - gfx1032 - - 8 - - 28 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon VII - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 per CU - - - - 4 - - - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 + .. list-table:: + :header-rows: 1 + :name: radeon-arch-spec-table -For more information on the terms used here, see the :ref:`specific documents and guides `, the :doc:`conceptual overview of the HIP programming model`, or the :doc:`HIP reference guide`. + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - Infinity Cache (MiB) + - L2 Cache (MiB) + - Graphics L1 Cache (KiB) + - L0 Vector Cache (KiB) + - L0 Scalar Cache (KiB) + - L0 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - Radeon RX 7900 XTX + - RDNA3 + - gfx1100 + - 24 + - 96 + - 32 + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7900 XT + - RDNA3 + - gfx1100 + - 20 + - 84 + - 32 + - 128 + - 80 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7900 GRE + - RDNA3 + - gfx1100 + - 16 + - 80 + - 32 + - 128 + - 64 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7800 XT + - RDNA3 + - gfx1101 + - 16 + - 60 + - 32 + - 128 + - 64 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7700 XT + - RDNA3 + - gfx1101 + - 12 + - 54 + - 32 + - 128 + - 48 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7600 + - RDNA3 + - gfx1102 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 256 + - 32 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6950 XT + - RDNA2 + - gfx1030 + - 16 + - 80 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6900 XT + - RDNA2 + - gfx1030 + - 16 + - 80 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6800 XT + - RDNA2 + - gfx1030 + - 16 + - 72 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6800 + - RDNA2 + - gfx1030 + - 16 + - 60 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6750 XT + - RDNA2 + - gfx1031 + - 12 + - 40 + - 32 + - 128 + - 96 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6700 XT + - RDNA2 + - gfx1031 + - 12 + - 40 + - 32 + - 128 + - 96 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6700 + - RDNA2 + - gfx1031 + - 10 + - 36 + - 32 + - 128 + - 80 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6650 XT + - RDNA2 + - gfx1032 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6600 XT + - RDNA2 + - gfx1032 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6600 + - RDNA2 + - gfx1032 + - 8 + - 28 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon VII + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 per CU + - + - 4 + - + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 +For more information on the terms used here, see the :ref:`specific documents and guides ` or :doc:`Understanding the HIP programming model`. diff --git a/docs/reference/rocm-tools.md b/docs/reference/rocm-tools.md index 60801dd92..1a53a3273 100644 --- a/docs/reference/rocm-tools.md +++ b/docs/reference/rocm-tools.md @@ -19,6 +19,7 @@ :img-alt: Development tools :padding: 2 +* {doc}`HIPIFY ` * {doc}`ROCdbgapi ` * [ROCmCC](./rocmcc.md) * [ROCm Debug Agent](https://github.com/ROCm/rocr_debug_agent) @@ -35,6 +36,7 @@ * [RocBandwidthTest](https://github.com/ROCm/rocm_bandwidth_test) * {doc}`ROCProfiler ` +* [rocprofiler-register](https://github.com/ROCm/rocprofiler-register) * {doc}`ROCTracer ` ::: diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index af68deae1..413317901 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -8,7 +8,7 @@ subtrees: - entries: - file: what-is-rocm.rst - file: about/release-notes.md - title: Release highlights + title: Release notes subtrees: - entries: - file: about/CHANGELOG.md @@ -25,11 +25,13 @@ subtrees: - caption: Compatibility entries: + - file: compatibility/compatibility-matrix.rst + title: Compatibility matrix - url: https://rocm.docs.amd.com/projects/install-on-linux/en/${branch}/reference/system-requirements.html title: Linux - url: https://rocm.docs.amd.com/projects/install-on-windows/en/${branch}/reference/system-requirements.html title: Windows - - file: about/compatibility/precision-support.rst + - file: compatibility/precision-support.rst title: Precision support - url: https://rocm.docs.amd.com/projects/install-on-linux/en/${branch}/reference/3rd-party-support-matrix.html title: Third-party diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index 24dbfcc2a..cdee26699 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1,2 +1,2 @@ -rocm-docs-core==1.0.0 -sphinx-reredirects==0.1.3 \ No newline at end of file +rocm-docs-core==1.1.1 +sphinx-reredirects==0.1.3 diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 2e8b53fe7..b81481721 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -46,11 +46,7 @@ idna==3.7 # via requests imagesize==1.4.1 # via sphinx -importlib-metadata==7.1.0 - # via sphinx -importlib-resources==6.4.0 - # via rocm-docs-core -jinja2==3.1.3 +jinja2==3.1.4 # via # myst-parser # sphinx @@ -100,7 +96,7 @@ requests==2.31.0 # via # pygithub # sphinx -rocm-docs-core==1.0.0 +rocm-docs-core==1.1.1 # via -r requirements.in smmap==5.0.0 # via gitdb @@ -144,15 +140,11 @@ sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx -typing-extensions==4.11.0 - # via - # pydata-sphinx-theme - # pygithub -urllib3==2.2.1 - # via - # pygithub - # requests -wrapt==1.16.0 +typing-extensions==4.5.0 + # via pydata-sphinx-theme +urllib3==1.26.18 + # via requests +wrapt==1.14.1 # via deprecated zipp==3.18.1 # via diff --git a/docs/sphinx/static/css/rocm_custom.css b/docs/sphinx/static/css/rocm_custom.css new file mode 100644 index 000000000..7d14bb961 --- /dev/null +++ b/docs/sphinx/static/css/rocm_custom.css @@ -0,0 +1,53 @@ + +/* Adds container for big tables, used for Compatibility Matrix */ + + +/* Header row to have opaque background colour when sticky */ +.format-big-table th { + background-color: var(--pst-color-background); + white-space: nowrap; + } + + /* Turn on borders for whole table */ + .format-big-table th, + .format-big-table td { + border-width: 1px; + } + + /* .format-big-table th.head { */ + /* background-color: var(--pst-color-on-surface); */ + /* } */ + + /* Sticky header for table excluding the stub*/ + .format-big-table th.head:not(.stub) { + position: sticky; + top: 3rem; + z-index: 1; + } + + /* Sticky header for the head & stub: top left cell */ + .format-big-table th.head.stub { + position: sticky; + top: 3rem; + z-index: 1; + background-color: var(--pst-color-background); + white-space: nowrap; + } + + /* Sticky for the stub column */ + /*.format-big-table tbody th:not(:empty) { + position: sticky; + top: 3rem; + z-index: 2; + }*/ + + /* Removes borders for stub column */ + .format-big-table tbody th { + border-top: none; + border-bottom: none; + } + + /* For horizontal scrolling only. Can't be combined with format-big-table container */ + .horizontal-scrolling-container { + overflow-x: scroll; + } diff --git a/tools/autotag/README.md b/tools/autotag/README.md index 437f5d9ce..8900c1920 100755 --- a/tools/autotag/README.md +++ b/tools/autotag/README.md @@ -20,16 +20,16 @@ * Run this for 5.6.0 (change for whatever version you require) * `GITHUB_ACCESS_TOKEN=my_token_here` -To generate the changelog from 5.0.0 up to and including 6.1.0: +To generate the changelog from 5.0.0 up to and including 6.1.1: ```sh -python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --do-previous --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.0 +python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --do-previous --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.1 ``` -To generate the changelog only for 6.1.0: +To generate the changelog only for 6.1.1: ```sh -python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.0 +python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.1 ``` ### Notes diff --git a/tools/autotag/templates/changelog.jinja b/tools/autotag/templates/changelog.jinja index ff1084bac..f9a682090 100644 --- a/tools/autotag/templates/changelog.jinja +++ b/tools/autotag/templates/changelog.jinja @@ -42,7 +42,7 @@ This page contains the release notes for AMD ROCm Software. {%- for lib_name, lib in release.libraries | dictsort %} {%- if rocm_ver_by_lib_ver[lib_name][lib.lib_version] == version and lib.lib_version%} -#### {{lib_name}} {{lib.lib_version}} +#### {{lib_name}} {{lib.message}} diff --git a/tools/autotag/templates/rocm_changes/6.0.2.md b/tools/autotag/templates/rocm_changes/6.0.2.md index 17f51eb4d..226dd6ad5 100644 --- a/tools/autotag/templates/rocm_changes/6.0.2.md +++ b/tools/autotag/templates/rocm_changes/6.0.2.md @@ -1,4 +1,5 @@ -The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. + +The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. #### hipFFT 1.0.13 diff --git a/tools/autotag/templates/rocm_changes/6.1.1.md b/tools/autotag/templates/rocm_changes/6.1.1.md new file mode 100644 index 000000000..a67ac7bfd --- /dev/null +++ b/tools/autotag/templates/rocm_changes/6.1.1.md @@ -0,0 +1,67 @@ + +ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and libraries. + +### OS support + +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). + +### AMD SMI + +AMD SMI for ROCm 6.1.1 + +#### Additions + +* Added deferred error correctable counts to `amd-smi metric -ecc -ecc-blocks`. + +#### Changes + +* Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks. +* Updated the output of `amd-smi metric --clock` to reflect each engine. +* Updated the output of `amd-smi topology --json` to align with output reported by host and guest systems. + +#### Fixes + +* Fixed `amd-smi metric --clock`'s clock lock status and deep sleep status. +* Fixed an issue that would cause an error when attempting to reset non-AMD GPUs. +* Fixed `amd-smi metric --pcie` and `amdsmi_get_pcie_info()` when using RDNA3 (Navi 32 and Navi 31) hardware to prevent "UNKNOWN" reports. +* Fixed the output results of `amd-smi process` when getting processes running on a device. + +#### Removals + +* Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release. + +#### Known issues + +* `amd-smi bad-pages` can result in a `ValueError: Null pointer access` error when using certain PMU firmware versions. + +```{note} +See the [detailed changelog](https://github.com/ROCm/amdsmi/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` + +### HIPCC + +HIPCC for ROCm 6.1.1 + +#### Changes + +* **Upcoming:** a future release will enable use of compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users; you may continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`. +* **Upcoming:** a subsequent release will remove high-level Perl scripts `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly. +* **Upcoming:** a subsequent will remove `hipcc.pl` and `hipconfig.pl`. + +### HIPIFY + +HIPIFY for ROCm 6.1.1 + +#### Additions + +* Added support for LLVM 18.1.2. +* Added support for cuDNN 9.0.0. +* Added a new option: `--clang-resource-directory` to specify the clang resource path (the path to the parent folder for the `include` folder that contains `__clang_cuda_runtime_wrapper.h` and other header files used during the hipification process). + +### ROCm SMI + +ROCm SMI for ROCm 6.1.1 + +#### Known issues + +* ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. diff --git a/tools/autotag/util/__init__.py b/tools/autotag/util/__init__.py index 40a4fdbd4..bdfded03e 100755 --- a/tools/autotag/util/__init__.py +++ b/tools/autotag/util/__init__.py @@ -1,2 +1,2 @@ from .defaults import TEMPLATES, PROCESSORS -from .custom_templates import hipfort, mivisionx, rpp, rvs +from .custom_templates import hipfort, mivisionx, rpp diff --git a/tools/autotag/util/release_data.py b/tools/autotag/util/release_data.py index d82cbb533..1ad94ab06 100755 --- a/tools/autotag/util/release_data.py +++ b/tools/autotag/util/release_data.py @@ -4,6 +4,7 @@ from dataclasses import dataclass, field import os import re import shutil +import sys from typing import Optional, Union, Dict, List, Tuple from github import Github, UnknownObjectException from github.Repository import Repository @@ -352,6 +353,8 @@ class ReleaseBundleFactory: """Create a release bundle of libraries.""" tag_name = f"rocm-{version}" libraries = { } + + missing_branches = [] print(f"\nLibraries for rocm-{version}:") for name, remote in names_and_remotes: @@ -365,7 +368,13 @@ class ReleaseBundleFactory: continue print(f" Defaulting to branch: {self.branch}") - commit = repo.get_branch(self.branch).commit.sha + try: + repo_branch = repo.get_branch(self.branch) + commit = repo_branch.commit.sha + except Exception: + print(f" - Could not find branch : {self.branch}") + missing_branches.append(f"{self.branch} for {name}") + continue libraries[name] = ReleaseLib( name=name, @@ -381,6 +390,9 @@ class ReleaseBundleFactory: libraries=libraries ) + for missing in missing_branches: + print(f"Could not find the following branch: {missing}") + return data def create_data_dict( From 2728feb7b38eba4f8fb65616fe66f733b00563f8 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Wed, 8 May 2024 16:08:36 -0600 Subject: [PATCH 009/175] Merge develop into roc-6.1.x (#3099) (#3100) * Add ROCm version 6.1.0 to version list (#3023) * Update CHANGELOG.md Added GitHub links to Changelog * Update CHANGELOG.md * Update manifest for ROCm 6.1.0 (#3022) * Reorganize default.xml by group and alphabetically * Add rocDecode to default.xml * Add rocDecode to included names in tag script * update tag to 6.1.0 --------- * Update CHANGELOG.md Updated ROCm Compiler with fixed issue * docs(tools/autotag/README.md): Add additional note to avoid duplicating data in changelog template (#3018) * Bump rocm-docs-core from 0.38.1 to 1.0.0 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.38.1 to 1.0.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.38.1...v1.0.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-major ... * Use Ubuntu 22.04 and Python 3.10 in RTD config * Update README.md (#3043) * Update README.md Fix rocSPARSE build link * Update link to just general page, instead of anchor * Add 'JAX for ROCm' link to index.md (#3034) * Add JAX for ROCm link to index.md * Reorder third-party libraries installation guides in index * Update links to rocAL component (#3033) * Update links to rocAL component * Change absolute rocm docs links to relative * Update compatibility/precision-support links (#3030) * Change links to component data type support pages from absolute to relative * Fix rocPRIM data type support links * Empty commit to trigger demo rebuild. * Update excluded and included projects * Separate templates into a module; Fix MIVisionX template * Add hipfort changelog processor * Add rpp custom processor * Add custom processor for rvs * update the code-owner list (#3046) * Update default.xml (#3038) * Remove HIPCC from default.xml HIPCC moved into llvm-project * Remove ROCm-Device-Libs from default.xml ROCm-Device-Libs was moved into llvm-project * Remove ROCm-CompilerSupport from default.xml ROCm-CompilerSupport was moved into llvm-project * Add rocprofiler-register to default.xml Added in 6.1 manifest * Apply mathlibs group to projects in manifest * Bump rocm-docs-core from 0.38.1 to 1.0.0 in /docs/sphinx (#3047) * Bump rocm-docs-core from 0.38.1 to 1.0.0 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 0.38.1 to 1.0.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v0.38.1...v1.0.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-major ... * Set Ubuntu 22.04 and Python 3.10 in ReadtheDocs config --------- * Add 6.1.0.md template * Add AMD SMI to 6.1.0 template * Add ROCm Compiler to 6.1.0 template * Add RDC to 6.1.0 template * Add ROCgdb to 6.1.0 template * Add ROCm SMI to 6.1.0 template * Add ROCProfiler to 6.1.0 template * Add MI200 SR-IOV known issue to 6.1.0 template * Add MI300 RAS fixed defect to 6.1.0 template * docs(6.1.0.md): Add more changelog notes for 6.1.0 * Update 6.1.0.md Added links to GitHub for known issues and ROCm Compiler fixed defect * Test autotag script * Add ck template * Add HIPIFY to included names for tag script * Remove rocprofiler from tag_script * Remove RVS template Determine cause of missing later * Add HIPIFY to template for 6.1.0 * Add extra line to topp of template for formatting changelog * Update 5.7.1.md Fixing the broken link for rocBLAS programmer's guide in 5.7.1 Changelog. * Regenerate changelog with new 5.7.1 link fix * Add note for tag_script included_names * Improve readability of GPU architecture hardware specs (#3009) * move units of measurement to table headers * add glossary explaining table headers * add missed units and update h1 * toc listing to say indicate Accelerators & GPUs * fix typo * update meta description and keywords * Update title in toc to fit in sidebar * update title, toc, and filename * Fix broken link to HIP programming guide * Revert "update title, toc, and filename" This reverts commit 6b9e687805692d3815bea3537e6eb5557710c25a. * Revert glossary; slight fixes * Change 'Pro' to 'PRO' for consistency * Add references to programming and hardware architecture guides * Change 'warp' to 'wavefront' * Update changelog.jinja to exclude version number in header for lindividual libraries (#3058) * Base set of Azure DevOps pipeline library source (#3021) * Base set of Azure DevOps pipeline library source A base set of yaml files to orchestrate the build and testing of ROCm compiler and runtime components in an Azure DevOps project. * Use hipcc in llvm-project, also build OpenCL runtime. * Adding llvm-lit tests to llvm-project pipeline. Added comgr ctest as well. * rocm-cmake unit testing in pipeline * Pipeline changes corresponding to 6.1 release * Bump rocm-docs-core from 1.0.0 to 1.1.0 in /docs/sphinx (#3063) Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 1.0.0 to 1.1.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v1.0.0...v1.1.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-minor ... * Bump rocm-docs-core from 1.0.0 to 1.1.0 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 1.0.0 to 1.1.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v1.0.0...v1.1.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-minor ... * update the default.xml for ROCm6.1 (#3067) * Bump urllib3 from 1.26.13 to 1.26.18 in /docs/sphinx (#3068) Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.13 to 1.26.18. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.13...1.26.18) --- updated-dependencies: - dependency-name: urllib3 dependency-type: indirect ... * Add 6.1.1.md template * Bump rocm-docs-core from 1.1.0 to 1.1.1 in /docs/sphinx (#3070) Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 1.1.0 to 1.1.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v1.1.0...v1.1.1) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-patch ... * Fix broken link on hardware specs page (#3075) * Fix broken link Fix broken link on hardware specs page to HIP programming model due to refactoring of HIP docs. * Update link anchor * Tagged builds of External CI components (#3078) * Tagged builds of External CI components Adding capability to kick off builds of ROCm components based on a tag ref, without the need of the yaml file in the corresponding repo that is used for pre-submit and on-submit builds. This unblocks the team from creating an initial set of pipelines to verify things work. Also made some improvements to the code structure and added support for more repos. --------- * More external CI pipelines (#3083) Changing default behaviour for PRs with tag-builds. Changing build system for some jobs based on execution time. * Add compatibility matrix (#3082) * add compatibility matrix and custom css * fix toc * reorder some components in matrix, add missing tools to reference page * Update docs/compatibility/compatibility-matrix.rst --------- * update OS strings to be more readable and searchable (#3088) * Tag build pipelines for four more ROCm repos (#3085) -rocgdb -hipother via HIP build with targeted platform -hipSOLVER -hipSPARSELt * Bump jinja2 from 3.1.3 to 3.1.4 in /docs/sphinx (#3089) Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/3.1.3...3.1.4) --- updated-dependencies: - dependency-name: jinja2 dependency-type: indirect ... * Compatibility Matrix - include AMDSMI (#3090) * Extend codeowners for docs (#3091) * Add release notes Improve wording Clarify Ubuntu 22.04.5 is pre-release Add AMD SMI changes Fix md headings and some words Reword highlight Add feedback from Leo to release highlight Add generated changelog Add RELEASE.md for 6.1.1 Update highlight in RELEASE.md with change in 6.1.1 template Change h1 in CHANGELOG.md to ROCm 6.1.1 changelog Change release notes to changelog in CHANGELOG.md Fix missing info in CHANGELOG.md pre-6.1.1 Add HIPIFY 6.1.1 to changelog Add HIPIFY to RELEASE.md Also fix typo in changelog Add HIPIFY to 6.1.1 template * Fix util imports * Skip and log missing branches for release_data.py * Update autotag readme * Remove ck template * Fix changelog and release notes Add \n to top of 6.0.2 template Update RELEASE.md and 6.1.1.md Regenerate changelog Add minor wording changes in RELEASE.md Incorporate Leo's feedback Reformat RELEASE.md to fix build issue Fixes an issue preventing Changelog from appearing in the TOC. Update AMDSMI link & change 'release highlights' to 'release notes' Change AMD SMI link from develop to docs/6.1.1 * Bump rocm-docs-core from 1.1.0 to 1.1.1 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 1.1.0 to 1.1.1. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v1.1.0...v1.1.1) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-patch ... * Update changelog and release notes for 6.1.1 Reformat 6.1.0 to 6.0.0 changelog Add ROCm SMI known issues to RN Tweak ROCm SMI wording Add known issue Reword known issue rn Fix headings and wording Remove redundancy Fix headings and known issue words Leo changes Remove known issue with Radeon GPUs Specify Navi3 GPUs in ROCM SMI known issue Change Navi 3x to RDNA3 Add OS support note Fix 6.1.1 template link to amdsmi Update 6.1.1 library table, add hipBLASLt to 6.1.1 CL/RN, update HIPCC upcoming changes wording Remove extra bullet Change gpu to GPU in rocFFT --------- Signed-off-by: dependabot[bot] Co-authored-by: Roopa Malavally <56051583+Rmalavally@users.noreply.github.com> Co-authored-by: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: peter Co-authored-by: amitkumar-amd <120512306+amitkumar-amd@users.noreply.github.com> Co-authored-by: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Co-authored-by: Yanyao Wang Co-authored-by: Wang, Yanyao Co-authored-by: abhimeda Co-authored-by: alexxu-amd Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> --- .azuredevops/README.md | 30 + .azuredevops/components/HIP.yml | 165 +++++ .azuredevops/components/HIPIFY.yml | 52 ++ .azuredevops/components/MIVisionX.yml | 38 + .azuredevops/components/ROCR-Runtime.yml | 62 ++ .../components/ROCT-Thunk-Interface.yml | 32 + .azuredevops/components/ROCdbgapi.yml | 38 + .../components/ROCmValidationSuite.yml | 47 ++ .azuredevops/components/amdsmi.yml | 34 + .azuredevops/components/copyHIP.yml | 32 + .azuredevops/components/half.yml | 41 ++ .azuredevops/components/hipBLAS.yml | 55 ++ .azuredevops/components/hipBLASLt.yml | 54 ++ .azuredevops/components/hipCUB.yml | 42 ++ .azuredevops/components/hipFFT.yml | 47 ++ .azuredevops/components/hipRAND.yml | 48 ++ .azuredevops/components/hipSOLVER.yml | 58 ++ .azuredevops/components/hipSPARSE.yml | 40 ++ .azuredevops/components/hipSPARSELt.yml | 55 ++ .azuredevops/components/llvm-project.yml | 112 +++ .azuredevops/components/rccl.yml | 38 + .azuredevops/components/rocALUTION.yml | 40 ++ .azuredevops/components/rocBLAS.yml | 56 ++ .azuredevops/components/rocDecode.yml | 47 ++ .azuredevops/components/rocFFT.yml | 48 ++ .azuredevops/components/rocPRIM.yml | 45 ++ .azuredevops/components/rocRAND.yml | 44 ++ .azuredevops/components/rocThrust.yml | 47 ++ .azuredevops/components/rocgdb.yml | 35 + .azuredevops/components/rocm-cmake.yml | 48 ++ .azuredevops/components/rocm-core.yml | 33 + .azuredevops/components/rocm-examples.yml | 24 + .../components/rocm_bandwidth_test.yml | 46 ++ .azuredevops/components/rocm_smi_lib.yml | 27 + .azuredevops/components/rocminfo.yml | 42 ++ .../components/rocprofiler-register.yml | 24 + .azuredevops/components/rocprofiler.yml | 58 ++ .azuredevops/components/rocr_debug_agent.yml | 42 ++ .azuredevops/components/roctracer.yml | 61 ++ .azuredevops/tag-builds/HIP.yml | 39 + .azuredevops/tag-builds/HIPIFY.yml | 29 + .azuredevops/tag-builds/MIVisionX.yml | 29 + .azuredevops/tag-builds/ROCR-Runtime.yml | 29 + .../tag-builds/ROCT-Thunk-Interface.yml | 29 + .azuredevops/tag-builds/ROCdbgapi.yml | 29 + .../tag-builds/ROCmValidationSuite.yml | 29 + .azuredevops/tag-builds/amdsmi.yml | 29 + .azuredevops/tag-builds/half.yml | 29 + .azuredevops/tag-builds/hipBLAS.yml | 29 + .azuredevops/tag-builds/hipBLASLt.yml | 29 + .azuredevops/tag-builds/hipCUB.yml | 29 + .azuredevops/tag-builds/hipFFT.yml | 29 + .azuredevops/tag-builds/hipRAND.yml | 29 + .azuredevops/tag-builds/hipSOLVER.yml | 29 + .azuredevops/tag-builds/hipSPARSE.yml | 29 + .azuredevops/tag-builds/hipSPARSELt.yml | 29 + .azuredevops/tag-builds/llvm-project.yml | 29 + .azuredevops/tag-builds/rccl.yml | 29 + .azuredevops/tag-builds/rocALUTION.yml | 29 + .azuredevops/tag-builds/rocBLAS.yml | 29 + .azuredevops/tag-builds/rocDecode.yml | 29 + .azuredevops/tag-builds/rocFFT.yml | 29 + .azuredevops/tag-builds/rocPRIM.yml | 29 + .azuredevops/tag-builds/rocRAND.yml | 29 + .azuredevops/tag-builds/rocThrust.yml | 29 + .azuredevops/tag-builds/rocgdb.yml | 29 + .azuredevops/tag-builds/rocm-cmake.yml | 29 + .azuredevops/tag-builds/rocm-core.yml | 29 + .../tag-builds/rocm_bandwidth_test.yml | 29 + .azuredevops/tag-builds/rocm_smi_lib.yml | 29 + .azuredevops/tag-builds/rocminfo.yml | 29 + .../tag-builds/rocprofiler-register.yml | 29 + .azuredevops/tag-builds/rocprofiler.yml | 29 + .azuredevops/tag-builds/rocr_debug_agent.yml | 29 + .azuredevops/tag-builds/roctracer.yml | 29 + .../templates/steps/artifact-download.yml | 39 + .../steps/artifact-prepare-package.yml | 25 + .../templates/steps/artifact-upload.yml | 33 + .../templates/steps/build-autotools.yml | 36 + .azuredevops/templates/steps/build-cmake.yml | 43 ++ .azuredevops/templates/steps/build-script.yml | 22 + .azuredevops/templates/steps/ccache.yml | 11 + .azuredevops/templates/steps/checkout.yml | 17 + .azuredevops/templates/steps/dependencies.yml | 38 + .azuredevops/templates/steps/preamble.yml | 27 + .azuredevops/templates/steps/test.yml | 36 + .azuredevops/variables-global.yml | 21 + .github/CODEOWNERS | 6 +- CHANGELOG.md | 680 ++++++++++-------- RELEASE.md | 300 +++----- docs/reference/gpu-arch-specs.rst | 3 +- docs/sphinx/_toc.yml.in | 2 +- docs/sphinx/requirements.in | 14 +- docs/sphinx/requirements.txt | 28 +- tools/autotag/README.md | 8 +- tools/autotag/templates/changelog.jinja | 2 +- tools/autotag/templates/rocm_changes/6.0.2.md | 3 +- tools/autotag/templates/rocm_changes/6.1.1.md | 67 ++ tools/autotag/util/__init__.py | 2 +- tools/autotag/util/release_data.py | 14 +- 100 files changed, 3888 insertions(+), 530 deletions(-) create mode 100644 .azuredevops/README.md create mode 100644 .azuredevops/components/HIP.yml create mode 100644 .azuredevops/components/HIPIFY.yml create mode 100644 .azuredevops/components/MIVisionX.yml create mode 100644 .azuredevops/components/ROCR-Runtime.yml create mode 100644 .azuredevops/components/ROCT-Thunk-Interface.yml create mode 100644 .azuredevops/components/ROCdbgapi.yml create mode 100644 .azuredevops/components/ROCmValidationSuite.yml create mode 100644 .azuredevops/components/amdsmi.yml create mode 100644 .azuredevops/components/copyHIP.yml create mode 100644 .azuredevops/components/half.yml create mode 100644 .azuredevops/components/hipBLAS.yml create mode 100644 .azuredevops/components/hipBLASLt.yml create mode 100644 .azuredevops/components/hipCUB.yml create mode 100644 .azuredevops/components/hipFFT.yml create mode 100644 .azuredevops/components/hipRAND.yml create mode 100644 .azuredevops/components/hipSOLVER.yml create mode 100644 .azuredevops/components/hipSPARSE.yml create mode 100644 .azuredevops/components/hipSPARSELt.yml create mode 100644 .azuredevops/components/llvm-project.yml create mode 100644 .azuredevops/components/rccl.yml create mode 100644 .azuredevops/components/rocALUTION.yml create mode 100644 .azuredevops/components/rocBLAS.yml create mode 100644 .azuredevops/components/rocDecode.yml create mode 100644 .azuredevops/components/rocFFT.yml create mode 100644 .azuredevops/components/rocPRIM.yml create mode 100644 .azuredevops/components/rocRAND.yml create mode 100644 .azuredevops/components/rocThrust.yml create mode 100644 .azuredevops/components/rocgdb.yml create mode 100644 .azuredevops/components/rocm-cmake.yml create mode 100644 .azuredevops/components/rocm-core.yml create mode 100644 .azuredevops/components/rocm-examples.yml create mode 100644 .azuredevops/components/rocm_bandwidth_test.yml create mode 100644 .azuredevops/components/rocm_smi_lib.yml create mode 100644 .azuredevops/components/rocminfo.yml create mode 100644 .azuredevops/components/rocprofiler-register.yml create mode 100644 .azuredevops/components/rocprofiler.yml create mode 100644 .azuredevops/components/rocr_debug_agent.yml create mode 100644 .azuredevops/components/roctracer.yml create mode 100644 .azuredevops/tag-builds/HIP.yml create mode 100644 .azuredevops/tag-builds/HIPIFY.yml create mode 100644 .azuredevops/tag-builds/MIVisionX.yml create mode 100644 .azuredevops/tag-builds/ROCR-Runtime.yml create mode 100644 .azuredevops/tag-builds/ROCT-Thunk-Interface.yml create mode 100644 .azuredevops/tag-builds/ROCdbgapi.yml create mode 100644 .azuredevops/tag-builds/ROCmValidationSuite.yml create mode 100644 .azuredevops/tag-builds/amdsmi.yml create mode 100644 .azuredevops/tag-builds/half.yml create mode 100644 .azuredevops/tag-builds/hipBLAS.yml create mode 100644 .azuredevops/tag-builds/hipBLASLt.yml create mode 100644 .azuredevops/tag-builds/hipCUB.yml create mode 100644 .azuredevops/tag-builds/hipFFT.yml create mode 100644 .azuredevops/tag-builds/hipRAND.yml create mode 100644 .azuredevops/tag-builds/hipSOLVER.yml create mode 100644 .azuredevops/tag-builds/hipSPARSE.yml create mode 100644 .azuredevops/tag-builds/hipSPARSELt.yml create mode 100644 .azuredevops/tag-builds/llvm-project.yml create mode 100644 .azuredevops/tag-builds/rccl.yml create mode 100644 .azuredevops/tag-builds/rocALUTION.yml create mode 100644 .azuredevops/tag-builds/rocBLAS.yml create mode 100644 .azuredevops/tag-builds/rocDecode.yml create mode 100644 .azuredevops/tag-builds/rocFFT.yml create mode 100644 .azuredevops/tag-builds/rocPRIM.yml create mode 100644 .azuredevops/tag-builds/rocRAND.yml create mode 100644 .azuredevops/tag-builds/rocThrust.yml create mode 100644 .azuredevops/tag-builds/rocgdb.yml create mode 100644 .azuredevops/tag-builds/rocm-cmake.yml create mode 100644 .azuredevops/tag-builds/rocm-core.yml create mode 100644 .azuredevops/tag-builds/rocm_bandwidth_test.yml create mode 100644 .azuredevops/tag-builds/rocm_smi_lib.yml create mode 100644 .azuredevops/tag-builds/rocminfo.yml create mode 100644 .azuredevops/tag-builds/rocprofiler-register.yml create mode 100644 .azuredevops/tag-builds/rocprofiler.yml create mode 100644 .azuredevops/tag-builds/rocr_debug_agent.yml create mode 100644 .azuredevops/tag-builds/roctracer.yml create mode 100644 .azuredevops/templates/steps/artifact-download.yml create mode 100644 .azuredevops/templates/steps/artifact-prepare-package.yml create mode 100644 .azuredevops/templates/steps/artifact-upload.yml create mode 100644 .azuredevops/templates/steps/build-autotools.yml create mode 100644 .azuredevops/templates/steps/build-cmake.yml create mode 100644 .azuredevops/templates/steps/build-script.yml create mode 100644 .azuredevops/templates/steps/ccache.yml create mode 100644 .azuredevops/templates/steps/checkout.yml create mode 100644 .azuredevops/templates/steps/dependencies.yml create mode 100644 .azuredevops/templates/steps/preamble.yml create mode 100644 .azuredevops/templates/steps/test.yml create mode 100644 .azuredevops/variables-global.yml create mode 100644 tools/autotag/templates/rocm_changes/6.1.1.md diff --git a/.azuredevops/README.md b/.azuredevops/README.md new file mode 100644 index 000000000..83808a55d --- /dev/null +++ b/.azuredevops/README.md @@ -0,0 +1,30 @@ +# ROCm-CI Azure DevOps Pipelines + +ROCm-CI Azure DevOps Pipelines contains markup language files that orchestrate build and test pipelines for ROCm components using [Azure DevOps](https://dev.azure.com/ROCm-CI/ROCm-CI/_build). + +## Project Organization + +- `/.azuredevops/variables-global.yml` - set of global variables accessible across any and all pipelines + - protected keywords such as tokens and passwords are kept as secrets within the Azure DevOps project +- `/.azuredevops/components` - the sequence of templated steps for the job that checks out source, builds, packages, and runs tests for a ROCm repo +- `/.azuredevops/scheduled` - the sequence of templated steps for jobs that are schedule-based and not tied to a specific ROCm repo +- `/.azuredevops/tag-builds` - yml files to orchestrate manual builds based on specific tags (e.g., releases) without needing the corresponding yaml file in the component's repo +- `/.azuredevops/templates` - reusable yml files representing the templated steps that form the sequences in the above directories + +### Per ROCm Repo + +- `/.azuredevops/rocm-ci.yml` - contains the CI and PR trigger definitions associated with that repo, pointing to the corresponding yml file in the components folder in this central repository + +## Key Azure Reference Links + +- [Pipeline Basics](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/key-pipelines-concepts?view=azure-devops) +- [Templates](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops&pivots=templates-includes) +- [Use Predefined Variables](https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml) +- [YAML schema](https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/?view=azure-pipelines&viewFallbackFrom=azure-devops) +- [Azure Pipelines Task Index](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/?view=azure-pipelines) + +## Disclaimer + +The information presented in this document is for informational purposes only and may contain technical inaccuracies, omissions, and typographical errors. The information contained herein is subject to change and may be rendered inaccurate for many reasons, including but not limited to product and roadmap changes, component and motherboard versionchanges, new model and/or product releases, product differences between differing manufacturers, software changes, BIOS flashes, firmware upgrades, or the like. Any computer system has risks of security vulnerabilities that cannot be completely prevented or mitigated.AMD assumes no obligation to update or otherwise correct or revise this information. However, AMD reserves the right to revise this information and to make changes from time to time to the content hereof without obligation of AMD to notify any person of such revisions or changes.THIS INFORMATION IS PROVIDED ‘AS IS.” AMD MAKES NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE CONTENTS HEREOF AND ASSUMES NO RESPONSIBILITY FOR ANY INACCURACIES, ERRORS, OR OMISSIONS THAT MAY APPEAR IN THIS INFORMATION. AMD SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT WILL AMD BE LIABLE TO ANY PERSON FOR ANY RELIANCE, DIRECT, INDIRECT, SPECIAL, OR OTHER CONSEQUENTIAL DAMAGES ARISING FROM THE USE OF ANY INFORMATION CONTAINED HEREIN, EVEN IF AMD IS EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. AMD, the AMD Arrow logo, and combinations thereof are trademarks of Advanced Micro Devices, Inc. Other product names used in this publication are for identification purposes only and may be trademarks of their respective companies. + +© 2024 Advanced Micro Devices, Inc. All Rights Reserved. diff --git a/.azuredevops/components/HIP.yml b/.azuredevops/components/HIP.yml new file mode 100644 index 000000000..5d78f0144 --- /dev/null +++ b/.azuredevops/components/HIP.yml @@ -0,0 +1,165 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libnuma-dev + - mesa-common-dev +- name: pipModules + type: object + default: + - CppHeaderParser + +# hip and clr are tightly-coupled +# run this same template for both repos +# any changes for clr should just trigger HIP pipeline +# similarly for hipother repo, for Nvidia backend + +# HIP with AMD backend +jobs: +- job: hip_clr_combined_amd + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} +# checkout triggering repo (either HIP or clr) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# if this is triggered by HIP repo, matching repo is clr +# if this is triggered by clr repo, matching repo is HIP + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: matching_repo +# download tasks has built in 4x retry download count +# these will download last passing build for that branch +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + branchName: master + pipelineId: $(roct-thunk-interface-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + branchName: master + pipelineId: $(rocr-runtime-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocprofiler-register + branchName: amd-mainline + pipelineId: $(rocprofiler-register-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + pipelineId: $(roct-thunk-interface-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + pipelineId: $(rocr-runtime-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocprofiler-register + pipelineId: $(rocprofiler-register-tagged-pipeline-id) + - script: 'ls -1R $(Agent.BuildDirectory)/rocm' + displayName: 'Artifact listing' +# compile clr + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: clr + cmakeBuildDir: 'clr/build' + extraBuildFlags: >- + -DHIP_COMMON_DIR="$(Build.SourcesDirectory)/HIP" + -DHIP_PLATFORM=amd + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + -DROCM_PATH="$(Agent.BuildDirectory)/rocm" + -DHIPCC_BIN_DIR="$(Agent.BuildDirectory)/rocm/bin" + -DCLR_BUILD_HIP=ON + -DCLR_BUILD_OCL=ON + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + artifactName: amd + +# HIP with Nvidia backend +- job: hip_clr_combined_nvidia + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} +# checkout triggering repo (either HIP or clr) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# if this is triggered by HIP repo, matching repo is clr +# if this is triggered by clr repo, matching repo is HIP + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: matching_repo + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: hipother_repo +# download tasks has built in 4x retry download count +# these will download last passing build for that branch +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - script: 'ls -1R $(Agent.BuildDirectory)/rocm' + displayName: 'Artifact listing' +# compile clr + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: clr + cmakeBuildDir: 'clr/build' + extraBuildFlags: >- + -DHIP_COMMON_DIR="$(Build.SourcesDirectory)/HIP" + -DHIP_PLATFORM=nvidia + -DHIPCC_BIN_DIR="$(Agent.BuildDirectory)/rocm/bin" + -DCLR_BUILD_HIP=ON + -DCLR_BUILD_OCL=OFF + -DHIPNV_DIR="$(Build.SourcesDirectory)/hipother/hipnv" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + artifactName: nvidia diff --git a/.azuredevops/components/HIPIFY.yml b/.azuredevops/components/HIPIFY.yml new file mode 100644 index 000000000..16ae0ff41 --- /dev/null +++ b/.azuredevops/components/HIPIFY.yml @@ -0,0 +1,52 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libnuma-dev + +jobs: +- job: HIPIFY + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: \tag-builds\llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm" + -DROCM_PATH="$(Agent.BuildDirectory)/rocm" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/MIVisionX.yml b/.azuredevops/components/MIVisionX.yml new file mode 100644 index 000000000..cbcd92562 --- /dev/null +++ b/.azuredevops/components/MIVisionX.yml @@ -0,0 +1,38 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + +jobs: +- job: MIVisionX + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - task: Bash@3 + displayName: 'Dependency Setup' + inputs: + targetType: inline + script: 'python3 MIVisionX-setup.py' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCR-Runtime.yml b/.azuredevops/components/ROCR-Runtime.yml new file mode 100644 index 000000000..4e388407f --- /dev/null +++ b/.azuredevops/components/ROCR-Runtime.yml @@ -0,0 +1,62 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libelf-dev + - g++ + - libdrm-dev + - libnuma-dev + +jobs: +- job: ROCR_Runtime + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + branchName: master + pipelineId: $(roct-thunk-interface-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + pipelineId: $(roct-thunk-interface-tagged-pipeline-id) + - script: 'ls -1R $(Agent.BuildDirectory)/rocm' + displayName: 'Artifact listing' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + cmakeBuildDir: 'src/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCT-Thunk-Interface.yml b/.azuredevops/components/ROCT-Thunk-Interface.yml new file mode 100644 index 000000000..c3d51f2e7 --- /dev/null +++ b/.azuredevops/components/ROCT-Thunk-Interface.yml @@ -0,0 +1,32 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libnuma-dev + - libdrm-dev + +jobs: +- job: ROCT_Thunk_Interface + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCdbgapi.yml b/.azuredevops/components/ROCdbgapi.yml new file mode 100644 index 000000000..dd930c7c3 --- /dev/null +++ b/.azuredevops/components/ROCdbgapi.yml @@ -0,0 +1,38 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + +jobs: +- job: ROCdbgapi + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCmValidationSuite.yml b/.azuredevops/components/ROCmValidationSuite.yml new file mode 100644 index 000000000..3c7f26ab9 --- /dev/null +++ b/.azuredevops/components/ROCmValidationSuite.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocblas + - libyaml-cpp-dev + - libpci-dev + - libpci3 + - googletest + - git + +jobs: +- job: ROCmValidationSuite + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DROCM_PATH=/opt/rocm + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCPACK_PACKAGING_INSTALL_PREFIX='$(Build.BinariesDirectory)' + -DAMDGPU_TARGETS=gfx1100 + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/amdsmi.yml b/.azuredevops/components/amdsmi.yml new file mode 100644 index 000000000..c8b7ee794 --- /dev/null +++ b/.azuredevops/components/amdsmi.yml @@ -0,0 +1,34 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libdrm-dev + +jobs: +- job: amdsmi + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DBUILD_TESTS=ON + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/copyHIP.yml b/.azuredevops/components/copyHIP.yml new file mode 100644 index 000000000..a5c0ab8ba --- /dev/null +++ b/.azuredevops/components/copyHIP.yml @@ -0,0 +1,32 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +# hip and clr are tightly-coupled +# run this same template for both repos +# any changes for clr should just trigger HIP pipeline +jobs: +- job: hip_clr_combined + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: +# checkout nothing, just copy artifacts from triggering HIP job +# and then publish for this clr job or for this hipother job to maintain latest + - checkout: none + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: HIP + branchName: develop + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml + parameters: + sourceDir: $(Agent.BuildDirectory)/rocm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/half.yml b/.azuredevops/components/half.yml new file mode 100644 index 000000000..1496d21ce --- /dev/null +++ b/.azuredevops/components/half.yml @@ -0,0 +1,41 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + +jobs: +- job: half + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_BUILD_TYPE=Release + -DBUILD_CLIENTS=ON + -L + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipBLAS.yml b/.azuredevops/components/hipBLAS.yml new file mode 100644 index 000000000..12e349ef8 --- /dev/null +++ b/.azuredevops/components/hipBLAS.yml @@ -0,0 +1,55 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocblas + - rocsparse + - rocsolver + - gfortran + - libopenblas-dev + - git + +jobs: +- job: hipBLAS + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# build external gtest and lapack + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: external + cmakeBuildDir: 'deps/build' + installDir: '$(Pipeline.Workspace)/deps-install' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake + -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DHIP_PLATFORM=amd + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipBLASLt.yml b/.azuredevops/components/hipBLASLt.yml new file mode 100644 index 000000000..b03da47bf --- /dev/null +++ b/.azuredevops/components/hipBLASLt.yml @@ -0,0 +1,54 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - python3-venv + - libmsgpack-dev + - hipblas-dev + - git +- name: pipModules + type: object + default: + - joblib + +jobs: +- job: hipBLASLt + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx90a + -DTensile_LOGIC= + -DTensile_CPU_THREADS= + -DTensile_CODE_OBJECT_VERSION=default + -DTensile_LIBRARY_FORMAT=msgpack + -DCMAKE_PREFIX_PATH="/opt/rocm" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipCUB.yml b/.azuredevops/components/hipCUB.yml new file mode 100644 index 000000000..921db9fe3 --- /dev/null +++ b/.azuredevops/components/hipCUB.yml @@ -0,0 +1,42 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - rocprim + - googletest + - git + +jobs: +- job: hipCUB + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_PREFIX_PATH="/opt/rocm" + -DBUILD_TEST=ON + -DAMDGPU_TARGETS=gfx1100 + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipFFT.yml b/.azuredevops/components/hipFFT.yml new file mode 100644 index 000000000..f20dfc304 --- /dev/null +++ b/.azuredevops/components/hipFFT.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocrand + - hiprand + - rocfft + - libboost-program-options-dev + - googletest + - libfftw3-dev + +jobs: +- job: hipFFT + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_BUILD_TYPE=Release + -DBUILD_CLIENTS=ON + -L + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipRAND.yml b/.azuredevops/components/hipRAND.yml new file mode 100644 index 000000000..ef61cb5e8 --- /dev/null +++ b/.azuredevops/components/hipRAND.yml @@ -0,0 +1,48 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - googletest + - git + - rocrand + +jobs: +- job: hipRAND + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DBUILD_TEST=ON + -DCMAKE_MODULE_PATH="/opt/rocm/lib/cmake/hip" + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_BUILD_TYPE=Release + -DAMDGPU_TARGETS=gfx1100 + -DHIP_COMPILER=clang + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipSOLVER.yml b/.azuredevops/components/hipSOLVER.yml new file mode 100644 index 000000000..b1913188d --- /dev/null +++ b/.azuredevops/components/hipSOLVER.yml @@ -0,0 +1,58 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocblas + - rocsparse + - hipsparse + - rocsolver + - libsuitesparse-dev + - gfortran + - git + +jobs: +- job: hipSOLVER + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# build external gtest and lapack + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: external + cmakeBuildDir: 'deps/build' + installDir: '$(Pipeline.Workspace)/deps-install' + extraBuildFlags: -DBUILD_BOOST=OFF + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DBUILD_CLIENTS_TESTS=ON + -DUSE_CUDA=OFF + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipSPARSE.yml b/.azuredevops/components/hipSPARSE.yml new file mode 100644 index 000000000..8f8d24bb6 --- /dev/null +++ b/.azuredevops/components/hipSPARSE.yml @@ -0,0 +1,40 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libboost-program-options-dev + - googletest + - libfftw3-dev + - rocsparse + - git + +jobs: +- job: hipSPARSE + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-script.yml + parameters: + scriptExecutable: sudo ./install.sh + scriptParameters: -c -i -d diff --git a/.azuredevops/components/hipSPARSELt.yml b/.azuredevops/components/hipSPARSELt.yml new file mode 100644 index 000000000..cfdc736c6 --- /dev/null +++ b/.azuredevops/components/hipSPARSELt.yml @@ -0,0 +1,55 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - python3-venv + - libmsgpack-dev + - hipsparse-dev + - git +- name: pipModules + type: object + default: + - joblib + +jobs: +- job: hipSPARSELt + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=all + -DTensile_LOGIC= + -DTensile_CPU_THREADS= + -DTensile_CODE_OBJECT_VERSION=default + -DTensile_LIBRARY_FORMAT=msgpack + -DCMAKE_PREFIX_PATH="/opt/rocm" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/llvm-project.yml b/.azuredevops/components/llvm-project.yml new file mode 100644 index 000000000..c9cf8d294 --- /dev/null +++ b/.azuredevops/components/llvm-project.yml @@ -0,0 +1,112 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - python3-pip + - libnuma-dev + - ninja-build + - ccache + +jobs: +- job: llvm_project + variables: + - group: common + - template: /.azuredevops/variables-global.yml + - name: HIP_DEVICE_LIB_PATH + value: '$(Build.BinariesDirectory)/amdgcn/bitcode' + pool: ${{ variables.CLOUD_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocm-cmake + branchName: develop + pipelineId: $(rocm-cmake-pipeline-id) + testFailuresOkay: true +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocm-cmake + pipelineId: $(rocm-cmake-tagged-pipeline-id) + testFailuresOkay: true + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: rocm-llvm + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Build.BinariesDirectory)/llvm;$(Build.BinariesDirectory)" + -DCMAKE_BUILD_TYPE=Release + -DLLVM_ENABLE_PROJECTS="llvm;clang;lld;clang-tools-extra" + -DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind" + -DCLANG_ENABLE_AMDCLANG="ON" + -DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" + -GNinja + cmakeBuildDir: 'llvm/build' + installDir: '$(Build.BinariesDirectory)/llvm' +# use llvm-lit to run unit tests for llvm, clang, and lld + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: check-llvm + testDir: 'llvm/build' + testExecutable: './bin/llvm-lit' + testParameters: '-q --xunit-xml-output=llvm_test_output.xml ./test' + testOutputFile: llvm_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: check-clang + testDir: 'llvm/build' + testExecutable: './bin/llvm-lit' + testParameters: '-q --xunit-xml-output=clang_test_output.xml ./tools/clang/test' + testOutputFile: clang_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: check-lld + testDir: 'llvm/build' + testExecutable: './bin/llvm-lit' + testParameters: '-q --xunit-xml-output=lld_test_output.xml ./tools/lld/test' + testOutputFile: lld_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: device-libs + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Build.SourcesDirectory)/llvm/build" + -DCMAKE_BUILD_TYPE=Release + cmakeBuildDir: 'amd/device-libs/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: comgr + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Build.SourcesDirectory)/llvm/build;$(Build.SourcesDirectory)/amd/device-libs/build" + -DCMAKE_BUILD_TYPE=Release + cmakeBuildDir: 'amd/comgr/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: comgr + testParameters: '--output-on-failure --force-new-ctest-process --output-junit comgr_test_output.xml' + testDir: 'amd/comgr/build' + testOutputFile: comgr_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: hipcc + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DHIPCC_BACKWARD_COMPATIBILITY=OFF + cmakeBuildDir: 'amd/hipcc/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rccl.yml b/.azuredevops/components/rccl.yml new file mode 100644 index 000000000..9d30ea5bc --- /dev/null +++ b/.azuredevops/components/rccl.yml @@ -0,0 +1,38 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libboost-program-options-dev + - googletest + - libfftw3-dev + - git + +jobs: +- job: rccl + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-script.yml + parameters: + scriptExecutable: ./install.sh + scriptParameters: -d -t diff --git a/.azuredevops/components/rocALUTION.yml b/.azuredevops/components/rocALUTION.yml new file mode 100644 index 000000000..aff32eae4 --- /dev/null +++ b/.azuredevops/components/rocALUTION.yml @@ -0,0 +1,40 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libboost-program-options-dev + - libgtest-dev + - libfftw3-dev + - git + - mpich + +jobs: +- job: rocALUTION + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-script.yml + parameters: + scriptExecutable: ./install.sh + scriptParameters: -i -c -d diff --git a/.azuredevops/components/rocBLAS.yml b/.azuredevops/components/rocBLAS.yml new file mode 100644 index 000000000..7caf96ab0 --- /dev/null +++ b/.azuredevops/components/rocBLAS.yml @@ -0,0 +1,56 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - python3-venv + - git + - libmsgpack-dev +- name: pipModules + type: object + default: + - joblib + +jobs: +- job: rocBLAS + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DTensile_CODE_OBJECT_VERSION=default + -DTensile_LOGIC=asm_full + -DTensile_SEPARATE_ARCHITECTURES=ON + -DTensile_LAZY_LIBRARY_LOADING=ON + -DTensile_LIBRARY_FORMAT=msgpack + -DTENSILE_VENV_UPGRADE_PIP=ON + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocDecode.yml b/.azuredevops/components/rocDecode.yml new file mode 100644 index 000000000..10ff7a881 --- /dev/null +++ b/.azuredevops/components/rocDecode.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - pkg-config + - ffmpeg + - libavcodec-dev + - libavformat-dev + - libavutil-dev + - libstdc++-12-dev + - mesa-amdgpu-multimedia-devel + +jobs: +- job: rocDecode + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DBUILD_CLIENTS=ON + -L + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocFFT.yml b/.azuredevops/components/rocFFT.yml new file mode 100644 index 000000000..b32ae8791 --- /dev/null +++ b/.azuredevops/components/rocFFT.yml @@ -0,0 +1,48 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocrand + - hiprand + - libboost-program-options-dev + - libgtest-dev + - libfftw3-dev + +jobs: +- job: rocFFT + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_BUILD_TYPE=Release + -DAMDGPU_TARGETS=gfx1100 + -DUSE_HIP_CLANG=ON + -DHIP_COMPILER=clang + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocPRIM.yml b/.azuredevops/components/rocPRIM.yml new file mode 100644 index 000000000..2ea019ae3 --- /dev/null +++ b/.azuredevops/components/rocPRIM.yml @@ -0,0 +1,45 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libgtest-dev + - git + +jobs: +- job: rocPRIM + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# ${{ }} are resolved during compile-time +# so this next step is skipped completely until +# we define explicit aptPackages needed to install + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DBUILD_BENCHMARK=ON + -DCMAKE_CXX_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocRAND.yml b/.azuredevops/components/rocRAND.yml new file mode 100644 index 000000000..10abb2780 --- /dev/null +++ b/.azuredevops/components/rocRAND.yml @@ -0,0 +1,44 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - googletest + - git + +jobs: +- job: rocRAND + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="/opt/rocm" + -DBUILD_TEST=ON + -DCMAKE_CXX_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DAMDGPU_TEST_TARGETS=gfx1100 + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocThrust.yml b/.azuredevops/components/rocThrust.yml new file mode 100644 index 000000000..cdfa229d4 --- /dev/null +++ b/.azuredevops/components/rocThrust.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - hiprand + - rocprim-dev + - libboost-program-options-dev + - googletest + - libfftw3-dev + - git + +jobs: +- job: rocThrust + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -GNinja + -DCMAKE_CXX_COMPILER=hipcc + -DROCM_PATH=/opt/rocm + -DCMAKE_PREFIX_PATH=/opt/rocm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + diff --git a/.azuredevops/components/rocgdb.yml b/.azuredevops/components/rocgdb.yml new file mode 100644 index 000000000..185190d06 --- /dev/null +++ b/.azuredevops/components/rocgdb.yml @@ -0,0 +1,35 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libgmp-dev + - libmpfr-dev + - texinfo + - bison + - flex + +jobs: +- job: rocgdb + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-autotools.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm-cmake.yml b/.azuredevops/components/rocm-cmake.yml new file mode 100644 index 000000000..94d6e85dd --- /dev/null +++ b/.azuredevops/components/rocm-cmake.yml @@ -0,0 +1,48 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - doxygen + - doxygen-doc + - ninja-build + - python3-sphinx +- name: pipModules + type: object + default: + - cget + - ninja + +jobs: +- job: rocm_cmake + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml +# extra steps for ctest suite + - script: | + python -m pip install -r $(Build.SourcesDirectory)/docs/requirements.txt + python -m pip install -r $(Build.SourcesDirectory)/test/docsphinx/docs/.sphinx/requirements.txt + git config --global user.email "you@example.com" + git config --global user.name "Your Name" + displayName: "ctest setup" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm-core.yml b/.azuredevops/components/rocm-core.yml new file mode 100644 index 000000000..d78f26ce2 --- /dev/null +++ b/.azuredevops/components/rocm-core.yml @@ -0,0 +1,33 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocm_core + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CURRENT_BINARY_DIR=$PWD + -DCMAKE_CURRENT_SOURCE_DIR=$PWD/../ + -DCMAKE_VERBOSE_MAKEFILE=1 + -DCPACK_GENERATOR=DEB + -DCPACK_DEBIAN_PACKAGE_RELEASE="local.9999~99.99" + -DCPACK_RPM_PACKAGE_RELEASE="local.9999" + -DROCM_VERSION="$(last-release)" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm-examples.yml b/.azuredevops/components/rocm-examples.yml new file mode 100644 index 000000000..37cfafe56 --- /dev/null +++ b/.azuredevops/components/rocm-examples.yml @@ -0,0 +1,24 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocm_examples + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm_bandwidth_test.yml b/.azuredevops/components/rocm_bandwidth_test.yml new file mode 100644 index 000000000..79f27dfa9 --- /dev/null +++ b/.azuredevops/components/rocm_bandwidth_test.yml @@ -0,0 +1,46 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build +- name: pipModules + type: object + default: + - CppHeaderParser + - argparse + +jobs: +- job: rocm_bandwidth_test + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=release + -DCMAKE_MODULE_PATH="$(Build.SourcesDirectory)/cmake_modules" + -DCMAKE_PREFIX_PATH=/opt/rocm + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm_smi_lib.yml b/.azuredevops/components/rocm_smi_lib.yml new file mode 100644 index 000000000..d5b1b1cd1 --- /dev/null +++ b/.azuredevops/components/rocm_smi_lib.yml @@ -0,0 +1,27 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocm_smi_lib + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DBUILD_TESTS=ON + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocminfo.yml b/.azuredevops/components/rocminfo.yml new file mode 100644 index 000000000..b9ec4c1ec --- /dev/null +++ b/.azuredevops/components/rocminfo.yml @@ -0,0 +1,42 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocminfo + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + branchName: master + pipelineId: $(rocr-runtime-pipeline-id) + testFailuresOkay: true +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + pipelineId: $(rocr-runtime-tagged-pipeline-id) + testFailuresOkay: true + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocprofiler-register.yml b/.azuredevops/components/rocprofiler-register.yml new file mode 100644 index 000000000..3f5e5c15e --- /dev/null +++ b/.azuredevops/components/rocprofiler-register.yml @@ -0,0 +1,24 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocprofiler_register + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocprofiler.yml b/.azuredevops/components/rocprofiler.yml new file mode 100644 index 000000000..81060fc66 --- /dev/null +++ b/.azuredevops/components/rocprofiler.yml @@ -0,0 +1,58 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libgtest-dev + - libdw-dev + - libsystemd-dev + - libelf-dev + - libnuma-dev + - libpciaccess-dev + - rocm-llvm-dev +- name: pipModules + type: object + default: + - pyyaml==5.3.1 + - Cppheaderparser + - websockets + - matplotlib + - lxml + - barectf + - pandas + +jobs: +- job: rocprofiler + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_MODULE_PATH="$(Build.SourcesDirectory)/cmake_modules;/opt/rocm/lib/cmake" + -DCMAKE_PREFIX_PATH="/opt/rocm" + -DENABLE_LDCONFIG=OFF + -DUSE_PROF_API=1 + -DGPU_TARGETS="gfx1100" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocr_debug_agent.yml b/.azuredevops/components/rocr_debug_agent.yml new file mode 100644 index 000000000..0c7056866 --- /dev/null +++ b/.azuredevops/components/rocr_debug_agent.yml @@ -0,0 +1,42 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libelf-dev + - libdw-dev + +jobs: +- job: rocr_debug_agent + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DROCM_PATH=/opt/rocm + -DCMAKE_MODULE_PATH=/opt/rocm/lib/cmake + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/roctracer.yml b/.azuredevops/components/roctracer.yml new file mode 100644 index 000000000..a7380f509 --- /dev/null +++ b/.azuredevops/components/roctracer.yml @@ -0,0 +1,61 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build +- name: pipModules + type: object + default: + - CppHeaderParser + - argparse + +jobs: +- job: roctracer + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=release + -DCMAKE_MODULE_PATH="$(Agent.BuildDirectory)/rocm/lib/cmake" + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm" + -DENABLE_LDCONFIG=OFF + -DGPU_TARGETS="gfx1100" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/tag-builds/HIP.yml b/.azuredevops/tag-builds/HIP.yml new file mode 100644 index 000000000..0592d4b88 --- /dev/null +++ b/.azuredevops/tag-builds/HIP.yml @@ -0,0 +1,39 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/HIP + ref: ${{ parameters.checkoutRef }} + - repository: matching_repo + type: github + endpoint: ROCm + name: ROCm/clr + ref: ${{ parameters.checkoutRef }} + - repository: hipother_repo + type: github + endpoint: ROCm + name: ROCm/hipother + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/HIP.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/HIPIFY.yml b/.azuredevops/tag-builds/HIPIFY.yml new file mode 100644 index 000000000..93973bd7a --- /dev/null +++ b/.azuredevops/tag-builds/HIPIFY.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/HIPIFY + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/HIPIFY.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/MIVisionX.yml b/.azuredevops/tag-builds/MIVisionX.yml new file mode 100644 index 000000000..3b43fa232 --- /dev/null +++ b/.azuredevops/tag-builds/MIVisionX.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/MIVisionX + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/MIVisionX.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCR-Runtime.yml b/.azuredevops/tag-builds/ROCR-Runtime.yml new file mode 100644 index 000000000..e9b2fe8fd --- /dev/null +++ b/.azuredevops/tag-builds/ROCR-Runtime.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/ROCR-Runtime + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCR-Runtime.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml b/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml new file mode 100644 index 000000000..b06da04c3 --- /dev/null +++ b/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/ROCT-Thunk-Interface + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCT-Thunk-Interface.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCdbgapi.yml b/.azuredevops/tag-builds/ROCdbgapi.yml new file mode 100644 index 000000000..bf1e0715d --- /dev/null +++ b/.azuredevops/tag-builds/ROCdbgapi.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/ROCdbgapi + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCdbgapi.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCmValidationSuite.yml b/.azuredevops/tag-builds/ROCmValidationSuite.yml new file mode 100644 index 000000000..a3eb0f974 --- /dev/null +++ b/.azuredevops/tag-builds/ROCmValidationSuite.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/ROCmValidationSuite + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCmValidationSuite.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/amdsmi.yml b/.azuredevops/tag-builds/amdsmi.yml new file mode 100644 index 000000000..9eae30bb2 --- /dev/null +++ b/.azuredevops/tag-builds/amdsmi.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/amdsmi + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/amdsmi.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/half.yml b/.azuredevops/tag-builds/half.yml new file mode 100644 index 000000000..f1dcde928 --- /dev/null +++ b/.azuredevops/tag-builds/half.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/half + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/half.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipBLAS.yml b/.azuredevops/tag-builds/hipBLAS.yml new file mode 100644 index 000000000..e98b6584f --- /dev/null +++ b/.azuredevops/tag-builds/hipBLAS.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipBLAS + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipBLAS.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipBLASLt.yml b/.azuredevops/tag-builds/hipBLASLt.yml new file mode 100644 index 000000000..cf2414301 --- /dev/null +++ b/.azuredevops/tag-builds/hipBLASLt.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipBLASLt + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipBLASLt.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipCUB.yml b/.azuredevops/tag-builds/hipCUB.yml new file mode 100644 index 000000000..ddf467006 --- /dev/null +++ b/.azuredevops/tag-builds/hipCUB.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipCUB + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipCUB.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipFFT.yml b/.azuredevops/tag-builds/hipFFT.yml new file mode 100644 index 000000000..6245c1384 --- /dev/null +++ b/.azuredevops/tag-builds/hipFFT.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipFFT + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipFFT.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipRAND.yml b/.azuredevops/tag-builds/hipRAND.yml new file mode 100644 index 000000000..5515494ad --- /dev/null +++ b/.azuredevops/tag-builds/hipRAND.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipRAND + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipRAND.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSOLVER.yml b/.azuredevops/tag-builds/hipSOLVER.yml new file mode 100644 index 000000000..5f1d85d18 --- /dev/null +++ b/.azuredevops/tag-builds/hipSOLVER.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipSOLVER + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSOLVER.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSPARSE.yml b/.azuredevops/tag-builds/hipSPARSE.yml new file mode 100644 index 000000000..00eb03439 --- /dev/null +++ b/.azuredevops/tag-builds/hipSPARSE.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipSPARSE + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSPARSE.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSPARSELt.yml b/.azuredevops/tag-builds/hipSPARSELt.yml new file mode 100644 index 000000000..70dfd285d --- /dev/null +++ b/.azuredevops/tag-builds/hipSPARSELt.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipSPARSELt + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSPARSELt.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/llvm-project.yml b/.azuredevops/tag-builds/llvm-project.yml new file mode 100644 index 000000000..9ebeaf78f --- /dev/null +++ b/.azuredevops/tag-builds/llvm-project.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/llvm-project + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/llvm-project.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rccl.yml b/.azuredevops/tag-builds/rccl.yml new file mode 100644 index 000000000..e5a8a8c76 --- /dev/null +++ b/.azuredevops/tag-builds/rccl.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rccl + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rccl.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocALUTION.yml b/.azuredevops/tag-builds/rocALUTION.yml new file mode 100644 index 000000000..1bef693a3 --- /dev/null +++ b/.azuredevops/tag-builds/rocALUTION.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocALUTION + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocALUTION.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocBLAS.yml b/.azuredevops/tag-builds/rocBLAS.yml new file mode 100644 index 000000000..4f65183d8 --- /dev/null +++ b/.azuredevops/tag-builds/rocBLAS.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocBLAS + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocBLAS.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocDecode.yml b/.azuredevops/tag-builds/rocDecode.yml new file mode 100644 index 000000000..01bcca5d6 --- /dev/null +++ b/.azuredevops/tag-builds/rocDecode.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocDecode + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocDecode.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocFFT.yml b/.azuredevops/tag-builds/rocFFT.yml new file mode 100644 index 000000000..d572418a1 --- /dev/null +++ b/.azuredevops/tag-builds/rocFFT.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocFFT + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocFFT.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocPRIM.yml b/.azuredevops/tag-builds/rocPRIM.yml new file mode 100644 index 000000000..2498b4052 --- /dev/null +++ b/.azuredevops/tag-builds/rocPRIM.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocPRIM + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocPRIM.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocRAND.yml b/.azuredevops/tag-builds/rocRAND.yml new file mode 100644 index 000000000..9980d2827 --- /dev/null +++ b/.azuredevops/tag-builds/rocRAND.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocRAND + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocRAND.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocThrust.yml b/.azuredevops/tag-builds/rocThrust.yml new file mode 100644 index 000000000..0ffea0d14 --- /dev/null +++ b/.azuredevops/tag-builds/rocThrust.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocThrust + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocThrust.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocgdb.yml b/.azuredevops/tag-builds/rocgdb.yml new file mode 100644 index 000000000..0b420e7f8 --- /dev/null +++ b/.azuredevops/tag-builds/rocgdb.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocgdb + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocgdb.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm-cmake.yml b/.azuredevops/tag-builds/rocm-cmake.yml new file mode 100644 index 000000000..1ef560b1b --- /dev/null +++ b/.azuredevops/tag-builds/rocm-cmake.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocm-cmake + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-cmake.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm-core.yml b/.azuredevops/tag-builds/rocm-core.yml new file mode 100644 index 000000000..f6631f6e4 --- /dev/null +++ b/.azuredevops/tag-builds/rocm-core.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocm-core + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-core.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm_bandwidth_test.yml b/.azuredevops/tag-builds/rocm_bandwidth_test.yml new file mode 100644 index 000000000..bf15ad830 --- /dev/null +++ b/.azuredevops/tag-builds/rocm_bandwidth_test.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocm_bandwidth_test + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm_bandwidth_test.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm_smi_lib.yml b/.azuredevops/tag-builds/rocm_smi_lib.yml new file mode 100644 index 000000000..110141f06 --- /dev/null +++ b/.azuredevops/tag-builds/rocm_smi_lib.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocm_smi_lib + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm_smi_lib.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocminfo.yml b/.azuredevops/tag-builds/rocminfo.yml new file mode 100644 index 000000000..ea19e8576 --- /dev/null +++ b/.azuredevops/tag-builds/rocminfo.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocminfo + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocminfo.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocprofiler-register.yml b/.azuredevops/tag-builds/rocprofiler-register.yml new file mode 100644 index 000000000..3d6d4f827 --- /dev/null +++ b/.azuredevops/tag-builds/rocprofiler-register.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocprofiler-register + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler-register.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocprofiler.yml b/.azuredevops/tag-builds/rocprofiler.yml new file mode 100644 index 000000000..708f362af --- /dev/null +++ b/.azuredevops/tag-builds/rocprofiler.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocprofiler + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocr_debug_agent.yml b/.azuredevops/tag-builds/rocr_debug_agent.yml new file mode 100644 index 000000000..b92fb012e --- /dev/null +++ b/.azuredevops/tag-builds/rocr_debug_agent.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocr_debug_agent + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocr_debug_agent.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/roctracer.yml b/.azuredevops/tag-builds/roctracer.yml new file mode 100644 index 000000000..782e5eafc --- /dev/null +++ b/.azuredevops/tag-builds/roctracer.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/roctracer + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/roctracer.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml new file mode 100644 index 000000000..f5f36ed32 --- /dev/null +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -0,0 +1,39 @@ +parameters: +# assumption componentName and pipeline name the same +- name: componentName + type: string + default: '' +- name: pipelineId + type: string + default: '' +- name: branchName + type: string + default: '$(Build.SourceBranchName)' # for tagged builds +- name: testFailuresOkay + type: boolean + default: false + +steps: +- task: DownloadPipelineArtifact@2 + displayName: Download ${{ parameters.componentName }} + inputs: + buildType: 'specific' + project: ROCm-CI + pipeline: ${{ parameters.pipelineId }} + specificBuildWithTriggering: true + allowPartiallySucceededBuilds: ${{ parameters.testFailuresOkay }} + branchName: ${{ parameters.branchName }} + targetPath: '$(System.ArtifactsDirectory)' +- task: ExtractFiles@1 + displayName: Extract ${{ parameters.componentName }} + inputs: + archiveFilePatterns: '$(System.ArtifactsDirectory)/**/*.tar.gz' + destinationFolder: '$(Agent.BuildDirectory)/rocm' + cleanDestinationFolder: false + overwriteExistingFiles: true +- task: DeleteFiles@1 + displayName: Cleanup Compressed ${{ parameters.componentName }} + inputs: + SourceFolder: '$(System.ArtifactsDirectory)' + Contents: '/**/*.tar.gz' + RemoveDotFiles: true diff --git a/.azuredevops/templates/steps/artifact-prepare-package.yml b/.azuredevops/templates/steps/artifact-prepare-package.yml new file mode 100644 index 000000000..4dccc38bb --- /dev/null +++ b/.azuredevops/templates/steps/artifact-prepare-package.yml @@ -0,0 +1,25 @@ +# optional step if not using cmake --install +# prepare the next package to upload +parameters: +- name: sourceDir # REQUIRED PARAMETER + type: string + default: '' +- name: contentsString + type: string + default: '**' +- name: targetDir + type: string + default: '$(Build.BinariesDirectory)' +- name: clean + type: boolean + default: true + +steps: +- task: CopyFiles@2 + displayName: 'Prepare for packaging' + inputs: + CleanTargetFolder: ${{ parameters.clean }} + SourceFolder: '${{ parameters.sourceDir }}' + Contents: '${{ parameters.contentsString }}' + TargetFolder: '${{ parameters.targetDir }}' + retryCount: 3 diff --git a/.azuredevops/templates/steps/artifact-upload.yml b/.azuredevops/templates/steps/artifact-upload.yml new file mode 100644 index 000000000..43adf2f4b --- /dev/null +++ b/.azuredevops/templates/steps/artifact-upload.yml @@ -0,0 +1,33 @@ +# compress build products into tarball +# delete build products after compression +# publish can be toggled off for jobs that produce multiple tarballs +# for those cases, only publish the last call which puts all the tarballs in one container folder +parameters: +- name: artifactName + type: string + default: 'drop' +- name: publish + type: boolean + default: true + +steps: +- task: ArchiveFiles@2 + displayName: '${{ parameters.artifactName }} Compress' + inputs: + includeRootFolder: false + archiveType: 'tar' + tarCompression: 'gz' + archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.DefinitionName)_$(Build.SourceBranchName)_$(Build.BuildId)_$(Build.BuildNumber)_ubuntu2204_${{ parameters.artifactName }}.tar.gz' +- task: DeleteFiles@1 + displayName: 'Cleanup Staging Area' + inputs: + SourceFolder: '$(Build.BinariesDirectory)' + Contents: '/**/*' + RemoveDotFiles: true +# then publish it +- ${{ if parameters.publish }}: + - task: PublishPipelineArtifact@1 + displayName: '${{ parameters.artifactName }} Publish' + retryCountOnTaskFailure: 3 + inputs: + targetPath: '$(Build.ArtifactStagingDirectory)' diff --git a/.azuredevops/templates/steps/build-autotools.yml b/.azuredevops/templates/steps/build-autotools.yml new file mode 100644 index 000000000..b207b3d43 --- /dev/null +++ b/.azuredevops/templates/steps/build-autotools.yml @@ -0,0 +1,36 @@ +parameters: +- name: componentName + type: string + default: '' +- name: configureFlags + type: string + default: '' +- name: buildDir + type: string + default: '$(Build.SourcesDirectory)' +- name: installDir + type: string + default: '$(Build.BinariesDirectory)' + +steps: +- task: Bash@3 + displayName: '${{ parameters.componentName }} configure flags' + continueOnError: true + inputs: + targetType: inline + script: ./configure --prefix=${{ parameters.installDir }} ${{ parameters.configureFlags }} + workingDirectory: ${{ parameters.buildDir }} +- task: Bash@3 + displayName: '${{ parameters.componentName }} make' + continueOnError: true + inputs: + targetType: inline + script: make -j$(nproc) + workingDirectory: ${{ parameters.buildDir }} +- task: Bash@3 + displayName: '${{ parameters.componentName }} make install' + continueOnError: true + inputs: + targetType: inline + script: make install + workingDirectory: ${{ parameters.buildDir }} diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml new file mode 100644 index 000000000..ffaa77c0e --- /dev/null +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -0,0 +1,43 @@ +parameters: +- name: componentName + type: string + default: '' +- name: extraBuildFlags + type: string + default: '' +- name: cmakeBuildDir + type: string + default: 'build' +- name: cmakeTarget + type: string + default: 'install' +- name: cmakeTargetDir + type: string + default: '.' +- name: installDir + type: string + default: '$(Build.BinariesDirectory)' + +steps: +# create workingDirectory if it does not exist and change into it +# call cmake from within that directory using $cmakeArgs as its parameters +- task: CMake@1 + displayName: '${{parameters.componentName }} CMake Flags' + inputs: + workingDirectory: ${{ parameters.cmakeBuildDir }} + cmakeArgs: -DCMAKE_INSTALL_PREFIX=${{ parameters.installDir }} ${{ parameters.extraBuildFlags }} .. +# equivalent to running make $cmakeTargetDir from $cmakeBuildDir +# i.e., cd $cmakeBuildDir; make $cmakeTargetDir +- task: CMake@1 + displayName: '${{parameters.componentName }} Build' + inputs: + workingDirectory: ${{ parameters.cmakeBuildDir }} + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }}' + retryCountOnTaskFailure: 10 +# equivalent to running make $cmakeTarget from $cmakeBuildDir +# e.g., make install +- task: CMake@1 + displayName: '${{parameters.componentName }} Install' + inputs: + workingDirectory: ${{ parameters.cmakeBuildDir }} + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} --target ${{ parameters.cmakeTarget }}' diff --git a/.azuredevops/templates/steps/build-script.yml b/.azuredevops/templates/steps/build-script.yml new file mode 100644 index 000000000..61782acf6 --- /dev/null +++ b/.azuredevops/templates/steps/build-script.yml @@ -0,0 +1,22 @@ +parameters: +- name: componentName + type: string + default: '' +- name: scriptDir + type: string + default: '.' +- name: scriptExecutable + type: string + default: './install.sh' +- name: scriptParameters + type: string + default: '' + +steps: +- task: Bash@3 + displayName: '${{ parameters.componentName }} Building via script' + continueOnError: true + inputs: + targetType: inline + script: ${{ parameters.scriptExecutable }} ${{ parameters.scriptParameters }} + workingDirectory: ${{ parameters.scriptDir }} diff --git a/.azuredevops/templates/steps/ccache.yml b/.azuredevops/templates/steps/ccache.yml new file mode 100644 index 000000000..324054e3d --- /dev/null +++ b/.azuredevops/templates/steps/ccache.yml @@ -0,0 +1,11 @@ +# to use ccache, run this template step before build-cmake.yml +# and add this cmake flag to extraBuildFlags +# -DCMAKE_CXX_COMPILER_LAUNCHER=ccache +steps: +- task: Cache@2 + displayName: Ccache caching + inputs: + key: 'ccache | "$(Agent.OS)" | $(Build.SourceVersion)' + path: $(CCACHE_DIR) + restoreKeys: | + ccache | "$(Agent.OS)" diff --git a/.azuredevops/templates/steps/checkout.yml b/.azuredevops/templates/steps/checkout.yml new file mode 100644 index 000000000..b73d83ffa --- /dev/null +++ b/.azuredevops/templates/steps/checkout.yml @@ -0,0 +1,17 @@ +parameters: +# name of the repo to checkout +# for most cases, leave as default 'self' +- name: checkoutRepo + type: string + default: 'self' +# submodule download behaviour +# change to 'recursive' for repos with submodules +- name: submoduleBehaviour + type: string + default: 'true' + +steps: + - checkout: ${{ parameters.checkoutRepo }} + clean: true + submodules: ${{ parameters.submoduleBehaviour }} + retryCountOnTaskFailure: 3 diff --git a/.azuredevops/templates/steps/dependencies.yml b/.azuredevops/templates/steps/dependencies.yml new file mode 100644 index 000000000..73f226d64 --- /dev/null +++ b/.azuredevops/templates/steps/dependencies.yml @@ -0,0 +1,38 @@ +parameters: +# space-delimited list of packages to install via apt-get install command +# TODO convert to string array and split with spaces +- name: aptPackages + type: object + default: [] +- name: pipModules + type: object + default: [] + +steps: +- task: Bash@3 + displayName: 'sudo apt-get update' + inputs: + targetType: inline + script: sudo apt-get update +- task: Bash@3 + displayName: 'sudo apt-get upgrade' + inputs: + targetType: inline + script: sudo apt-get update +- task: Bash@3 + displayName: 'sudo apt-get fix' + inputs: + targetType: inline + script: sudo apt --yes --fix-broken install +- ${{ if gt(length(parameters.aptPackages), 0) }}: + - task: Bash@3 + displayName: 'sudo apt-get install ...' + inputs: + targetType: inline + script: sudo apt-get --yes install ${{ join(' ', parameters.aptPackages) }} +- ${{ if gt(length(parameters.pipModules), 0) }}: + - task: Bash@3 + displayName: 'pip install ...' + inputs: + targetType: inline + script: pip install ${{ join(' ', parameters.pipModules) }} diff --git a/.azuredevops/templates/steps/preamble.yml b/.azuredevops/templates/steps/preamble.yml new file mode 100644 index 000000000..9f76ff19b --- /dev/null +++ b/.azuredevops/templates/steps/preamble.yml @@ -0,0 +1,27 @@ +# build artifacts not automatically cleaned up +# force cleanup, always +# also display installed components and packages +steps: +- task: Bash@3 + displayName: 'apt installed list' + inputs: + targetType: inline + script: apt list --installed +- task: Bash@3 + displayName: 'python version' + inputs: + targetType: inline + script: python3 --version +- script: pip list + displayName: 'list python packages' +- task: DeleteFiles@1 + displayName: 'Cleanup checkout space' + inputs: + SourceFolder: '$(Agent.BuildDirectory)/s' + Contents: '**/*' +- task: DeleteFiles@1 + displayName: 'Cleanup Staging Area' + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)' + Contents: '/**/*' + RemoveDotFiles: true diff --git a/.azuredevops/templates/steps/test.yml b/.azuredevops/templates/steps/test.yml new file mode 100644 index 000000000..14142b569 --- /dev/null +++ b/.azuredevops/templates/steps/test.yml @@ -0,0 +1,36 @@ +parameters: +- name: componentName + type: string + default: '' +- name: testDir + type: string + default: 'build' +- name: testExecutable + type: string + default: 'ctest' +- name: testParameters + type: string + default: '--output-on-failure --force-new-ctest-process --output-junit test_output.xml' +- name: testOutputFile + type: string + default: test_output.xml +- name: testOutputFormat + type: string + default: 'junit' + +steps: +# run test, continue on failure to publish results +# and to publish build artifacts +- task: Bash@3 + displayName: '${{ parameters.componentName }} Test' + continueOnError: true + inputs: + targetType: inline + script: ${{ parameters.testExecutable }} ${{ parameters.testParameters }} + workingDirectory: ${{ parameters.testDir }} +- task: PublishTestResults@2 + displayName: '${{ parameters.componentName }} Publish Results' + inputs: + testResultsFormat: ${{ parameters.testOutputFormat }} + testResultsFiles: '**/${{ parameters.testOutputFile }}' + condition: succeededOrFailed() diff --git a/.azuredevops/variables-global.yml b/.azuredevops/variables-global.yml new file mode 100644 index 000000000..508b9f0a0 --- /dev/null +++ b/.azuredevops/variables-global.yml @@ -0,0 +1,21 @@ +# specify non-secret global variables reused across pipelines here + +variables: +- name: CI_ROOT_PATH + value: /.azuredevops +- name: CI_COMPONENT_PATH + value: ${{ variables.CI_ROOT_PATH }}/components +- name: CI_TEMPLATE_PATH + value: ${{ variables.CI_ROOT_PATH }}/templates +- name: LOW_END_BUILD_POOL + value: ubuntu-22.04 +- name: HIGH_END_BUILD_POOL + value: rocm-ci_build_pool +- name: CLOUD_BUILD_POOL + value: rocm-ci_cloud_build_pool +- name: LATEST_RELEASE_TAG + value: rocm-6.1.0 +- name: DOCKER_IMAGE_NAME + value: rocm/dev-ubuntu-22.04 +- name: LATEST_DOCKER_VERSION + value: 6.1 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5d678c763..1954c6d0f 100755 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1,5 @@ * @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation # Documentation files -docs/* @ROCm/rocm-documentation -*.md @ROCm/rocm-documentation -*.rst @ROCm/rocm-documentation +docs/* @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation +*.md @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation +*.rst @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d51867d6..5f7995dea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,149 @@ This page contains the changelog for AMD ROCm Software. ------------------- +## ROCm 6.1.1 + +ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and libraries. + +### OS support + +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). + +### AMD SMI + +AMD SMI for ROCm 6.1.1 + +#### Additions + +* Added deferred error correctable counts to `amd-smi metric -ecc -ecc-blocks`. + +#### Changes + +* Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks. +* Updated the output of `amd-smi metric --clock` to reflect each engine. +* Updated the output of `amd-smi topology --json` to align with output reported by host and guest systems. + +#### Fixes + +* Fixed `amd-smi metric --clock`'s clock lock status and deep sleep status. +* Fixed an issue that would cause an error when attempting to reset non-AMD GPUs. +* Fixed `amd-smi metric --pcie` and `amdsmi_get_pcie_info()` when using RDNA3 (Navi 32 and Navi 31) hardware to prevent "UNKNOWN" reports. +* Fixed the output results of `amd-smi process` when getting processes running on a device. + +##### Removals + +* Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release. + +##### Known issues + +* `amd-smi bad-pages` can result in a `ValueError: Null pointer access` error when using certain PMU firmware versions. + +```{note} +See the [detailed changelog](https://github.com/ROCm/amdsmi/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` + +#### HIPCC + +HIPCC for ROCm 6.1.1 + +##### Changes + +* **Upcoming:** a future release will enable use of compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users; you may continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`. +* **Upcoming:** a subsequent release will remove high-level Perl scripts `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly. +* **Upcoming:** a subsequent release will remove `hipcc.pl` and `hipconfig.pl`. + +### HIPIFY + +HIPIFY for ROCm 6.1.1 + +#### Additions + +* Added support for LLVM 18.1.2. +* Added support for cuDNN 9.0.0. +* Added a new option: `--clang-resource-directory` to specify the clang resource path (the path to the parent folder for the `include` folder that contains `__clang_cuda_runtime_wrapper.h` and other header files used during the hipification process). + +### ROCm SMI + +ROCm SMI for ROCm 6.1.1 + +##### Known issues + +* ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. + +### Library changes in ROCm 6.1.1 + +| Library | Version | +|---------|---------| +| AMDMIGraphX | [2.9](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.1.1) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-6.1.1) | +| hipBLAS | [2.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.1.1) | +| hipBLASLt | [0.7.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.1.1) | +| hipCUB | [3.1.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.1.1) | +| hipFFT | [1.0.14](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.1.1) | +| hipRAND | [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.1.1) | +| hipSOLVER | 2.1.0 ⇒ [2.1.1](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.1.1) | +| hipSPARSE | [3.0.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.1.1) | +| hipSPARSELt | [0.2.0](https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.1.1) | +| hipTensor | [1.2.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.1.1) | +| MIOpen | [3.1.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.1.1) | +| MIVisionX | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.1.1) | +| rccl | [2.18.6](https://github.com/ROCm/rccl/releases/tag/rocm-6.1.1) | +| rocALUTION | [3.1.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.1.1) | +| rocBLAS | [4.1.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.1.1) | +| rocDecode | [0.5.0](https://github.com/ROCm/rocDecode/releases/tag/rocm-6.1.1) | +| rocFFT | 1.0.26 ⇒ [1.0.27](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.1.1) | +| rocm-cmake | [0.12.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.1.1) | +| rocPRIM | [3.1.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.1.1) | +| rocRAND | [3.0.1](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.1.1) | +| rocSOLVER | [3.25.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.1.1) | +| rocSPARSE | [3.1.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.1.1) | +| rocThrust | [3.0.1](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.1.1) | +| rocWMMA | [1.4.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.1.1) | +| rpp | [1.5.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.1.1) | +| Tensile | [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.1) | + +#### hipBLASLt 0.7.0 + +hipBLASLt 0.7.0 for ROCm 6.1.1 + +##### Additions + +- Added `hipblasltExtSoftmax` extension API. +- Added `hipblasltExtLayerNorm` extension API. +- Added `hipblasltExtAMax` extension API. +- Added `GemmTuning` extension parameter to set split-k by user. +- Added support for mixed precision datatype: fp16/fp8 in with fp16 outk. + +##### Deprecations + +- **Upcoming**: `algoGetHeuristic()` ext API for GroupGemm will be deprecated in a future release of hipBLASLt. + +#### hipSOLVER 2.1.1 + +hipSOLVER 2.1.1 for ROCm 6.1.1 + +##### Changes + +- `BUILD_WITH_SPARSE` now defaults to OFF on Windows. + +##### Fixes + +- Fixed benchmark client build when `BUILD_WITH_SPARSE` is OFF. + +#### rocFFT 1.0.27 + +rocFFT 1.0.27 for ROCm 6.1.1 + +##### Additions + +* Enable multi-GPU testing on systems without direct GPU-interconnects. + +##### Fixes + +* Fixed kernel launch failure on execute of very large odd-length real-complex transforms. + +------------------- + ## ROCm 6.1.0 The ROCm™ 6.1 release consists of new features and fixes to improve the stability and @@ -27,7 +170,7 @@ performance of AMD Instinct™ MI300 GPU applications. Notably, we've added: YUV frames in video memory. With decoded frames in video memory, you can run video post-processing using ROCm HIP, avoiding unnecessary data copies via the PCIe bus. - To learn more, refer to the rocDecode + To learn more, refer to the rocDecode [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). ### OS and GPU support changes @@ -60,11 +203,11 @@ environments where legacy `DT_RPATH` is the preferred form of linking (instead o do **not** recommend trying to install both sets of packages. ``` -#### AMD SMI +### AMD SMI AMD SMI for ROCm 6.1.0 -##### Additions +#### Additions * **Added Monitor command**. This provides users the ability to customize GPU metrics to capture, collect, and observe. Output is provided in a table view. This aligns closer to ROCm SMI `rocm-smi` @@ -98,14 +241,14 @@ AMD SMI for ROCm 6.1.0 * **Added units of measure to JSON output.**. We added unit of measure to JSON/CSV `amd-smi metric`, `amd-smi static`, and `amd-smi monitor` commands. -##### Changes +#### Changes * **Topology is now left-aligned with BDF for each device listed individual table's row/columns**. We provided each device's BDF for every table's row/columns, then left-aligned data. We want AMD SMI Tool output to be easy to understand and digest. Having to scroll up to find this information made it difficult to follow, especially for devices that have many devices associated with one ASIC. -##### Fixes +#### Fixes * **Fix for RDNA3/RDNA2/MI100 'amdsmi_get_gpu_pci_bandwidth()' in 'frequencies_read' tests**. For devices that do not report (e.g., RDNA3/RDNA2/MI100), we have added checks to confirm that @@ -125,18 +268,18 @@ AMD SMI for ROCm 6.1.0 same mutex handler for devices as ROCm SMI. This helps avoid crashes when DRM/device data are inaccessible to the logged-in user. -##### Known issues +#### Known issues * There is an `AttributeError` while running `amd-smi process --csv` * GPU reset results in an "*Unable to reset non-amd GPU*" error * bad pages results with "ValueError: NULL pointer access" * Some RDNA3 cards may enumerate to `Slot type = UNKNOWN` -#### HIP +### HIP HIP 6.1 for ROCm 6.1 -##### Additions +#### Additions * New environment variable, `HIP_LAUNCH_BLOCKING`, which is used for serialization on kernel execution. @@ -147,12 +290,12 @@ HIP 6.1 for ROCm 6.1 `math_functions`, `hip_math_constants`, `channel_descriptor`, `device_functions`, `hip_complex`, `surface_types`, `texture_types` -##### Changes +#### Changes * HIPRTC now assumes WGP mode for gfx10+. You can enable CU mode by passing `-mcumode` to the compile options from `hiprtcCompileProgram`. -##### Fixes +#### Fixes * HIP complex vector type multiplication and division operations. On an AMD platform, some duplicated complex operators are removed to avoid compilation failures. @@ -168,11 +311,30 @@ HIP 6.1 for ROCm 6.1 Note that these complex operations are equivalent to corresponding types/functions on an NVIDIA platform. -#### ROCm Compiler +### HIPIFY + +HIPIFY for ROCm 6.1.0 + +#### Additions + +* CUDA 12.3.2 support +* cuDNN 8.9.7 support +* LLVM 17.0.6 support +* Full `hipSOLVER` support +* Full `rocSPARSE` support +* New option: `--amap`, which will hipify as much as possible, ignoring `--default-preprocessor` + behavior + +#### Fixes + +* Code blocks skipped by the preprocessor are no longer hipified under the `--default-preprocessor` + option + +### ROCm Compiler ROCm Compiler for ROCm 6.1.0 -##### Additions +#### Additions * Compiler now generates `.uniform_work_group_size` and records it in the metadata. It indicates if the kernel requires that each dimension of global size is a multiple of the corresponding dimension of @@ -184,16 +346,11 @@ ROCm Compiler for ROCm 6.1.0 * Added support for C++ Parallel Algorithm Offload via HIP (HIPSTDPAR), which allows parallel algorithms to run on the GPU. -##### Changes +#### Changes * `rocm-clang-ocl` is now an optional package and will require manual installation. -##### Deprecations - -* hipCC adds `-mllvm`, `-amdgpu-early-inline-all=true`, and `-mllvm` `-amdgpu-function-calls=false` by - default to compiler invocations. These flags will be removed from hipCC in a future ROCm release. - -##### Fixes +#### Fixes AddressSanitizer (ASan): * Added `sanitized_padded_global` LLVM ir attribute to identify sanitizer instrumented globals. @@ -202,38 +359,43 @@ AddressSanitizer (ASan): [On GitHub](https://github.com/ROCm/ROCm/issues/2551) -##### Known issues +#### Deprecations + +* hipCC adds `-mllvm`, `-amdgpu-early-inline-all=true`, and `-mllvm` `-amdgpu-function-calls=false` by + default to compiler invocations. These flags will be removed from hipCC in a future ROCm release. + +#### Known issues * Due to an issue within the `amd-llvm` compiler shipping with ROCm 6.1, HIPSTDPAR's interposition mode, which is enabled by `--hipstdpar-interpose-alloc` is currently broken. The temporary workaround is to use the upstream LLVM 18 (or newer) compiler. This issue will be addressed in a future ROCm release ." -#### ROCm Data Center (RDC) +### ROCm Data Center (RDC) RDC for ROCm 6.1.0 -##### Changes +#### Changes * Added `--address` flag to rdcd * Upgraded from C++11 to C++17 * Upgraded gRPC -#### ROCDebugger (ROCgdb) +### ROCDebugger (ROCgdb) ROCgdb for ROCm 6.1.0 -##### Fixes +#### Fixes Previously, ROCDebugger encountered hangs and crashes when stepping over the `s_endpgm` instruction at the end of a HIP kernel entry function, which caused the stepped wave to exit. This issue is fixed in the ROCm 6.1 release. You can now step over the last instruction of any HIP kernel without debugger hangs or crashes. -#### ROCm SMI +### ROCm SMI ROCm SMI for ROCm 6.1.0 -##### Additions +#### Additions * **Added support to set max/min clock level for sclk ('RSMI_CLK_TYPE_SYS') or mclk ('RSMI_CLK_TYPE_MEM')**. You can now set a maximum or minimum `sclk` or `mclk` value through the @@ -244,7 +406,7 @@ ROCm SMI for ROCm 6.1.0 (`rsmi_dev_target_graphics_version_get()`) to retreive the target graphics version for a GPU device. Currently, this output is not supplied through our ROCm SMI CLI. -##### Changes +#### Changes * **Removed non-unified API headers: Individual GPU metric APIs are no longer supported**. The individual metric APIs (`rsmi_dev_metrics_*`) were removed in order to keep updates easier for @@ -258,7 +420,7 @@ ROCm SMI for ROCm 6.1.0 outlined in the change for 6.0.0 (*Added a generic power API: rsmi_dev_power_get*), is now deprecated. You must update your ROCm SMI API calls accordingly. -##### Fixes +#### Fixes * Fixed `--showpids` reporting `[PID] [PROCESS NAME] 1 UNKNOWN UNKNOWN UNKNOWN`. Output was failing because `cu_occupancy debugfs` method is not provided on some graphics cards @@ -281,41 +443,39 @@ ROCm SMI for ROCm 6.1.0 * Fixed `rocm-smi --showclkvolt` and `rocm-smi --showvc`, which were displaying 0 for overdrive and that the voltage curve is not supported. -#### ROCProfiler +### ROCProfiler ROCProfiler for ROCm 6.1.0 -##### Fixes +#### Fixes * Fixed ROCprofiler to match versioning changes in HIP Runtime * Fixed plugins race condition * Updated metrics to MI300 -#### ROCm Validation Suite +### ROCm Validation Suite -##### Known issue +#### Known issue * In a future release, the ROCm Validation Suite P2P Benchmark and Qualification Tool (PBQT) tests will be optimized to meet the target bandwidth requirements for MI300X. [On GitHub](https://github.com/ROCm/ROCm/issues/3027) -#### MI200 SR-IOV +### MI200 SR-IOV -##### Known issue +#### Known issue -* Multimedia applications may encounter compilation errors in the MI200 Single Root Input/Output Virtualization (SR-IOV) environment. This is because MI200 SR-IOV does not currently support multimedia applications. +* Multimedia applications may encounter compilation errors in the MI200 Single Root Input/Output Virtualization (SR-IOV) environment. This is because MI200 SR-IOV does not currently support multimedia applications. [On GitHub](https://github.com/ROCm/ROCm/issues/3028) ### AMD MI300A RAS -#### Fixed defect +#### Fixes -##### GFX correctable and uncorrectable error inject failures +* GFX correctable and uncorrectable error inject failures. Previously, the AMD CPU Reliability, Availability, and Serviceability (RAS) installation encountered correctable and uncorrectable failures while injecting an error. -* Previously, the AMD CPU Reliability, Availability, and Serviceability (RAS) installation encountered correctable and uncorrectable failures while injecting an error. - - This issue is resolved in the ROCm 6.1 release, and users will no longer encounter the GFX correctable error (CE) and uncorrectable error (UE) failures. +This issue is resolved in the ROCm 6.1 release, and users will no longer encounter the GFX correctable error (CE) and uncorrectable error (UE) failures. ### Library changes in ROCm 6.1.0 @@ -396,6 +556,12 @@ MIGraphX 2.9 for ROCm 6.1.0 * Added support for uneven Split operations * Improved unit testing to run in python virtual environments +##### Changes + +* Cleanup LSTM and RNN activation functions +* Placed gemm_pointwise at a higher priority than layernorm_pointwise +* Updated README to mention the need to include GPU_TARGETS when building MIGraphX + ##### Fixes * Fixed outstanding issues in autogenerated documentation @@ -409,12 +575,6 @@ MIGraphX 2.9 for ROCm 6.1.0 * Fixed wrong size check when axes not present for slice * Set the .SO version correctly -##### Changes - -* Cleanup LSTM and RNN activation functions -* Placed gemm_pointwise at a higher priority than layernorm_pointwise -* Updated README to mention the need to include GPU_TARGETS when building MIGraphX - ##### Removals * Removed unused device kernels from Gather and Pad operators @@ -431,10 +591,6 @@ hipBLAS 2.1.0 for ROCm 6.1.0 suffix) with int64_t function arguments * New functions hipblasGetMathMode and hipblasSetMathMode -##### Deprecations - -* USE_CUDA build option; use HIP_PLATFORM=amd or HIP_PLATFORM=nvidia to override hipconfig - ##### Changes * Some Level 2 function argument names have changed from `m` to `n` to match legacy BLAS; there @@ -443,6 +599,10 @@ hipBLAS 2.1.0 for ROCm 6.1.0 * Renamed `.doxygen` and `.sphinx` folders to `doxygen` and `sphinx`, respectively * Added CMake support for documentation +##### Deprecations + +* USE_CUDA build option; use HIP_PLATFORM=amd or HIP_PLATFORM=nvidia to override hipconfig + #### hipBLASLt 0.7.0 hipBLASLt 0.7.0 for ROCm 6.1.0 @@ -459,20 +619,20 @@ hipBLASLt 0.7.0 for ROCm 6.1.0 hipCUB 3.1.0 for ROCm 6.1.0 -##### Changed +##### Additions + +- Added interface `DeviceMemcpy::Batched` for batched memcpy from rocPRIM and CUB. + +##### Changes - CUB backend references CUB and Thrust version 2.1.0. - Updated `HIPCUB_HOST_WARP_THREADS` macro definition to match `host_warp_size` changes from rocPRIM 3.0. - Implemented `__int128_t` and `__uint128_t` support for radix_sort. -##### Fixed +##### Fixes - Fixed build issues with `rmake.py` on Windows when using VS 2017 15.8 or later due to a breaking fix with extended aligned storage. -##### Added - -- Added interface `DeviceMemcpy::Batched` for batched memcpy from rocPRIM and CUB. - #### hipFFT 1.0.14 hipFFT 1.0.14 for ROCm 6.1.0 @@ -489,7 +649,7 @@ hipFFT 1.0.14 for ROCm 6.1.0 hipSOLVER 2.1.0 for ROCm 6.1.0 -##### Added +##### Additions - Added compatibility API with hipsolverSp prefix - Added compatibility-only functions @@ -500,11 +660,11 @@ hipSOLVER 2.1.0 for ROCm 6.1.0 functionality for the hipsolverSp API (on by default). - Added hipSPARSE as an optional dependency to hipsolver-test. Use the `BUILD_WITH_SPARSE` CMake option to enable tests of the hipsolverSp API (on by default). -##### Changed +##### Changes - Relax array length requirements for GESVDA. -##### Fixed +##### Fixes - Fixed incorrect singular vectors returned from GESVDA. @@ -520,7 +680,7 @@ hipSPARSE 3.0.1 for ROCm 6.1.0 hipSPARSELt 0.2.0 for ROCm 6.1.0 -##### Added +##### Additions - Support Matrix B is a Structured Sparsity Matrix. @@ -543,7 +703,7 @@ hipTensor 1.2.0 for ROCm 6.1.0 MIOpen 3.1.0 for ROCm 6.1.0 -##### Added +##### Additions - CK-based 2d/3d convolution solvers to support nchw/ncdhw layout - Fused solver for Fwd Convolution with Residual, Bias and activation @@ -553,18 +713,18 @@ MIOpen 3.1.0 for ROCm 6.1.0 - Integrate CK's layer norm - Combine gtests into single binary -##### Fixed +##### Changes + +- Standardize workspace abstraction +- Use split CK libraries + +##### Fixes - fix for backward passes bwd/wrw for CK group conv 3d - Fixed out-of-bounds memory access : ConvOclDirectFwdGen - fixed build failure due to hipRTC -##### Changed - -- Standardize workspace abstraction -- Use split CK libraries - -##### Removed +##### Removals - clamping to MAX from CastTensor used in Bwd and WrW convolution @@ -572,7 +732,7 @@ MIOpen 3.1.0 for ROCm 6.1.0 RCCL 2.18.6 for ROCm 6.1.0 -##### Changed +##### Changes - Compatibility with NCCL 2.18.6 @@ -634,7 +794,7 @@ rocDecode 0.5.0 for ROCm 6.1.0 * Minor bug fix and updates -##### Tested Configurations +###### Tested Configurations * Linux distribution * Ubuntu - `20.04` / `22.04` @@ -659,7 +819,7 @@ rocFFT 1.0.26 for ROCm 6.1.0 rocm-cmake 0.12.0 for ROCm 6.1.0 -##### Changed +##### Changes - ROCMSphinxDoc: Allow separate source and config directories. - ROCMCreatePackage: Allow additional `PROVIDES` on header-only packages. @@ -667,7 +827,7 @@ rocm-cmake 0.12.0 for ROCm 6.1.0 - ROCMTest: Add RPATH for installed tests. - Finalize rename to ROCmCMakeBuildTools -##### Fixed +##### Fixes - ROCMClangTidy: Fixed invalid list index. - Test failures when ROCM_CMAKE_GENERATOR is empty. @@ -696,16 +856,16 @@ rocPRIM 3.1.0 for ROCm 6.1.0 * Added support for `__int128_t` in `device_radix_sort` and `block_radix_sort` * Improved the performance of `match_any`, and `block_histogram` which uses it -##### Deprecations - -* Removed `reduce_by_key_config`, `MatchAny`, `scan_config`, `scan_by_key_config`, and - `radix_sort_config` - ##### Fixes * Build issues with `rmake.py` on Windows when using VS 2017 15.8 or later (due to a breaking fix with extended aligned storage) +##### Deprecations + +* Removed `reduce_by_key_config`, `MatchAny`, `scan_config`, `scan_by_key_config`, and + `radix_sort_config` + #### rocRAND 3.0.1 rocRAND 3.0.1 for ROCm 6.1.0 @@ -731,15 +891,15 @@ rocSOLVER 3.25.0 for ROCm 6.1.0 - Relaxed array length requirements for GESVDX with `rocblas_srange_index`. -##### Removed - -- Removed gfx803 and gfx900 from default build targets. - ##### Fixed - Corrected singular vector normalization in BDSVDX and GESVDX - Fixed potential memory access fault in STEIN, SYEVX/HEEVX, SYGVX/HEGVX, BDSVDX and GESVDX +##### Removals + +- Removed gfx803 and gfx900 from default build targets. + #### rocSPARSE 3.1.2 rocSPARSE 3.1.2 for ROCm 6.1.0 @@ -792,7 +952,7 @@ rpp for ROCm 6.1.0 * Prerequisites -##### Tested Configurations +###### Tested Configurations * Linux distribution * Ubuntu - `20.04` / `22.04` @@ -851,7 +1011,8 @@ Tensile 4.40.0 for ROCm 6.1.0 ------------------- ## ROCm 6.0.2 -The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. + +The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. #### hipFFT 1.0.13 @@ -895,23 +1056,18 @@ hipFFT 1.0.13 for ROCm 6.0.2 rocRAND 3.0.0 for ROCm 6.0.2 -##### Changed +##### Optimizations + +- Improved MT19937 initialization and generation performance. + +##### Changes - Generator classes from `rocrand.hpp` are no longer copyable, in previous versions these copies would copy internal references to the generators and would lead to double free or memory leak errors. These types should be moved instead of copied, and move constructors and operators are now defined for them. -##### Optimized - -- Improved MT19937 initialization and generation performance. - -##### Removed - -- Removed hipRAND submodule from rocRAND. hipRAND is now only available as a separate package. -- Removed references to and workarounds for deprecated hcc - -##### Fixed +##### Fixes - `mt19937_engine` from `rocrand.hpp` is now move-constructible and move-assignable. Previously the move constructor and move assignment operator was deleted for this class. @@ -922,6 +1078,11 @@ move constructor and move assignment operator was deleted for this class. - fixed the default ordering parameter for `lfsr113` - Build error when using clang++ directly due to unsupported references to amdgpu-target +##### Removals + +- Removed hipRAND submodule from rocRAND. hipRAND is now only available as a separate package. +- Removed references to and workarounds for deprecated hcc + ------------------- ## ROCm 6.0.0 @@ -1019,6 +1180,7 @@ final release for gfx906 GPUs in a fully supported state. | Library | Version | |---------|---------| | AMDMIGraphX | ⇒ [2.8](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.0.0) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-6.0.0) | | HIP | [6.0.0](https://github.com/ROCm/HIP/releases/tag/rocm-6.0.0) | | hipBLAS | ⇒ [2.0.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.0.0) | | hipCUB | ⇒ [3.0.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.0.0) | @@ -1247,6 +1409,11 @@ hipCUB 3.0.0 for ROCm 6.0.0 hipFFT 1.0.13 for ROCm 6.0.0 +##### Additions + +* `hipfftXtSetGPUs`, `hipfftXtMalloc, hipfftXtMemcpy`, `hipfftXtFree`, and `hipfftXtExecDescriptor` APIs + have been implemented to allow FFT computing on multiple devices in a single process + ##### Changes * `hipfft-rider` has been renamed to `hipfft-bench`; it is controlled by the `BUILD_CLIENTS_BENCH` @@ -1255,11 +1422,6 @@ hipFFT 1.0.13 for ROCm 6.0.0 * Binaries in debug builds no longer have a `-d` suffix * The minimum rocFFT required version has been updated to 1.0.21 -##### Additions - -* `hipfftXtSetGPUs`, `hipfftXtMalloc, hipfftXtMemcpy`, `hipfftXtFree`, and `hipfftXtExecDescriptor` APIs - have been implemented to allow FFT computing on multiple devices in a single process - #### hipSOLVER 2.0.0 hipSOLVER 2.0.0 for ROCm 6.0.0 @@ -1388,11 +1550,6 @@ MIOpen 2.19.0 for ROCm 6.0.0 RCCL 2.15.5 for ROCm 6.0.0 -##### Changes - -* Compatibility with NCCL 2.15.5 -* Renamed the unit test executable to `rccl-UnitTests` - ##### Additions * HW-topology-aware binary tree implementation @@ -1400,6 +1557,11 @@ RCCL 2.15.5 for ROCm 6.0.0 * New unit tests for hipGraph support * NPKit integration +##### Changes + +* Compatibility with NCCL 2.15.5 +* Renamed the unit test executable to `rccl-UnitTests` + ##### Fixes * rocm-smi ID conversion @@ -1433,6 +1595,12 @@ rocALUTION 3.0.3 for ROCm 6.0.0 * Matrix dimensions and number of non-zeros are now stored using 64-bit integers * Improved the ILUT preconditioner +##### Fixes + +* Unit tests no longer ignore BCSR block dimension +* Fixed documentation typos +* Bug in multi-coloring for non-symmetric matrix patterns + ##### Removals * `LocalVector::GetIndexValues(ValueType*)` @@ -1443,12 +1611,6 @@ rocALUTION 3.0.3 for ROCm 6.0.0 * `LocalMatrix::AMGSmoothedAggregation(ValueType, const LocalVector&, const LocalVector&, LocalMatrix*, LocalMatrix*, int)` * `LocalMatrix::AMGAggregation(const LocalVector&, LocalMatrix*, LocalMatrix*)` -##### Fixes - -* Unit tests no longer ignore BCSR block dimension -* Fixed documentation typos -* Bug in multi-coloring for non-symmetric matrix patterns - #### rocBLAS 4.0.0 rocBLAS 4.0.0 for ROCm 6.0.0 @@ -1467,6 +1629,20 @@ rocBLAS 4.0.0 for ROCm 6.0.0 * TRSM performance for small sizes (m < 32 && n < 32) +##### Fixes + +* Made offset calculations for 64-bit rocBLAS functions safe + * Fixes for very large leading dimension or increment potentially causing overflow: + * Level2: `gbmv`, `gemv`, `hbmv`, `sbmv`, `spmv`, `tbmv`, `tpmv`, `tbsv`, and `tpsv` +* Lazy loading supports heterogeneous architecture setup and load-appropriate tensile library files, + based on device architecture +* Guards against no-op kernel launches that result in a potential `hipGetLastError` + +##### Changes + +* Reduced the default verbosity of `rocblas-test` (you can see all tests by setting the + `GTEST_LISTENER=PASS_LINE_IN_LOG` environment variable) + ##### Deprecations * Atomic operations will be disabled by default in a future release of rocBLAS (you can enable atomic @@ -1483,20 +1659,6 @@ rocBLAS 4.0.0 for ROCm 6.0.0 before including `float.h`, `math.h`, and `rocblas.h`) * The default build removes device code for gfx803 architecture from the fat binary -##### Fixes - -* Made offset calculations for 64-bit rocBLAS functions safe - * Fixes for very large leading dimension or increment potentially causing overflow: - * Level2: `gbmv`, `gemv`, `hbmv`, `sbmv`, `spmv`, `tbmv`, `tpmv`, `tbsv`, and `tpsv` -* Lazy loading supports heterogeneous architecture setup and load-appropriate tensile library files, - based on device architecture -* Guards against no-op kernel launches that result in a potential `hipGetLastError` - -##### Changes - -* Reduced the default verbosity of `rocblas-test` (you can see all tests by setting the - `GTEST_LISTENER=PASS_LINE_IN_LOG` environment variable) - #### rocFFT 1.0.25 rocFFT 1.0.25 for ROCm 6.0.0 @@ -1635,7 +1797,11 @@ Roc Profiler 2.0.0 for ROCm 6.0.0 rocRAND 2.10.17 for ROCm 6.0.0 -### Changes +##### Optimizations + +* Improved MT19937 initialization and generation performance + +##### Changes * Generator classes from `rocrand.hpp` are no longer copyable (in previous versions these copies would copy internal references to the generators and would lead to double free or memory leak @@ -1643,17 +1809,7 @@ rocRAND 2.10.17 for ROCm 6.0.0 * These types should be moved instead of copied; move constructors and operators are now defined -### Optimizations - -* Improved MT19937 initialization and generation performance - -### Removals - -* Removed the hipRAND submodule from rocRAND; hipRAND is now only available as a separate - package -* Removed references to, and workarounds for, the deprecated hcc - -### Fixes +##### Fixes * `mt19937_engine` from `rocrand.hpp` is now move-constructible and move-assignable (the move constructor and move assignment operator was deleted for this class) @@ -1664,6 +1820,12 @@ rocRAND 2.10.17 for ROCm 6.0.0 * Fixed the default ordering parameter for `lfsr113` * Build error when using Clang++ directly resulting from unsupported `amdgpu-target` references +##### Removals + +* Removed the hipRAND submodule from rocRAND; hipRAND is now only available as a separate + package +* Removed references to, and workarounds for, the deprecated hcc + #### rocSOLVER 3.24.0 rocSOLVER 3.24.0 for ROCm 6.0.0 @@ -1681,6 +1843,12 @@ rocSOLVER 3.24.0 for ROCm 6.0.0 rocSPARSE 3.0.2 for ROCm 6.0.0 +##### Additions + +* `rocsparse_inverse_permutation` +* Mixed-precisions for SpVV +* Uniform int8 precision for gather and scatter + ##### Changes * Function arguments for `rocsparse_spmv` @@ -1690,23 +1858,17 @@ rocSPARSE 3.0.2 for ROCm 6.0.0 * Improved documentation * Improved verbose output during argument checking on API function calls -##### Removals - -* Auto stages from `spmv`, `spmm`, `spgemm`, `spsv`, `spsm`, and `spitsv` -* Formerly deprecated `rocsparse_spmm_ex` routine - -### Fixes +##### Fixes * Bug in `rocsparse-bench` where the SpMV algorithm was not taken into account in CSR format * BSR and GEBSR routines (`bsrmv`, `bsrsv`, `bsrmm`, `bsrgeam`, `gebsrmv`, `gebsrmm`) didn't always show `block_dim==0` as an invalid size * Passing `nnz = 0` to `doti` or `dotci` wasn't always returning a dot product of 0 -### Additions +##### Removals -* `rocsparse_inverse_permutation` -* Mixed-precisions for SpVV -* Uniform int8 precision for gather and scatter +* Auto stages from `spmv`, `spmm`, `spgemm`, `spsv`, `spsm`, and `spitsv` +* Formerly deprecated `rocsparse_spmm_ex` routine #### rocThrust 3.0.0 @@ -1902,18 +2064,18 @@ MIGraphX 2.8 for ROCm 6.0.0 hipBLAS 2.0.0 for ROCm 6.0.0 -##### Added +##### Additions - added option to define HIPBLAS_USE_HIP_BFLOAT16 to switch API to use hip_bfloat16 type - added hipblasGemmExWithFlags API -##### Deprecated +##### Deprecatations - hipblasDatatype_t is deprecated and will be removed in a future release and replaced with hipDataType - hipblasComplex and hipblasDoubleComplex are deprecated and will be removed in a future release and replaced with hipComplex and hipDoubleComplex - use of hipblasDatatype_t for hipblasGemmEx for compute-type is deprecated and will be replaced with hipblasComputeType_t in a future release -##### Removed +##### Removals - hipblasXtrmm that calculates B <- alpha * op(A) * B is removed and replaced with hipblasXtrmm that calculates C <- alpha * op(A) * B @@ -1921,7 +2083,7 @@ hipBLAS 2.0.0 for ROCm 6.0.0 hipCUB 3.0.0 for ROCm 6.0.0 -##### Changed +##### Changes - Removed `DOWNLOAD_ROCPRIM`, forcing rocPRIM to download can be done with `DEPENDENCIES_FORCE_DOWNLOAD`. @@ -1929,23 +2091,23 @@ hipCUB 3.0.0 for ROCm 6.0.0 hipFFT 1.0.13 for ROCm 6.0.0 -##### Changed +##### Additions -- hipfft-rider has been renamed to hipfft-bench, controlled by the BUILD_CLIENTS_BENCH CMake option. A link for the - old file name is installed, and the old BUILD_CLIENTS_RIDER CMake option is accepted for compatibility but both +- Implemented hipfftXtSetGPUs, hipfftXtMalloc, hipfftXtMemcpy, hipfftXtFree, hipfftXtExecDescriptor APIs to allow computing FFTs on multiple devices in a single process. + +##### Changes + +- hipfft-rider has been renamed to hipfft-bench, controlled by the BUILD_CLIENTS_BENCH CMake option. A link for the + old file name is installed, and the old BUILD_CLIENTS_RIDER CMake option is accepted for compatibility but both will be removed in a future release. - Binaries in debug builds no longer have a "-d" suffix. - The minimum rocFFT required version has been updated to 1.0.21. -##### Added - -- Implemented hipfftXtSetGPUs, hipfftXtMalloc, hipfftXtMemcpy, hipfftXtFree, hipfftXtExecDescriptor APIs to allow computing FFTs on multiple devices in a single process. - #### hipRAND 2.10.17 hipRAND 2.10.17 for ROCm 6.0.0 -##### Fixed +##### Fixes - Fixed benchmark and unit test builds on Windows. @@ -1953,15 +2115,15 @@ hipRAND 2.10.17 for ROCm 6.0.0 hipSOLVER 2.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Added hipBLAS as an optional dependency to hipsolver-test. Use the `BUILD_HIPBLAS_TESTS` CMake option to test compatibility between hipSOLVER and hipBLAS. -##### Changed +##### Changes - Types hipsolverOperation_t, hipsolverFillMode_t, and hipsolverSideMode_t are now aliases of hipblasOperation_t, hipblasFillMode_t, and hipblasSideMode_t. -##### Fixed +##### Fixes - Fixed tests for hipsolver info updates in ORGBR/UNGBR, ORGQR/UNGQR, ORGTR/UNGTR, ORMQR/UNMQR, and ORMTR/UNMTR. @@ -1970,11 +2132,11 @@ hipSOLVER 2.0.0 for ROCm 6.0.0 hipSPARSE 3.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Added hipsparseGetErrorName and hipsparseGetErrorString -##### Changed +##### Changes - Changed hipsparseSpSV_solve() API function to match cusparse API - Changed generic API functions to use const descriptors @@ -2005,7 +2167,7 @@ hipTensor 1.1.0 for ROCm 6.0.0 rocALUTION 3.0.3 for ROCm 6.0.0 -##### Added +##### Additions - Added support for 64bit integer vectors - Added inclusive and exclusive sum functionality for Vector classes @@ -2014,16 +2176,22 @@ rocALUTION 3.0.3 for ROCm 6.0.0 - Added Sort() function for LocalVector class - Added multiple stream support to the HIP backend -##### Optimized +##### Optimizations - GlobalMatrix::Apply() now uses multiple streams to better hide communication -##### Changed +##### Changes - Matrix dimensions and number of non-zeros are now stored using 64bit integers - Improved ILUT preconditioner -##### Removed +##### Fixes + +- Unit tests do not ignore BCSR block dimension anymore +- Fixed typos in the documentation +- Fixed a bug in multicoloring for non-symmetric matrix patterns + +##### Removals - Removed LocalVector::GetIndexValues(ValueType\*) - Removed LocalVector::SetIndexValues(const ValueType\*) @@ -2033,32 +2201,37 @@ rocALUTION 3.0.3 for ROCm 6.0.0 - Removed LocalMatrix::AMGSmoothedAggregation(ValueType, const LocalVector&, const LocalVector&, LocalMatrix\*, LocalMatrix\*, int) - Removed LocalMatrix::AMGAggregation(const LocalVector&, LocalMatrix\*, LocalMatrix\*) -##### Fixed - -- Unit tests do not ignore BCSR block dimension anymore -- Fixed typos in the documentation -- Fixed a bug in multicoloring for non-symmetric matrix patterns - #### rocBLAS 4.0.0 rocBLAS 4.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Addition of beta API rocblas_gemm_batched_ex3 and rocblas_gemm_strided_batched_ex3 - Added input/output type f16_r/bf16_r and execution type f32_r support for Level 2 gemv_batched and gemv_strided_batched - Added rocblas_status_excluded_from_build to be used when calling functions which require Tensile when using rocBLAS built without Tensile - Added system for async kernel launches setting a failure rocblas_status based on hipPeekAtLastError discrepancy -##### Optimized +##### Optimizations - Trsm performance for small sizes m < 32 && n < 32 -##### Deprecated +##### Fixes + +- Make offset calculations for rocBLAS functions 64 bit safe. Fixes for very large leading dimension or increment potentially causing overflow: + - Level2: gbmv, gemv, hbmv, sbmv, spmv, tbmv, tpmv, tbsv, tpsv +- Lazy loading to support heterogeneous architecture setup and load appropriate tensile library files based on the device's architecture +- Guard against no-op kernel launches resulting in potential hipGetLastError + +##### Changes + +- Default verbosity of rocblas-test reduced. To see all tests set environment variable GTEST_LISTENER=PASS_LINE_IN_LOG + +##### Deprecatations - In a future release atomic operations will be disabled by default so results will be repeatable. Atomic operations can always be enabled or disabled using the function rocblas_set_atomics_mode. Enabling atomic operations can improve performance. -##### Removed +##### Removals - rocblas_gemm_ext2 API function is removed - in-place trmm API from Legacy BLAS is removed. It is replaced by an API that supports both in-place and out-of-place trmm @@ -2066,22 +2239,11 @@ rocBLAS 4.0.0 for ROCm 6.0.0 - The #define STDC_WANT_IEC_60559_TYPES_EXT has been removed from rocblas-types.h. Users who want ISO/IEC TS 18661-3:2015 functionality must define STDC_WANT_IEC_60559_TYPES_EXT before including float.h, math.h, and rocblas.h - The default build removes device code for gfx803 architecture from the fat binary -##### Fixed - -- Make offset calculations for rocBLAS functions 64 bit safe. Fixes for very large leading dimension or increment potentially causing overflow: - - Level2: gbmv, gemv, hbmv, sbmv, spmv, tbmv, tpmv, tbsv, tpsv -- Lazy loading to support heterogeneous architecture setup and load appropriate tensile library files based on the device's architecture -- Guard against no-op kernel launches resulting in potential hipGetLastError - -##### Changed - -- Default verbosity of rocblas-test reduced. To see all tests set environment variable GTEST_LISTENER=PASS_LINE_IN_LOG - #### rocFFT 1.0.25 rocFFT 1.0.25 for ROCm 6.0.0 -##### Added +##### Additions - Implemented experimental APIs to allow computing FFTs on data distributed across multiple devices in a single process. @@ -2104,7 +2266,7 @@ rocFFT 1.0.25 for ROCm 6.0.0 by offline tuning. - Removed an extra kernel launch from even-length real-complex FFTs that use callbacks. -##### Changed +##### Changes - Built kernels in solution-map to library kernel cache. - Real forward transforms (real-to-complex) no longer overwrite input. rocFFT still may overwrite real inverse (complex-to-real) input, as this allows for faster performance. @@ -2114,7 +2276,7 @@ rocFFT 1.0.25 for ROCm 6.0.0 BUILD_CLIENTS_RIDER CMake option is accepted for compatibility but both will be removed in a future release. - Binaries in debug builds no longer have a "-d" suffix. -##### Fixed +##### Fixes - rocFFT now correctly handles load callbacks that convert data from a smaller data type (e.g. 16-bit integers -> 32-bit float). @@ -2122,11 +2284,11 @@ rocFFT 1.0.25 for ROCm 6.0.0 rocm-cmake 0.11.0 for ROCm 6.0.0 -##### Changed +##### Changes - ROCMSphinxDoc: Improved validation, documentation and rocm-docs-core integration. -##### Fixed +##### Fixes - ROCMClangTidy: Fixed extra make flags passed for clang tidy. - ROCMTest: Fixed issues when using module in a subdirectory. @@ -2135,7 +2297,7 @@ rocm-cmake 0.11.0 for ROCm 6.0.0 rocPRIM 3.0.0 for ROCm 6.0.0 -##### Added +##### Additions - `block_sort::sort()` overload for keys and values with a dynamic size, for all block sort algorithms. Additionally, all `block_sort::sort()` overloads with a dynamic size are now supported for `block_sort_algorithm::merge_sort` and `block_sort_algorithm::bitonic_sort`. - New two-way partition primitive `partition_two_way` which can write to two separate iterators. @@ -2144,7 +2306,7 @@ rocPRIM 3.0.0 for ROCm 6.0.0 - Improved the performance of `partition`. -##### Fixed +##### Fixes - Fixed `rocprim::MatchAny` for devices with 64-bit warp size. The function `rocprim::MatchAny` is deprecated and `rocprim::match_any` is preferred instead. @@ -2152,13 +2314,13 @@ rocPRIM 3.0.0 for ROCm 6.0.0 rocSOLVER 3.24.0 for ROCm 6.0.0 -##### Added +##### Additions - Cholesky refactorization for sparse matrices - CSRRF_REFACTCHOL - Added `rocsolver_rfinfo_mode` and the ability to specify the desired refactorization routine (see `rocsolver_set_rfinfo_mode`). -##### Changed +##### Changes - CSRRF_ANALYSIS and CSRRF_SOLVE now support sparse Cholesky factorization @@ -2166,18 +2328,18 @@ rocSOLVER 3.24.0 for ROCm 6.0.0 rocSPARSE 3.0.2 for ROCm 6.0.0 -##### Added +##### Additions - Added rocsparse_inverse_permutation - Added mixed precisions for SpVV - Added uniform int8 precision for Gather and Scatter -##### Optimized +##### Optimizations - Optimization to doti routine - Optimization to spin-looping algorithms -##### Changed +##### Changes - Changed rocsparse_spmv function arguments - Changed rocsparse_xbsrmv routines function arguments @@ -2185,47 +2347,47 @@ rocSPARSE 3.0.2 for ROCm 6.0.0 - Improved documentation - Improved verbose output during argument checking on API function calls -##### Deprecated - -- Deprecated rocsparse_spmv_ex -- Deprecated rocsparse_xbsrmv_ex routines - -##### Removed - -- Removed auto stages from spmv, spmm, spgemm, spsv, spsm, and spitsv. -- Removed rocsparse_spmm_ex routine - -##### Fixed +##### Fixes - Fixed a bug in rocsparse-bench, where SpMV algorithm was not taken into account in CSR format - Fixed the BSR/GEBSR routines bsrmv, bsrsv, bsrmm, bsrgeam, gebsrmv, gebsrmm so that block_dim==0 is considered an invalid size - Fixed bug where passing nnz = 0 to doti or dotci did not always return a dot product of 0 +##### Deprecatations + +- Deprecated rocsparse_spmv_ex +- Deprecated rocsparse_xbsrmv_ex routines + +##### Removals + +- Removed auto stages from spmv, spmm, spgemm, spsv, spsm, and spitsv. +- Removed rocsparse_spmm_ex routine + #### rocThrust 3.0.0 rocThrust 3.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Updated to match upstream Thrust 2.0.1 - NV_IF_TARGET macro from libcu++ for NVIDIA backend and HIP implementation for HIP backend. -##### Changed +##### Changes - The cmake build system now additionally accepts `GPU_TARGETS` in addition to `AMDGPU_TARGETS` for setting the targeted gpu architectures. `GPU_TARGETS=all` will compile for all supported architectures. `AMDGPU_TARGETS` is only provided for backwards compatibility, `GPU_TARGETS` should be preferred. -##### Removed +##### Fixes + +- Fixed a segmentation fault when binary search / upper bound / lower bound / equal range was invoked with `hip_rocprim::execute_on_stream_base` policy. + +##### Removals - Removed cub symlink from the root of the repository. - Removed support for deprecated macros (THRUST_DEVICE_BACKEND and THRUST_HOST_BACKEND). -##### Fixed - -- Fixed a segmentation fault when binary search / upper bound / lower bound / equal range was invoked with `hip_rocprim::execute_on_stream_base` policy. - -##### Known Issues +##### Known issues - For NVIDIA backend, `NV_IF_TARGET` and `THRUST_RDC_ENABLED` intend to substitute the `THRUST_HAS_CUDART` macro, which is now no longer used in Thrust (provided for legacy support only). However, there is no `THRUST_RDC_ENABLED` macro available for the HIP backend, so some branches in Thrust's code may be unreachable in the HIP backend. @@ -2233,19 +2395,19 @@ rocThrust 3.0.0 for ROCm 6.0.0 rocWMMA 1.3.0 for ROCm 6.0.0 -##### Added +##### Additions - Added support for gfx940, gfx941 and gfx942 targets - Added support for f8, bf8 and xfloat32 datatypes - Added support for HIP_NO_HALF, __ HIP_NO_HALF_CONVERSIONS__ and __ HIP_NO_HALF_OPERATORS__ (e.g. pytorch environment) -##### Changed +##### Changes - rocWMMA with hipRTC now supports bfloat16_t datatype - gfx11 wmma now uses lane swap instead of broadcast for layout adjustment - Updated samples GEMM parameter validation on host arch -##### Fixed +##### Fixes - Disabled gtest static library deployment - Extended tests now build in large code model @@ -2254,7 +2416,7 @@ rocWMMA 1.3.0 for ROCm 6.0.0 rpp for ROCm 6.0.0 -##### Added +##### Additions * New Tests @@ -2262,15 +2424,15 @@ rpp for ROCm 6.0.0 * Readme Updates -##### Changed +##### Changes * **Backend** - Default Backend set to `HIP` -##### Fixed +##### Fixes * Minor bugs and warnings -##### Tested Configurations +###### Tested Configurations * Linux distribution + Ubuntu - `18.04` / `20.04` @@ -2281,55 +2443,11 @@ rpp for ROCm 6.0.0 * Boost - Version `1.72` * IEEE 754-based half-precision floating-point library - Version `1.12.0` -##### Rpp 1.3.0 - - - -##### Rpp 1.2.0 - - - -##### Known Issues - -* `CPU` only backend not enabled - -##### Rpp 1.1.0 - - - -##### Rpp 1.0.0 - - - -##### Rpp 0.99 - - - -##### Rpp 0.98 - - - -##### Rpp 0.97 - - - -##### Rpp 0.96 - - - -##### Rpp 0.95 - - - -##### Rpp 0.93 - - - #### Tensile 4.39.0 Tensile 4.39.0 for ROCm 6.0.0 -##### Added +##### Additions - Added aquavanjaram support: gfx940/gfx941/gfx942, fp8/bf8 datatype, xf32 datatype, and stochastic rounding for various datatypes - Added/updated tuning scripts @@ -2350,7 +2468,7 @@ Tensile 4.39.0 for ROCm 6.0.0 - Supported DGEMM TLUB + RLVW=2 for odd N (edge shift change) - Enabled miLatency optimization for (gfx940/gfx941 + MFMA) for specific data types, and fixed instruction scheduling -##### Changed +##### Changes - Removed old code for DTL + (bpe * GlobalReadVectorWidth > 4) - Changed/updated failed CI tests for gfx11xx, InitAccVgprOpt, and DTLds @@ -2368,7 +2486,7 @@ Tensile 4.39.0 for ROCm 6.0.0 - Enabled ROCm SMI for gfx940/941. - Modified non-lazy load build to skip experimental logic -##### Fixed +##### Fixes - Fixed predicate ordering for fp16alt impl round near zero mode to unbreak distance modes - Fixed boundary check for mirror dims and re-enable disabled mirror dims test cases @@ -2726,7 +2844,7 @@ MIGraphX 2.7 for ROCm 5.7.0 - Improved compile times by only building for the GPU on the system - Improve performance of pointwise/reduction kernels when using NHWC layouts - Load specific version of the migraphx_py library -- Annotate functions with the block size so the compiler can do a better job of optimizing +- Annotate functions with the block size so the compiler can do a better job of optimizing - Enable reshape on nonstandard shapes - Use half HIP APIs to compute max and min - Added support for broadcasted scalars to unsqueeze operator @@ -3638,7 +3756,7 @@ rocSPARSE 2.5.2 for ROCm 5.6.0 rocThrust 2.18.0 for ROCm 5.6.0 -##### Fixed +##### Fixed - `lower_bound`, `upper_bound`, and `binary_search` failed to compile for certain types. @@ -5259,7 +5377,7 @@ function or by parameters. ##### Changed -- Improved build parallelism of the test suite by splitting up large compilation units for `DeviceRadixSort`, +- Improved build parallelism of the test suite by splitting up large compilation units for `DeviceRadixSort`, `DeviceSegmentedRadixSort` and `DeviceSegmentedSort`. - CUB backend references CUB and thrust version 1.17.1. @@ -5379,8 +5497,8 @@ rocFFT 1.0.19 for ROCm 5.4.0 ##### Changed -- Moved runtime compilation cache to in-memory by default. A default on-disk cache can encounter contention problems -on multi-node clusters with a shared filesystem. rocFFT can still be told to use an on-disk cache by setting the +- Moved runtime compilation cache to in-memory by default. A default on-disk cache can encounter contention problems +on multi-node clusters with a shared filesystem. rocFFT can still be told to use an on-disk cache by setting the ROCFFT_RTC_CACHE_PATH environment variable. #### rocPRIM 2.12.0 @@ -5389,7 +5507,7 @@ rocPRIM 2.12.0 for ROCm 5.4.0 ##### Changed -- `device_partition`, `device_unique`, and `device_reduce_by_key` now support problem +- `device_partition`, `device_unique`, and `device_reduce_by_key` now support problem sizes larger than 2^32 items. ##### Removed @@ -7113,7 +7231,7 @@ rocSPARSE 2.2.0 for ROCm 5.2.0 ##### Added -- batched SpMM for CSR, COO and Blocked ELL formats. +- batched SpMM for CSR, COO and Blocked ELL formats. - Packages for test and benchmark executables on all supported OSes using CPack. - Clients file importers and exporters. @@ -7850,7 +7968,7 @@ rocSPARSE 2.1.0 for ROCm 5.1.0 ##### Added -- gtsv_interleaved_batch +- gtsv_interleaved_batch - gpsv_interleaved_batch - SpGEMM_reuse - Allow copying of mat info struct diff --git a/RELEASE.md b/RELEASE.md index dd2fb3284..b4ac827e7 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,4 +1,5 @@ -# ROCm 6.1 release highlights +# ROCm 6.1.1 release notes + @@ -8,245 +9,140 @@ -The ROCm™ 6.1 release consists of new features and fixes to improve the stability and -performance of AMD Instinct™ MI300 GPU applications. Notably, we've added: +ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and libraries. -* Full support for Ubuntu 22.04.4. +## OS support -* **rocDecode**, a new ROCm component that provides high-performance video decode support for - AMD GPUs. With rocDecode, you can decode compressed video streams while keeping the resulting - YUV frames in video memory. With decoded frames in video memory, you can run video - post-processing using ROCm HIP, avoiding unnecessary data copies via the PCIe bus. +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). - To learn more, refer to the rocDecode - [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). +## AMD SMI -## OS and GPU support changes +AMD SMI for ROCm 6.1.1 -ROCm 6.1 adds the following operating system support: +### Additions -* MI300A: Ubuntu 22.04.4 and RHEL 9.3 -* MI300X: Ubuntu 22.04.4 +- Added deferred error correctable counts to `amd-smi metric -ecc -ecc-blocks`. -Future releases will add additional operating systems to match the general offering. For older -generations of supported AMD Instinct products, we’ve added Ubuntu 22.04.4 support. +### Changes -```{tip} -To view the complete list of supported GPUs and operating systems, refer to the system requirements -page for -[Linux](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html) -and -[Windows](https://rocm.docs.amd.com/projects/install-on-windows/en/latest/reference/system-requirements.html). +- Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks. +- Updated the output of `amd-smi metric --clock` to reflect each engine. +- Updated the output of `amd-smi topology --json` to align with output reported by host and guest systems. + +### Fixes + +- Fixed `amd-smi metric --clock`'s clock lock and deep sleep status. +- Fixed an issue that would cause an error when resetting non-AMD GPUs. +- Fixed `amd-smi metric --pcie` and `amdsmi_get_pcie_info()` when using RDNA3 (Navi 32 and Navi 31) hardware to prevent "UNKNOWN" reports. +- Fixed the output results of `amd-smi process` when getting processes running on a device. + +### Removals + +- Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release. + +### Known issues + +- `amd-smi bad-pages` can result in a `ValueError: Null pointer access` error when using some PMU firmware versions. + +```{note} +See the [detailed changelog](https://github.com/ROCm/amdsmi/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. ``` -## Installation packages +## HIPCC -This release includes a new set of packages for every module (all libraries and binaries default to -`DT_RPATH`). Package names have the suffix `rpath`; for example, the `rpath` variant of `rocminfo` is -`rocminfo-rpath`. +HIPCC for ROCm 6.1.1 -```{warning} -The new `rpath` packages will conflict with the default packages; they are meant to be used only in -environments where legacy `DT_RPATH` is the preferred form of linking (instead of `DT_RUNPATH`). We -do **not** recommend installing both sets of packages. -``` +### Changes -## ROCm components +- **Upcoming:** a future release will enable use of compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users. You can continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`. +- **Upcoming:** a subsequent release will remove high-level Perl scripts `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly. +- **Upcoming:** a subsequent release will remove `hipcc.pl` and `hipconfig.pl`. -The following sections highlight select component-specific changes. For additional details, refer to the -[Changelog](https://rocm.docs.amd.com/en/develop/about/CHANGELOG.html). +## HIPIFY -### AMD System Management Interface (SMI) Tool +HIPIFY for ROCm 6.1.1 -* **New monitor command for GPU metrics**. - Use the monitor command to customize, capture, collect, and observe GPU metrics on - target devices. +### Additions -* **Integration with E-SMI**. - The EPYC™ System Management Interface In-band Library is a Linux C-library that provides in-band - user space software APIs to monitor and control your CPU’s power, energy, performance, and other - system management functionality. This integration enables access to CPU metrics and telemetry - through the AMD SMI API and CLI tools. +- Added support for LLVM 18.1.2. +- Added support for cuDNN 9.0.0. +- Added a new option: `--clang-resource-directory` to specify the clang resource path (the path to the parent folder for the `include` folder that contains `__clang_cuda_runtime_wrapper.h` and other header files used during the hipification process). -### Composable Kernel (CK) +## ROCm SMI -* **New architecture support**. - CK now supports to the following architectures to enable efficient image denoising on the following - AMD GPUs: gfx1030, gfx1100, gfx1031, gfx1101, gfx1032, gfx1102, gfx1034, gfx1103, gfx1035, - gfx1036 +ROCm SMI for ROCm 6.1.1 -* **FP8 rounding logic is replaced with stochastic rounding**. - Stochastic rounding mimics a more realistic data behavior and improves model convergence. +### Known issues -### HIP +- ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. -* **New environment variable to enable kernel run serialization**. - The default `HIP_LAUNCH_BLOCKING` value is `0` (disable); which causes kernels to run as defined in - the queue. When set to `1` (enable), the HIP runtime serializes the kernel queue, which behaves the - same as `AMD_SERIALIZE_KERNEL`. +## Library changes in ROCm 6.1.1 -### hipBLASLt +| Library | Version | +| ----------- | -------------------------------------------------------------------------- | +| AMDMIGraphX | [2.9](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.1.1) | +| hipBLAS | [2.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.1.1) | +| hipBLASLt | [0.7.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.1.1) | +| hipCUB | [3.1.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.1.1) | +| hipFFT | [1.0.14](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.1.1) | +| hipRAND | [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.1.1) | +| hipSOLVER | 2.1.0 ⇒ [2.1.1](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.1.1) | +| hipSPARSE | [3.0.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.1.1) | +| hipSPARSELt | [0.2.0](https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.1.1) | +| hipTensor | [1.2.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.1.1) | +| MIOpen | [3.1.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.1.1) | +| MIVisionX | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.1.1) | +| rccl | [2.18.6](https://github.com/ROCm/rccl/releases/tag/rocm-6.1.1) | +| rocALUTION | [3.1.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.1.1) | +| rocBLAS | [4.1.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.1.1) | +| rocDecode | [0.5.0](https://github.com/ROCm/rocDecode/releases/tag/rocm-6.1.1) | +| rocFFT | 1.0.26 ⇒ [1.0.27](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.1.1) | +| rocm-cmake | [0.12.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.1.1) | +| rocPRIM | [3.1.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.1.1) | +| rocRAND | [3.0.1](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.1.1) | +| rocSOLVER | [3.25.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.1.1) | +| rocSPARSE | [3.1.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.1.1) | +| rocThrust | [3.0.1](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.1.1) | +| rocWMMA | [1.4.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.1.1) | +| rpp | [1.5.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.1.1) | +| Tensile | [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.1) | -* **New GemmTuning extension parameter** GemmTuning allows you to set a split-k value for each solution, which is more feasible for - performance tuning. +#### hipBLASLt 0.7.0 -### hipFFT +hipBLASLt 0.7.0 for ROCm 6.1.1 -* **New multi-GPU support for single-process transforms** Multiple GPUs can be used to perform a transform in a single process. Note that this initial - implementation is a functional preview. +##### Additions -### HIPIFY +- Added `hipblasltExtSoftmax` extension API. +- Added `hipblasltExtLayerNorm` extension API. +- Added `hipblasltExtAMax` extension API. +- Added `GemmTuning` extension parameter to set split-k by user. +- Added support for mixed precision datatype: fp16/fp8 in with fp16 outk. -* **Skipped code blocks**: Code blocks that are skipped by the preprocessor are no longer hipified under the - `--default-preprocessor` option. To hipify everything, despite conditional preprocessor directives - (`#if`, `#ifdef`, `#ifndef`, `#elif`, or `#else`), don't use the `--default-preprocessor` or `--amap` options. +##### Deprecations -### hipSPARSELt +- **Upcoming**: `algoGetHeuristic()` ext API for GroupGemm will be deprecated in a future release of hipBLASLt. -* **Structured sparsity matrix support extensions** - Structured sparsity matrices help speed up deep-learning workloads. We now support `B` as the - sparse matrix and `A` as the dense matrix in Sparse Matrix-Matrix Multiplication (SPMM). Prior to this - release, we only supported sparse (matrix A) x dense (matrix B) matrix multiplication. Structured - sparsity matrices help speed up deep learning workloads. +### hipSOLVER 2.1.1 -### hipTensor +hipSOLVER 2.1.1 for ROCm 6.1.1 -* **4D tensor permutation and contraction support**. - You can now perform tensor permutation on 4D tensors and 4D contractions for F16, BF16, and - Complex F32/F64 datatypes. +#### Changes -### MIGraphX +- By default, `BUILD_WITH_SPARSE` is now set to OFF on Microsoft Windows. -* **Improved performance for transformer-based models**. - We added support for FlashAttention, which benefits models like BERT, GPT, and Stable Diffusion. +#### Fixes -* **New Torch-MIGraphX driver**. - This driver calls MIGraphX directly from PyTorch. It provides an `mgx_module` object that you can - invoke like any other Torch module, but which utilizes the MIGraphX inference engine internally. - Torch-MIGraphX supports FP32, FP16, and INT8 datatypes. +- Fixed benchmark client build when `BUILD_WITH_SPARSE` is OFF. - * **FP8 support**. We now offer functional support for inference in the FP8E4M3FNUZ datatype. You - can load an ONNX model in FP8E4M3FNUZ using C++ or Python APIs, or `migraphx-driver`. - You can quantize a floating point model to FP8 format by using the `--fp8` flag with `migraphx-driver`. - To accelerate inference, MIGraphX uses hardware acceleration on MI300 for FP8 by leveraging FP8 - support in various backend kernel libraries. +### rocFFT 1.0.27 -### MIOpen +rocFFT 1.0.27 for ROCm 6.1.1 -* **Improved performance for inference and convolutions**. - Inference support now provided for Find 2.0 fusion plans. Additionally, we've enhanced the Number of - samples, Height, Width, and Channels (NHWC) convolution kernels for heuristics. NHWC stores data - in a format where the height and width dimensions come first, followed by channels. +#### Additions -### OpenMP +- Enable multi-GPU testing on systems without direct GPU-interconnects. -* **Implicit Zero-copy is triggered automatically in XNACK-enabled MI300A systems**. - Implicit Zero-copy behavior in `non unified_shared_memory` programs is triggered automatically in - XNACK-enabled MI300A systems (for example, when using the `HSA_XNACK=1` environment - variable). OpenMP supports the 'requires `unified_shared_memory`' directive to support programs - that don’t want to copy data explicitly between the CPU and GPU. However, this requires that you add - these directives to every translation unit of the program. +#### Fixes -* **New MI300 FP atomics**. Application performance can now improve by leveraging fast floating-point atomics on MI300 (gfx942). - - -### RCCL - -* **NCCL 2.18.6 compatibility**. - RCCL is now compatible with NCCL 2.18.6, which includes increasing the maximum IB network interfaces to 32 and fixing network device ordering when creating communicators with only one GPU - per node. - -* **Doubled simultaneous communication channels**. - We improved MI300X performance by increasing the maximum number of simultaneous - communication channels from 32 to 64. - -### rocALUTION - -* **New multiple node and GPU support**. - Unsmoothed and smoothed aggregations and Ruge-Stueben AMG now work with multiple nodes - and GPUs. For more information, refer to the - [API documentation](https://rocm.docs.amd.com/projects/rocALUTION/en/latest/usermanual/solvers.html#unsmoothed-aggregation-amg). - -### rocDecode - -* **New ROCm component**. - rocDecode ROCm's newest component, providing high-performance video decode support for AMD - GPUs. To learn more, refer to the - [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). - -### ROCm Compiler - -* **Combined projects**. ROCm Device-Libs, ROCm Compiler Support, and hipCC are now located in - the `llvm-project/amd` subdirectory of AMD's fork of the LLVM project. Previously, these projects - were maintained in separate repositories. Note that the projects themselves will continue to be - packaged separately. - -* **Split the 'rocm-llvm' package**. This package has been split into a required and an optional package: - - * **rocm-llvm(required)**: A package containing the essential binaries needed for compilation. - - * **rocm-llvm-dev(optional)**: A package containing binaries for compiler and application developers. - - -### ROCm Data Center Tool (RDC) - -* **C++ upgrades**. - RDC was upgraded from C++11 to C++17 to enable a more modern C++ standard when writing RDC plugins. - -### ROCm Performance Primitives (RPP) - -* **New backend support**. - Audio processing support added for the `HOST` backend and 3D Voxel kernels support - for the `HOST` and `HIP` backends. - -### ROCm Validation Suite - -* **New datatype support**. -Added BF16 and FP8 datatypes based on General Matrix Multiply(GEMM) operations in the GPU Stress Test (GST) module. This provides additional performance benchmarking and stress testing based on the newly supported datatypes. - -### rocSOLVER - -* **New EigenSolver routine**. -Based on the Jacobi algorithm, a new EigenSolver routine was added to the library. This routine computes the eigenvalues and eigenvectors of a matrix with improved performance. - -### ROCTracer - -* **New versioning and callback enhancements**. -Improved to match versioning changes in HIP Runtime and supports runtime API callbacks and activity record logging. The APIs of different runtimes at different levels are considered different API domains with assigned domain IDs. - -## Upcoming changes - -* ROCm SMI will be deprecated in a future release. We advise **migrating to AMD SMI** now to - prevent future workflow disruptions. - -* hipCC supports, by default, the following compiler invocation flags: - - * `-mllvm -amdgpu-early-inline-all=true` - * `-mllvm -amdgpu-function-calls=false` - - In a future ROCm release, hipCC will no longer support these flags. It will, instead, use the Clang - defaults: - - * `-mllvm -amdgpu-early-inline-all=false` - * `-mllvm -amdgpu-function-calls=true` - - To evaluate the impact of this change, include `--hipcc-func-supp` in your hipCC invocation. - - For information on these flags, and the differences between hipCC and Clang, refer to - [ROCm Compiler Interfaces](https://rocm.docs.amd.com/en/latest/reference/rocmcc.html#rocm-compiler-interfaces). - -* Future ROCm releases will not provide `clang-ocl`. For more information, refer to the - [`clang-ocl` README](https://github.com/ROCm/clang-ocl). - -* The following operating systems will be supported in a future ROCm release. They are currently - only available in beta. - - * RHEL 9.4 - * RHEL 8.10 - * SLES 15 SP6 - -* As of ROCm 6.2, we’ve planned for **end-of-support** for: - - * Ubuntu 20.04.5 - * SLES 15 SP4 - * RHEL/CentOS 7.9 +- Fixed kernel launch failure on execute of very large odd-length real-complex transforms. diff --git a/docs/reference/gpu-arch-specs.rst b/docs/reference/gpu-arch-specs.rst index b72c3b142..df9068c48 100644 --- a/docs/reference/gpu-arch-specs.rst +++ b/docs/reference/gpu-arch-specs.rst @@ -659,5 +659,4 @@ The following tables provide an overview of the hardware specifications for AMD - 256 - 12.5 -For more information on the terms used here, see the :ref:`specific documents and guides `, the :doc:`conceptual overview of the HIP programming model`, or the :doc:`HIP reference guide`. - +For more information on the terms used here, see the :ref:`specific documents and guides ` or :doc:`Understanding the HIP programming model`. diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 433e30e81..413317901 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -8,7 +8,7 @@ subtrees: - entries: - file: what-is-rocm.rst - file: about/release-notes.md - title: Release highlights + title: Release notes subtrees: - entries: - file: about/CHANGELOG.md diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index 0d6afb18d..cdee26699 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1,12 +1,2 @@ -rocm-docs-core[api_reference]==1.1.1 ---extra-index-url https://test.pypi.org/simple/ -Sphinx-Substitution-Extensions -autodoc -hip-python -hip-python-as-cuda -numpy -sphinx-collapse -sphinx-reredirects -sphinxcontrib-bibtex -sphinxcontrib-moderncmakedomain -sphinxcontrib.datatemplates +rocm-docs-core==1.1.1 +sphinx-reredirects==0.1.3 diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 67d791c97..84c0d167d 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -72,7 +72,7 @@ idna==3.7 # via requests imagesize==1.4.1 # via sphinx -jinja2==3.1.3 +jinja2==3.1.4 # via # myst-parser # sphinx @@ -141,7 +141,7 @@ requests==2.31.0 # via # pygithub # sphinx -rocm-docs-core[api_reference]==1.1.1 +rocm-docs-core==1.1.1 # via -r requirements.in six==1.16.0 # via pybtex @@ -205,23 +205,9 @@ sphinxcontrib-runcmd==0.2.0 # via sphinxcontrib-datatemplates sphinxcontrib-serializinghtml==1.1.10 # via sphinx -tomli==2.0.1 - # via sphinx -tqdm==4.66.2 - # via mpire -typing-extensions==4.11.0 - # via - # pydata-sphinx-theme - # pygithub -urllib3==2.2.1 - # via - # pygithub - # requests -waitress==3.0.0 - # via webtest -webob==1.8.7 - # via webtest -webtest==3.0.0 - # via autodoc -wrapt==1.16.0 +typing-extensions==4.5.0 + # via pydata-sphinx-theme +urllib3==1.26.18 + # via requests +wrapt==1.14.1 # via deprecated diff --git a/tools/autotag/README.md b/tools/autotag/README.md index 437f5d9ce..8900c1920 100755 --- a/tools/autotag/README.md +++ b/tools/autotag/README.md @@ -20,16 +20,16 @@ * Run this for 5.6.0 (change for whatever version you require) * `GITHUB_ACCESS_TOKEN=my_token_here` -To generate the changelog from 5.0.0 up to and including 6.1.0: +To generate the changelog from 5.0.0 up to and including 6.1.1: ```sh -python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --do-previous --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.0 +python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --do-previous --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.1 ``` -To generate the changelog only for 6.1.0: +To generate the changelog only for 6.1.1: ```sh -python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.0 +python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.1 ``` ### Notes diff --git a/tools/autotag/templates/changelog.jinja b/tools/autotag/templates/changelog.jinja index ff1084bac..f9a682090 100644 --- a/tools/autotag/templates/changelog.jinja +++ b/tools/autotag/templates/changelog.jinja @@ -42,7 +42,7 @@ This page contains the release notes for AMD ROCm Software. {%- for lib_name, lib in release.libraries | dictsort %} {%- if rocm_ver_by_lib_ver[lib_name][lib.lib_version] == version and lib.lib_version%} -#### {{lib_name}} {{lib.lib_version}} +#### {{lib_name}} {{lib.message}} diff --git a/tools/autotag/templates/rocm_changes/6.0.2.md b/tools/autotag/templates/rocm_changes/6.0.2.md index 17f51eb4d..226dd6ad5 100644 --- a/tools/autotag/templates/rocm_changes/6.0.2.md +++ b/tools/autotag/templates/rocm_changes/6.0.2.md @@ -1,4 +1,5 @@ -The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. + +The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. #### hipFFT 1.0.13 diff --git a/tools/autotag/templates/rocm_changes/6.1.1.md b/tools/autotag/templates/rocm_changes/6.1.1.md new file mode 100644 index 000000000..a67ac7bfd --- /dev/null +++ b/tools/autotag/templates/rocm_changes/6.1.1.md @@ -0,0 +1,67 @@ + +ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and libraries. + +### OS support + +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). + +### AMD SMI + +AMD SMI for ROCm 6.1.1 + +#### Additions + +* Added deferred error correctable counts to `amd-smi metric -ecc -ecc-blocks`. + +#### Changes + +* Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks. +* Updated the output of `amd-smi metric --clock` to reflect each engine. +* Updated the output of `amd-smi topology --json` to align with output reported by host and guest systems. + +#### Fixes + +* Fixed `amd-smi metric --clock`'s clock lock status and deep sleep status. +* Fixed an issue that would cause an error when attempting to reset non-AMD GPUs. +* Fixed `amd-smi metric --pcie` and `amdsmi_get_pcie_info()` when using RDNA3 (Navi 32 and Navi 31) hardware to prevent "UNKNOWN" reports. +* Fixed the output results of `amd-smi process` when getting processes running on a device. + +#### Removals + +* Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release. + +#### Known issues + +* `amd-smi bad-pages` can result in a `ValueError: Null pointer access` error when using certain PMU firmware versions. + +```{note} +See the [detailed changelog](https://github.com/ROCm/amdsmi/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` + +### HIPCC + +HIPCC for ROCm 6.1.1 + +#### Changes + +* **Upcoming:** a future release will enable use of compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users; you may continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`. +* **Upcoming:** a subsequent release will remove high-level Perl scripts `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly. +* **Upcoming:** a subsequent will remove `hipcc.pl` and `hipconfig.pl`. + +### HIPIFY + +HIPIFY for ROCm 6.1.1 + +#### Additions + +* Added support for LLVM 18.1.2. +* Added support for cuDNN 9.0.0. +* Added a new option: `--clang-resource-directory` to specify the clang resource path (the path to the parent folder for the `include` folder that contains `__clang_cuda_runtime_wrapper.h` and other header files used during the hipification process). + +### ROCm SMI + +ROCm SMI for ROCm 6.1.1 + +#### Known issues + +* ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. diff --git a/tools/autotag/util/__init__.py b/tools/autotag/util/__init__.py index 40a4fdbd4..bdfded03e 100755 --- a/tools/autotag/util/__init__.py +++ b/tools/autotag/util/__init__.py @@ -1,2 +1,2 @@ from .defaults import TEMPLATES, PROCESSORS -from .custom_templates import hipfort, mivisionx, rpp, rvs +from .custom_templates import hipfort, mivisionx, rpp diff --git a/tools/autotag/util/release_data.py b/tools/autotag/util/release_data.py index d82cbb533..1ad94ab06 100755 --- a/tools/autotag/util/release_data.py +++ b/tools/autotag/util/release_data.py @@ -4,6 +4,7 @@ from dataclasses import dataclass, field import os import re import shutil +import sys from typing import Optional, Union, Dict, List, Tuple from github import Github, UnknownObjectException from github.Repository import Repository @@ -352,6 +353,8 @@ class ReleaseBundleFactory: """Create a release bundle of libraries.""" tag_name = f"rocm-{version}" libraries = { } + + missing_branches = [] print(f"\nLibraries for rocm-{version}:") for name, remote in names_and_remotes: @@ -365,7 +368,13 @@ class ReleaseBundleFactory: continue print(f" Defaulting to branch: {self.branch}") - commit = repo.get_branch(self.branch).commit.sha + try: + repo_branch = repo.get_branch(self.branch) + commit = repo_branch.commit.sha + except Exception: + print(f" - Could not find branch : {self.branch}") + missing_branches.append(f"{self.branch} for {name}") + continue libraries[name] = ReleaseLib( name=name, @@ -381,6 +390,9 @@ class ReleaseBundleFactory: libraries=libraries ) + for missing in missing_branches: + print(f"Could not find the following branch: {missing}") + return data def create_data_dict( From 735b057adf0c94a834f2cf215a87390877ad88ba Mon Sep 17 00:00:00 2001 From: Yanyao Wang Date: Wed, 8 May 2024 17:23:52 -0500 Subject: [PATCH 010/175] update the default.xml for ROCm6.1.1 (#3098) Co-authored-by: Wang, Yanyao Co-authored-by: Sam Wu <22262939+samjwu@users.noreply.github.com> --- default.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/default.xml b/default.xml index 196120d73..ae1daad18 100644 --- a/default.xml +++ b/default.xml @@ -1,8 +1,7 @@ - - From 662bb76c0287a1a91ce6b63887a11725d18c503a Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Wed, 8 May 2024 16:51:50 -0600 Subject: [PATCH 011/175] Fix manifest --- default.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default.xml b/default.xml index 196120d73..1f81628cd 100644 --- a/default.xml +++ b/default.xml @@ -2,7 +2,7 @@ - From 70f8dba582602b6a9710019c52cce04823940a25 Mon Sep 17 00:00:00 2001 From: randyh62 <42045079+randyh62@users.noreply.github.com> Date: Fri, 10 May 2024 08:55:46 -0700 Subject: [PATCH 012/175] updates for SWDEV-459863 (#3114) --- .wordlist.txt | 2 ++ docs/conceptual/compiler-topics.md | 14 +++++++++++++ docs/conceptual/using-gpu-sanitizer.md | 18 ++++++++--------- docs/index.md | 7 ++++--- docs/sphinx/_toc.yml.in | 28 +++++++++++++++----------- 5 files changed, 45 insertions(+), 24 deletions(-) create mode 100644 docs/conceptual/compiler-topics.md diff --git a/.wordlist.txt b/.wordlist.txt index 1f3d74906..31db060a1 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -18,6 +18,7 @@ APU ASIC ASICs ASan +ASAN ASm ATI AddressSanitizer @@ -169,6 +170,7 @@ LLMs LLVM LM LSAN +LSan LTS LoRA MEM diff --git a/docs/conceptual/compiler-topics.md b/docs/conceptual/compiler-topics.md new file mode 100644 index 000000000..efb4044c4 --- /dev/null +++ b/docs/conceptual/compiler-topics.md @@ -0,0 +1,14 @@ + + + + + + +# Using compiler features + +The following topics describe using specific features of the compilation tools: + +* [Using AddressSanitizer](./using-gpu-sanitizer.md) +* [Compiler disambiguation](./compiler-disambiguation.md) +* [OpenMP support in ROCm](../about/compatibility/openmp.md) diff --git a/docs/conceptual/using-gpu-sanitizer.md b/docs/conceptual/using-gpu-sanitizer.md index 3e753479b..88eb16f15 100644 --- a/docs/conceptual/using-gpu-sanitizer.md +++ b/docs/conceptual/using-gpu-sanitizer.md @@ -5,7 +5,7 @@ libraries, instrumented applications, AMD, ROCm"> -# Using the LLVM ASan on a GPU (beta release) +# Using the AddressSanitizer on a GPU (beta release) The LLVM AddressSanitizer (ASan) provides a process that allows developers to detect runtime addressing errors in applications and libraries. The detection is achieved using a combination of compiler-added instrumentation and runtime techniques, including function interception and replacement. Until now, the LLVM ASan process was only available for traditional purely CPU applications. However, ROCm has extended this mechanism to additionally allow the detection of some addressing errors on the GPU in heterogeneous applications. Ideally, developers should treat heterogeneous HIP and OpenMP applications exactly like pure CPU applications. However, this simplicity has not been achieved yet. @@ -40,7 +40,7 @@ Other architectures are allowed, but their device code will not be instrumented ### About compilation time -When `-fsanitize=address` is used, the LLVM compiler adds instrumentation code around every memory operation. This added code must be handled by all of the downstream components of the compiler toolchain and results in increased overall compilation time. This increase is especially evident in the AMDGPU device compiler and has in a few instances raised the compile time to an unacceptable level. +When `-fsanitize=address` is used, the LLVM compiler adds instrumentation code around every memory operation. This added code must be handled by all downstream components of the compiler toolchain and results in increased overall compilation time. This increase is especially evident in the AMDGPU device compiler and has in a few instances raised the compile time to an unacceptable level. There are a few options if the compile time becomes unacceptable: @@ -90,7 +90,7 @@ If it does not appear, when executed the application will quickly output an ASan * Ensure that the application `llvm-symbolizer` can be executed, and that it is located in `/opt/rocm-/llvm/bin`. This executable is not strictly required, but if found is used to translate ("symbolize") a host-side instruction address into a more useful function name, file name, and line number (assuming the application has been built to include debug information). -There is an environment variable, `ASAN_OPTIONS`, that can be used to adjust the runtime behavior of the ASAN runtime itself. There are more than a hundred "flags" that can be adjusted (see an old list at [flags](https://github.com/google/sanitizers/wiki/AddressSanitizerFlags)) but the default settings are correct and should be used in most cases. It must be noted that these options only affect the host ASAN runtime. The device runtime only currently supports the default settings for the few relevant options. +There is an environment variable, `ASAN_OPTIONS`, that can be used to adjust the runtime behavior of the ASan runtime itself. There are more than a hundred "flags" that can be adjusted (see an old list at [flags](https://github.com/google/sanitizers/wiki/AddressSanitizerFlags)) but the default settings are correct and should be used in most cases. It must be noted that these options only affect the host ASan runtime. The device runtime only currently supports the default settings for the few relevant options. There are two `ASAN_OPTION` flags of particular note. @@ -100,7 +100,7 @@ This tells the ASan runtime to halt the application immediately after detecting * `detect_leaks=0/1 default 1`. -This option directs the ASan runtime to enable the [Leak Sanitizer](https://clang.llvm.org/docs/LeakSanitizer.html) (LSAN). Unfortunately, for heterogeneous applications, this default will result in significant output from the leak sanitizer when the application exits due to allocations made by the language runtime which are not considered to be to be leaks. This output can be avoided by adding `detect_leaks=0` to the `ASAN_OPTIONS`, or alternatively by producing an LSAN suppression file (syntax described [here](https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer)) and activating it with environment variable `LSAN_OPTIONS=suppressions=/path/to/suppression/file`. When using a suppression file, a suppression report is printed by default. The suppression report can be disabled by using the `LSAN_OPTIONS` flag `print_suppressions=0`. +This option directs the ASan runtime to enable the [Leak Sanitizer](https://clang.llvm.org/docs/LeakSanitizer.html) (LSan). Unfortunately, for heterogeneous applications, this default will result in significant output from the leak sanitizer when the application exits due to allocations made by the language runtime which are not considered to be leaks. This output can be avoided by adding `detect_leaks=0` to the `ASAN_OPTIONS`, or alternatively by producing an LSan suppression file (syntax described [here](https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer)) and activating it with environment variable `LSAN_OPTIONS=suppressions=/path/to/suppression/file`. When using a suppression file, a suppression report is printed by default. The suppression report can be disabled by using the `LSAN_OPTIONS` flag `print_suppressions=0`. ## Runtime overhead @@ -139,7 +139,7 @@ instrumentation. ## Runtime reporting -It is not the intention of this document to provide a detailed explanation of all of the types of reports that can be output by the ASan runtime. Instead, the focus is on the differences between the standard reports for CPU issues, and reports for GPU issues. +It is not the intention of this document to provide a detailed explanation of all the types of reports that can be output by the ASan runtime. Instead, the focus is on the differences between the standard reports for CPU issues, and reports for GPU issues. An invalid address detection report for the CPU always starts with @@ -203,7 +203,7 @@ This is solved by setting environment variable `LD_PRELOAD` to the path to the A amdclang++ -print-file-name=libclang_rt.asan-x86_64.so ``` -It is also recommended to set the environment variable `HIP_ENABLE_DEFERRED_LOADING=0` before debugging HIP applications. +You should also set the environment variable `HIP_ENABLE_DEFERRED_LOADING=0` before debugging HIP applications. After starting `rocgdb` breakpoints can be set on the ASan runtime error reporting entry points of interest. For example, if an ASan error report includes @@ -314,7 +314,7 @@ $ ldd mini ``` -This confirms that the address sanitizer runtime is linked in, and the ASAN instrumented version of the runtime libraries are used. +This confirms that the address sanitizer runtime is linked in, and the ASan instrumented version of the runtime libraries are used. Checking the `PATH` yields ```bash @@ -404,10 +404,10 @@ Shadow byte legend (one shadow byte represents 8 application bytes): ### Known issues with using GPU sanitizer -* Red zones must have limited size and it is possible for an invalid access to completely miss a red zone and not be detected. +* Red zones must have limited size. It is possible for an invalid access to completely miss a red zone and not be detected. * Lack of detection or false reports can be caused by the runtime not properly maintaining red zone shadows. * Lack of detection on the GPU might also be due to the implementation not instrumenting accesses to all GPU specific address spaces. For example, in the current implementation accesses to "private" or "stack" variables on the GPU are not instrumented, and accesses to HIP shared variables (also known as "local data store" or "LDS") are also not instrumented. -* It can also be the case that a memory fault is hit for an invalid address even with the instrumentation. This is usually caused by the invalid address being so wild that its shadow address is outside of any memory region, and the fault actually occurs on the access to the shadow address. It is also possible to hit a memory fault for the `NULL` pointer. While address 0 does have a shadow location, it is not poisoned by the runtime. +* It can also be the case that a memory fault is hit for an invalid address even with the instrumentation. This is usually caused by the invalid address being so wild that its shadow address is outside any memory region, and the fault actually occurs on the access to the shadow address. It is also possible to hit a memory fault for the `NULL` pointer. While address 0 does have a shadow location, it is not poisoned by the runtime. diff --git a/docs/index.md b/docs/index.md index b85ab88f3..7eada8714 100644 --- a/docs/index.md +++ b/docs/index.md @@ -96,6 +96,10 @@ Our documentation is organized into the following categories: * [RDNA2](./how-to/tuning-guides/w6000-v620.md) * [Setting up for deep learning with ROCm](./how-to/deep-learning-rocm.md) * [GPU-enabled MPI](./how-to/gpu-enabled-mpi.rst) +* [Using compiler features](./conceptual/compiler-topics.md) + * [Using AddressSanitizer](./conceptual/using-gpu-sanitizer.md) + * [Compiler disambiguation](./conceptual/compiler-disambiguation.md) + * [OpenMP support in ROCm](./about/compatibility/openmp.md) * [System level debugging](./how-to/system-debugging.md) * [GitHub examples](https://github.com/amd/rocm-examples) ::: @@ -111,15 +115,12 @@ Our documentation is organized into the following categories: * [MI250](./conceptual/gpu-arch/mi250.md) * [MI300](./conceptual/gpu-arch/mi300.md) * [GPU memory](./conceptual/gpu-memory.md) -* [Compiler disambiguation](./conceptual/compiler-disambiguation.md) * [File structure (Linux FHS)](./conceptual/file-reorg.md) * [GPU isolation techniques](./conceptual/gpu-isolation.md) -* [LLVM ASan](./conceptual/using-gpu-sanitizer.md) * [Using CMake](./conceptual/cmake-packages.rst) * [ROCm & PCIe atomics](./conceptual/More-about-how-ROCm-uses-PCIe-Atomics.rst) * [Inception v3 with PyTorch](./conceptual/ai-pytorch-inception.md) * [Inference optimization with MIGraphX](./conceptual/ai-migraphx-optimization.md) -* [OpenMP support in ROCm](./about/compatibility/openmp.md) ::: :::: diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 413317901..ebb46ad4e 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -47,12 +47,6 @@ subtrees: - caption: How to entries: - - file: how-to/deep-learning-rocm.md - title: Deep learning - - file: how-to/gpu-enabled-mpi.rst - title: Using MPI - - file: how-to/system-debugging.md - title: Debugging - file: how-to/tuning-guides.md title: Tuning guides subtrees: @@ -63,6 +57,22 @@ subtrees: title: MI200 - file: how-to/tuning-guides/w6000-v620.md title: RDNA2 + - file: how-to/deep-learning-rocm.md + title: Deep learning + - file: how-to/gpu-enabled-mpi.rst + title: Using MPI + - file: conceptual/compiler-topics.md + title: Using compiler features + subtrees: + - entries: + - file: conceptual/using-gpu-sanitizer.md + title: Using AddressSanitizer + - file: conceptual/compiler-disambiguation.md + title: Compiler disambiguation + - file: about/compatibility/openmp.md + title: OpenMP support + - file: how-to/system-debugging.md + title: Debugging - url: https://github.com/amd/rocm-examples title: GitHub examples @@ -100,16 +110,10 @@ subtrees: title: White paper - file: conceptual/gpu-memory.md title: GPU memory - - file: conceptual/compiler-disambiguation.md - title: Compiler disambiguation - - file: about/compatibility/openmp.md - title: OpenMP - file: conceptual/file-reorg.md title: File structure (Linux FHS) - file: conceptual/gpu-isolation.md title: GPU isolation techniques - - file: conceptual/using-gpu-sanitizer.md - title: LLVM ASan - file: conceptual/cmake-packages.rst title: Using CMake - file: conceptual/More-about-how-ROCm-uses-PCIe-Atomics.rst From ba4cb49cbfc680b9a8593db297ecc640d5ff1339 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Fri, 10 May 2024 12:31:19 -0600 Subject: [PATCH 013/175] Merge roc-6.1.x into docs/6.1.1 (#3119) * updates for SWDEV-459863 (#3113) * Created pipelines for the External CI project (#3105) Created pipelines for the following components. AMDMIGraphX hipfort rocSOLVER rocWMMA Co-authored-by: amd-jmacaran Co-authored-by: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> * Update Ubuntu kernel versions in Release Notes and Changelog (#3116) * Update Ubuntu kernel versions for 6.1.1 changelog and release notes * Add link to GitHub issue for ROCm SMI in changelog and RN * Fix ROCm SMI GH issue link * Update kernel versions format * Update kernel version format for readability * Update kernel version brackets --------- Co-authored-by: randyh62 <42045079+randyh62@users.noreply.github.com> Co-authored-by: abhimeda <138710508+abhimeda@users.noreply.github.com> Co-authored-by: amd-jmacaran Co-authored-by: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Co-authored-by: Peter Park --- .azuredevops/components/AMDMIGraphX.yml | 107 ++++++++++++++++++ .azuredevops/components/hipfort.yml | 36 ++++++ .azuredevops/components/rocSOLVER.yml | 49 ++++++++ .azuredevops/components/rocWMMA.yml | 44 +++++++ .azuredevops/tag-builds/AMDMIGraphX.yml | 29 +++++ .azuredevops/tag-builds/hipfort.yml | 29 +++++ .azuredevops/tag-builds/rocSOLVER.yml | 29 +++++ .azuredevops/tag-builds/rocWMMA.yml | 29 +++++ CHANGELOG.md | 10 +- RELEASE.md | 4 +- tools/autotag/templates/rocm_changes/6.1.1.md | 4 +- 11 files changed, 361 insertions(+), 9 deletions(-) create mode 100644 .azuredevops/components/AMDMIGraphX.yml create mode 100644 .azuredevops/components/hipfort.yml create mode 100644 .azuredevops/components/rocSOLVER.yml create mode 100644 .azuredevops/components/rocWMMA.yml create mode 100644 .azuredevops/tag-builds/AMDMIGraphX.yml create mode 100644 .azuredevops/tag-builds/hipfort.yml create mode 100644 .azuredevops/tag-builds/rocSOLVER.yml create mode 100644 .azuredevops/tag-builds/rocWMMA.yml diff --git a/.azuredevops/components/AMDMIGraphX.yml b/.azuredevops/components/AMDMIGraphX.yml new file mode 100644 index 000000000..f2181d1d7 --- /dev/null +++ b/.azuredevops/components/AMDMIGraphX.yml @@ -0,0 +1,107 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - git + - cmake + - ninja-build + - libnuma-dev + - miopen-hip-dev + - openmp-extras + - python3-venv + - rocblas-dev + - libtbb-dev + - nlohmann-json3-dev + - libmsgpack-dev + - libsqlite3-dev + - libprotobuf-dev + - protobuf-compiler + - python3-pybind11 + - composablekernel-dev +- name: pipModules + type: object + default: + - https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz + - onnx==1.14.1 + - numpy==1.21.6 + - typing==3.7.4 + - pytest==6.0.1 + - packaging==23.0 + - protobuf==3.20.2 + +jobs: +- job: AMDMIGraphX + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocm-cmake + branchName: develop + pipelineId: $(rocm-cmake-pipeline-id) + testFailuresOkay: true + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: half + branchName: master + pipelineId: $(half-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocmlir + branchName: develop + pipelineId: $(rocmlir-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: \tag-builds\rocm-cmake + pipelineId: $(rocm-cmake-tagged-pipeline-id) + testFailuresOkay: true + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: \tag-builds\half + pipelineId: $(half-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: \tag-builds\rocmlir + pipelineId: $(rocmlir-tagged-pipeline-id) + - script: 'ls -1R /opt/rocm' + displayName: 'Artifact listing' + - script: 'ls -1R $(Agent.BuildDirectory)/rocm' + displayName: 'Artifact listing' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_BUILD_TYPE=Release + -DAMDGPU_TARGETS=gfx1100 + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;/opt/rocm/llvm;opt/rocm" + -DHALF_INCLUDE_DIR="$(Agent.BuildDirectory)/rocm/include" + -DMIGRAPHX_USE_COMPOSABLEKERNEL=OFF + -DBUILD_TESTING=OFF + -GNinja +# REFERENCE: https://github.com/ROCm/composable_kernel/issues/782 + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipfort.yml b/.azuredevops/components/hipfort.yml new file mode 100644 index 000000000..7beb89e31 --- /dev/null +++ b/.azuredevops/components/hipfort.yml @@ -0,0 +1,36 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - gfortran + - git + - cmake + +jobs: +- job: hipfort + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DHIPFORT_INSTALL_DIR=/tmp/hipfort .. + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocSOLVER.yml b/.azuredevops/components/rocSOLVER.yml new file mode 100644 index 000000000..8f23371c6 --- /dev/null +++ b/.azuredevops/components/rocSOLVER.yml @@ -0,0 +1,49 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocblas + - rocsparse + - hipsparse + - rocsolver + - libsuitesparse-dev + - gfortran + - libfmt-dev + - git + +jobs: +- job: rocSOLVER + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - script: pwd && ls + - script: mkdir build + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" + -DCMAKE_CXX_COMPILER=hipcc + -DUSE_CUDA=OFF + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocWMMA.yml b/.azuredevops/components/rocWMMA.yml new file mode 100644 index 000000000..cd779e24a --- /dev/null +++ b/.azuredevops/components/rocWMMA.yml @@ -0,0 +1,44 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libboost-program-options-dev + - libgtest-dev + - googletest + - libfftw3-dev + - git + - rocblas + +jobs: +- job: rocWMMA + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_BUILD_TYPE=Release + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/tag-builds/AMDMIGraphX.yml b/.azuredevops/tag-builds/AMDMIGraphX.yml new file mode 100644 index 000000000..688b22acb --- /dev/null +++ b/.azuredevops/tag-builds/AMDMIGraphX.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/AMDMIGraphX + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/AMDMIGraphX.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipfort.yml b/.azuredevops/tag-builds/hipfort.yml new file mode 100644 index 000000000..f01dcc119 --- /dev/null +++ b/.azuredevops/tag-builds/hipfort.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/hipfort + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipfort.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocSOLVER.yml b/.azuredevops/tag-builds/rocSOLVER.yml new file mode 100644 index 000000000..7c4580055 --- /dev/null +++ b/.azuredevops/tag-builds/rocSOLVER.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocSOLVER + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocSOLVER.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocWMMA.yml b/.azuredevops/tag-builds/rocWMMA.yml new file mode 100644 index 000000000..0a8bfb0f2 --- /dev/null +++ b/.azuredevops/tag-builds/rocWMMA.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocWMMA + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocWMMA.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f7995dea..f4f8bb9c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and librarie ### OS support -ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel: 5.15 [GA], 6.8 [HWE]). ### AMD SMI @@ -82,7 +82,7 @@ ROCm SMI for ROCm 6.1.1 ##### Known issues -* ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. +* ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. See the issue on [GitHub](https://github.com/ROCm/ROCm/issues/3112). ### Library changes in ROCm 6.1.1 @@ -4259,9 +4259,9 @@ MIGraphX 2.5 for ROCm 5.5.0 ##### Added - Y-Model feature to store tuning information with the optimized model -- Added Python 3.10 bindings +- Added Python 3.10 bindings - Accuracy checker tool based on ONNX Runtime -- ONNX Operators parse_split, and Trilu +- ONNX Operators parse_split, and Trilu - Build support for ROCm MLIR - Added migraphx-driver flag to print optimizations in python (--python) - Added JIT implementation of the Gather and Pad operator which results in better handling of larger tensor sizes. @@ -4275,7 +4275,7 @@ MIGraphX 2.5 for ROCm 5.5.0 ##### Fixed -- Improved parsing Tensorflow Protobuf files +- Improved parsing Tensorflow Protobuf files - Resolved various accuracy issues with some onnx models - Resolved a gcc-12 issue with mivisionx - Improved support for larger sized models and batches diff --git a/RELEASE.md b/RELEASE.md index b4ac827e7..407fd5137 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -13,7 +13,7 @@ ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and librarie ## OS support -ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel: 5.15 [GA], 6.8 [HWE]). ## AMD SMI @@ -74,7 +74,7 @@ ROCm SMI for ROCm 6.1.1 ### Known issues -- ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. +- ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. See the issue on [GitHub](https://github.com/ROCm/ROCm/issues/3112). ## Library changes in ROCm 6.1.1 diff --git a/tools/autotag/templates/rocm_changes/6.1.1.md b/tools/autotag/templates/rocm_changes/6.1.1.md index a67ac7bfd..e9a2e663f 100644 --- a/tools/autotag/templates/rocm_changes/6.1.1.md +++ b/tools/autotag/templates/rocm_changes/6.1.1.md @@ -3,7 +3,7 @@ ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and librarie ### OS support -ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel: 5.15 [GA], 6.8 [HWE]). ### AMD SMI @@ -64,4 +64,4 @@ ROCm SMI for ROCm 6.1.1 #### Known issues -* ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. +* ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. See the issue on [GitHub](https://github.com/ROCm/ROCm/issues/3112). \ No newline at end of file From 7f3846577099fb4f4613eff895c8e767133e0cd0 Mon Sep 17 00:00:00 2001 From: Bence Parajdi Date: Wed, 24 Apr 2024 11:05:01 +0200 Subject: [PATCH 014/175] add cu setting page --- docs/conceptual/setting-cus.rst | 48 +++++++++++++++++++++++++++++++++ docs/sphinx/_toc.yml.in | 2 ++ 2 files changed, 50 insertions(+) create mode 100644 docs/conceptual/setting-cus.rst diff --git a/docs/conceptual/setting-cus.rst b/docs/conceptual/setting-cus.rst new file mode 100644 index 000000000..84607b1b8 --- /dev/null +++ b/docs/conceptual/setting-cus.rst @@ -0,0 +1,48 @@ +.. meta:: + :description: Setting the number of CUs + :keywords: AMD, ROCm, cu, number of cus + +.. _env-variables-reference: + +************************************************************* +Setting the number of CUs +************************************************************* + +When using GPUs to accelerate compute workloads, it becames necessary sometimes +to configure the usage of Compute Units (CU) of the hardware. This is a more advanced +option, so please read this explainer before experimentation. + +The GPU driver provides two environment variables to set the number of CUs used. The +first one is ``HSA_CU_MASK`` and the second one is ``ROC_GLOBAL_CU_MASK``. The main +difference is, is that ``ROC_GLOBAL_CU_MASK`` sets the CU mask on queues created by +the HIP or the OpenCL runtimes. While ``HSA_CU_MASK`` sets the mask on a lower level of +queue creation in the driver, which means that this mask will also be set for queues +being profiled. + +The environment variables have the following syntax: + +:: + + ID = [0-9][0-9]* ex. base 10 numbers + ID_list = (ID | ID-ID)[, (ID | ID-ID)]* ex. 0,2-4,7 + GPU_list = ID_list ex. 0,2-4,7 + CU_list = 0x[0-F]* | ID_list ex. 0x337F OR 0,2-4,7 + CU_Set = GPU_list : CU_list ex. 0,2-4,7:0-15,32-47 OR 0,2-4,7:0x337F + HSA_CU_MASK = CU_Set [; CU_Set]* ex. 0,2-4,7:0-15,32-47; 3-9:0x337F + +The GPU indices are taken post ``ROCR_VISIBLE_DEVICES`` reordering. For GPUs listed +the listed or masked CUs will be enabled, the rest disabled. Unlisted GPUs will not +be affected, their CUs will all be enabled. + +The parsing of the variable is stopped when a syntax error occurs. The erroneus set +and the ones following will be ignored. Repeating GPU or CU ids are a syntax error. +Specifying a mask with no usable CUs (CU_list is 0x0) is a syntax error, for excluding +GPU devices use ``ROCR_VISIBLE_DEVICES``. + +These environment variables only affect ROCm software, not graphics applications. + +It's important to know, that not all CU configurations are valid on all devices. For +instance, on devices where two CUs can be combined together into a WGP (for kernels +running in WGP mode), it is not legal to disable only a single CU in a WGP. `This paper +`_ can provide more information +about what to expect, when disabling CUs. diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index ebb46ad4e..69ccd9336 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -110,6 +110,8 @@ subtrees: title: White paper - file: conceptual/gpu-memory.md title: GPU memory + - file: conceptual/setting-cus + title: Configuring CUs - file: conceptual/file-reorg.md title: File structure (Linux FHS) - file: conceptual/gpu-isolation.md From c0fbd1ca5bbfe954ebed0c38708ef2f85de87120 Mon Sep 17 00:00:00 2001 From: Bence Parajdi Date: Wed, 24 Apr 2024 13:11:21 +0200 Subject: [PATCH 015/175] fix typos --- docs/conceptual/setting-cus.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conceptual/setting-cus.rst b/docs/conceptual/setting-cus.rst index 84607b1b8..327843612 100644 --- a/docs/conceptual/setting-cus.rst +++ b/docs/conceptual/setting-cus.rst @@ -8,9 +8,9 @@ Setting the number of CUs ************************************************************* -When using GPUs to accelerate compute workloads, it becames necessary sometimes +When using GPUs to accelerate compute workloads, it becomes necessary sometimes to configure the usage of Compute Units (CU) of the hardware. This is a more advanced -option, so please read this explainer before experimentation. +option, so please read this page before experimentation. The GPU driver provides two environment variables to set the number of CUs used. The first one is ``HSA_CU_MASK`` and the second one is ``ROC_GLOBAL_CU_MASK``. The main @@ -34,7 +34,7 @@ The GPU indices are taken post ``ROCR_VISIBLE_DEVICES`` reordering. For GPUs lis the listed or masked CUs will be enabled, the rest disabled. Unlisted GPUs will not be affected, their CUs will all be enabled. -The parsing of the variable is stopped when a syntax error occurs. The erroneus set +The parsing of the variable is stopped when a syntax error occurs. The erroneous set and the ones following will be ignored. Repeating GPU or CU ids are a syntax error. Specifying a mask with no usable CUs (CU_list is 0x0) is a syntax error, for excluding GPU devices use ``ROCR_VISIBLE_DEVICES``. From 41da494ef00f95434867eb26f2413fe85c954540 Mon Sep 17 00:00:00 2001 From: Bence Parajdi Date: Wed, 24 Apr 2024 15:58:49 +0200 Subject: [PATCH 016/175] fix review comments --- docs/conceptual/setting-cus.rst | 19 +++++++++---------- docs/sphinx/_toc.yml.in | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/docs/conceptual/setting-cus.rst b/docs/conceptual/setting-cus.rst index 327843612..2bd41368f 100644 --- a/docs/conceptual/setting-cus.rst +++ b/docs/conceptual/setting-cus.rst @@ -8,16 +8,15 @@ Setting the number of CUs ************************************************************* -When using GPUs to accelerate compute workloads, it becomes necessary sometimes +When using GPUs to accelerate compute workloads, it sometimes becomes necessary to configure the usage of Compute Units (CU) of the hardware. This is a more advanced option, so please read this page before experimentation. The GPU driver provides two environment variables to set the number of CUs used. The first one is ``HSA_CU_MASK`` and the second one is ``ROC_GLOBAL_CU_MASK``. The main -difference is, is that ``ROC_GLOBAL_CU_MASK`` sets the CU mask on queues created by +difference is, that ``ROC_GLOBAL_CU_MASK`` sets the CU mask on queues created by the HIP or the OpenCL runtimes. While ``HSA_CU_MASK`` sets the mask on a lower level of -queue creation in the driver, which means that this mask will also be set for queues -being profiled. +queue creation in the driver, this mask will also be set for queues being profiled. The environment variables have the following syntax: @@ -30,19 +29,19 @@ The environment variables have the following syntax: CU_Set = GPU_list : CU_list ex. 0,2-4,7:0-15,32-47 OR 0,2-4,7:0x337F HSA_CU_MASK = CU_Set [; CU_Set]* ex. 0,2-4,7:0-15,32-47; 3-9:0x337F -The GPU indices are taken post ``ROCR_VISIBLE_DEVICES`` reordering. For GPUs listed +The GPU indices are taken post ``ROCR_VISIBLE_DEVICES`` reordering. For GPUs listed, the listed or masked CUs will be enabled, the rest disabled. Unlisted GPUs will not be affected, their CUs will all be enabled. The parsing of the variable is stopped when a syntax error occurs. The erroneous set -and the ones following will be ignored. Repeating GPU or CU ids are a syntax error. -Specifying a mask with no usable CUs (CU_list is 0x0) is a syntax error, for excluding +and the ones following will be ignored. Repeating GPU or CU IDs are a syntax error. +Specifying a mask with no usable CUs (CU_list is 0x0) is a syntax error. For excluding GPU devices use ``ROCR_VISIBLE_DEVICES``. These environment variables only affect ROCm software, not graphics applications. -It's important to know, that not all CU configurations are valid on all devices. For -instance, on devices where two CUs can be combined together into a WGP (for kernels -running in WGP mode), it is not legal to disable only a single CU in a WGP. `This paper +It's important to know that not all CU configurations are valid on all devices. For +instance, on devices where two CUs can be combined into a WGP (for kernels running in +WGP mode), it is not valid to disable only a single CU in a WGP. `This paper `_ can provide more information about what to expect, when disabling CUs. diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 69ccd9336..964d54c7b 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -111,7 +111,7 @@ subtrees: - file: conceptual/gpu-memory.md title: GPU memory - file: conceptual/setting-cus - title: Configuring CUs + title: Setting the number of CUs - file: conceptual/file-reorg.md title: File structure (Linux FHS) - file: conceptual/gpu-isolation.md From 3edc3e9759566c47d383aa5838afad1194b30d58 Mon Sep 17 00:00:00 2001 From: Bence Parajdi Date: Tue, 30 Apr 2024 12:45:13 +0200 Subject: [PATCH 017/175] add new page to index.md --- docs/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/index.md b/docs/index.md index 7eada8714..7f0f59f59 100644 --- a/docs/index.md +++ b/docs/index.md @@ -115,6 +115,7 @@ Our documentation is organized into the following categories: * [MI250](./conceptual/gpu-arch/mi250.md) * [MI300](./conceptual/gpu-arch/mi300.md) * [GPU memory](./conceptual/gpu-memory.md) +* [Setting the number of CUs](./conceptual/setting-cus.md) * [File structure (Linux FHS)](./conceptual/file-reorg.md) * [GPU isolation techniques](./conceptual/gpu-isolation.md) * [Using CMake](./conceptual/cmake-packages.rst) From 06c960aa9764c5e2289c0cc88b8651aa76c4965e Mon Sep 17 00:00:00 2001 From: Bence Parajdi <148080361+parbenc@users.noreply.github.com> Date: Mon, 13 May 2024 14:58:52 +0200 Subject: [PATCH 018/175] Update docs/conceptual/setting-cus.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> --- docs/conceptual/setting-cus.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/conceptual/setting-cus.rst b/docs/conceptual/setting-cus.rst index 2bd41368f..fa116fd67 100644 --- a/docs/conceptual/setting-cus.rst +++ b/docs/conceptual/setting-cus.rst @@ -9,7 +9,7 @@ Setting the number of CUs ************************************************************* When using GPUs to accelerate compute workloads, it sometimes becomes necessary -to configure the usage of Compute Units (CU) of the hardware. This is a more advanced +to configure the hardware's usage of Compute Units (CU). This is a more advanced option, so please read this page before experimentation. The GPU driver provides two environment variables to set the number of CUs used. The From d86c23a8472b518ff59ae5302c0a7344a1daac6a Mon Sep 17 00:00:00 2001 From: Bence Parajdi Date: Tue, 14 May 2024 10:08:44 +0200 Subject: [PATCH 019/175] remove unnecessary comma --- docs/conceptual/setting-cus.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conceptual/setting-cus.rst b/docs/conceptual/setting-cus.rst index fa116fd67..91fa7cc89 100644 --- a/docs/conceptual/setting-cus.rst +++ b/docs/conceptual/setting-cus.rst @@ -14,9 +14,9 @@ option, so please read this page before experimentation. The GPU driver provides two environment variables to set the number of CUs used. The first one is ``HSA_CU_MASK`` and the second one is ``ROC_GLOBAL_CU_MASK``. The main -difference is, that ``ROC_GLOBAL_CU_MASK`` sets the CU mask on queues created by -the HIP or the OpenCL runtimes. While ``HSA_CU_MASK`` sets the mask on a lower level of -queue creation in the driver, this mask will also be set for queues being profiled. +difference is that ``ROC_GLOBAL_CU_MASK`` sets the CU mask on queues created by the HIP +or the OpenCL runtimes. While ``HSA_CU_MASK`` sets the mask on a lower level of queue +creation in the driver, this mask will also be set for queues being profiled. The environment variables have the following syntax: From c12703cfbb966b3692737b5e7dfddfdcaed61a3b Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 14 May 2024 12:11:57 -0700 Subject: [PATCH 020/175] Update What is ROCm?: remove RCP from components and change repo links to ROCm docs (#3129) * Remove Radeon Compute Profiler from list of components * Update ROCm CMake and ROCr links --- docs/what-is-rocm.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index 9994bb487..b76ab2445 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -99,10 +99,9 @@ Tools ":doc:`AMD SMI `", "C library for Linux that provides a user space interface for applications to monitor and control AMD devices" ":doc:`HIPIFY `", "Translates CUDA source code into portable HIP C++" - "`Radeon Compute Profiler (RCP) `_ ", "Performance analysis tool that gathers data from the API runtime and GPU for OpenCL and ROCm/HSA applications" "`RocBandwidthTest `_ ", "Captures the performance characteristics of buffer copying and kernel read/write operations" ":doc:`ROCmCC <./reference/rocmcc>`", "Clang/LLVM-based compiler" - "`ROCm CMake `_ ", "Collection of CMake modules for common build and development tasks" + ":doc:`ROCm CMake `", "Collection of CMake modules for common build and development tasks" ":doc:`ROCm Data Center Tool `", "Simplifies administration and addresses key infrastructure challenges in AMD GPUs in cluster and data-center environments" "`ROCm Debug Agent (ROCdebug-agent) `_ ", "Prints the state of all AMD GPU wavefronts that caused a queue error by sending a SIGQUIT signal to the process while the program is running" ":doc:`ROCm Debugger (ROCgdb) `", "Source-level debugger for Linux, based on the GNU Debugger (GDB)" @@ -133,4 +132,4 @@ Runtimes "`AMD Common Language Runtime (CLR) `_", "Contains source code for AMD's common language runtimes: :doc:`HIP ` and OpenCL" ":doc:`HIP `", "AMD's GPU programming language extension and the GPU runtime" - "`ROCR-Runtime `_ ", "User-mode API interfaces and libraries necessary for host applications to launch compute kernels on available HSA ROCm kernel agents" + "`ROCR-Runtime `_", "User-mode API interfaces and libraries necessary for host applications to launch compute kernels on available HSA ROCm kernel agents" From d18b2339de47d389b3f5bdaae00d15c01145ca41 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Wed, 15 May 2024 11:38:49 -0400 Subject: [PATCH 021/175] Add build pools, change gpu targets, and build tests (#3115) To best determine hardware specs per repo, added more build pool options with varying number of vCPUs, RAM size, etc. and will kick off builds with test targets enabled to determine long-term cost values. Co-authored-by: alexxu-amd --- .azuredevops/components/AMDMIGraphX.yml | 52 +++++------ .azuredevops/components/HIP.yml | 76 ++++++---------- .azuredevops/components/HIPIFY.yml | 21 +++-- .azuredevops/components/MIOpen.yml | 28 +++--- .azuredevops/components/MIVisionX.yml | 5 +- .azuredevops/components/ROCR-Runtime.yml | 31 +++---- .../components/ROCT-Thunk-Interface.yml | 4 +- .azuredevops/components/ROCdbgapi.yml | 4 +- .../components/ROCmValidationSuite.yml | 5 +- .azuredevops/components/amdsmi.yml | 4 +- .azuredevops/components/composable_kernel.yml | 12 ++- .azuredevops/components/copyHIP.yml | 3 +- .azuredevops/components/half.yml | 9 +- .azuredevops/components/hipBLAS.yml | 52 +++++++---- .azuredevops/components/hipBLASLt.yml | 8 +- .azuredevops/components/hipCUB.yml | 12 +-- .azuredevops/components/hipFFT.yml | 12 ++- .azuredevops/components/hipRAND.yml | 10 +-- .azuredevops/components/hipSOLVER.yml | 17 ++-- .azuredevops/components/hipSPARSE.yml | 17 ++-- .azuredevops/components/hipSPARSELt.yml | 9 +- .azuredevops/components/hipTensor.yml | 35 ++++---- .azuredevops/components/hipfort.yml | 4 +- .azuredevops/components/llvm-project.yml | 23 ++--- .azuredevops/components/rccl.yml | 12 ++- .azuredevops/components/rdc.yml | 9 +- .azuredevops/components/rocALUTION.yml | 15 ++-- .azuredevops/components/rocBLAS.yml | 20 +++-- .azuredevops/components/rocDecode.yml | 4 +- .azuredevops/components/rocFFT.yml | 13 +-- .azuredevops/components/rocMLIR.yml | 4 +- .azuredevops/components/rocPRIM.yml | 11 +-- .azuredevops/components/rocRAND.yml | 11 +-- .azuredevops/components/rocSOLVER.yml | 36 ++++++-- .azuredevops/components/rocSPARSE.yml | 51 +++++++++++ .azuredevops/components/rocThrust.yml | 10 ++- .azuredevops/components/rocWMMA.yml | 13 ++- .azuredevops/components/rocgdb.yml | 4 +- .azuredevops/components/rocm-cmake.yml | 6 +- .azuredevops/components/rocm-core.yml | 2 +- .azuredevops/components/rocm-examples.yml | 2 +- .../components/rocm_bandwidth_test.yml | 4 +- .azuredevops/components/rocm_smi_lib.yml | 2 +- .azuredevops/components/rocminfo.yml | 21 ++--- .../components/rocprofiler-register.yml | 2 +- .azuredevops/components/rocprofiler.yml | 7 +- .azuredevops/components/rocr_debug_agent.yml | 4 +- .azuredevops/components/roctracer.yml | 23 ++--- .azuredevops/components/rpp.yml | 10 +-- .azuredevops/dependencies/half560.yml | 37 ++++++++ .azuredevops/dependencies/lapack.yml | 42 +++++++++ .azuredevops/tag-builds/AMDMIGraphX.yml | 4 +- .azuredevops/tag-builds/HIP.yml | 4 +- .azuredevops/tag-builds/HIPIFY.yml | 4 +- .azuredevops/tag-builds/MIOpen.yml | 4 +- .azuredevops/tag-builds/MIVisionX.yml | 4 +- .azuredevops/tag-builds/ROCR-Runtime.yml | 4 +- .../tag-builds/ROCT-Thunk-Interface.yml | 4 +- .azuredevops/tag-builds/ROCdbgapi.yml | 4 +- .../tag-builds/ROCmValidationSuite.yml | 4 +- .azuredevops/tag-builds/amdsmi.yml | 4 +- .azuredevops/tag-builds/composable_kernel.yml | 4 +- .azuredevops/tag-builds/half.yml | 4 +- .azuredevops/tag-builds/half560.yml | 29 ++++++ .azuredevops/tag-builds/hipBLAS.yml | 4 +- .azuredevops/tag-builds/hipBLASLt.yml | 4 +- .azuredevops/tag-builds/hipCUB.yml | 4 +- .azuredevops/tag-builds/hipFFT.yml | 4 +- .azuredevops/tag-builds/hipRAND.yml | 4 +- .azuredevops/tag-builds/hipSOLVER.yml | 4 +- .azuredevops/tag-builds/hipSPARSE.yml | 4 +- .azuredevops/tag-builds/hipSPARSELt.yml | 4 +- .azuredevops/tag-builds/hipTensor.yml | 4 +- .azuredevops/tag-builds/hipfort.yml | 4 +- .azuredevops/tag-builds/lapack.yml | 29 ++++++ .azuredevops/tag-builds/llvm-project.yml | 4 +- .azuredevops/tag-builds/rccl.yml | 4 +- .azuredevops/tag-builds/rdc.yml | 4 +- .azuredevops/tag-builds/rocALUTION.yml | 4 +- .azuredevops/tag-builds/rocBLAS.yml | 4 +- .azuredevops/tag-builds/rocDecode.yml | 4 +- .azuredevops/tag-builds/rocFFT.yml | 4 +- .azuredevops/tag-builds/rocMLIR.yml | 4 +- .azuredevops/tag-builds/rocPRIM.yml | 4 +- .azuredevops/tag-builds/rocRAND.yml | 4 +- .azuredevops/tag-builds/rocSOLVER.yml | 4 +- .azuredevops/tag-builds/rocSPARSE.yml | 29 ++++++ .azuredevops/tag-builds/rocThrust.yml | 4 +- .azuredevops/tag-builds/rocWMMA.yml | 4 +- .azuredevops/tag-builds/rocgdb.yml | 4 +- .azuredevops/tag-builds/rocm-cmake.yml | 4 +- .azuredevops/tag-builds/rocm-core.yml | 4 +- .../tag-builds/rocm_bandwidth_test.yml | 4 +- .azuredevops/tag-builds/rocm_smi_lib.yml | 4 +- .azuredevops/tag-builds/rocminfo.yml | 4 +- .../tag-builds/rocprofiler-register.yml | 4 +- .azuredevops/tag-builds/rocprofiler.yml | 4 +- .azuredevops/tag-builds/rocr_debug_agent.yml | 4 +- .azuredevops/tag-builds/roctracer.yml | 4 +- .azuredevops/tag-builds/rpp.yml | 4 +- .../templates/steps/artifact-download.yml | 43 +++++++-- .../templates/steps/build-autotools.yml | 3 - ...ependencies.yml => dependencies-other.yml} | 3 +- .../templates/steps/dependencies-rocm.yml | 88 +++++++++++++++++++ .azuredevops/variables-global.yml | 16 +++- 105 files changed, 824 insertions(+), 428 deletions(-) create mode 100644 .azuredevops/components/rocSPARSE.yml create mode 100644 .azuredevops/dependencies/half560.yml create mode 100644 .azuredevops/dependencies/lapack.yml create mode 100644 .azuredevops/tag-builds/half560.yml create mode 100644 .azuredevops/tag-builds/lapack.yml create mode 100644 .azuredevops/tag-builds/rocSPARSE.yml rename .azuredevops/templates/steps/{dependencies.yml => dependencies-other.yml} (87%) create mode 100644 .azuredevops/templates/steps/dependencies-rocm.yml diff --git a/.azuredevops/components/AMDMIGraphX.yml b/.azuredevops/components/AMDMIGraphX.yml index f2181d1d7..04b941122 100644 --- a/.azuredevops/components/AMDMIGraphX.yml +++ b/.azuredevops/components/AMDMIGraphX.yml @@ -34,19 +34,24 @@ parameters: - pytest==6.0.1 - packaging==23.0 - protobuf==3.20.2 +- name: rocmDependencies + type: object + default: + - rocm-cmake + - rocMLIR jobs: - job: AMDMIGraphX variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} @@ -54,39 +59,24 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} +# half version should be fixed to 5.6.0 + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml + parameters: + dependencySource: fixed + fixedComponentName: half + fixedPipelineIdentifier: $(half560-pipeline-id) # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: rocm-cmake - branchName: develop - pipelineId: $(rocm-cmake-pipeline-id) - testFailuresOkay: true - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: half - branchName: master - pipelineId: $(half-pipeline-id) - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: rocmlir - branchName: develop - pipelineId: $(rocmlir-pipeline-id) + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: staging # manual build case: triggered by ROCm/ROCm repo - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: \tag-builds\rocm-cmake - pipelineId: $(rocm-cmake-tagged-pipeline-id) - testFailuresOkay: true - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: \tag-builds\half - pipelineId: $(half-tagged-pipeline-id) - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: \tag-builds\rocmlir - pipelineId: $(rocmlir-tagged-pipeline-id) + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: tag-builds - script: 'ls -1R /opt/rocm' displayName: 'Artifact listing' - script: 'ls -1R $(Agent.BuildDirectory)/rocm' @@ -97,11 +87,11 @@ jobs: -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang -DCMAKE_BUILD_TYPE=Release - -DAMDGPU_TARGETS=gfx1100 + -DAMDGPU_TARGETS=gfx1030;gfx1100 -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;/opt/rocm/llvm;opt/rocm" -DHALF_INCLUDE_DIR="$(Agent.BuildDirectory)/rocm/include" -DMIGRAPHX_USE_COMPOSABLEKERNEL=OFF - -DBUILD_TESTING=OFF + -DBUILD_TESTING=ON -GNinja # REFERENCE: https://github.com/ROCm/composable_kernel/issues/782 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/HIP.yml b/.azuredevops/components/HIP.yml index 5d78f0144..7ab0ba6e2 100644 --- a/.azuredevops/components/HIP.yml +++ b/.azuredevops/components/HIP.yml @@ -14,6 +14,17 @@ parameters: type: object default: - CppHeaderParser +- name: rocmDependenciesAMD + type: object + default: + - llvm-project + - ROCT-Thunk-Interface + - ROCR-Runtime + - rocprofiler-register +- name: rocmDependenciesNvidia + type: object + default: + - llvm-project # hip and clr are tightly-coupled # run this same template for both repos @@ -27,11 +38,11 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} @@ -44,48 +55,18 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: matching_repo -# download tasks has built in 4x retry download count -# these will download last passing build for that branch # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: llvm-project - branchName: amd-staging - pipelineId: $(llvm-project-pipeline-id) - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: ROCT-Thunk-Interface - branchName: master - pipelineId: $(roct-thunk-interface-pipeline-id) - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: ROCR-Runtime - branchName: master - pipelineId: $(rocr-runtime-pipeline-id) - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: rocprofiler-register - branchName: amd-mainline - pipelineId: $(rocprofiler-register-pipeline-id) + dependencyList: ${{ parameters.rocmDependenciesAMD }} + dependencySource: staging # manual build case: triggered by ROCm/ROCm repo - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: llvm-project - pipelineId: $(llvm-project-tagged-pipeline-id) - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: ROCT-Thunk-Interface - pipelineId: $(roct-thunk-interface-tagged-pipeline-id) - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: ROCR-Runtime - pipelineId: $(rocr-runtime-tagged-pipeline-id) - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: rocprofiler-register - pipelineId: $(rocprofiler-register-tagged-pipeline-id) + dependencyList: ${{ parameters.rocmDependenciesAMD }} + dependencySource: tag-builds - script: 'ls -1R $(Agent.BuildDirectory)/rocm' displayName: 'Artifact listing' # compile clr @@ -111,11 +92,11 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} @@ -131,21 +112,18 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: hipother_repo -# download tasks has built in 4x retry download count -# these will download last passing build for that branch # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: llvm-project - branchName: amd-staging - pipelineId: $(llvm-project-pipeline-id) + dependencyList: ${{ parameters.rocmDependenciesNvidia }} + dependencySource: staging # manual build case: triggered by ROCm/ROCm repo - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: llvm-project - pipelineId: $(llvm-project-tagged-pipeline-id) + dependencyList: ${{ parameters.rocmDependenciesNvidia }} + dependencySource: tag-builds - script: 'ls -1R $(Agent.BuildDirectory)/rocm' displayName: 'Artifact listing' # compile clr diff --git a/.azuredevops/components/HIPIFY.yml b/.azuredevops/components/HIPIFY.yml index 16ae0ff41..c1cd29e7a 100644 --- a/.azuredevops/components/HIPIFY.yml +++ b/.azuredevops/components/HIPIFY.yml @@ -11,6 +11,10 @@ parameters: - cmake - ninja-build - libnuma-dev +- name: rocmDependencies + type: object + default: + - llvm-project jobs: - job: HIPIFY @@ -18,11 +22,11 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -31,17 +35,16 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: llvm-project - branchName: amd-staging - pipelineId: $(llvm-project-pipeline-id) + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: staging # manual build case: triggered by ROCm/ROCm repo - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: \tag-builds\llvm-project - pipelineId: $(llvm-project-tagged-pipeline-id) + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- diff --git a/.azuredevops/components/MIOpen.yml b/.azuredevops/components/MIOpen.yml index 5a2424eee..4418587e3 100644 --- a/.azuredevops/components/MIOpen.yml +++ b/.azuredevops/components/MIOpen.yml @@ -19,23 +19,27 @@ parameters: - libbz2-dev - nlohmann-json3-dev - libgtest-dev +- name: rocmDependencies + type: object + default: + - rocMLIR jobs: - job: MIOpen variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} # The default boost library from apt is 1.74, which does not satisfy MIOpen's build requirement (1.79+) - # Upgrade boost from apt by following https://launchpad.net/~mhier/+archive/ubuntu/libboost-latest + # Upgrade boost from apt by following https://launchpad.net/~mhier/+archive/ubuntu/libboost-latest - task: Bash@3 displayName: 'update boost version' inputs: @@ -50,19 +54,18 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - # CI case: download latest default branch build +# CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: rocmlir - branchName: develop - pipelineId: $(rocmlir-pipeline-id) - # manual build case: triggered by ROCm/ROCm repo + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: staging +# manual build case: triggered by ROCm/ROCm repo - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: \tag-builds\rocmlir - pipelineId: $(rocmlir-tagged-pipeline-id) + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -73,5 +76,6 @@ jobs: -DMIOPEN_ENABLE_AI_KERNEL_TUNING=OFF -DMIOPEN_ENABLE_AI_IMMED_MODE_FALLBACK=OFF -DCMAKE_BUILD_TYPE=Release + -DBUILD_TESTING=ON -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/MIVisionX.yml b/.azuredevops/components/MIVisionX.yml index 20340c9d9..24fdac759 100644 --- a/.azuredevops/components/MIVisionX.yml +++ b/.azuredevops/components/MIVisionX.yml @@ -54,13 +54,14 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} diff --git a/.azuredevops/components/ROCR-Runtime.yml b/.azuredevops/components/ROCR-Runtime.yml index 4e388407f..e7a345fd5 100644 --- a/.azuredevops/components/ROCR-Runtime.yml +++ b/.azuredevops/components/ROCR-Runtime.yml @@ -12,6 +12,11 @@ parameters: - g++ - libdrm-dev - libnuma-dev +- name: rocmDependencies + type: object + default: + - llvm-project + - ROCT-Thunk-Interface jobs: - job: ROCR_Runtime @@ -19,11 +24,11 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -32,26 +37,16 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: llvm-project - branchName: amd-staging - pipelineId: $(llvm-project-pipeline-id) - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: ROCT-Thunk-Interface - branchName: master - pipelineId: $(roct-thunk-interface-pipeline-id) + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: staging # manual build case: triggered by ROCm/ROCm repo - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: llvm-project - pipelineId: $(llvm-project-tagged-pipeline-id) - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml - parameters: - componentName: ROCT-Thunk-Interface - pipelineId: $(roct-thunk-interface-tagged-pipeline-id) + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: tag-builds - script: 'ls -1R $(Agent.BuildDirectory)/rocm' displayName: 'Artifact listing' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml diff --git a/.azuredevops/components/ROCT-Thunk-Interface.yml b/.azuredevops/components/ROCT-Thunk-Interface.yml index c3d51f2e7..cc56b23c8 100644 --- a/.azuredevops/components/ROCT-Thunk-Interface.yml +++ b/.azuredevops/components/ROCT-Thunk-Interface.yml @@ -17,11 +17,11 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml diff --git a/.azuredevops/components/ROCdbgapi.yml b/.azuredevops/components/ROCdbgapi.yml index dd930c7c3..05317a0e1 100644 --- a/.azuredevops/components/ROCdbgapi.yml +++ b/.azuredevops/components/ROCdbgapi.yml @@ -17,13 +17,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml diff --git a/.azuredevops/components/ROCmValidationSuite.yml b/.azuredevops/components/ROCmValidationSuite.yml index 3c7f26ab9..40d75b3eb 100644 --- a/.azuredevops/components/ROCmValidationSuite.yml +++ b/.azuredevops/components/ROCmValidationSuite.yml @@ -23,13 +23,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -42,6 +42,5 @@ jobs: -DROCM_PATH=/opt/rocm -DCMAKE_PREFIX_PATH=/opt/rocm -DCPACK_PACKAGING_INSTALL_PREFIX='$(Build.BinariesDirectory)' - -DAMDGPU_TARGETS=gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/amdsmi.yml b/.azuredevops/components/amdsmi.yml index c8b7ee794..2bb0c4536 100644 --- a/.azuredevops/components/amdsmi.yml +++ b/.azuredevops/components/amdsmi.yml @@ -16,11 +16,11 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index ba872d184..cd1302e48 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -14,17 +14,16 @@ parameters: jobs: - job: composable_kernel - timeoutInMinutes: 2400 variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.ULTRA_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -34,10 +33,9 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DCMAKE_BUILD_TYPE=Release - -DBUILD_CLIENTS=ON - -DGPU_TARGETS=gfx1100 + -DGPU_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - \ No newline at end of file diff --git a/.azuredevops/components/copyHIP.yml b/.azuredevops/components/copyHIP.yml index a5c0ab8ba..9ea7ad7d3 100644 --- a/.azuredevops/components/copyHIP.yml +++ b/.azuredevops/components/copyHIP.yml @@ -15,7 +15,7 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: @@ -24,6 +24,7 @@ jobs: - checkout: none - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml parameters: + useDefaultBranch: false componentName: HIP branchName: develop - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml diff --git a/.azuredevops/components/half.yml b/.azuredevops/components/half.yml index 1496d21ce..a8e7e3677 100644 --- a/.azuredevops/components/half.yml +++ b/.azuredevops/components/half.yml @@ -17,13 +17,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -33,9 +33,6 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc - -DCMAKE_BUILD_TYPE=Release - -DBUILD_CLIENTS=ON - -L + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipBLAS.yml b/.azuredevops/components/hipBLAS.yml index 12e349ef8..57a0ad248 100644 --- a/.azuredevops/components/hipBLAS.yml +++ b/.azuredevops/components/hipBLAS.yml @@ -10,46 +10,66 @@ parameters: default: - cmake - ninja-build - - rocblas + - rocblas-dev - rocsparse - - rocsolver + - rocsolver-dev - gfortran - - libopenblas-dev + - googletest - git + - libgtest-dev + - wget jobs: - job: hipBLAS variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + - name: LD_LIBRARY_PATH + value: '/lib:/usr/lib:/usr/local/lib' + pool: ${{ variables.LOW_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - 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 }} -# build external gtest and lapack - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - parameters: - componentName: external - cmakeBuildDir: 'deps/build' - installDir: '$(Pipeline.Workspace)/deps-install' + - task: Bash@3 + displayName: 'Download AOCL' + inputs: + targetType: inline + script: wget -nv https://download.amd.com/developer/eula/aocl/aocl-4-1/aocl-linux-aocc-4.1.0_1_amd64.deb + workingDirectory: '$(Pipeline.Workspace)' + - task: Bash@3 + displayName: 'Install AOCL' + inputs: + targetType: inline + script: sudo apt install --yes ./aocl-linux-aocc-4.1.0_1_amd64.deb + workingDirectory: '$(Pipeline.Workspace)' + - task: Bash@3 + displayName: 'ldconfig' + inputs: + targetType: inline + script: sudo ldconfig + workingDirectory: '/usr/local/lib' + - script: 'ls -1R /usr/local' + displayName: 'Artifact listing' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake - -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" + -DCMAKE_PREFIX_PATH=/opt/rocm -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=hipcc - -DCMAKE_C_COMPILER=hipcc - -DAMDGPU_TARGETS=gfx1100 + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DAMDGPU_TARGETS=gfx1030;gfx1100 -DHIP_PLATFORM=amd + -DBUILD_CLIENTS_TESTS=ON + -DBUILD_CLIENTS_BENCHMARKS=OFF + -DBUILD_CLIENTS_SAMPLES=OFF + -DCPACK_SET_DESTDIR=OFF -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipBLASLt.yml b/.azuredevops/components/hipBLASLt.yml index b03da47bf..facb51dc2 100644 --- a/.azuredevops/components/hipBLASLt.yml +++ b/.azuredevops/components/hipBLASLt.yml @@ -24,13 +24,13 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} @@ -42,8 +42,8 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=hipcc - -DCMAKE_C_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DAMDGPU_TARGETS=gfx90a -DTensile_LOGIC= -DTensile_CPU_THREADS= diff --git a/.azuredevops/components/hipCUB.yml b/.azuredevops/components/hipCUB.yml index 921db9fe3..cfe9dbe05 100644 --- a/.azuredevops/components/hipCUB.yml +++ b/.azuredevops/components/hipCUB.yml @@ -9,6 +9,7 @@ parameters: type: object default: - cmake + - ninja-build - rocprim - googletest - git @@ -18,14 +19,13 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -35,8 +35,10 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DCMAKE_PREFIX_PATH="/opt/rocm" -DBUILD_TEST=ON - -DAMDGPU_TARGETS=gfx1100 + -DAMDGPU_TARGETS=gfx1030;gfx1100 + -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipFFT.yml b/.azuredevops/components/hipFFT.yml index f20dfc304..7b2ef784c 100644 --- a/.azuredevops/components/hipFFT.yml +++ b/.azuredevops/components/hipFFT.yml @@ -23,13 +23,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -39,9 +39,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DCMAKE_BUILD_TYPE=Release - -DBUILD_CLIENTS=ON + -DAMDGPU_TARGETS=gfx1030;gfx1100 + -DBUILD_CLIENTS_TESTS=ON + -DBUILD_CLIENTS_BENCH=OFF + -DBUILD_CLIENTS_SAMPLES=OFF -L -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipRAND.yml b/.azuredevops/components/hipRAND.yml index ef61cb5e8..5ff3ea80b 100644 --- a/.azuredevops/components/hipRAND.yml +++ b/.azuredevops/components/hipRAND.yml @@ -20,13 +20,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -36,13 +36,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc - -DCMAKE_C_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DBUILD_TEST=ON -DCMAKE_MODULE_PATH="/opt/rocm/lib/cmake/hip" -DCMAKE_PREFIX_PATH=/opt/rocm -DCMAKE_BUILD_TYPE=Release - -DAMDGPU_TARGETS=gfx1100 + -DAMDGPU_TARGETS=gfx1030;gfx1100 -DHIP_COMPILER=clang -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipSOLVER.yml b/.azuredevops/components/hipSOLVER.yml index b1913188d..8c1884d11 100644 --- a/.azuredevops/components/hipSOLVER.yml +++ b/.azuredevops/components/hipSOLVER.yml @@ -17,6 +17,8 @@ parameters: - libsuitesparse-dev - gfortran - git + - googletest + - libgtest-dev jobs: - job: hipSOLVER @@ -24,13 +26,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -43,15 +45,18 @@ jobs: componentName: external cmakeBuildDir: 'deps/build' installDir: '$(Pipeline.Workspace)/deps-install' - extraBuildFlags: -DBUILD_BOOST=OFF + extraBuildFlags: >- + -DBUILD_BOOST=OFF + -DBUILD_GTEST=OFF + -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=hipcc - -DCMAKE_C_COMPILER=hipcc - -DAMDGPU_TARGETS=gfx1100 + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang + -DAMDGPU_TARGETS=gfx1030;gfx1100 -DBUILD_CLIENTS_TESTS=ON -DUSE_CUDA=OFF -GNinja diff --git a/.azuredevops/components/hipSPARSE.yml b/.azuredevops/components/hipSPARSE.yml index 093ba3d85..0ab8353b4 100644 --- a/.azuredevops/components/hipSPARSE.yml +++ b/.azuredevops/components/hipSPARSE.yml @@ -9,25 +9,28 @@ parameters: type: object default: - cmake + - ninja-build - libboost-program-options-dev - googletest - libfftw3-dev - rocsparse - git - gfortran + - libgtest-dev + jobs: - job: hipSPARSE variables: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -37,8 +40,12 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DCMAKE_BUILD_TYPE=Release - -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" - -DBUILD_TESTS=ON + -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" + -DBUILD_CLIENTS_TESTS=ON + -DBUILD_CLIENTS_SAMPLES=OFF + -DBUILD_CLIENTS_BENCHMARKS=OFF + -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipSPARSELt.yml b/.azuredevops/components/hipSPARSELt.yml index cfdc736c6..d94677721 100644 --- a/.azuredevops/components/hipSPARSELt.yml +++ b/.azuredevops/components/hipSPARSELt.yml @@ -24,14 +24,13 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} @@ -43,8 +42,8 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=hipcc - -DCMAKE_C_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DAMDGPU_TARGETS=all -DTensile_LOGIC= -DTensile_CPU_THREADS= diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 1b2a44a9f..1eebc0f95 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -12,49 +12,50 @@ parameters: - ninja-build - composablekernel-dev - git +- name: rocmDependencies + type: object + default: + - llvm-project jobs: - job: hipTensor variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - 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 }} - # CI case: download latest default branch build +# CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: llvm-project - branchName: amd-staging - pipelineId: $(llvm-project-pipeline-id) - # manual build case: triggered by ROCm/ROCm repo + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: staging +# manual build case: triggered by ROCm/ROCm repo - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: \tag-builds\llvm-project - pipelineId: $(llvm-project-tagged-pipeline-id) + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc - -DCMAKE_CC_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm" -DROCM_PATH="$(Agent.BuildDirectory)/rocm" -DCMAKE_BUILD_TYPE=Release - -DHIPTENSOR_BUILD_TESTS=OFF - -DAMDGPU_TARGETS=gfx1100 + -DHIPTENSOR_BUILD_TESTS=ON + -DAMDGPU_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - \ No newline at end of file diff --git a/.azuredevops/components/hipfort.yml b/.azuredevops/components/hipfort.yml index 7beb89e31..b9c84f110 100644 --- a/.azuredevops/components/hipfort.yml +++ b/.azuredevops/components/hipfort.yml @@ -18,11 +18,11 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml diff --git a/.azuredevops/components/llvm-project.yml b/.azuredevops/components/llvm-project.yml index c2c3a76bd..2d00562cb 100644 --- a/.azuredevops/components/llvm-project.yml +++ b/.azuredevops/components/llvm-project.yml @@ -13,6 +13,10 @@ parameters: - libnuma-dev - ninja-build - python-is-python3 +- name: rocmDependencies + type: object + default: + - rocm-cmake jobs: - job: llvm_project @@ -21,11 +25,11 @@ jobs: - template: /.azuredevops/variables-global.yml - name: HIP_DEVICE_LIB_PATH value: '$(Build.BinariesDirectory)/amdgcn/bitcode' - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -34,19 +38,16 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: rocm-cmake - branchName: develop - pipelineId: $(rocm-cmake-pipeline-id) - testFailuresOkay: true + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: staging # manual build case: triggered by ROCm/ROCm repo - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: rocm-cmake - pipelineId: $(rocm-cmake-tagged-pipeline-id) - testFailuresOkay: true + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: componentName: rocm-llvm diff --git a/.azuredevops/components/rccl.yml b/.azuredevops/components/rccl.yml index 8299ee068..82cd89df4 100644 --- a/.azuredevops/components/rccl.yml +++ b/.azuredevops/components/rccl.yml @@ -14,18 +14,19 @@ parameters: - libfftw3-dev - git - ninja-build + jobs: - job: rccl variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -35,8 +36,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang -DCMAKE_BUILD_TYPE=Release - -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" + -DBUILD_TESTS=ON + -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" + -DAMDGPU_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rdc.yml b/.azuredevops/components/rdc.yml index 4ac7d8031..2f596e5b2 100644 --- a/.azuredevops/components/rdc.yml +++ b/.azuredevops/components/rdc.yml @@ -20,17 +20,16 @@ parameters: jobs: - job: rdc - timeoutInMinutes: 200 variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -55,11 +54,9 @@ jobs: -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -GNinja - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- -DGRPC_ROOT="$(Build.SourcesDirectory)/bin" - + -DBUILD_TESTS=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - \ No newline at end of file diff --git a/.azuredevops/components/rocALUTION.yml b/.azuredevops/components/rocALUTION.yml index b88c319a2..1f663224a 100644 --- a/.azuredevops/components/rocALUTION.yml +++ b/.azuredevops/components/rocALUTION.yml @@ -22,13 +22,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -38,10 +38,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang -DCMAKE_BUILD_TYPE=Release - -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" - -DBUILD_TESTS=ON + -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" + -DAMDGPU_TARGETS=gfx1030;gfx1100 + -DBUILD_CLIENTS_TESTS=ON + -DBUILD_CLIENTS_BENCHMARKS=OFF + -DBUILD_CLIENTS_SAMPLES=OFF -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - diff --git a/.azuredevops/components/rocBLAS.yml b/.azuredevops/components/rocBLAS.yml index 7caf96ab0..36315e900 100644 --- a/.azuredevops/components/rocBLAS.yml +++ b/.azuredevops/components/rocBLAS.yml @@ -13,6 +13,11 @@ parameters: - python3-venv - git - libmsgpack-dev + - gfortran + - libopenblas-dev + - googletest + - libgtest-dev + - wget - name: pipModules type: object default: @@ -23,13 +28,13 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.HIGH_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} @@ -41,16 +46,19 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake - -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=hipcc - -DCMAKE_C_COMPILER=hipcc - -DAMDGPU_TARGETS=gfx1100 + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DAMDGPU_TARGETS=gfx1030;gfx1100 -DTensile_CODE_OBJECT_VERSION=default -DTensile_LOGIC=asm_full -DTensile_SEPARATE_ARCHITECTURES=ON -DTensile_LAZY_LIBRARY_LOADING=ON -DTensile_LIBRARY_FORMAT=msgpack -DTENSILE_VENV_UPGRADE_PIP=ON + -DBUILD_CLIENTS_TESTS=ON + -DBUILD_CLIENTS_BENCHMARKS=OFF + -DBUILD_CLIENTS_SAMPLES=OFF -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocDecode.yml b/.azuredevops/components/rocDecode.yml index 10ff7a881..65be15935 100644 --- a/.azuredevops/components/rocDecode.yml +++ b/.azuredevops/components/rocDecode.yml @@ -24,13 +24,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml diff --git a/.azuredevops/components/rocFFT.yml b/.azuredevops/components/rocFFT.yml index b32ae8791..ac87dd084 100644 --- a/.azuredevops/components/rocFFT.yml +++ b/.azuredevops/components/rocFFT.yml @@ -21,13 +21,13 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.ULTRA_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -37,12 +37,15 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc - -DCMAKE_C_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang -DCMAKE_PREFIX_PATH=/opt/rocm -DCMAKE_BUILD_TYPE=Release - -DAMDGPU_TARGETS=gfx1100 + -DAMDGPU_TARGETS=gfx1030;gfx1100 -DUSE_HIP_CLANG=ON -DHIP_COMPILER=clang + -DBUILD_CLIENTS_TESTS=ON + -DBUILD_CLIENTS_BENCHMARKS=OFF + -DBUILD_CLIENTS_SAMPLES=OFF -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocMLIR.yml b/.azuredevops/components/rocMLIR.yml index 51e8e291a..23a0c0574 100644 --- a/.azuredevops/components/rocMLIR.yml +++ b/.azuredevops/components/rocMLIR.yml @@ -16,13 +16,13 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml diff --git a/.azuredevops/components/rocPRIM.yml b/.azuredevops/components/rocPRIM.yml index 2ea019ae3..8a94a0057 100644 --- a/.azuredevops/components/rocPRIM.yml +++ b/.azuredevops/components/rocPRIM.yml @@ -18,14 +18,13 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -39,7 +38,9 @@ jobs: parameters: extraBuildFlags: >- -DBUILD_BENCHMARK=ON - -DCMAKE_CXX_COMPILER=hipcc - -DAMDGPU_TARGETS=gfx1100 + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DAMDGPU_TARGETS=gfx1030;gfx1100 + -DBUILD_TEST=ON -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocRAND.yml b/.azuredevops/components/rocRAND.yml index 10abb2780..3c57ac9b3 100644 --- a/.azuredevops/components/rocRAND.yml +++ b/.azuredevops/components/rocRAND.yml @@ -19,13 +19,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -37,8 +37,9 @@ jobs: extraBuildFlags: >- -DCMAKE_PREFIX_PATH="/opt/rocm" -DBUILD_TEST=ON - -DCMAKE_CXX_COMPILER=hipcc - -DAMDGPU_TARGETS=gfx1100 - -DAMDGPU_TEST_TARGETS=gfx1100 + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DAMDGPU_TARGETS=gfx1030;gfx1100 + -DAMDGPU_TEST_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocSOLVER.yml b/.azuredevops/components/rocSOLVER.yml index 8f23371c6..1dd08df04 100644 --- a/.azuredevops/components/rocSOLVER.yml +++ b/.azuredevops/components/rocSOLVER.yml @@ -13,37 +13,59 @@ parameters: - rocblas - rocsparse - hipsparse - - rocsolver - libsuitesparse-dev - gfortran - libfmt-dev - git - + - googletest + - libgtest-dev + jobs: - job: rocSOLVER variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - 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 }} - - script: pwd && ls - - script: mkdir build + - task: Bash@3 + displayName: 'Clone lapack' + inputs: + targetType: inline + script: git clone --depth 1 --branch v3.9.1 https://github.com/Reference-LAPACK/lapack + workingDirectory: '$(Build.SourcesDirectory)' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: lapack + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls + -DBUILD_TESTING=OFF + -DCBLAS=ON + -DLAPACKE=OFF + -GNinja + cmakeBuildDir: '$(Build.SourcesDirectory)/lapack/build' + installDir: '$(Pipeline.Workspace)/deps-install' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" - -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DAMDGPU_TARGETS=gfx1030;gfx1100 -DUSE_CUDA=OFF + -DBUILD_CLIENTS_TESTS=ON + -DBUILD_CLIENTS_BENCHMARKS=OFF + -DBUILD_CLIENTS_SAMPLES=OFF -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocSPARSE.yml b/.azuredevops/components/rocSPARSE.yml new file mode 100644 index 000000000..d46d16e78 --- /dev/null +++ b/.azuredevops/components/rocSPARSE.yml @@ -0,0 +1,51 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libboost-program-options-dev + - googletest + - libfftw3-dev + - git + - gfortran + - rocprim-dev + - libgtest-dev + +jobs: +- job: rocSPARSE + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.LOW_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc + -DCMAKE_C_COMPILER=/opt/rocm/bin/hipcc + -DCMAKE_BUILD_TYPE=Release + -DAMDGPU_TARGETS=gfx1030;gfx1100 + -DBUILD_CLIENTS_SAMPLES=OFF + -DBUILD_CLIENTS_TESTS=ON + -DBUILD_CLIENTS_BENCHMARKS=OFF + -DCMAKE_MODULE_PATH="/opt/rocm/lib/cmake/hip;/opt/rocm/hip/cmake" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocThrust.yml b/.azuredevops/components/rocThrust.yml index cdfa229d4..c5ef0028a 100644 --- a/.azuredevops/components/rocThrust.yml +++ b/.azuredevops/components/rocThrust.yml @@ -22,14 +22,13 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -40,8 +39,11 @@ jobs: parameters: extraBuildFlags: >- -GNinja - -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang -DROCM_PATH=/opt/rocm -DCMAKE_PREFIX_PATH=/opt/rocm + -DAMDGPU_TARGETS=gfx1030;gfx1100 + -DBUILD_TEST=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocWMMA.yml b/.azuredevops/components/rocWMMA.yml index cd779e24a..bae358d7d 100644 --- a/.azuredevops/components/rocWMMA.yml +++ b/.azuredevops/components/rocWMMA.yml @@ -16,19 +16,19 @@ parameters: - libfftw3-dev - git - rocblas - + jobs: - job: rocWMMA variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.CLOUD_BUILD_POOL }} + pool: ${{ variables.HIGH_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -38,7 +38,12 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DCMAKE_BUILD_TYPE=Release + -DROCWMMA_BUILD_TESTS=ON + -DROCWMMA_BUILD_SAMPLES=OFF + -DGPU_TARGETS=gfx1100 -GNinja +# gfx1030 not supported in documentation - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocgdb.yml b/.azuredevops/components/rocgdb.yml index 185190d06..5665bbbee 100644 --- a/.azuredevops/components/rocgdb.yml +++ b/.azuredevops/components/rocgdb.yml @@ -20,11 +20,11 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml diff --git a/.azuredevops/components/rocm-cmake.yml b/.azuredevops/components/rocm-cmake.yml index 94d6e85dd..75dd0d6e9 100644 --- a/.azuredevops/components/rocm-cmake.yml +++ b/.azuredevops/components/rocm-cmake.yml @@ -24,11 +24,11 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} @@ -44,5 +44,5 @@ jobs: git config --global user.email "you@example.com" git config --global user.name "Your Name" displayName: "ctest setup" - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml +# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm-core.yml b/.azuredevops/components/rocm-core.yml index d78f26ce2..429b065b8 100644 --- a/.azuredevops/components/rocm-core.yml +++ b/.azuredevops/components/rocm-core.yml @@ -12,7 +12,7 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: diff --git a/.azuredevops/components/rocm-examples.yml b/.azuredevops/components/rocm-examples.yml index 37cfafe56..0573a20bf 100644 --- a/.azuredevops/components/rocm-examples.yml +++ b/.azuredevops/components/rocm-examples.yml @@ -12,7 +12,7 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: diff --git a/.azuredevops/components/rocm_bandwidth_test.yml b/.azuredevops/components/rocm_bandwidth_test.yml index 79f27dfa9..047a47517 100644 --- a/.azuredevops/components/rocm_bandwidth_test.yml +++ b/.azuredevops/components/rocm_bandwidth_test.yml @@ -22,13 +22,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} diff --git a/.azuredevops/components/rocm_smi_lib.yml b/.azuredevops/components/rocm_smi_lib.yml index d5b1b1cd1..fab1fb330 100644 --- a/.azuredevops/components/rocm_smi_lib.yml +++ b/.azuredevops/components/rocm_smi_lib.yml @@ -12,7 +12,7 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: diff --git a/.azuredevops/components/rocminfo.yml b/.azuredevops/components/rocminfo.yml index b9ec4c1ec..48525986d 100644 --- a/.azuredevops/components/rocminfo.yml +++ b/.azuredevops/components/rocminfo.yml @@ -5,6 +5,10 @@ parameters: - name: checkoutRef type: string default: '' +- name: rocmDependencies + type: object + default: + - ROCR-Runtime jobs: - job: rocminfo @@ -12,7 +16,7 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: @@ -22,19 +26,16 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: ROCR-Runtime - branchName: master - pipelineId: $(rocr-runtime-pipeline-id) - testFailuresOkay: true + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: staging # manual build case: triggered by ROCm/ROCm repo - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: ROCR-Runtime - pipelineId: $(rocr-runtime-tagged-pipeline-id) - testFailuresOkay: true + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- diff --git a/.azuredevops/components/rocprofiler-register.yml b/.azuredevops/components/rocprofiler-register.yml index 3f5e5c15e..0f4e14ca0 100644 --- a/.azuredevops/components/rocprofiler-register.yml +++ b/.azuredevops/components/rocprofiler-register.yml @@ -12,7 +12,7 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: diff --git a/.azuredevops/components/rocprofiler.yml b/.azuredevops/components/rocprofiler.yml index 81060fc66..80ff95efa 100644 --- a/.azuredevops/components/rocprofiler.yml +++ b/.azuredevops/components/rocprofiler.yml @@ -32,14 +32,13 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} @@ -54,5 +53,5 @@ jobs: -DCMAKE_PREFIX_PATH="/opt/rocm" -DENABLE_LDCONFIG=OFF -DUSE_PROF_API=1 - -DGPU_TARGETS="gfx1100" + -DGPU_TARGETS=gfx1030;gfx1100 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocr_debug_agent.yml b/.azuredevops/components/rocr_debug_agent.yml index 0c7056866..c614b662b 100644 --- a/.azuredevops/components/rocr_debug_agent.yml +++ b/.azuredevops/components/rocr_debug_agent.yml @@ -19,13 +19,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml diff --git a/.azuredevops/components/roctracer.yml b/.azuredevops/components/roctracer.yml index a7380f509..59a1cf7b7 100644 --- a/.azuredevops/components/roctracer.yml +++ b/.azuredevops/components/roctracer.yml @@ -15,6 +15,10 @@ parameters: default: - CppHeaderParser - argparse +- name: rocmDependencies + type: object + default: + - llvm-project jobs: - job: roctracer @@ -22,13 +26,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} @@ -38,17 +42,16 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: llvm-project - branchName: amd-staging - pipelineId: $(llvm-project-pipeline-id) + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: staging # manual build case: triggered by ROCm/ROCm repo - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - componentName: llvm-project - pipelineId: $(llvm-project-tagged-pipeline-id) + dependencyList: ${{ parameters.rocmDependencies }} + dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -56,6 +59,6 @@ jobs: -DCMAKE_MODULE_PATH="$(Agent.BuildDirectory)/rocm/lib/cmake" -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm" -DENABLE_LDCONFIG=OFF - -DGPU_TARGETS="gfx1100" + -DGPU_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rpp.yml b/.azuredevops/components/rpp.yml index 105657d36..25f009829 100644 --- a/.azuredevops/components/rpp.yml +++ b/.azuredevops/components/rpp.yml @@ -20,13 +20,13 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.LOW_END_BUILD_POOL }} + vmImage: ${{ variables.BASE_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml @@ -36,10 +36,10 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang -DCMAKE_BUILD_TYPE=Release -DBUILD_CLIENTS=ON - -L + -DAMDGPU_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - \ No newline at end of file diff --git a/.azuredevops/dependencies/half560.yml b/.azuredevops/dependencies/half560.yml new file mode 100644 index 000000000..2c9bad396 --- /dev/null +++ b/.azuredevops/dependencies/half560.yml @@ -0,0 +1,37 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + +jobs: +- job: half560 + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.BASE_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/dependencies/lapack.yml b/.azuredevops/dependencies/lapack.yml new file mode 100644 index 000000000..93f15424e --- /dev/null +++ b/.azuredevops/dependencies/lapack.yml @@ -0,0 +1,42 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - git + - cmake + - ninja-build + +jobs: +- job: lapack + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.MEDIUM_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls + -DBUILD_TESTING=OFF + -DCBLAS=ON + -DLAPACKE=OFF + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/tag-builds/AMDMIGraphX.yml b/.azuredevops/tag-builds/AMDMIGraphX.yml index 688b22acb..5aef56a23 100644 --- a/.azuredevops/tag-builds/AMDMIGraphX.yml +++ b/.azuredevops/tag-builds/AMDMIGraphX.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/AMDMIGraphX.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/AMDMIGraphX.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/HIP.yml b/.azuredevops/tag-builds/HIP.yml index 0592d4b88..fb643557c 100644 --- a/.azuredevops/tag-builds/HIP.yml +++ b/.azuredevops/tag-builds/HIP.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -33,7 +33,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/HIP.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/HIP.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/HIPIFY.yml b/.azuredevops/tag-builds/HIPIFY.yml index 93973bd7a..2da59d1c0 100644 --- a/.azuredevops/tag-builds/HIPIFY.yml +++ b/.azuredevops/tag-builds/HIPIFY.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/HIPIFY.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/HIPIFY.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/MIOpen.yml b/.azuredevops/tag-builds/MIOpen.yml index 5f03f5086..e6049d4f4 100644 --- a/.azuredevops/tag-builds/MIOpen.yml +++ b/.azuredevops/tag-builds/MIOpen.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/MIOpen.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/MIOpen.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/MIVisionX.yml b/.azuredevops/tag-builds/MIVisionX.yml index 3b43fa232..751fa34f1 100644 --- a/.azuredevops/tag-builds/MIVisionX.yml +++ b/.azuredevops/tag-builds/MIVisionX.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/MIVisionX.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/MIVisionX.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCR-Runtime.yml b/.azuredevops/tag-builds/ROCR-Runtime.yml index e9b2fe8fd..5574069a1 100644 --- a/.azuredevops/tag-builds/ROCR-Runtime.yml +++ b/.azuredevops/tag-builds/ROCR-Runtime.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/ROCR-Runtime.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCR-Runtime.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml b/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml index b06da04c3..fe6c5d5ed 100644 --- a/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml +++ b/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/ROCT-Thunk-Interface.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCT-Thunk-Interface.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCdbgapi.yml b/.azuredevops/tag-builds/ROCdbgapi.yml index bf1e0715d..0e2055c45 100644 --- a/.azuredevops/tag-builds/ROCdbgapi.yml +++ b/.azuredevops/tag-builds/ROCdbgapi.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/ROCdbgapi.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCdbgapi.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCmValidationSuite.yml b/.azuredevops/tag-builds/ROCmValidationSuite.yml index a3eb0f974..66d8d1884 100644 --- a/.azuredevops/tag-builds/ROCmValidationSuite.yml +++ b/.azuredevops/tag-builds/ROCmValidationSuite.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/ROCmValidationSuite.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCmValidationSuite.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/amdsmi.yml b/.azuredevops/tag-builds/amdsmi.yml index 9eae30bb2..cee531982 100644 --- a/.azuredevops/tag-builds/amdsmi.yml +++ b/.azuredevops/tag-builds/amdsmi.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/amdsmi.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/amdsmi.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/composable_kernel.yml b/.azuredevops/tag-builds/composable_kernel.yml index be53ded70..7831ca302 100644 --- a/.azuredevops/tag-builds/composable_kernel.yml +++ b/.azuredevops/tag-builds/composable_kernel.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/composable_kernel.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/composable_kernel.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/half.yml b/.azuredevops/tag-builds/half.yml index f1dcde928..791b8105c 100644 --- a/.azuredevops/tag-builds/half.yml +++ b/.azuredevops/tag-builds/half.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/half.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/half.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/half560.yml b/.azuredevops/tag-builds/half560.yml new file mode 100644 index 000000000..f31bf363a --- /dev/null +++ b/.azuredevops/tag-builds/half560.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: checkoutRef + type: string + default: refs/tags/rocm-5.6.0 + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/half + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_DEPENDENCIES_PATH }}/half560.yml + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipBLAS.yml b/.azuredevops/tag-builds/hipBLAS.yml index e98b6584f..060c2271f 100644 --- a/.azuredevops/tag-builds/hipBLAS.yml +++ b/.azuredevops/tag-builds/hipBLAS.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/hipBLAS.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/hipBLAS.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipBLASLt.yml b/.azuredevops/tag-builds/hipBLASLt.yml index cf2414301..60f65b3c5 100644 --- a/.azuredevops/tag-builds/hipBLASLt.yml +++ b/.azuredevops/tag-builds/hipBLASLt.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/hipBLASLt.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/hipBLASLt.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipCUB.yml b/.azuredevops/tag-builds/hipCUB.yml index ddf467006..abbbbca4c 100644 --- a/.azuredevops/tag-builds/hipCUB.yml +++ b/.azuredevops/tag-builds/hipCUB.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/hipCUB.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/hipCUB.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipFFT.yml b/.azuredevops/tag-builds/hipFFT.yml index 6245c1384..c6fba3f99 100644 --- a/.azuredevops/tag-builds/hipFFT.yml +++ b/.azuredevops/tag-builds/hipFFT.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/hipFFT.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/hipFFT.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipRAND.yml b/.azuredevops/tag-builds/hipRAND.yml index 5515494ad..780b3033e 100644 --- a/.azuredevops/tag-builds/hipRAND.yml +++ b/.azuredevops/tag-builds/hipRAND.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/hipRAND.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/hipRAND.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSOLVER.yml b/.azuredevops/tag-builds/hipSOLVER.yml index 5f1d85d18..ae77e2bb3 100644 --- a/.azuredevops/tag-builds/hipSOLVER.yml +++ b/.azuredevops/tag-builds/hipSOLVER.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/hipSOLVER.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSOLVER.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSPARSE.yml b/.azuredevops/tag-builds/hipSPARSE.yml index 00eb03439..bcc094d10 100644 --- a/.azuredevops/tag-builds/hipSPARSE.yml +++ b/.azuredevops/tag-builds/hipSPARSE.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/hipSPARSE.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSPARSE.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSPARSELt.yml b/.azuredevops/tag-builds/hipSPARSELt.yml index 70dfd285d..79acf7306 100644 --- a/.azuredevops/tag-builds/hipSPARSELt.yml +++ b/.azuredevops/tag-builds/hipSPARSELt.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/hipSPARSELt.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSPARSELt.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipTensor.yml b/.azuredevops/tag-builds/hipTensor.yml index 784ae947d..5725f2f2d 100644 --- a/.azuredevops/tag-builds/hipTensor.yml +++ b/.azuredevops/tag-builds/hipTensor.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/hipTensor.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/hipTensor.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipfort.yml b/.azuredevops/tag-builds/hipfort.yml index f01dcc119..c66584230 100644 --- a/.azuredevops/tag-builds/hipfort.yml +++ b/.azuredevops/tag-builds/hipfort.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/hipfort.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/hipfort.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/lapack.yml b/.azuredevops/tag-builds/lapack.yml new file mode 100644 index 000000000..c8c1fdba9 --- /dev/null +++ b/.azuredevops/tag-builds/lapack.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: checkoutRef + type: string + default: refs/tags/v3.9.1 + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: Reference-LAPACK + name: Reference-LAPACK/lapack + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/lapack.yml + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/llvm-project.yml b/.azuredevops/tag-builds/llvm-project.yml index 9ebeaf78f..fe24fff36 100644 --- a/.azuredevops/tag-builds/llvm-project.yml +++ b/.azuredevops/tag-builds/llvm-project.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/llvm-project.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/llvm-project.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rccl.yml b/.azuredevops/tag-builds/rccl.yml index e5a8a8c76..3f27be663 100644 --- a/.azuredevops/tag-builds/rccl.yml +++ b/.azuredevops/tag-builds/rccl.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rccl.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rccl.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rdc.yml b/.azuredevops/tag-builds/rdc.yml index 0f7167e8f..3d275c394 100644 --- a/.azuredevops/tag-builds/rdc.yml +++ b/.azuredevops/tag-builds/rdc.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rdc.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rdc.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocALUTION.yml b/.azuredevops/tag-builds/rocALUTION.yml index 1bef693a3..303f2d8f6 100644 --- a/.azuredevops/tag-builds/rocALUTION.yml +++ b/.azuredevops/tag-builds/rocALUTION.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocALUTION.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocALUTION.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocBLAS.yml b/.azuredevops/tag-builds/rocBLAS.yml index 4f65183d8..b933fe0da 100644 --- a/.azuredevops/tag-builds/rocBLAS.yml +++ b/.azuredevops/tag-builds/rocBLAS.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocBLAS.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocBLAS.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocDecode.yml b/.azuredevops/tag-builds/rocDecode.yml index 01bcca5d6..f57d4ba3f 100644 --- a/.azuredevops/tag-builds/rocDecode.yml +++ b/.azuredevops/tag-builds/rocDecode.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocDecode.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocDecode.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocFFT.yml b/.azuredevops/tag-builds/rocFFT.yml index d572418a1..b910d7480 100644 --- a/.azuredevops/tag-builds/rocFFT.yml +++ b/.azuredevops/tag-builds/rocFFT.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocFFT.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocFFT.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocMLIR.yml b/.azuredevops/tag-builds/rocMLIR.yml index cbf5c3b33..456133eb3 100644 --- a/.azuredevops/tag-builds/rocMLIR.yml +++ b/.azuredevops/tag-builds/rocMLIR.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocMLIR.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocMLIR.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocPRIM.yml b/.azuredevops/tag-builds/rocPRIM.yml index 2498b4052..a3e7e4544 100644 --- a/.azuredevops/tag-builds/rocPRIM.yml +++ b/.azuredevops/tag-builds/rocPRIM.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocPRIM.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocPRIM.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocRAND.yml b/.azuredevops/tag-builds/rocRAND.yml index 9980d2827..f04be2bf2 100644 --- a/.azuredevops/tag-builds/rocRAND.yml +++ b/.azuredevops/tag-builds/rocRAND.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocRAND.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocRAND.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocSOLVER.yml b/.azuredevops/tag-builds/rocSOLVER.yml index 7c4580055..62c26adbd 100644 --- a/.azuredevops/tag-builds/rocSOLVER.yml +++ b/.azuredevops/tag-builds/rocSOLVER.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocSOLVER.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocSOLVER.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocSPARSE.yml b/.azuredevops/tag-builds/rocSPARSE.yml new file mode 100644 index 000000000..dba8953f5 --- /dev/null +++ b/.azuredevops/tag-builds/rocSPARSE.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocSPARSE + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocSPARSE.yml + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocThrust.yml b/.azuredevops/tag-builds/rocThrust.yml index 0ffea0d14..598015d31 100644 --- a/.azuredevops/tag-builds/rocThrust.yml +++ b/.azuredevops/tag-builds/rocThrust.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocThrust.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocThrust.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocWMMA.yml b/.azuredevops/tag-builds/rocWMMA.yml index 0a8bfb0f2..78981f707 100644 --- a/.azuredevops/tag-builds/rocWMMA.yml +++ b/.azuredevops/tag-builds/rocWMMA.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocWMMA.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocWMMA.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocgdb.yml b/.azuredevops/tag-builds/rocgdb.yml index 0b420e7f8..3b2569dd3 100644 --- a/.azuredevops/tag-builds/rocgdb.yml +++ b/.azuredevops/tag-builds/rocgdb.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocgdb.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocgdb.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm-cmake.yml b/.azuredevops/tag-builds/rocm-cmake.yml index 1ef560b1b..6898068d8 100644 --- a/.azuredevops/tag-builds/rocm-cmake.yml +++ b/.azuredevops/tag-builds/rocm-cmake.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-cmake.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-cmake.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm-core.yml b/.azuredevops/tag-builds/rocm-core.yml index f6631f6e4..607faeca6 100644 --- a/.azuredevops/tag-builds/rocm-core.yml +++ b/.azuredevops/tag-builds/rocm-core.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-core.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-core.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm_bandwidth_test.yml b/.azuredevops/tag-builds/rocm_bandwidth_test.yml index bf15ad830..b38f67446 100644 --- a/.azuredevops/tag-builds/rocm_bandwidth_test.yml +++ b/.azuredevops/tag-builds/rocm_bandwidth_test.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocm_bandwidth_test.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm_bandwidth_test.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm_smi_lib.yml b/.azuredevops/tag-builds/rocm_smi_lib.yml index 110141f06..f292c1290 100644 --- a/.azuredevops/tag-builds/rocm_smi_lib.yml +++ b/.azuredevops/tag-builds/rocm_smi_lib.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocm_smi_lib.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm_smi_lib.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocminfo.yml b/.azuredevops/tag-builds/rocminfo.yml index ea19e8576..98a5a180b 100644 --- a/.azuredevops/tag-builds/rocminfo.yml +++ b/.azuredevops/tag-builds/rocminfo.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocminfo.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocminfo.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocprofiler-register.yml b/.azuredevops/tag-builds/rocprofiler-register.yml index 3d6d4f827..61556411a 100644 --- a/.azuredevops/tag-builds/rocprofiler-register.yml +++ b/.azuredevops/tag-builds/rocprofiler-register.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler-register.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler-register.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocprofiler.yml b/.azuredevops/tag-builds/rocprofiler.yml index 708f362af..3bb0782f0 100644 --- a/.azuredevops/tag-builds/rocprofiler.yml +++ b/.azuredevops/tag-builds/rocprofiler.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocr_debug_agent.yml b/.azuredevops/tag-builds/rocr_debug_agent.yml index b92fb012e..8808e9b05 100644 --- a/.azuredevops/tag-builds/rocr_debug_agent.yml +++ b/.azuredevops/tag-builds/rocr_debug_agent.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocr_debug_agent.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rocr_debug_agent.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/roctracer.yml b/.azuredevops/tag-builds/roctracer.yml index 782e5eafc..702bcadc2 100644 --- a/.azuredevops/tag-builds/roctracer.yml +++ b/.azuredevops/tag-builds/roctracer.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/roctracer.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/roctracer.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rpp.yml b/.azuredevops/tag-builds/rpp.yml index 3a5791b09..589068a0f 100644 --- a/.azuredevops/tag-builds/rpp.yml +++ b/.azuredevops/tag-builds/rpp.yml @@ -1,6 +1,6 @@ variables: - group: common -- template: /.azuredevops/variables-global.yml@pipelines_repo +- template: /.azuredevops/variables-global.yml parameters: - name: checkoutRef @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rpp.yml@pipelines_repo + - template: ${{ variables.CI_COMPONENT_PATH }}/rpp.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml index f5f36ed32..e065f2ff6 100644 --- a/.azuredevops/templates/steps/artifact-download.yml +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -6,12 +6,41 @@ parameters: - name: pipelineId type: string default: '' +- name: useDefaultBranch + type: boolean + default: true +- name: defaultBranchList + type: object + default: + AMDMIGraphX: develop + composable_kernel: develop + half: master + HIP: develop + hipBLAS: develop + hipRAND: develop + hipSPARSE: develop + llvm-project: amd-staging + MIOpen: develop + rocBLAS: develop + rocFFT: develop + rocm-cmake: develop + rocMLIR: develop + rocPRIM: develop + rocprofiler-register: amd-mainline + ROCR-Runtime: master + rocRAND: develop + rocSOLVER: develop + rocSPARSE: develop + ROCT-Thunk-Interface: master + rpp: master +- name: componentsFailureOkay + type: object + default: + - rocm-cmake +# BELOW REQUIRED IF useDefaultBranch false - name: branchName type: string default: '$(Build.SourceBranchName)' # for tagged builds -- name: testFailuresOkay - type: boolean - default: false steps: - task: DownloadPipelineArtifact@2 @@ -21,8 +50,12 @@ steps: project: ROCm-CI pipeline: ${{ parameters.pipelineId }} specificBuildWithTriggering: true - allowPartiallySucceededBuilds: ${{ parameters.testFailuresOkay }} - branchName: ${{ parameters.branchName }} + ${{ if eq(parameters.useDefaultBranch, true) }}: + branchName: ${{ parameters.defaultBranchList[parameters.componentName] }} + ${{ else }}: + branchName: ${{ parameters.branchName }} + ${{ if in(parameters.componentName, parameters.componentsFailureOkay) }}: + allowPartiallySucceededBuilds: true targetPath: '$(System.ArtifactsDirectory)' - task: ExtractFiles@1 displayName: Extract ${{ parameters.componentName }} diff --git a/.azuredevops/templates/steps/build-autotools.yml b/.azuredevops/templates/steps/build-autotools.yml index b207b3d43..f2b565783 100644 --- a/.azuredevops/templates/steps/build-autotools.yml +++ b/.azuredevops/templates/steps/build-autotools.yml @@ -15,21 +15,18 @@ parameters: steps: - task: Bash@3 displayName: '${{ parameters.componentName }} configure flags' - continueOnError: true inputs: targetType: inline script: ./configure --prefix=${{ parameters.installDir }} ${{ parameters.configureFlags }} workingDirectory: ${{ parameters.buildDir }} - task: Bash@3 displayName: '${{ parameters.componentName }} make' - continueOnError: true inputs: targetType: inline script: make -j$(nproc) workingDirectory: ${{ parameters.buildDir }} - task: Bash@3 displayName: '${{ parameters.componentName }} make install' - continueOnError: true inputs: targetType: inline script: make install diff --git a/.azuredevops/templates/steps/dependencies.yml b/.azuredevops/templates/steps/dependencies-other.yml similarity index 87% rename from .azuredevops/templates/steps/dependencies.yml rename to .azuredevops/templates/steps/dependencies-other.yml index 73f226d64..b5c062d0c 100644 --- a/.azuredevops/templates/steps/dependencies.yml +++ b/.azuredevops/templates/steps/dependencies-other.yml @@ -1,6 +1,5 @@ +# download and install non-rocm dependencies through apt and pip parameters: -# space-delimited list of packages to install via apt-get install command -# TODO convert to string array and split with spaces - name: aptPackages type: object default: [] diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml new file mode 100644 index 000000000..f739ac83c --- /dev/null +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -0,0 +1,88 @@ +# download and install rocm dependencies through pipeline builds in the project +# REQUIRED +parameters: +- name: dependencyList + type: object + default: [] +- name: dependencySource + type: string + default: staging + values: + - staging + - tag-builds + - fixed +# required values for fixed selection +- name: fixedPipelineIdentifier + type: string + default: 0 +- name: fixedComponentName + type: string + default: '' +# 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) + composable_kernel: $(composable-kernel-pipeline-id) + half: $(half-pipeline-id) + hipBLAS: $(hipblas-pipeline-id) + hipRAND: $(hiprand-pipeline-id) + hipSPARSE: $(hipsparse-pipeline-id) + llvm-project: $(llvm-project-pipeline-id) + MIOpen: $(miopen-pipeline-id) + rocBLAS: $(rocblas-pipeline-id) + rocFFT: $(rotfft-pipeline-id) + rocm-cmake: $(rocm-cmake-pipeline-id) + rocMLIR: $(rocmlir-pipeline-id) + rocPRIM: $(rocprim-pipeline-id) + rocprofiler-register: $(rocprofiler-register-pipeline-id) + ROCR-Runtime: $(rocr-runtime-pipeline-id) + rocRAND: $(rocrand-pipeline-id) + rocSOLVER: $(rocsolver-pipeline-id) + rocSPARSE: $(rocsparse-pipeline-id) + ROCT-Thunk-Interface: $(roct-thunk-interface-pipeline-id) + rpp: $(rpp-pipeline-id) +- name: taggedPipelineIdentifiers + type: object + default: + AMDMIGraphX: $(amdmigraphx-tagged-pipeline-id) + composable_kernel: $(composable-kernel-tagged-pipeline-id) + half: $(half-tagged-pipeline-id) + hipBLAS: $(hipblas-tagged-pipeline-id) + hipRAND: $(hiprand-tagged-pipeline-id) + hipSPARSE: $(hipsparse-tagged-pipeline-id) + llvm-project: $(llvm-project-tagged-pipeline-id) + MIOpen: $(miopen-tagged-pipeline-id) + rocBLAS: $(rocblas-tagged-pipeline-id) + rocFFT: $(rotfft-tagged-pipeline-id) + rocm-cmake: $(rocm-cmake-tagged-pipeline-id) + rocMLIR: $(rocmlir-tagged-pipeline-id) + rocPRIM: $(rocprim-tagged-pipeline-id) + rocprofiler-register: $(rocprofiler-register-tagged-pipeline-id) + ROCR-Runtime: $(rocr-runtime-tagged-pipeline-id) + rocRAND: $(rocrand-tagged-pipeline-id) + rocSOLVER: $(rocsolver-tagged-pipeline-id) + rocSPARSE: $(rocsparse-tagged-pipeline-id) + ROCT-Thunk-Interface: $(roct-thunk-interface-tagged-pipeline-id) + rpp: $(rpp-tagged-pipeline-id) + +steps: +# assuming artifact-download.yml template file in same directory +- ${{ each dependency in parameters.dependencyList }}: + - ${{ if eq(parameters.dependencySource, 'staging') }}: + - template: artifact-download.yml + parameters: + componentName: ${{ dependency }} + pipelineId: ${{ parameters.stagingPipelineIdentifiers[dependency] }} + - ${{ if eq(parameters.dependencySource, 'tag-builds') }}: + - template: artifact-download.yml + parameters: + componentName: ${{ dependency }} + pipelineId: ${{ parameters.taggedPipelineIdentifiers[dependency] }} +# 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 }} diff --git a/.azuredevops/variables-global.yml b/.azuredevops/variables-global.yml index 508b9f0a0..421b52f3d 100644 --- a/.azuredevops/variables-global.yml +++ b/.azuredevops/variables-global.yml @@ -7,12 +7,20 @@ variables: value: ${{ variables.CI_ROOT_PATH }}/components - name: CI_TEMPLATE_PATH value: ${{ variables.CI_ROOT_PATH }}/templates -- name: LOW_END_BUILD_POOL +- name: CI_DEPENDENCIES_PATH + value: ${{ variables.CI_ROOT_PATH }}/dependencies +- name: BASE_BUILD_POOL value: ubuntu-22.04 -- name: HIGH_END_BUILD_POOL +- name: LOW_BUILD_POOL + value: rocm-ci_low_build_pool +- name: MEDIUM_BUILD_POOL + value: rocm-ci_medium_build_pool +- name: HIGH_BUILD_POOL + value: rocm-ci_high_build_pool +- name: ULTRA_BUILD_POOL + value: rocm-ci_ultra_build_pool +- name: ON_PREM_BUILD_POOL value: rocm-ci_build_pool -- name: CLOUD_BUILD_POOL - value: rocm-ci_cloud_build_pool - name: LATEST_RELEASE_TAG value: rocm-6.1.0 - name: DOCKER_IMAGE_NAME From 567a90821ea0411de7ab6756760ad4cb46f35d05 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Thu, 16 May 2024 16:56:11 -0600 Subject: [PATCH 022/175] Update CODEOWNERS syntax for .azuredevops directory --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 64b893426..42567d58e 100755 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,4 +4,4 @@ docs/* @amd-aakash @jlgreathouse @samjwu @yhuiYH @ROCm/rocm-documentation *.md @amd-aakash @jlgreathouse @samjwu @yhuiYH @ROCm/rocm-documentation *.rst @amd-aakash @jlgreathouse @samjwu @yhuiYH @ROCm/rocm-documentation # External CI -.azuredevops/* @ROCm/external-ci +/.azuredevops/* @ROCm/external-ci From d965435f6b4504b4631126edd3b6855e677a8140 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Fri, 17 May 2024 04:41:35 -0400 Subject: [PATCH 023/175] Example of using pipeline artifacts instead of apt install (#3136) --- .azuredevops/components/hipRAND.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/hipRAND.yml b/.azuredevops/components/hipRAND.yml index 5ff3ea80b..970b3284c 100644 --- a/.azuredevops/components/hipRAND.yml +++ b/.azuredevops/components/hipRAND.yml @@ -12,7 +12,10 @@ parameters: - ninja-build - googletest - git - - rocrand +- name: rocmDependencies + type: object + default: + - rocRAND jobs: - job: hipRAND @@ -33,6 +36,18 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- @@ -40,7 +55,7 @@ jobs: -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DBUILD_TEST=ON -DCMAKE_MODULE_PATH="/opt/rocm/lib/cmake/hip" - -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;/opt/rocm" -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS=gfx1030;gfx1100 -DHIP_COMPILER=clang From cabe2f652b37582ce229be147d8e2e9895ec15ae Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Fri, 17 May 2024 10:44:54 -0400 Subject: [PATCH 024/175] External CI: Updating linker flags (#3139) After examining the build products of recent builds and consuming them for other components, observed some additional flags should be added. Used rocm-build repo for reference. --- .azuredevops/components/ROCR-Runtime.yml | 3 +++ .azuredevops/components/llvm-project.yml | 29 +++++++++++++++++++++++- .azuredevops/components/rocminfo.yml | 4 ++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/.azuredevops/components/ROCR-Runtime.yml b/.azuredevops/components/ROCR-Runtime.yml index e7a345fd5..e524fc4a3 100644 --- a/.azuredevops/components/ROCR-Runtime.yml +++ b/.azuredevops/components/ROCR-Runtime.yml @@ -17,6 +17,7 @@ parameters: default: - llvm-project - ROCT-Thunk-Interface + - rocprofiler-register jobs: - job: ROCR_Runtime @@ -53,5 +54,7 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN/../lib" cmakeBuildDir: 'src/build' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/llvm-project.yml b/.azuredevops/components/llvm-project.yml index 2d00562cb..c5b899f7e 100644 --- a/.azuredevops/components/llvm-project.yml +++ b/.azuredevops/components/llvm-project.yml @@ -13,6 +13,7 @@ parameters: - libnuma-dev - ninja-build - python-is-python3 + - zlib1g-dev - name: rocmDependencies type: object default: @@ -54,10 +55,36 @@ jobs: extraBuildFlags: >- -DCMAKE_PREFIX_PATH="$(Build.BinariesDirectory)/llvm;$(Build.BinariesDirectory)" -DCMAKE_BUILD_TYPE=Release - -DLLVM_ENABLE_PROJECTS=llvm;clang;lld;clang-tools-extra;mlir + -DLLVM_ENABLE_PROJECTS=clang;lld;clang-tools-extra;mlir -DLLVM_ENABLE_RUNTIMES=compiler-rt;libunwind;libcxx;libcxxabi -DCLANG_ENABLE_AMDCLANG=ON -DLLVM_TARGETS_TO_BUILD=AMDGPU;X86 + -DLIBCXX_ENABLE_SHARED=OFF + -DLIBCXX_ENABLE_STATIC=ON + -DLIBCXX_INSTALL_LIBRARY=OFF + -DLIBCXX_INSTALL_HEADERS=OFF + -DLIBCXXABI_ENABLE_SHARED=OFF + -DLIBCXXABI_ENABLE_STATIC=ON + -DLIBCXXABI_INSTALL_STATIC_LIBRARY=OFF + -DLLVM_BUILD_DOCS=OFF + -DLLVM_ENABLE_SPHINX=OFF + -DSPHINX_WARNINGS_AS_ERRORS=OFF + -DSPHINX_OUTPUT_MAN=OFF + -DLLVM_ENABLE_ASSERTIONS=OFF + -DLLVM_ENABLE_Z3_SOLVER=OFF + -DLLVM_ENABLE_ZLIB=ON + -DCLANG_DEFAULT_LINKER=lld + -DCLANG_DEFAULT_RTLIB=compiler-rt + -DCLANG_DEFAULT_UNWINDLIB=libgcc + -DSANITIZER_AMDGPU=OFF + -DPACKAGE_VENDOR="AMD" + -DCMAKE_SKIP_BUILD_RPATH=TRUE + -DCMAKE_SKIP_INSTALL_RPATH=TRUE + "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN/../lib" + -DCLANG_LINK_FLANG_LEGACY=ON + -DCMAKE_CXX_STANDARD=17 + -DFLANG_INCLUDE_DOCS=OFF -DROCM_LLVM_BACKWARD_COMPAT_LINK=$(Build.BinariesDirectory)/llvm -DROCM_LLVM_BACKWARD_COMPAT_LINK_TARGET=./lib/llvm -GNinja diff --git a/.azuredevops/components/rocminfo.yml b/.azuredevops/components/rocminfo.yml index 48525986d..ec5b335ec 100644 --- a/.azuredevops/components/rocminfo.yml +++ b/.azuredevops/components/rocminfo.yml @@ -40,4 +40,8 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + -DCMAKE_SKIP_BUILD_RPATH=TRUE + -DROCRTST_BLD_TYPE=release + "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN/../lib" - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 69366d85aa937e2ada6f333ebe4b09ee18e2c643 Mon Sep 17 00:00:00 2001 From: alexxu-amd <159800977+alexxu-amd@users.noreply.github.com> Date: Fri, 17 May 2024 11:32:49 -0400 Subject: [PATCH 025/175] Add pipelines for third party components (#3137) --- .azuredevops/dependencies/grpc.yml | 48 ++++++++++++++++++++++++++++ .azuredevops/dependencies/gtest.yml | 45 ++++++++++++++++++++++++++ .azuredevops/dependencies/lapack.yml | 35 ++++++++++++++++---- .azuredevops/tag-builds/grpc.yml | 23 +++++++++++++ .azuredevops/tag-builds/gtest.yml | 23 +++++++++++++ .azuredevops/tag-builds/lapack.yml | 14 +++----- 6 files changed, 171 insertions(+), 17 deletions(-) create mode 100644 .azuredevops/dependencies/grpc.yml create mode 100644 .azuredevops/dependencies/gtest.yml create mode 100644 .azuredevops/tag-builds/grpc.yml create mode 100644 .azuredevops/tag-builds/gtest.yml diff --git a/.azuredevops/dependencies/grpc.yml b/.azuredevops/dependencies/grpc.yml new file mode 100644 index 000000000..d9ea15fb2 --- /dev/null +++ b/.azuredevops/dependencies/grpc.yml @@ -0,0 +1,48 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: grpcVersion + type: string + default: '' +- name: aptPackages + type: object + default: + - git + - cmake + - ninja-build + +jobs: +- job: grpc + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.BASE_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 + - task: Bash@3 + displayName: 'git clone grpc' + inputs: + targetType: inline + script: git clone -b ${{ parameters.grpcVersion }} https://github.com/grpc/grpc --depth=1 --shallow-submodules --recurse-submodules + workingDirectory: $(Agent.BuildDirectory) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + cmakeBuildDir: $(Agent.BuildDirectory)/grpc/build + extraBuildFlags: >- + -DgRPC_INSTALL=ON + -DgRPC_BUILD_TESTS=OFF + -DBUILD_SHARED_LIBS=ON + -DCMAKE_INSTALL_LIBDIR=lib + -DCMAKE_BUILD_TYPE=Release + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/dependencies/gtest.yml b/.azuredevops/dependencies/gtest.yml new file mode 100644 index 000000000..dcdffe698 --- /dev/null +++ b/.azuredevops/dependencies/gtest.yml @@ -0,0 +1,45 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: gtestVersion + type: string + default: '' +- name: aptPackages + type: object + default: + - git + - cmake + - ninja-build + +jobs: +- job: gtest + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.BASE_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 + - task: Bash@3 + displayName: 'git clone gtest' + inputs: + targetType: inline + script: git clone -b ${{ parameters.gtestVersion }} https://github.com/google/googletest --depth=1 --shallow-submodules --recurse-submodules + workingDirectory: $(Agent.BuildDirectory) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + cmakeBuildDir: $(Agent.BuildDirectory)/googletest/build + extraBuildFlags: >- + -DGTEST_FORCE_SHARED_CRT=ON + -DCMAKE_DEBUG_POSTFIX=d + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/dependencies/lapack.yml b/.azuredevops/dependencies/lapack.yml index 93f15424e..b2729d22d 100644 --- a/.azuredevops/dependencies/lapack.yml +++ b/.azuredevops/dependencies/lapack.yml @@ -5,21 +5,24 @@ parameters: - name: checkoutRef type: string default: '' +- name: lapackVersion + type: string + default: '' - name: aptPackages type: object default: - - git + - wget - cmake - ninja-build + - gfortran jobs: - job: lapack variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + pool: + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: @@ -27,13 +30,31 @@ jobs: parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - parameters: - checkoutRepo: ${{ parameters.checkoutRepo }} + - task: Bash@3 + displayName: 'Download lapack Source Code' + inputs: + targetType: inline + script: wget -nv -O lapack-${{ parameters.lapackVersion }}.tar.gz https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v${{ parameters.lapackVersion }}.tar.gz + workingDirectory: '$(System.ArtifactsDirectory)' + - task: ExtractFiles@1 + displayName: Extract lapack Source Code + inputs: + archiveFilePatterns: '$(System.ArtifactsDirectory)/**/*.tar.gz' + destinationFolder: '$(Agent.BuildDirectory)' + cleanDestinationFolder: false + overwriteExistingFiles: true + - task: DeleteFiles@1 + displayName: Cleanup Compressed lapack + inputs: + SourceFolder: '$(System.ArtifactsDirectory)' + Contents: '/**/*.tar.gz' + RemoveDotFiles: true - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: + cmakeBuildDir: $(Agent.BuildDirectory)/lapack-${{ parameters.lapackVersion }}/build extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release + -DCMAKE_Fortran_COMPILER=gfortran -DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls -DBUILD_TESTING=OFF -DCBLAS=ON diff --git a/.azuredevops/tag-builds/grpc.yml b/.azuredevops/tag-builds/grpc.yml new file mode 100644 index 000000000..08bf52eed --- /dev/null +++ b/.azuredevops/tag-builds/grpc.yml @@ -0,0 +1,23 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: grpcVersion + type: string + default: 'master' + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_DEPENDENCIES_PATH }}/grpc.yml + parameters: + grpcVersion: ${{ parameters.grpcVersion }} diff --git a/.azuredevops/tag-builds/gtest.yml b/.azuredevops/tag-builds/gtest.yml new file mode 100644 index 000000000..9dbcf0e48 --- /dev/null +++ b/.azuredevops/tag-builds/gtest.yml @@ -0,0 +1,23 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: gtestVersion + type: string + default: main + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_DEPENDENCIES_PATH }}/gtest.yml + parameters: + gtestVersion: ${{ parameters.gtestVersion }} diff --git a/.azuredevops/tag-builds/lapack.yml b/.azuredevops/tag-builds/lapack.yml index c8c1fdba9..1f81961f5 100644 --- a/.azuredevops/tag-builds/lapack.yml +++ b/.azuredevops/tag-builds/lapack.yml @@ -3,9 +3,9 @@ variables: - template: /.azuredevops/variables-global.yml parameters: -- name: checkoutRef +- name: lapackVersion type: string - default: refs/tags/v3.9.1 + default: 3.9.1 resources: repositories: @@ -13,17 +13,11 @@ resources: type: github endpoint: ROCm name: ROCm/ROCm - - repository: release_repo - type: github - endpoint: Reference-LAPACK - name: Reference-LAPACK/lapack - ref: ${{ parameters.checkoutRef }} trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/lapack.yml + - template: ${{ variables.CI_DEPENDENCIES_PATH }}/lapack.yml parameters: - checkoutRepo: release_repo - checkoutRef: ${{ parameters.checkoutRef }} + lapackVersion: ${{ parameters.lapackVersion }} From 648c6e0b57f2668e9fa19c1c0da5a882b834ea55 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Tue, 21 May 2024 11:05:12 -0400 Subject: [PATCH 026/175] CODEOWNERS nested folders pattern (#3141) As documented in the link below, patterns ending with "/*" do not include further nested files and folders. Desired behaviour is to catch these further nested files and folders. https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners --- .github/CODEOWNERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 42567d58e..59f713e31 100755 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,7 +1,7 @@ * @amd-aakash @jlgreathouse @samjwu @yhuiYH @ROCm/rocm-documentation # Documentation files -docs/* @amd-aakash @jlgreathouse @samjwu @yhuiYH @ROCm/rocm-documentation +docs/ @amd-aakash @jlgreathouse @samjwu @yhuiYH @ROCm/rocm-documentation *.md @amd-aakash @jlgreathouse @samjwu @yhuiYH @ROCm/rocm-documentation *.rst @amd-aakash @jlgreathouse @samjwu @yhuiYH @ROCm/rocm-documentation # External CI -/.azuredevops/* @ROCm/external-ci +/.azuredevops/ @ROCm/external-ci From 7f2fabeb9d23ae51298c41a70298a0b11b83a5a9 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Tue, 21 May 2024 11:05:49 -0400 Subject: [PATCH 027/175] Remove docker image dependency from some External CI (#3140) - Fixed compilers to pick amdclang. - Added ldconfig step for setting up linking of shared libraries. - Set Azure VMs to medium only. - Remove empty directories in published tarballs. --- .azuredevops/components/AMDMIGraphX.yml | 12 ++---- .azuredevops/components/HIP.yml | 16 ++++---- .azuredevops/components/HIPIFY.yml | 4 +- .azuredevops/components/MIOpen.yml | 4 +- .azuredevops/components/ROCR-Runtime.yml | 6 +-- .azuredevops/components/composable_kernel.yml | 2 +- .azuredevops/components/hipBLAS.yml | 4 +- .azuredevops/components/hipCUB.yml | 2 +- .azuredevops/components/hipRAND.yml | 17 ++++---- .azuredevops/components/hipSPARSELt.yml | 2 +- .azuredevops/components/hipTensor.yml | 2 +- .azuredevops/components/hipfort.yml | 2 +- .azuredevops/components/llvm-project.yml | 6 +-- .azuredevops/components/rccl.yml | 6 +-- .azuredevops/components/rdc.yml | 2 +- .azuredevops/components/rocALUTION.yml | 4 +- .azuredevops/components/rocBLAS.yml | 6 +-- .azuredevops/components/rocFFT.yml | 6 +-- .azuredevops/components/rocMLIR.yml | 4 +- .azuredevops/components/rocPRIM.yml | 6 +-- .azuredevops/components/rocRAND.yml | 31 ++++++++++++--- .azuredevops/components/rocSOLVER.yml | 4 +- .azuredevops/components/rocSPARSE.yml | 2 +- .azuredevops/components/rocThrust.yml | 4 +- .azuredevops/components/rocWMMA.yml | 2 +- .azuredevops/components/rocminfo.yml | 6 +-- .azuredevops/components/rocprofiler.yml | 2 +- .azuredevops/components/roctracer.yml | 24 +++++++++--- .azuredevops/components/rpp.yml | 4 +- .azuredevops/tag-builds/clr.yml | 39 +++++++++++++++++++ .../templates/steps/artifact-download.yml | 12 +++--- .azuredevops/templates/steps/build-cmake.yml | 2 +- .../templates/steps/dependencies-rocm.yml | 26 +++++++++++++ 33 files changed, 178 insertions(+), 93 deletions(-) create mode 100644 .azuredevops/tag-builds/clr.yml diff --git a/.azuredevops/components/AMDMIGraphX.yml b/.azuredevops/components/AMDMIGraphX.yml index 04b941122..b88de64bb 100644 --- a/.azuredevops/components/AMDMIGraphX.yml +++ b/.azuredevops/components/AMDMIGraphX.yml @@ -77,19 +77,15 @@ jobs: parameters: dependencyList: ${{ parameters.rocmDependencies }} dependencySource: tag-builds - - script: 'ls -1R /opt/rocm' - displayName: 'Artifact listing' - - script: 'ls -1R $(Agent.BuildDirectory)/rocm' - displayName: 'Artifact listing' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS=gfx1030;gfx1100 - -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;/opt/rocm/llvm;opt/rocm" - -DHALF_INCLUDE_DIR="$(Agent.BuildDirectory)/rocm/include" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;/opt/rocm/llvm;opt/rocm + -DHALF_INCLUDE_DIR=$(Agent.BuildDirectory)/rocm/include -DMIGRAPHX_USE_COMPOSABLEKERNEL=OFF -DBUILD_TESTING=ON -GNinja diff --git a/.azuredevops/components/HIP.yml b/.azuredevops/components/HIP.yml index 7ab0ba6e2..6c3929773 100644 --- a/.azuredevops/components/HIP.yml +++ b/.azuredevops/components/HIP.yml @@ -67,19 +67,17 @@ jobs: parameters: dependencyList: ${{ parameters.rocmDependenciesAMD }} dependencySource: tag-builds - - script: 'ls -1R $(Agent.BuildDirectory)/rocm' - displayName: 'Artifact listing' # compile clr - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: componentName: clr cmakeBuildDir: 'clr/build' extraBuildFlags: >- - -DHIP_COMMON_DIR="$(Build.SourcesDirectory)/HIP" + -DHIP_COMMON_DIR=$(Build.SourcesDirectory)/HIP -DHIP_PLATFORM=amd - -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" - -DROCM_PATH="$(Agent.BuildDirectory)/rocm" - -DHIPCC_BIN_DIR="$(Agent.BuildDirectory)/rocm/bin" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -DHIPCC_BIN_DIR=$(Agent.BuildDirectory)/rocm/bin -DCLR_BUILD_HIP=ON -DCLR_BUILD_OCL=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml @@ -132,12 +130,12 @@ jobs: componentName: clr cmakeBuildDir: 'clr/build' extraBuildFlags: >- - -DHIP_COMMON_DIR="$(Build.SourcesDirectory)/HIP" + -DHIP_COMMON_DIR=$(Build.SourcesDirectory)/HIP -DHIP_PLATFORM=nvidia - -DHIPCC_BIN_DIR="$(Agent.BuildDirectory)/rocm/bin" + -DHIPCC_BIN_DIR=$(Agent.BuildDirectory)/rocm/bin -DCLR_BUILD_HIP=ON -DCLR_BUILD_OCL=OFF - -DHIPNV_DIR="$(Build.SourcesDirectory)/hipother/hipnv" + -DHIPNV_DIR=$(Build.SourcesDirectory)/hipother/hipnv - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: artifactName: nvidia diff --git a/.azuredevops/components/HIPIFY.yml b/.azuredevops/components/HIPIFY.yml index c1cd29e7a..695f79df5 100644 --- a/.azuredevops/components/HIPIFY.yml +++ b/.azuredevops/components/HIPIFY.yml @@ -49,7 +49,7 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release - -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm" - -DROCM_PATH="$(Agent.BuildDirectory)/rocm" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm + -DROCM_PATH=$(Agent.BuildDirectory)/rocm -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/MIOpen.yml b/.azuredevops/components/MIOpen.yml index 4418587e3..0e6c18dbd 100644 --- a/.azuredevops/components/MIOpen.yml +++ b/.azuredevops/components/MIOpen.yml @@ -70,8 +70,8 @@ jobs: parameters: extraBuildFlags: >- -DMIOPEN_BACKEND=HIP - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" -DMIOPEN_ENABLE_AI_KERNEL_TUNING=OFF -DMIOPEN_ENABLE_AI_IMMED_MODE_FALLBACK=OFF diff --git a/.azuredevops/components/ROCR-Runtime.yml b/.azuredevops/components/ROCR-Runtime.yml index e524fc4a3..eb9bd4ac4 100644 --- a/.azuredevops/components/ROCR-Runtime.yml +++ b/.azuredevops/components/ROCR-Runtime.yml @@ -48,13 +48,9 @@ jobs: parameters: dependencyList: ${{ parameters.rocmDependencies }} dependencySource: tag-builds - - script: 'ls -1R $(Agent.BuildDirectory)/rocm' - displayName: 'Artifact listing' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" - "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN" - "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN/../lib" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm cmakeBuildDir: 'src/build' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index cd1302e48..88e703c0b 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -17,7 +17,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.ULTRA_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: diff --git a/.azuredevops/components/hipBLAS.yml b/.azuredevops/components/hipBLAS.yml index 57a0ad248..d6bbd9dbe 100644 --- a/.azuredevops/components/hipBLAS.yml +++ b/.azuredevops/components/hipBLAS.yml @@ -26,7 +26,7 @@ jobs: - template: /.azuredevops/variables-global.yml - name: LD_LIBRARY_PATH value: '/lib:/usr/lib:/usr/local/lib' - pool: ${{ variables.LOW_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: @@ -64,7 +64,7 @@ jobs: extraBuildFlags: >- -DCMAKE_PREFIX_PATH=/opt/rocm -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ -DAMDGPU_TARGETS=gfx1030;gfx1100 -DHIP_PLATFORM=amd -DBUILD_CLIENTS_TESTS=ON diff --git a/.azuredevops/components/hipCUB.yml b/.azuredevops/components/hipCUB.yml index cfe9dbe05..12b8e530b 100644 --- a/.azuredevops/components/hipCUB.yml +++ b/.azuredevops/components/hipCUB.yml @@ -19,7 +19,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.LOW_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: diff --git a/.azuredevops/components/hipRAND.yml b/.azuredevops/components/hipRAND.yml index 970b3284c..e0b43082f 100644 --- a/.azuredevops/components/hipRAND.yml +++ b/.azuredevops/components/hipRAND.yml @@ -15,6 +15,10 @@ parameters: - name: rocmDependencies type: object default: + - llvm-project + - ROCR-Runtime + - clr + - rocminfo - rocRAND jobs: @@ -22,10 +26,10 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -51,13 +55,12 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DBUILD_TEST=ON - -DCMAKE_MODULE_PATH="/opt/rocm/lib/cmake/hip" - -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;/opt/rocm" + -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS=gfx1030;gfx1100 - -DHIP_COMPILER=clang -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipSPARSELt.yml b/.azuredevops/components/hipSPARSELt.yml index d94677721..0554aa775 100644 --- a/.azuredevops/components/hipSPARSELt.yml +++ b/.azuredevops/components/hipSPARSELt.yml @@ -24,7 +24,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.LOW_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 1eebc0f95..b75c74198 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -22,7 +22,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.LOW_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: diff --git a/.azuredevops/components/hipfort.yml b/.azuredevops/components/hipfort.yml index b9c84f110..2b3918b5c 100644 --- a/.azuredevops/components/hipfort.yml +++ b/.azuredevops/components/hipfort.yml @@ -32,5 +32,5 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DHIPFORT_INSTALL_DIR=/tmp/hipfort .. + -DHIPFORT_INSTALL_DIR=/tmp/hipfort - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/llvm-project.yml b/.azuredevops/components/llvm-project.yml index c5b899f7e..a1a06c50b 100644 --- a/.azuredevops/components/llvm-project.yml +++ b/.azuredevops/components/llvm-project.yml @@ -77,11 +77,7 @@ jobs: -DCLANG_DEFAULT_RTLIB=compiler-rt -DCLANG_DEFAULT_UNWINDLIB=libgcc -DSANITIZER_AMDGPU=OFF - -DPACKAGE_VENDOR="AMD" - -DCMAKE_SKIP_BUILD_RPATH=TRUE - -DCMAKE_SKIP_INSTALL_RPATH=TRUE - "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN" - "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN/../lib" + -DPACKAGE_VENDOR=AMD -DCLANG_LINK_FLANG_LEGACY=ON -DCMAKE_CXX_STANDARD=17 -DFLANG_INCLUDE_DOCS=OFF diff --git a/.azuredevops/components/rccl.yml b/.azuredevops/components/rccl.yml index 82cd89df4..fe47b32ff 100644 --- a/.azuredevops/components/rccl.yml +++ b/.azuredevops/components/rccl.yml @@ -20,7 +20,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.LOW_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: @@ -36,8 +36,8 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" diff --git a/.azuredevops/components/rdc.yml b/.azuredevops/components/rdc.yml index 2f596e5b2..5bf4352ea 100644 --- a/.azuredevops/components/rdc.yml +++ b/.azuredevops/components/rdc.yml @@ -23,7 +23,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.LOW_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: diff --git a/.azuredevops/components/rocALUTION.yml b/.azuredevops/components/rocALUTION.yml index 1f663224a..295464201 100644 --- a/.azuredevops/components/rocALUTION.yml +++ b/.azuredevops/components/rocALUTION.yml @@ -38,8 +38,8 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" -DAMDGPU_TARGETS=gfx1030;gfx1100 diff --git a/.azuredevops/components/rocBLAS.yml b/.azuredevops/components/rocBLAS.yml index 36315e900..8a2240d48 100644 --- a/.azuredevops/components/rocBLAS.yml +++ b/.azuredevops/components/rocBLAS.yml @@ -28,7 +28,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.HIGH_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: @@ -48,8 +48,8 @@ jobs: -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DAMDGPU_TARGETS=gfx1030;gfx1100 -DTensile_CODE_OBJECT_VERSION=default -DTensile_LOGIC=asm_full diff --git a/.azuredevops/components/rocFFT.yml b/.azuredevops/components/rocFFT.yml index ac87dd084..fcfb58ee3 100644 --- a/.azuredevops/components/rocFFT.yml +++ b/.azuredevops/components/rocFFT.yml @@ -21,7 +21,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.ULTRA_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: @@ -37,8 +37,8 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DCMAKE_PREFIX_PATH=/opt/rocm -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS=gfx1030;gfx1100 diff --git a/.azuredevops/components/rocMLIR.yml b/.azuredevops/components/rocMLIR.yml index 23a0c0574..ea4ee2fae 100644 --- a/.azuredevops/components/rocMLIR.yml +++ b/.azuredevops/components/rocMLIR.yml @@ -33,8 +33,8 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DCMAKE_PREFIX_PATH=/opt/rocm -DBUILD_FAT_LIBROCKCOMPILER=1 -GNinja diff --git a/.azuredevops/components/rocPRIM.yml b/.azuredevops/components/rocPRIM.yml index 8a94a0057..6c12ab9fd 100644 --- a/.azuredevops/components/rocPRIM.yml +++ b/.azuredevops/components/rocPRIM.yml @@ -18,7 +18,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.LOW_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: @@ -38,8 +38,8 @@ jobs: parameters: extraBuildFlags: >- -DBUILD_BENCHMARK=ON - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DAMDGPU_TARGETS=gfx1030;gfx1100 -DBUILD_TEST=ON -GNinja diff --git a/.azuredevops/components/rocRAND.yml b/.azuredevops/components/rocRAND.yml index 3c57ac9b3..7cfda0f70 100644 --- a/.azuredevops/components/rocRAND.yml +++ b/.azuredevops/components/rocRAND.yml @@ -11,17 +11,26 @@ parameters: - cmake - ninja-build - googletest + - libgtest-dev - git +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo jobs: - job: rocRAND variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -32,14 +41,24 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_PREFIX_PATH="/opt/rocm" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DBUILD_TEST=ON - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DAMDGPU_TARGETS=gfx1030;gfx1100 - -DAMDGPU_TEST_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocSOLVER.yml b/.azuredevops/components/rocSOLVER.yml index 1dd08df04..df47cb70b 100644 --- a/.azuredevops/components/rocSOLVER.yml +++ b/.azuredevops/components/rocSOLVER.yml @@ -60,8 +60,8 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DAMDGPU_TARGETS=gfx1030;gfx1100 -DUSE_CUDA=OFF -DBUILD_CLIENTS_TESTS=ON diff --git a/.azuredevops/components/rocSPARSE.yml b/.azuredevops/components/rocSPARSE.yml index d46d16e78..b5907db81 100644 --- a/.azuredevops/components/rocSPARSE.yml +++ b/.azuredevops/components/rocSPARSE.yml @@ -23,7 +23,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.LOW_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: diff --git a/.azuredevops/components/rocThrust.yml b/.azuredevops/components/rocThrust.yml index c5ef0028a..191d36f47 100644 --- a/.azuredevops/components/rocThrust.yml +++ b/.azuredevops/components/rocThrust.yml @@ -39,8 +39,8 @@ jobs: parameters: extraBuildFlags: >- -GNinja - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DROCM_PATH=/opt/rocm -DCMAKE_PREFIX_PATH=/opt/rocm -DAMDGPU_TARGETS=gfx1030;gfx1100 diff --git a/.azuredevops/components/rocWMMA.yml b/.azuredevops/components/rocWMMA.yml index bae358d7d..5dd847636 100644 --- a/.azuredevops/components/rocWMMA.yml +++ b/.azuredevops/components/rocWMMA.yml @@ -22,7 +22,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.HIGH_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: diff --git a/.azuredevops/components/rocminfo.yml b/.azuredevops/components/rocminfo.yml index ec5b335ec..3ef0c15a6 100644 --- a/.azuredevops/components/rocminfo.yml +++ b/.azuredevops/components/rocminfo.yml @@ -9,6 +9,7 @@ parameters: type: object default: - ROCR-Runtime + - rocprofiler-register jobs: - job: rocminfo @@ -39,9 +40,6 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" - -DCMAKE_SKIP_BUILD_RPATH=TRUE + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DROCRTST_BLD_TYPE=release - "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN" - "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN/../lib" - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocprofiler.yml b/.azuredevops/components/rocprofiler.yml index 80ff95efa..f7d41fb4b 100644 --- a/.azuredevops/components/rocprofiler.yml +++ b/.azuredevops/components/rocprofiler.yml @@ -32,7 +32,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.LOW_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} container: image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: diff --git a/.azuredevops/components/roctracer.yml b/.azuredevops/components/roctracer.yml index 59a1cf7b7..3ed00199d 100644 --- a/.azuredevops/components/roctracer.yml +++ b/.azuredevops/components/roctracer.yml @@ -10,6 +10,8 @@ parameters: default: - cmake - ninja-build + - doxygen + - graphviz - name: pipModules type: object default: @@ -19,16 +21,20 @@ parameters: type: object default: - llvm-project + - ROCR-Runtime + - rocprofiler-register + - clr + - rocminfo jobs: - job: roctracer variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -56,9 +62,15 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=release - -DCMAKE_MODULE_PATH="$(Agent.BuildDirectory)/rocm/lib/cmake" - -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm" - -DENABLE_LDCONFIG=OFF + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DGPU_TARGETS=gfx1030;gfx1100 -GNinja - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml +# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml +# - task: Bash@3 +# displayName: 'Tests' +# inputs: +# targetType: inline +# script: ./run.sh +# workingDirectory: build diff --git a/.azuredevops/components/rpp.yml b/.azuredevops/components/rpp.yml index 25f009829..b998f84a8 100644 --- a/.azuredevops/components/rpp.yml +++ b/.azuredevops/components/rpp.yml @@ -36,8 +36,8 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DCMAKE_BUILD_TYPE=Release -DBUILD_CLIENTS=ON -DAMDGPU_TARGETS=gfx1030;gfx1100 diff --git a/.azuredevops/tag-builds/clr.yml b/.azuredevops/tag-builds/clr.yml new file mode 100644 index 000000000..105f2bcc7 --- /dev/null +++ b/.azuredevops/tag-builds/clr.yml @@ -0,0 +1,39 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/clr + ref: ${{ parameters.checkoutRef }} + - repository: matching_repo + type: github + endpoint: ROCm + name: ROCm/HIP + ref: ${{ parameters.checkoutRef }} + - repository: hipother_repo + type: github + endpoint: ROCm + name: ROCm/hipother + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/HIP.yml + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml index e065f2ff6..1814d4725 100644 --- a/.azuredevops/templates/steps/artifact-download.yml +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -13,6 +13,7 @@ parameters: type: object default: AMDMIGraphX: develop + clr: develop composable_kernel: develop half: master HIP: develop @@ -24,6 +25,7 @@ parameters: rocBLAS: develop rocFFT: develop rocm-cmake: develop + rocminfo: master rocMLIR: develop rocPRIM: develop rocprofiler-register: amd-mainline @@ -48,7 +50,7 @@ steps: inputs: buildType: 'specific' project: ROCm-CI - pipeline: ${{ parameters.pipelineId }} + definition: ${{ parameters.pipelineId }} specificBuildWithTriggering: true ${{ if eq(parameters.useDefaultBranch, true) }}: branchName: ${{ parameters.defaultBranchList[parameters.componentName] }} @@ -56,17 +58,17 @@ steps: branchName: ${{ parameters.branchName }} ${{ if in(parameters.componentName, parameters.componentsFailureOkay) }}: allowPartiallySucceededBuilds: true - targetPath: '$(System.ArtifactsDirectory)' + targetPath: '$(Pipeline.Workspace)/d' - task: ExtractFiles@1 displayName: Extract ${{ parameters.componentName }} inputs: - archiveFilePatterns: '$(System.ArtifactsDirectory)/**/*.tar.gz' + archiveFilePatterns: '$(Pipeline.Workspace)/d/**/*.tar.gz' destinationFolder: '$(Agent.BuildDirectory)/rocm' cleanDestinationFolder: false overwriteExistingFiles: true - task: DeleteFiles@1 displayName: Cleanup Compressed ${{ parameters.componentName }} inputs: - SourceFolder: '$(System.ArtifactsDirectory)' - Contents: '/**/*.tar.gz' + SourceFolder: '$(Pipeline.Workspace)/d' + Contents: '**/*.tar.gz' RemoveDotFiles: true diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml index ffaa77c0e..6ba86d7a1 100644 --- a/.azuredevops/templates/steps/build-cmake.yml +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -37,7 +37,7 @@ steps: # equivalent to running make $cmakeTarget from $cmakeBuildDir # e.g., make install - task: CMake@1 - displayName: '${{parameters.componentName }} Install' + displayName: '${{parameters.componentName }} ${{ parameters.cmakeTarget }}' inputs: workingDirectory: ${{ parameters.cmakeBuildDir }} cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} --target ${{ parameters.cmakeTarget }}' diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index f739ac83c..b62892a95 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -24,6 +24,7 @@ parameters: type: object default: AMDMIGraphX: $(amdmigraphx-pipeline-id) + clr: $(clr-pipeline-id) composable_kernel: $(composable-kernel-pipeline-id) half: $(half-pipeline-id) hipBLAS: $(hipblas-pipeline-id) @@ -34,6 +35,7 @@ parameters: rocBLAS: $(rocblas-pipeline-id) rocFFT: $(rotfft-pipeline-id) rocm-cmake: $(rocm-cmake-pipeline-id) + rocminfo: $(rocminfo-pipeline-id) rocMLIR: $(rocmlir-pipeline-id) rocPRIM: $(rocprim-pipeline-id) rocprofiler-register: $(rocprofiler-register-pipeline-id) @@ -47,6 +49,7 @@ parameters: type: object default: AMDMIGraphX: $(amdmigraphx-tagged-pipeline-id) + clr: $(clr-tagged-pipeline-id) composable_kernel: $(composable-kernel-tagged-pipeline-id) half: $(half-tagged-pipeline-id) hipBLAS: $(hipblas-tagged-pipeline-id) @@ -57,6 +60,7 @@ parameters: rocBLAS: $(rocblas-tagged-pipeline-id) rocFFT: $(rotfft-tagged-pipeline-id) rocm-cmake: $(rocm-cmake-tagged-pipeline-id) + rocminfo: $(rocminfo-tagged-pipeline-id) rocMLIR: $(rocmlir-tagged-pipeline-id) rocPRIM: $(rocprim-tagged-pipeline-id) rocprofiler-register: $(rocprofiler-register-tagged-pipeline-id) @@ -66,6 +70,11 @@ parameters: rocSPARSE: $(rocsparse-tagged-pipeline-id) ROCT-Thunk-Interface: $(roct-thunk-interface-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 + type: boolean + default: false steps: # assuming artifact-download.yml template file in same directory @@ -86,3 +95,20 @@ steps: parameters: componentName: ${{ parameters.fixedComponentName }} pipelineId: ${{ parameters.fixedPipelineIdentifier }} +- task: Bash@3 + displayName: 'list downloaded ROCm files' + inputs: + targetType: inline + 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 + script: | + echo "$(Agent.BuildDirectory)/rocm/lib + " | sudo tee -a /etc/ld.so.conf + sudo cat /etc/ld.so.conf + sudo ldconfig -v + ldconfig -p From 48bd77a816db0d0f057f93f257e33224180adf82 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 21 May 2024 13:19:26 -0700 Subject: [PATCH 028/175] Change ROCR-Runtime to relative link (#3143) --- docs/what-is-rocm.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index b76ab2445..4c3f4e9ec 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -132,4 +132,4 @@ Runtimes "`AMD Common Language Runtime (CLR) `_", "Contains source code for AMD's common language runtimes: :doc:`HIP ` and OpenCL" ":doc:`HIP `", "AMD's GPU programming language extension and the GPU runtime" - "`ROCR-Runtime `_", "User-mode API interfaces and libraries necessary for host applications to launch compute kernels on available HSA ROCm kernel agents" + ":doc:`ROCR-Runtime `", "User-mode API interfaces and libraries necessary for host applications to launch compute kernels on available HSA ROCm kernel agents" From d8f23a1825dd033737a67f58e70ea7530bc54a7e Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 14 May 2024 12:11:57 -0700 Subject: [PATCH 029/175] Update What is ROCm?: remove RCP from components and change repo links to ROCm docs (#3129) * Remove Radeon Compute Profiler from list of components * Update ROCm CMake and ROCr links --- docs/what-is-rocm.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index 9994bb487..b76ab2445 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -99,10 +99,9 @@ Tools ":doc:`AMD SMI `", "C library for Linux that provides a user space interface for applications to monitor and control AMD devices" ":doc:`HIPIFY `", "Translates CUDA source code into portable HIP C++" - "`Radeon Compute Profiler (RCP) `_ ", "Performance analysis tool that gathers data from the API runtime and GPU for OpenCL and ROCm/HSA applications" "`RocBandwidthTest `_ ", "Captures the performance characteristics of buffer copying and kernel read/write operations" ":doc:`ROCmCC <./reference/rocmcc>`", "Clang/LLVM-based compiler" - "`ROCm CMake `_ ", "Collection of CMake modules for common build and development tasks" + ":doc:`ROCm CMake `", "Collection of CMake modules for common build and development tasks" ":doc:`ROCm Data Center Tool `", "Simplifies administration and addresses key infrastructure challenges in AMD GPUs in cluster and data-center environments" "`ROCm Debug Agent (ROCdebug-agent) `_ ", "Prints the state of all AMD GPU wavefronts that caused a queue error by sending a SIGQUIT signal to the process while the program is running" ":doc:`ROCm Debugger (ROCgdb) `", "Source-level debugger for Linux, based on the GNU Debugger (GDB)" @@ -133,4 +132,4 @@ Runtimes "`AMD Common Language Runtime (CLR) `_", "Contains source code for AMD's common language runtimes: :doc:`HIP ` and OpenCL" ":doc:`HIP `", "AMD's GPU programming language extension and the GPU runtime" - "`ROCR-Runtime `_ ", "User-mode API interfaces and libraries necessary for host applications to launch compute kernels on available HSA ROCm kernel agents" + "`ROCR-Runtime `_", "User-mode API interfaces and libraries necessary for host applications to launch compute kernels on available HSA ROCm kernel agents" From bf7eb29266e4a496b79c651154b2d974f4899d01 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 21 May 2024 13:19:26 -0700 Subject: [PATCH 030/175] Change ROCR-Runtime to relative link (#3143) --- docs/what-is-rocm.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index b76ab2445..4c3f4e9ec 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -132,4 +132,4 @@ Runtimes "`AMD Common Language Runtime (CLR) `_", "Contains source code for AMD's common language runtimes: :doc:`HIP ` and OpenCL" ":doc:`HIP `", "AMD's GPU programming language extension and the GPU runtime" - "`ROCR-Runtime `_", "User-mode API interfaces and libraries necessary for host applications to launch compute kernels on available HSA ROCm kernel agents" + ":doc:`ROCR-Runtime `", "User-mode API interfaces and libraries necessary for host applications to launch compute kernels on available HSA ROCm kernel agents" From 53760c0de4c846a8973e69c4565f0aab5d6221da Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Thu, 23 May 2024 13:32:05 -0400 Subject: [PATCH 031/175] External CI pipelines for openmp-extras repos (#3151) Separate tag-build pipelines for aomp and aomp-extras to unblock other work. --- .azuredevops/components/aomp-extras.yml | 60 +++++++++ .azuredevops/components/aomp.yml | 122 ++++++++++++++++++ .azuredevops/tag-builds/aomp-extras.yml | 25 ++++ .azuredevops/tag-builds/aomp.yml | 30 +++++ .../templates/steps/artifact-download.yml | 2 + .../templates/steps/dependencies-rocm.yml | 8 +- 6 files changed, 245 insertions(+), 2 deletions(-) create mode 100644 .azuredevops/components/aomp-extras.yml create mode 100644 .azuredevops/components/aomp.yml create mode 100644 .azuredevops/tag-builds/aomp-extras.yml create mode 100644 .azuredevops/tag-builds/aomp.yml diff --git a/.azuredevops/components/aomp-extras.yml b/.azuredevops/components/aomp-extras.yml new file mode 100644 index 000000000..973e26d48 --- /dev/null +++ b/.azuredevops/components/aomp-extras.yml @@ -0,0 +1,60 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - python3-pip + - ninja-build + - pkg-config + - git +- name: rocmDependencies + type: object + default: + - llvm-project + +jobs: +- job: aomp_extras + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.BASE_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# 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/build-cmake.yml + parameters: + componentName: aomp-extras + extraBuildFlags: >- + -DLLVM_DIR=$(Agent.BuildDirectory)/rocm/llvm + -DCMAKE_BUILD_TYPE=Release + -DAOMP_STANDALONE_BUILD=0 + -DAOMP_VERSION_STRING=$(LATEST_RELEASE_TAG) + -GNinja + installDir: $(Build.BinariesDirectory)/llvm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/aomp.yml b/.azuredevops/components/aomp.yml new file mode 100644 index 000000000..6c4e1ad41 --- /dev/null +++ b/.azuredevops/components/aomp.yml @@ -0,0 +1,122 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - python3-pip + - ninja-build + - pkg-config + - libpci-dev + - libnuma-dev + - libffi-dev + - git + - libopenmpi-dev + - gawk + - mesa-common-dev + - libtool + - libdrm-amdgpu1 + - libdrm-dev + - libdw-dev + - libgtest-dev + - libsystemd-dev + - libssl-dev + - libstdc++-12-dev +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - ROCT-Thunk-Interface + +jobs: +- job: aomp + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.BASE_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: llvm-project_repo +# 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/build-cmake.yml + parameters: + componentName: llvm-openmp + extraBuildFlags: >- + -DOPENMP_ENABLE_LIBOMPTARGET=1 + -DOPENMP_TEST_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang + -DOPENMP_TEST_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ + -DLIBOMPTARGET_AMDGCN_GFXLIST=gfx700;gfx701;gfx801;gfx803;gfx900;gfx902;gfx906;gfx908;gfx90a;gfx90c;gfx940;gfx941;gfx942;gfx1030;gfx1031;gfx1035;gfx1036;gfx1100;gfx1101;gfx1102;gfx1103 + -DDEVICELIBS_ROOT=$(Build.SourcesDirectory)/llvm-project/amd/device-libs + -DLIBOMP_COPY_EXPORTS=OFF + -DLLVM_DIR=$(Agent.BuildDirectory)/rocm/llvm + -DLLVM_MAIN_INCLUDE_DIR=$(Build.SourcesDirectory)/llvm-project/llvm/include + -DLIBOMPTARGET_LLVM_INCLUDE_DIRS=$(Build.SourcesDirectory)/llvm-project/llvm/include + -DCUDA_TOOLKIT_ROOT_DIR=OFF + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/lib/cmake + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_SKIP_BUILD_RPATH=TRUE + -DCMAKE_SKIP_INSTALL_RPATH=TRUE + -DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN:$ORIGIN/../lib:$ORIGIN/../../lib:$ORIGIN/../../../lib + -DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN/../lib:$ORIGIN/../../lib:$ORIGIN/../../../lib + -DCMAKE_MODULE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN:$ORIGIN/../lib:$ORIGIN/../../lib:$ORIGIN/../../../lib + -GNinja + cmakeBuildDir: $(Build.SourcesDirectory)/llvm-project/openmp/build + installDir: $(Build.BinariesDirectory)/llvm +# offload does not exist for recent releases, so use CI conditional + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: llvm-offload + extraBuildFlags: >- + -DOPENMP_ENABLE_LIBOMPTARGET=1 + -DOPENMP_TEST_C_COMPILER==$(Agent.BuildDirectory)/rocm/llvm/bin/clang + -DOPENMP_TEST_CXX_COMPILER==$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER==$(Agent.BuildDirectory)/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER==$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ + -DLIBOMPTARGET_AMDGCN_GFXLIST=gfx700;gfx701;gfx801;gfx803;gfx900;gfx902;gfx906;gfx908;gfx90a;gfx90c;gfx940;gfx941;gfx942;gfx1030;gfx1031;gfx1035;gfx1036;gfx1100;gfx1101;gfx1102;gfx1103 + -DLLVM_DIR==$(Agent.BuildDirectory)/rocm/llvm + -DLLVM_MAIN_INCLUDE_DIR=$(Build.SourcesDirectory)/llvm-project/llvm/include + -DLIBOMPTARGET_LLVM_INCLUDE_DIRS=$(Build.SourcesDirectory)/llvm-project/llvm/include + -DCUDA_TOOLKIT_ROOT_DIR=OFF + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/lib/cmake + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_SKIP_BUILD_RPATH=TRUE + -DCMAKE_SKIP_INSTALL_RPATH=TRUE + -DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN:$ORIGIN/../lib:$ORIGIN/../../lib:$ORIGIN/../../../lib + -DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN/../lib:$ORIGIN/../../lib:$ORIGIN/../../../lib + -DCMAKE_MODULE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ORIGIN:$ORIGIN/../lib:$ORIGIN/../../lib:$ORIGIN/../../../lib + -GNinja + cmakeBuildDir: $(Build.SourcesDirectory)/llvm-project/offload/build + installDir: $(Build.BinariesDirectory)/llvm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/tag-builds/aomp-extras.yml b/.azuredevops/tag-builds/aomp-extras.yml new file mode 100644 index 000000000..8e551386a --- /dev/null +++ b/.azuredevops/tag-builds/aomp-extras.yml @@ -0,0 +1,25 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/aomp-extras + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/aomp-extras.yml + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/aomp.yml b/.azuredevops/tag-builds/aomp.yml new file mode 100644 index 000000000..ebd1b3698 --- /dev/null +++ b/.azuredevops/tag-builds/aomp.yml @@ -0,0 +1,30 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/aomp + ref: ${{ parameters.checkoutRef }} + - repository: llvm-project_repo + type: github + endpoint: ROCm + name: ROCm/llvm-project + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/aomp.yml + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml index 1814d4725..90b67eae7 100644 --- a/.azuredevops/templates/steps/artifact-download.yml +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -12,6 +12,8 @@ parameters: - name: defaultBranchList type: object default: + aomp: aomp-dev + aomp-extras: aomp-dev AMDMIGraphX: develop clr: develop composable_kernel: develop diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index b62892a95..4d39e2838 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -23,6 +23,8 @@ parameters: - name: stagingPipelineIdentifiers type: object default: + aomp: $(aomp-pipeline-id) + aomp-extras: $(aomp-extras-pipeline-id) AMDMIGraphX: $(amdmigraphx-pipeline-id) clr: $(clr-pipeline-id) composable_kernel: $(composable-kernel-pipeline-id) @@ -48,6 +50,8 @@ parameters: - name: taggedPipelineIdentifiers type: object default: + aomp: $(aomp-tagged-pipeline-id) + aomp-extras: $(aomp-extras-tagged-pipeline-id) AMDMIGraphX: $(amdmigraphx-tagged-pipeline-id) clr: $(clr-tagged-pipeline-id) composable_kernel: $(composable-kernel-tagged-pipeline-id) @@ -107,8 +111,8 @@ steps: targetType: inline # OS ignores if the ROCm lib folder shows up more than once script: | - echo "$(Agent.BuildDirectory)/rocm/lib - " | sudo tee -a /etc/ld.so.conf + echo $(Agent.BuildDirectory)/rocm/lib | sudo tee -a /etc/ld.so.conf + echo $(Agent.BuildDirectory)/rocm/llvm/lib | sudo tee -a /etc/ld.so.conf sudo cat /etc/ld.so.conf sudo ldconfig -v ldconfig -p From 3112f97fe8b41cad1bc6d4e569edf17935c578e9 Mon Sep 17 00:00:00 2001 From: Kiriti Gowda Date: Fri, 24 May 2024 02:48:13 -0700 Subject: [PATCH 032/175] Update rocDecode.yml (#3156) --- .azuredevops/components/rocDecode.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/rocDecode.yml b/.azuredevops/components/rocDecode.yml index 65be15935..2e067d6db 100644 --- a/.azuredevops/components/rocDecode.yml +++ b/.azuredevops/components/rocDecode.yml @@ -16,7 +16,8 @@ parameters: - libavformat-dev - libavutil-dev - libstdc++-12-dev - - mesa-amdgpu-multimedia-devel + - libva-dev + - mesa-amdgpu-va-drivers jobs: - job: rocDecode @@ -41,7 +42,6 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release - -DBUILD_CLIENTS=ON -L -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 35af6c822f1902faac003b4f206f5f3c500ef94b Mon Sep 17 00:00:00 2001 From: Kiriti Gowda Date: Fri, 24 May 2024 02:48:56 -0700 Subject: [PATCH 033/175] Update MIVisionX.yml (#3155) --- .azuredevops/components/MIVisionX.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/MIVisionX.yml b/.azuredevops/components/MIVisionX.yml index 24fdac759..57f855513 100644 --- a/.azuredevops/components/MIVisionX.yml +++ b/.azuredevops/components/MIVisionX.yml @@ -27,6 +27,8 @@ parameters: - libswscale-dev - rpp - rpp-dev + - rocdecode + - rocdecode-dev - build-essential - libgtk2.0-dev - libavcodec-dev @@ -74,8 +76,6 @@ jobs: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release -DROCM_PATH=/opt/rocm - -DBUILD_DEV=ON -DROCM_DEP_ROCMCORE=ON - -DROCAL_PYTHON=OFF -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 22f84ab30696e06ca2696f91209ffbd80f6c087e Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Mon, 27 May 2024 10:53:10 -0400 Subject: [PATCH 034/175] Compiling dockerless AMDMIGraphX pipeline (#3159) --- .azuredevops/components/AMDMIGraphX.yml | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/.azuredevops/components/AMDMIGraphX.yml b/.azuredevops/components/AMDMIGraphX.yml index b88de64bb..fc2a8ab89 100644 --- a/.azuredevops/components/AMDMIGraphX.yml +++ b/.azuredevops/components/AMDMIGraphX.yml @@ -12,10 +12,8 @@ parameters: - cmake - ninja-build - libnuma-dev - - miopen-hip-dev - - openmp-extras + - python3-pip - python3-venv - - rocblas-dev - libtbb-dev - nlohmann-json3-dev - libmsgpack-dev @@ -23,7 +21,6 @@ parameters: - libprotobuf-dev - protobuf-compiler - python3-pybind11 - - composablekernel-dev - name: pipModules type: object default: @@ -38,7 +35,16 @@ parameters: type: object default: - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo - rocMLIR + - MIOpen + - aomp + - aomp-extras + - rocBLAS + - composable_kernel jobs: - job: AMDMIGraphX @@ -46,8 +52,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -80,11 +84,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS=gfx1030;gfx1100 - -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;/opt/rocm/llvm;opt/rocm + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm -DHALF_INCLUDE_DIR=$(Agent.BuildDirectory)/rocm/include -DMIGRAPHX_USE_COMPOSABLEKERNEL=OFF -DBUILD_TESTING=ON From f4a688e0a5537552e9ffe5cf3ddf12c2c7b80a8f Mon Sep 17 00:00:00 2001 From: MKKnorr Date: Mon, 27 May 2024 19:31:25 +0200 Subject: [PATCH 035/175] Re-add glossary to hardware specification table (#3073) * Re-add glossary to hardware specification table * PR findings * PR findings PR findings * Update docs/reference/gpu-arch-specs.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * Update docs/reference/gpu-arch-specs.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * Update docs/reference/gpu-arch-specs.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * Update docs/reference/gpu-arch-specs.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * PR findings --------- Co-authored-by: Istvan Kiss Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> --- docs/reference/gpu-arch-specs.rst | 102 +++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 3 deletions(-) diff --git a/docs/reference/gpu-arch-specs.rst b/docs/reference/gpu-arch-specs.rst index df9068c48..8686e3303 100644 --- a/docs/reference/gpu-arch-specs.rst +++ b/docs/reference/gpu-arch-specs.rst @@ -1,9 +1,9 @@ .. meta:: :description: AMD Instinct™ accelerator, AMD Radeon PRO™, and AMD Radeon™ GPU architecture information - :keywords: Instinct, Radeon, accelerator, CDNA, GPU, architecture, VRAM, Compute Units, Cache, Registers, LDS, Register File + :keywords: Instinct, Radeon, accelerator, GCN, CDNA, RDNA, GPU, architecture, VRAM, Compute Units, Cache, Registers, LDS, Register File Accelerator and GPU hardware specifications -###################################################### +=========================================== The following tables provide an overview of the hardware specifications for AMD Instinct™ accelerators, and AMD Radeon™ PRO and Radeon™ GPUs. @@ -659,4 +659,100 @@ The following tables provide an overview of the hardware specifications for AMD - 256 - 12.5 -For more information on the terms used here, see the :ref:`specific documents and guides ` or :doc:`Understanding the HIP programming model`. +Glossary +======== + +For more information about the terms used, see the +:ref:`specific documents and guides `, or +:doc:`Understanding the HIP programming model`. + +**LLVM target name** + +Argument to pass to clang in `--offload-arch` to compile code for the given +architecture. + +**VRAM** + +Amount of memory available on the GPU. + +**Compute Units** + +Number of compute units on the GPU. + +**Wavefront Size** + +Amount of work items that execute in parallel on a single compute unit. This +is equivalent to the warp size in HIP. + +**LDS** + +The Local Data Share (LDS) is a low-latency, high-bandwidth scratch pad +memory. It is local to the compute units, and can be shared by all work items +in a work group. In HIP, the LDS can be used for shared memory, which is +shared by all threads in a block. + +**L3 Cache (CDNA/GCN only)** + +Size of the level 3 cache. Shared by all compute units on the same GPU. Caches +data and instructions. Similar to the Infinity Cache on RDNA architectures. + +**Infinity Cache (RDNA only)** + +Size of the infinity cache. Shared by all compute units on the same GPU. Caches +data and instructions. Similar to the L3 Cache on CDNA/GCN architectures. + +**L2 Cache** + +Size of the level 3 cache. Shared by all compute units on the same GCD. Caches +data and instructions. + +**Graphics L1 Cache (RDNA only)** + +An additional cache level that only exists in RDNA architectures. Local to a +work group processor. + +**L1 Vector Cache (CDNA/GCN only)** + +Size of the level 1 vector data cache. Local to a compute unit. This is the L0 +vector cache in RDNA architectures. + +**L1 Scalar Cache (CDNA/GCN only)** + +Size of the level 1 scalar data cache. Usually shared by several compute +units. This is the L0 scalar cache in RDNA architectures. + +**L1 Instruction Cache (CDNA/GCN only)** + +Size of the level 1 instruction cache. Usually shared by several compute +units. This is the L0 instruction cache in RDNA architectures. + +**L0 Vector Cache (RDNA only)** + +Size of the level 0 vector data cache. Local to a compute unit. This is the L1 +vector cache in CDNA/GCN architectures. + +**L0 Scalar Cache (RDNA only)** + +Size of the level 0 scalar data cache. Usually shared by several compute +units. This is the L1 scalar cache in CDNA/GCN architectures. + +**L0 Instruction Cache (RDNA only)** + +Size of the level 0 instruction cache. Usually shared by several compute +units. This is the L1 instruction cache in CDNA/GCN architectures. + +**VGPR File** + +Size of the Vector General Purpose Register (VGPR) file and. It holds data used in +vector instructions. +GPUs with matrix cores also have AccVGPRs, which are Accumulation General +Purpose Vector Registers, used specifically in matrix instructions. + +**SGPR File** + +Size of the Scalar General Purpose Register (SGPR) file. Holds data used in +scalar instructions. + +**GCD** + +Graphics Compute Die. From 51ad14c3fa85f9908ec3f03331ad11da85b08eec Mon Sep 17 00:00:00 2001 From: MKKnorr Date: Mon, 27 May 2024 19:31:25 +0200 Subject: [PATCH 036/175] Re-add glossary to hardware specification table (#3073) * Re-add glossary to hardware specification table * PR findings * PR findings PR findings * Update docs/reference/gpu-arch-specs.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * Update docs/reference/gpu-arch-specs.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * Update docs/reference/gpu-arch-specs.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * Update docs/reference/gpu-arch-specs.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * PR findings --------- Co-authored-by: Istvan Kiss Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> --- docs/reference/gpu-arch-specs.rst | 102 +++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 3 deletions(-) diff --git a/docs/reference/gpu-arch-specs.rst b/docs/reference/gpu-arch-specs.rst index df9068c48..8686e3303 100644 --- a/docs/reference/gpu-arch-specs.rst +++ b/docs/reference/gpu-arch-specs.rst @@ -1,9 +1,9 @@ .. meta:: :description: AMD Instinct™ accelerator, AMD Radeon PRO™, and AMD Radeon™ GPU architecture information - :keywords: Instinct, Radeon, accelerator, CDNA, GPU, architecture, VRAM, Compute Units, Cache, Registers, LDS, Register File + :keywords: Instinct, Radeon, accelerator, GCN, CDNA, RDNA, GPU, architecture, VRAM, Compute Units, Cache, Registers, LDS, Register File Accelerator and GPU hardware specifications -###################################################### +=========================================== The following tables provide an overview of the hardware specifications for AMD Instinct™ accelerators, and AMD Radeon™ PRO and Radeon™ GPUs. @@ -659,4 +659,100 @@ The following tables provide an overview of the hardware specifications for AMD - 256 - 12.5 -For more information on the terms used here, see the :ref:`specific documents and guides ` or :doc:`Understanding the HIP programming model`. +Glossary +======== + +For more information about the terms used, see the +:ref:`specific documents and guides `, or +:doc:`Understanding the HIP programming model`. + +**LLVM target name** + +Argument to pass to clang in `--offload-arch` to compile code for the given +architecture. + +**VRAM** + +Amount of memory available on the GPU. + +**Compute Units** + +Number of compute units on the GPU. + +**Wavefront Size** + +Amount of work items that execute in parallel on a single compute unit. This +is equivalent to the warp size in HIP. + +**LDS** + +The Local Data Share (LDS) is a low-latency, high-bandwidth scratch pad +memory. It is local to the compute units, and can be shared by all work items +in a work group. In HIP, the LDS can be used for shared memory, which is +shared by all threads in a block. + +**L3 Cache (CDNA/GCN only)** + +Size of the level 3 cache. Shared by all compute units on the same GPU. Caches +data and instructions. Similar to the Infinity Cache on RDNA architectures. + +**Infinity Cache (RDNA only)** + +Size of the infinity cache. Shared by all compute units on the same GPU. Caches +data and instructions. Similar to the L3 Cache on CDNA/GCN architectures. + +**L2 Cache** + +Size of the level 3 cache. Shared by all compute units on the same GCD. Caches +data and instructions. + +**Graphics L1 Cache (RDNA only)** + +An additional cache level that only exists in RDNA architectures. Local to a +work group processor. + +**L1 Vector Cache (CDNA/GCN only)** + +Size of the level 1 vector data cache. Local to a compute unit. This is the L0 +vector cache in RDNA architectures. + +**L1 Scalar Cache (CDNA/GCN only)** + +Size of the level 1 scalar data cache. Usually shared by several compute +units. This is the L0 scalar cache in RDNA architectures. + +**L1 Instruction Cache (CDNA/GCN only)** + +Size of the level 1 instruction cache. Usually shared by several compute +units. This is the L0 instruction cache in RDNA architectures. + +**L0 Vector Cache (RDNA only)** + +Size of the level 0 vector data cache. Local to a compute unit. This is the L1 +vector cache in CDNA/GCN architectures. + +**L0 Scalar Cache (RDNA only)** + +Size of the level 0 scalar data cache. Usually shared by several compute +units. This is the L1 scalar cache in CDNA/GCN architectures. + +**L0 Instruction Cache (RDNA only)** + +Size of the level 0 instruction cache. Usually shared by several compute +units. This is the L1 instruction cache in CDNA/GCN architectures. + +**VGPR File** + +Size of the Vector General Purpose Register (VGPR) file and. It holds data used in +vector instructions. +GPUs with matrix cores also have AccVGPRs, which are Accumulation General +Purpose Vector Registers, used specifically in matrix instructions. + +**SGPR File** + +Size of the Scalar General Purpose Register (SGPR) file. Holds data used in +scalar instructions. + +**GCD** + +Graphics Compute Die. From 0ba6bb43ef434da5b241d61d38d77e7a38299778 Mon Sep 17 00:00:00 2001 From: Bence Parajdi Date: Tue, 28 May 2024 12:27:02 +0200 Subject: [PATCH 037/175] fix bad file extention referencing setting-cus.rst in index.md --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 7f0f59f59..3406a9531 100644 --- a/docs/index.md +++ b/docs/index.md @@ -115,7 +115,7 @@ Our documentation is organized into the following categories: * [MI250](./conceptual/gpu-arch/mi250.md) * [MI300](./conceptual/gpu-arch/mi300.md) * [GPU memory](./conceptual/gpu-memory.md) -* [Setting the number of CUs](./conceptual/setting-cus.md) +* [Setting the number of CUs](./conceptual/setting-cus) * [File structure (Linux FHS)](./conceptual/file-reorg.md) * [GPU isolation techniques](./conceptual/gpu-isolation.md) * [Using CMake](./conceptual/cmake-packages.rst) From 657a27758a57c1a82ae87cbd0068421b6acdbb65 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 28 May 2024 09:29:32 -0700 Subject: [PATCH 038/175] Add missed ROCm SMI changelog notes (#3168) Fix link to rocm_smi_lib changelog Update RELEASE.md --- CHANGELOG.md | 23 +++++++++++++++ RELEASE.md | 29 +++++++++++++++++-- tools/autotag/templates/rocm_changes/6.1.1.md | 23 +++++++++++++++ 3 files changed, 72 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c2e0a716..67d62dd85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,10 +70,33 @@ HIPCC for ROCm 6.1.1 ROCm SMI for ROCm 6.1.1 +##### Additions + +* Added the capability to unlock mutex when a process is dead. Added related debug output. +* Added the `Partition ID` field to the `rocm-smi` CLI. +* Added `NODE`, `GUID`, and `GFX Version` fields to the CLI. +* Documentation now includes C++ and Python tutorials, API guides, and reference material. + +##### Changes + +* Some `rocm-smi` fields now display `N/A` instead of `unknown/unsupported` for consistency. +* Changed stacked ID formatting in the `rocm-smi` CLI to make it easier to spot identifiers. + +##### Fixes + +* Fixed HIP and ROCm SMI mismatch on GPU bus assignments. +* Fixed memory leaks caused by not closing directories and creating maps nodes instead of using `.at()`. +* Fixed initializing calls which reuse `rocmsmi.initializeRsmi()` bindings in the `rocmsmi` Python API. +* Fixed an issue causing `rsmi_dev_activity_metric_get` gfx/memory to not update with GPU activity. + ##### Known issues * ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. See the issue on [GitHub](https://github.com/ROCm/ROCm/issues/3112). +```{note} +See the [detailed ROCm SMI changelog](https://github.com/ROCm/rocm_smi_lib/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` + ### Library changes in ROCm 6.1.1 | Library | Version | diff --git a/RELEASE.md b/RELEASE.md index 3a0b1b31e..451955ee0 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -62,10 +62,33 @@ HIPCC for ROCm 6.1.1 ROCm SMI for ROCm 6.1.1 +### Additions + +* Added the capability to unlock mutex when a process is dead. Added related debug output. +* Added the `Partition ID` field to the `rocm-smi` CLI. +* Added `NODE`, `GUID`, and `GFX Version` fields to the CLI. +* Documentation now includes C++ and Python tutorials, API guides, and reference material. + +### Changes + +* Some `rocm-smi` fields now display `N/A` instead of `unknown/unsupported` for consistency. +* Changed stacked ID formatting in the `rocm-smi` CLI to make it easier to spot identifiers. + +### Fixes + +* Fixed HIP and ROCm SMI mismatch on GPU bus assignments. +* Fixed memory leaks caused by not closing directories and creating maps nodes instead of using `.at()`. +* Fixed initializing calls which reuse `rocmsmi.initializeRsmi()` bindings in the `rocmsmi` Python API. +* Fixed an issue causing `rsmi_dev_activity_metric_get` gfx/memory to not update with GPU activity. + ### Known issues - ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. See the issue on [GitHub](https://github.com/ROCm/ROCm/issues/3112). +```{note} +See the [detailed ROCm SMI changelog](https://github.com/ROCm/rocm_smi_lib/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` + ## Library changes in ROCm 6.1.1 | Library | Version | @@ -97,11 +120,11 @@ ROCm SMI for ROCm 6.1.1 | rpp | [1.5.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.1.1) | | Tensile | [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.1) | -#### hipBLASLt 0.7.0 +### hipBLASLt 0.7.0 hipBLASLt 0.7.0 for ROCm 6.1.1 -##### Additions +#### Additions - Added `hipblasltExtSoftmax` extension API. - Added `hipblasltExtLayerNorm` extension API. @@ -109,7 +132,7 @@ hipBLASLt 0.7.0 for ROCm 6.1.1 - Added `GemmTuning` extension parameter to set split-k by user. - Added support for mixed precision datatype: fp16/fp8 in with fp16 outk. -##### Deprecations +#### Deprecations - **Upcoming**: `algoGetHeuristic()` ext API for GroupGemm will be deprecated in a future release of hipBLASLt. diff --git a/tools/autotag/templates/rocm_changes/6.1.1.md b/tools/autotag/templates/rocm_changes/6.1.1.md index e2548a2c4..77b7ac846 100644 --- a/tools/autotag/templates/rocm_changes/6.1.1.md +++ b/tools/autotag/templates/rocm_changes/6.1.1.md @@ -52,6 +52,29 @@ HIPCC for ROCm 6.1.1 ROCm SMI for ROCm 6.1.1 +#### Additions + +* Added the capability to unlock mutex when a process is dead. Added related debug output. +* Added the `Partition ID` field to the `rocm-smi` CLI. +* Added `NODE`, `GUID`, and `GFX Version` fields to the CLI. +* Documentation now includes C++ and Python tutorials, API guides, and reference material. + +#### Changes + +* Some `rocm-smi` fields now display `N/A` instead of `unknown/unsupported` for consistency. +* Changed stacked ID formatting in the `rocm-smi` CLI to make it easier to spot identifiers. + +#### Fixes + +* Fixed HIP and ROCm SMI mismatch on GPU bus assignments. +* Fixed memory leaks caused by not closing directories and creating maps nodes instead of using `.at()`. +* Fixed initializing calls which reuse `rocmsmi.initializeRsmi()` bindings in the `rocmsmi` Python API. +* Fixed an issue causing `rsmi_dev_activity_metric_get` gfx/memory to not update with GPU activity. + #### Known issues * ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. See the issue on [GitHub](https://github.com/ROCm/ROCm/issues/3112). + +```{note} +See the [detailed ROCm SMI changelog](https://github.com/ROCm/rocm_smi_lib/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` From 2160ee655638d5f5ebfa997714f0e735ff64a2eb Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Tue, 28 May 2024 13:37:25 -0400 Subject: [PATCH 039/175] Update External CI Interdependencies for more repos (#3154) * Update External CI Interdependencies for more repos - composable_kernel - hipBLAS - rocBLAS - rocSOLVER Cleaned up unused flags from llvm-project * Remove LD_LIBRARY_PATH change. Should not be needed. --- .azuredevops/components/composable_kernel.yml | 29 ++++++++++-- .azuredevops/components/hipBLAS.yml | 46 ++++++++++++------- .azuredevops/components/llvm-project.yml | 4 +- .azuredevops/components/rocBLAS.yml | 44 +++++++++++++++--- .azuredevops/components/rocSOLVER.yml | 36 +++++++++++---- 5 files changed, 120 insertions(+), 39 deletions(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index 88e703c0b..adef93e84 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -11,6 +11,16 @@ parameters: - cmake - ninja-build - git + - python3-pip +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocprofiler-register jobs: - job: composable_kernel @@ -18,8 +28,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -30,11 +38,24 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release -DGPU_TARGETS=gfx1030;gfx1100 -GNinja diff --git a/.azuredevops/components/hipBLAS.yml b/.azuredevops/components/hipBLAS.yml index d6bbd9dbe..03747afa7 100644 --- a/.azuredevops/components/hipBLAS.yml +++ b/.azuredevops/components/hipBLAS.yml @@ -10,25 +10,33 @@ parameters: default: - cmake - ninja-build - - rocblas-dev - - rocsparse - - rocsolver-dev - gfortran - googletest - git - libgtest-dev - wget + - python3-pip + - libomp-dev +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocprofiler-register + - rocBLAS + - rocSPARSE + - rocSOLVER + - aomp jobs: - job: hipBLAS variables: - group: common - template: /.azuredevops/variables-global.yml - - name: LD_LIBRARY_PATH - value: '/lib:/usr/lib:/usr/local/lib' pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -51,20 +59,24 @@ jobs: targetType: inline script: sudo apt install --yes ./aocl-linux-aocc-4.1.0_1_amd64.deb workingDirectory: '$(Pipeline.Workspace)' - - task: Bash@3 - displayName: 'ldconfig' - inputs: - targetType: inline - script: sudo ldconfig - workingDirectory: '/usr/local/lib' - - script: 'ls -1R /usr/local' - displayName: 'Artifact listing' +# 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DAMDGPU_TARGETS=gfx1030;gfx1100 -DHIP_PLATFORM=amd -DBUILD_CLIENTS_TESTS=ON diff --git a/.azuredevops/components/llvm-project.yml b/.azuredevops/components/llvm-project.yml index a1a06c50b..1159ab57f 100644 --- a/.azuredevops/components/llvm-project.yml +++ b/.azuredevops/components/llvm-project.yml @@ -14,6 +14,7 @@ parameters: - ninja-build - python-is-python3 - zlib1g-dev + - pkg-config - name: rocmDependencies type: object default: @@ -68,8 +69,6 @@ jobs: -DLIBCXXABI_INSTALL_STATIC_LIBRARY=OFF -DLLVM_BUILD_DOCS=OFF -DLLVM_ENABLE_SPHINX=OFF - -DSPHINX_WARNINGS_AS_ERRORS=OFF - -DSPHINX_OUTPUT_MAN=OFF -DLLVM_ENABLE_ASSERTIONS=OFF -DLLVM_ENABLE_Z3_SOLVER=OFF -DLLVM_ENABLE_ZLIB=ON @@ -80,7 +79,6 @@ jobs: -DPACKAGE_VENDOR=AMD -DCLANG_LINK_FLANG_LEGACY=ON -DCMAKE_CXX_STANDARD=17 - -DFLANG_INCLUDE_DOCS=OFF -DROCM_LLVM_BACKWARD_COMPAT_LINK=$(Build.BinariesDirectory)/llvm -DROCM_LLVM_BACKWARD_COMPAT_LINK_TARGET=./lib/llvm -GNinja diff --git a/.azuredevops/components/rocBLAS.yml b/.azuredevops/components/rocBLAS.yml index 8a2240d48..765c3972d 100644 --- a/.azuredevops/components/rocBLAS.yml +++ b/.azuredevops/components/rocBLAS.yml @@ -18,19 +18,38 @@ parameters: - googletest - libgtest-dev - wget + - python3-pip + - libdrm-dev - name: pipModules type: object default: - joblib +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocprofiler-register jobs: - job: rocBLAS variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm + - name: TENSILE_ROCM_ASSEMBLER_PATH + value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang + - name: CMAKE_CXX_COMPILER + value: $(Agent.BuildDirectory)/rocm/bin/hipcc + - name: TENSILE_ROCM_OFFLOAD_BUNDLER_PATH + value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang-offload-bundler + - name: PATH + value: $(Agent.BuildDirectory)/rocm/llvm/bin:$(Agent.BuildDirectory)/rocm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -42,23 +61,36 @@ 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 + - script: echo $PATH - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake - -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm;$(Pipeline.Workspace)/deps-install -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc -DAMDGPU_TARGETS=gfx1030;gfx1100 -DTensile_CODE_OBJECT_VERSION=default -DTensile_LOGIC=asm_full -DTensile_SEPARATE_ARCHITECTURES=ON -DTensile_LAZY_LIBRARY_LOADING=ON -DTensile_LIBRARY_FORMAT=msgpack - -DTENSILE_VENV_UPGRADE_PIP=ON -DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_BENCHMARKS=OFF -DBUILD_CLIENTS_SAMPLES=OFF + -DROCM_PATH=$(Agent.BuildDirectory)/rocm -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocSOLVER.yml b/.azuredevops/components/rocSOLVER.yml index df47cb70b..ca9a00c90 100644 --- a/.azuredevops/components/rocSOLVER.yml +++ b/.azuredevops/components/rocSOLVER.yml @@ -10,15 +10,24 @@ parameters: default: - cmake - ninja-build - - rocblas - - rocsparse - - hipsparse - libsuitesparse-dev - gfortran - libfmt-dev - git - googletest - libgtest-dev + - python3-pip +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocBLAS + - rocSPARSE + - hipSPARSE jobs: - job: rocSOLVER @@ -26,8 +35,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -44,6 +51,18 @@ jobs: targetType: inline script: git clone --depth 1 --branch v3.9.1 https://github.com/Reference-LAPACK/lapack workingDirectory: '$(Build.SourcesDirectory)' +# 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/build-cmake.yml parameters: componentName: lapack @@ -59,11 +78,10 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Pipeline.Workspace)/deps-install + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DAMDGPU_TARGETS=gfx1030;gfx1100 - -DUSE_CUDA=OFF -DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_BENCHMARKS=OFF -DBUILD_CLIENTS_SAMPLES=OFF From 518a2069b367d94925db7083f1950e005be8aa13 Mon Sep 17 00:00:00 2001 From: danielsu-amd Date: Tue, 28 May 2024 16:36:43 -0400 Subject: [PATCH 040/175] External CI: Update pipeline interdependencies (#3162) Remove Docker and update interdependencies for ROCdbgapi ROCmValidationSuite hipCUB hipSOLVER hipSPARSE rocThrust rocr_debug_agent rpp rocALUTION Fixed roctracer not publishing artifacts --- .azuredevops/components/ROCdbgapi.yml | 22 ++++++++++-- .../components/ROCmValidationSuite.yml | 35 ++++++++++++++---- .azuredevops/components/hipCUB.yml | 30 ++++++++++++---- .azuredevops/components/hipSOLVER.yml | 36 ++++++++++++++----- .azuredevops/components/hipSPARSE.yml | 30 ++++++++++++---- .azuredevops/components/rocALUTION.yml | 35 +++++++++++++++--- .azuredevops/components/rocThrust.yml | 33 ++++++++++++----- .azuredevops/components/rocr_debug_agent.yml | 26 +++++++++++--- .azuredevops/components/roctracer.yml | 8 +---- .azuredevops/components/rpp.yml | 32 +++++++++++++---- .../templates/steps/artifact-download.yml | 3 ++ .../templates/steps/dependencies-rocm.yml | 6 ++++ 12 files changed, 236 insertions(+), 60 deletions(-) diff --git a/.azuredevops/components/ROCdbgapi.yml b/.azuredevops/components/ROCdbgapi.yml index 05317a0e1..9d05060f3 100644 --- a/.azuredevops/components/ROCdbgapi.yml +++ b/.azuredevops/components/ROCdbgapi.yml @@ -10,6 +10,13 @@ parameters: default: - cmake - ninja-build +- name: rocmDependencies + type: object + default: + - clr + - llvm-project + - rocminfo + - ROCR-Runtime jobs: - job: ROCdbgapi @@ -18,8 +25,6 @@ jobs: - template: /.azuredevops/variables-global.yml pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -30,9 +35,22 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCmValidationSuite.yml b/.azuredevops/components/ROCmValidationSuite.yml index 40d75b3eb..f4042bdaa 100644 --- a/.azuredevops/components/ROCmValidationSuite.yml +++ b/.azuredevops/components/ROCmValidationSuite.yml @@ -10,22 +10,33 @@ parameters: default: - cmake - ninja-build - - rocblas - libyaml-cpp-dev - libpci-dev - libpci3 - googletest - git +- name: rocmDependencies + type: object + default: + - clr + - llvm-project + - rocBLAS + - rocm-cmake + - rocm_smi_lib + - rocminfo + - rocprofiler-register + - ROCR-Runtime + - ROCT-Thunk-Interface jobs: - job: ROCmValidationSuite variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -36,11 +47,23 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DROCM_PATH=/opt/rocm - -DCMAKE_PREFIX_PATH=/opt/rocm - -DCPACK_PACKAGING_INSTALL_PREFIX='$(Build.BinariesDirectory)' + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm + -DCPACK_PACKAGING_INSTALL_PREFIX=$(Build.BinariesDirectory) -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipCUB.yml b/.azuredevops/components/hipCUB.yml index 12b8e530b..e09062961 100644 --- a/.azuredevops/components/hipCUB.yml +++ b/.azuredevops/components/hipCUB.yml @@ -10,9 +10,17 @@ parameters: default: - cmake - ninja-build - - rocprim - googletest - git + - python3-pip +- name: rocmDependencies + type: object + default: + - clr + - llvm-project + - rocminfo + - rocPRIM + - ROCR-Runtime jobs: - job: hipCUB @@ -20,8 +28,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -32,12 +38,24 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang - -DCMAKE_PREFIX_PATH="/opt/rocm" + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DBUILD_TEST=ON -DAMDGPU_TARGETS=gfx1030;gfx1100 -GNinja diff --git a/.azuredevops/components/hipSOLVER.yml b/.azuredevops/components/hipSOLVER.yml index 8c1884d11..a4cf173ac 100644 --- a/.azuredevops/components/hipSOLVER.yml +++ b/.azuredevops/components/hipSOLVER.yml @@ -10,15 +10,23 @@ parameters: default: - cmake - ninja-build - - rocblas - - rocsparse - - hipsparse - - rocsolver - libsuitesparse-dev - gfortran - git - googletest - libgtest-dev +- name: rocmDependencies + type: object + default: + - clr + - hipSPARSE + - llvm-project + - rocBLAS + - rocm-cmake + - rocminfo + - ROCR-Runtime + - rocSPARSE + - rocSOLVER jobs: - job: hipSOLVER @@ -27,8 +35,6 @@ jobs: - template: /.azuredevops/variables-global.yml pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -39,6 +45,18 @@ 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 # build external gtest and lapack - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: @@ -52,10 +70,10 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Pipeline.Workspace)/deps-install -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DAMDGPU_TARGETS=gfx1030;gfx1100 -DBUILD_CLIENTS_TESTS=ON -DUSE_CUDA=OFF diff --git a/.azuredevops/components/hipSPARSE.yml b/.azuredevops/components/hipSPARSE.yml index 0ab8353b4..69e46c98a 100644 --- a/.azuredevops/components/hipSPARSE.yml +++ b/.azuredevops/components/hipSPARSE.yml @@ -13,10 +13,18 @@ parameters: - libboost-program-options-dev - googletest - libfftw3-dev - - rocsparse - git - gfortran - libgtest-dev +- name: rocmDependencies + type: object + default: + - clr + - llvm-project + - rocminfo + - rocprofiler-register + - ROCR-Runtime + - rocSPARSE jobs: - job: hipSPARSE @@ -25,8 +33,6 @@ jobs: - template: /.azuredevops/variables-global.yml pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -37,15 +43,25 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_BUILD_TYPE=Release - -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/share/rocm/cmake/ -DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_SAMPLES=OFF - -DBUILD_CLIENTS_BENCHMARKS=OFF -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocALUTION.yml b/.azuredevops/components/rocALUTION.yml index 295464201..53a3e7631 100644 --- a/.azuredevops/components/rocALUTION.yml +++ b/.azuredevops/components/rocALUTION.yml @@ -15,16 +15,29 @@ parameters: - git - mpich - ninja-build +- name: rocmDependencies + type: object + default: + - aomp + - clr + - llvm-project + - rocBLAS + - rocminfo + - rocPRIM + - rocprofiler-register + - ROCR-Runtime + - rocRAND + - rocSPARSE jobs: - job: rocALUTION variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -35,13 +48,25 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_BUILD_TYPE=Release - -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/share/rocm/cmake/ + -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/lib/cmake/hip -DAMDGPU_TARGETS=gfx1030;gfx1100 -DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_BENCHMARKS=OFF diff --git a/.azuredevops/components/rocThrust.yml b/.azuredevops/components/rocThrust.yml index 191d36f47..bed9da5de 100644 --- a/.azuredevops/components/rocThrust.yml +++ b/.azuredevops/components/rocThrust.yml @@ -10,12 +10,20 @@ parameters: default: - cmake - ninja-build - - hiprand - - rocprim-dev - libboost-program-options-dev - googletest - libfftw3-dev - git + - python3-pip +- name: rocmDependencies + type: object + default: + - clr + - hipRAND + - llvm-project + - rocminfo + - rocPRIM + - ROCR-Runtime jobs: - job: rocThrust @@ -23,8 +31,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -35,14 +41,25 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- -GNinja - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang - -DROCM_PATH=/opt/rocm - -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DAMDGPU_TARGETS=gfx1030;gfx1100 -DBUILD_TEST=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocr_debug_agent.yml b/.azuredevops/components/rocr_debug_agent.yml index c614b662b..ee4429284 100644 --- a/.azuredevops/components/rocr_debug_agent.yml +++ b/.azuredevops/components/rocr_debug_agent.yml @@ -12,6 +12,14 @@ parameters: - ninja-build - libelf-dev - libdw-dev +- name: rocmDependencies + type: object + default: + - clr + - llvm-project + - ROCdbgapi + - rocminfo + - ROCR-Runtime jobs: - job: rocr_debug_agent @@ -20,8 +28,6 @@ jobs: - template: /.azuredevops/variables-global.yml pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -32,11 +38,23 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release - -DROCM_PATH=/opt/rocm - -DCMAKE_MODULE_PATH=/opt/rocm/lib/cmake + -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake;$(Agent.BuildDirectory)/rocm/lib/cmake/hip + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/roctracer.yml b/.azuredevops/components/roctracer.yml index 3ed00199d..d66f10034 100644 --- a/.azuredevops/components/roctracer.yml +++ b/.azuredevops/components/roctracer.yml @@ -67,10 +67,4 @@ jobs: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DGPU_TARGETS=gfx1030;gfx1100 -GNinja -# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml -# - task: Bash@3 -# displayName: 'Tests' -# inputs: -# targetType: inline -# script: ./run.sh -# workingDirectory: build + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rpp.yml b/.azuredevops/components/rpp.yml index b998f84a8..a86bcc9dd 100644 --- a/.azuredevops/components/rpp.yml +++ b/.azuredevops/components/rpp.yml @@ -9,10 +9,18 @@ parameters: type: object default: - cmake + - libomp-dev # needed to pass flag step - ninja-build - clang +- name: rocmDependencies + type: object + default: + - aomp # needed to pass build step + - clr - half - - libomp-dev + - llvm-project + - rocminfo + - ROCR-Runtime jobs: - job: rpp @@ -21,8 +29,6 @@ jobs: - template: /.azuredevops/variables-global.yml pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -33,13 +39,27 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm + -DHALF_INCLUDE_DIRS=$(Agent.BuildDirectory)/rocm/include -DCMAKE_BUILD_TYPE=Release - -DBUILD_CLIENTS=ON -DAMDGPU_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml index 90b67eae7..e4cac0a8e 100644 --- a/.azuredevops/templates/steps/artifact-download.yml +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -25,8 +25,10 @@ parameters: llvm-project: amd-staging MIOpen: develop rocBLAS: develop + ROCdbgapi : amd-master rocFFT: develop rocm-cmake: develop + rocm_smi_lib: develop rocminfo: master rocMLIR: develop rocPRIM: develop @@ -36,6 +38,7 @@ parameters: rocSOLVER: develop rocSPARSE: develop ROCT-Thunk-Interface: master + roctracer: amd-master rpp: master - name: componentsFailureOkay type: object diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index 4d39e2838..6c7218f6c 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -35,8 +35,10 @@ parameters: llvm-project: $(llvm-project-pipeline-id) MIOpen: $(miopen-pipeline-id) rocBLAS: $(rocblas-pipeline-id) + ROCdbgapi : $(rocdbgapi-pipeline-id) rocFFT: $(rotfft-pipeline-id) rocm-cmake: $(rocm-cmake-pipeline-id) + rocm_smi_lib: $(rocm-smi-lib-pipeline-id) rocminfo: $(rocminfo-pipeline-id) rocMLIR: $(rocmlir-pipeline-id) rocPRIM: $(rocprim-pipeline-id) @@ -46,6 +48,7 @@ parameters: rocSOLVER: $(rocsolver-pipeline-id) rocSPARSE: $(rocsparse-pipeline-id) ROCT-Thunk-Interface: $(roct-thunk-interface-pipeline-id) + roctracer: $(roctracer-pipeline-id) rpp: $(rpp-pipeline-id) - name: taggedPipelineIdentifiers type: object @@ -62,8 +65,10 @@ parameters: llvm-project: $(llvm-project-tagged-pipeline-id) MIOpen: $(miopen-tagged-pipeline-id) rocBLAS: $(rocblas-tagged-pipeline-id) + ROCdbgapi : $(rocdbgapi-tagged-pipeline-id) rocFFT: $(rotfft-tagged-pipeline-id) rocm-cmake: $(rocm-cmake-tagged-pipeline-id) + rocm_smi_lib: $(rocm-smi-lib-tagged-pipeline-id) rocminfo: $(rocminfo-tagged-pipeline-id) rocMLIR: $(rocmlir-tagged-pipeline-id) rocPRIM: $(rocprim-tagged-pipeline-id) @@ -73,6 +78,7 @@ parameters: rocSOLVER: $(rocsolver-tagged-pipeline-id) rocSPARSE: $(rocsparse-tagged-pipeline-id) ROCT-Thunk-Interface: $(roct-thunk-interface-tagged-pipeline-id) + roctracer: $(roctracer-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 From 80d7feeebc24e3f53ea5a1a9a454ad35439c8f15 Mon Sep 17 00:00:00 2001 From: Vadik <97253392+perovskikh@users.noreply.github.com> Date: Wed, 29 May 2024 10:43:12 +0500 Subject: [PATCH 041/175] Update default.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Удаленное имя для KhronosGroup отсутствует в default.xml: https://github.com/ROCm/ROCm/pull/3098/files#diff-d9b8e4a48f8e111ec5d21480d9d33a893b365dfa7f8550bbc0577e4d42afeac8L4 --- default.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/default.xml b/default.xml index ae1daad18..1f81628cd 100644 --- a/default.xml +++ b/default.xml @@ -1,6 +1,7 @@ + Date: Tue, 28 May 2024 23:53:46 -0700 Subject: [PATCH 042/175] Update MIVisionX.yml (#3173) OpenCV Added --- .azuredevops/components/MIVisionX.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/components/MIVisionX.yml b/.azuredevops/components/MIVisionX.yml index 57f855513..f914c434d 100644 --- a/.azuredevops/components/MIVisionX.yml +++ b/.azuredevops/components/MIVisionX.yml @@ -41,6 +41,7 @@ parameters: - libtiff-dev - libdc1394-dev - libgmp-dev + - libopencv-dev - name: pipModules type: object default: From cd5c6768d7b5ccf02f48da7780061dfc0727c0f8 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Wed, 29 May 2024 09:58:04 -0400 Subject: [PATCH 043/175] Match case of GDB repo name for external CI (#3171) * Match case of repo name for external CI --- .azuredevops/components/{rocgdb.yml => ROCgdb.yml} | 0 .azuredevops/tag-builds/{rocgdb.yml => ROCgdb.yml} | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename .azuredevops/components/{rocgdb.yml => ROCgdb.yml} (100%) rename .azuredevops/tag-builds/{rocgdb.yml => ROCgdb.yml} (89%) diff --git a/.azuredevops/components/rocgdb.yml b/.azuredevops/components/ROCgdb.yml similarity index 100% rename from .azuredevops/components/rocgdb.yml rename to .azuredevops/components/ROCgdb.yml diff --git a/.azuredevops/tag-builds/rocgdb.yml b/.azuredevops/tag-builds/ROCgdb.yml similarity index 89% rename from .azuredevops/tag-builds/rocgdb.yml rename to .azuredevops/tag-builds/ROCgdb.yml index 3b2569dd3..970e40023 100644 --- a/.azuredevops/tag-builds/rocgdb.yml +++ b/.azuredevops/tag-builds/ROCgdb.yml @@ -23,7 +23,7 @@ trigger: none pr: none jobs: - - template: ${{ variables.CI_COMPONENT_PATH }}/rocgdb.yml + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCgdb.yml parameters: checkoutRepo: release_repo checkoutRef: ${{ parameters.checkoutRef }} From 32592f436bed653b818a4f7b297ca587204064c8 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Wed, 29 May 2024 10:09:52 -0400 Subject: [PATCH 044/175] Change ROCm interdependencies for MIVisionX (#3158) Instead of using docker and apt install of ROCm component dependencies, use tarballs from Azure Pipeline builds to enable updates of ROCm interdependencies without waiting for releases.. --- .azuredevops/components/MIVisionX.yml | 39 +++++++++++++------ .../templates/steps/artifact-download.yml | 1 + .../templates/steps/dependencies-rocm.yml | 2 + 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/.azuredevops/components/MIVisionX.yml b/.azuredevops/components/MIVisionX.yml index f914c434d..9a492bc77 100644 --- a/.azuredevops/components/MIVisionX.yml +++ b/.azuredevops/components/MIVisionX.yml @@ -14,10 +14,6 @@ parameters: - wget - unzip - pkg-config - - half - - rocblas-dev - - miopen-hip-dev - - migraphx-dev - protobuf-compiler - libprotoc-dev - ffmpeg @@ -25,10 +21,6 @@ parameters: - libavformat-dev - libavutil-dev - libswscale-dev - - rpp - - rpp-dev - - rocdecode - - rocdecode-dev - build-essential - libgtk2.0-dev - libavcodec-dev @@ -51,6 +43,21 @@ parameters: - google==3.0.0 - protobuf==3.12.4 - onnx==1.12.0 +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocprofiler-register + - half + - rocBLAS + - MIOpen + - AMDMIGraphX + - rpp + - rocDecode jobs: - job: MIVisionX @@ -59,8 +66,6 @@ jobs: - template: /.azuredevops/variables-global.yml pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -72,11 +77,23 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release - -DROCM_PATH=/opt/rocm + -DROCM_PATH=$(Agent.BuildDirectory)/rocm -DROCM_DEP_ROCMCORE=ON -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml index e4cac0a8e..a1cd9aef2 100644 --- a/.azuredevops/templates/steps/artifact-download.yml +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -26,6 +26,7 @@ parameters: MIOpen: develop rocBLAS: develop ROCdbgapi : amd-master + rocDecode: develop rocFFT: develop rocm-cmake: develop rocm_smi_lib: develop diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index 6c7218f6c..1106b4c2c 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -36,6 +36,7 @@ parameters: MIOpen: $(miopen-pipeline-id) rocBLAS: $(rocblas-pipeline-id) ROCdbgapi : $(rocdbgapi-pipeline-id) + rocDecode: $(rocdecode-pipeline-id) rocFFT: $(rotfft-pipeline-id) rocm-cmake: $(rocm-cmake-pipeline-id) rocm_smi_lib: $(rocm-smi-lib-pipeline-id) @@ -66,6 +67,7 @@ parameters: MIOpen: $(miopen-tagged-pipeline-id) rocBLAS: $(rocblas-tagged-pipeline-id) ROCdbgapi : $(rocdbgapi-tagged-pipeline-id) + rocDecode: $(rocdecode-tagged-pipeline-id) rocFFT: $(rotfft-tagged-pipeline-id) rocm-cmake: $(rocm-cmake-tagged-pipeline-id) rocm_smi_lib: $(rocm-smi-lib-tagged-pipeline-id) From 82ed9e9ffdbe5c28e64083f982f4f8460993157d Mon Sep 17 00:00:00 2001 From: abhimeda <138710508+abhimeda@users.noreply.github.com> Date: Wed, 29 May 2024 10:11:54 -0400 Subject: [PATCH 045/175] Removing docker from hipFFT (#3160) --- .azuredevops/components/hipFFT.yml | 50 ++++++++++++++----- .../templates/steps/dependencies-rocm.yml | 4 +- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/.azuredevops/components/hipFFT.yml b/.azuredevops/components/hipFFT.yml index 7b2ef784c..64c7fb5e2 100644 --- a/.azuredevops/components/hipFFT.yml +++ b/.azuredevops/components/hipFFT.yml @@ -10,22 +10,31 @@ parameters: default: - cmake - ninja-build - - rocrand - - hiprand - - rocfft - libboost-program-options-dev - - googletest + - libgtest-dev - libfftw3-dev - + - python3-pip + - libomp-14-dev +# rocm dependencies should match dependencies-rocm.yml +- name: rocmDependencies + type: object + default: + - rocRAND + - hipRAND + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocFFT + - aomp jobs: - job: hipFFT variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm + pool: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: @@ -36,16 +45,31 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang + -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS=gfx1030;gfx1100 + -DUSE_HIP_CLANG=ON + -DHIP_COMPILER=clang -DBUILD_CLIENTS_TESTS=ON - -DBUILD_CLIENTS_BENCH=OFF + -DBUILD_CLIENTS_BENCHMARKS=OFF -DBUILD_CLIENTS_SAMPLES=OFF - -L -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index 1106b4c2c..95fa8ab98 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -37,7 +37,7 @@ parameters: rocBLAS: $(rocblas-pipeline-id) ROCdbgapi : $(rocdbgapi-pipeline-id) rocDecode: $(rocdecode-pipeline-id) - rocFFT: $(rotfft-pipeline-id) + rocFFT: $(rocfft-pipeline-id) rocm-cmake: $(rocm-cmake-pipeline-id) rocm_smi_lib: $(rocm-smi-lib-pipeline-id) rocminfo: $(rocminfo-pipeline-id) @@ -68,7 +68,7 @@ parameters: rocBLAS: $(rocblas-tagged-pipeline-id) ROCdbgapi : $(rocdbgapi-tagged-pipeline-id) rocDecode: $(rocdecode-tagged-pipeline-id) - rocFFT: $(rotfft-tagged-pipeline-id) + rocFFT: $(rocfft-tagged-pipeline-id) rocm-cmake: $(rocm-cmake-tagged-pipeline-id) rocm_smi_lib: $(rocm-smi-lib-tagged-pipeline-id) rocminfo: $(rocminfo-tagged-pipeline-id) From 892c0957b839e80c13dbde265d8300be55d462b0 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Wed, 29 May 2024 10:12:25 -0400 Subject: [PATCH 046/175] Special pipeline for aomp with latest source (#3174) aomp build is not triggered by changes to aomp repo, but by updates to llvm-project and ROCR-Runtime, so trigger definition can remain this ROCm/ROCm repo. --- .azuredevops/ci-builds/aomp.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .azuredevops/ci-builds/aomp.yml diff --git a/.azuredevops/ci-builds/aomp.yml b/.azuredevops/ci-builds/aomp.yml new file mode 100644 index 000000000..3b15e09df --- /dev/null +++ b/.azuredevops/ci-builds/aomp.yml @@ -0,0 +1,33 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +resources: + repositories: + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/aomp + ref: ${{ parameters.checkoutRef }} + - repository: llvm-project_repo + type: github + endpoint: ROCm + name: ROCm/llvm-project + ref: ${{ parameters.checkoutRef }} + pipelines: + - pipeline: rocr-runtime_pipeline + source: \ROCR-Runtime + trigger: + branches: + include: + - master + +# this job will only be triggered after successful build sequence of llvm-project and ROCR-Runtime + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/aomp.yml + parameters: + checkoutRepo: release_repo From a8c7faeae33695a7b4d3170882bbf60e8c579d4d Mon Sep 17 00:00:00 2001 From: alexxu-amd <159800977+alexxu-amd@users.noreply.github.com> Date: Wed, 29 May 2024 10:19:02 -0400 Subject: [PATCH 047/175] Remove docker from multiple external CI pipelines (#3161) --- .azuredevops/components/MIOpen.yml | 21 ++++++---- .azuredevops/components/half.yml | 24 ++++++++++- .azuredevops/components/hipTensor.yml | 14 ++++--- .azuredevops/components/rccl.yml | 40 +++++++++++++++--- .azuredevops/components/rdc.yml | 25 ++++++++++- .azuredevops/components/rocDecode.yml | 41 +++++++++++++++++-- .azuredevops/components/rocPRIM.yml | 24 +++++++++-- .azuredevops/components/rocSPARSE.yml | 37 ++++++++++++++--- .azuredevops/components/rocWMMA.yml | 32 ++++++++++++--- .../templates/steps/dependencies-rocm.yml | 6 +++ .azuredevops/variables-global.yml | 2 + 11 files changed, 225 insertions(+), 41 deletions(-) diff --git a/.azuredevops/components/MIOpen.yml b/.azuredevops/components/MIOpen.yml index 0e6c18dbd..a784e9d07 100644 --- a/.azuredevops/components/MIOpen.yml +++ b/.azuredevops/components/MIOpen.yml @@ -9,12 +9,9 @@ parameters: type: object default: - software-properties-common + - python3-pip - cmake - ninja-build - - composablekernel-dev - - half - - rocrand - - rocblas - libsqlite3-dev - libbz2-dev - nlohmann-json3-dev @@ -23,6 +20,15 @@ parameters: type: object default: - rocMLIR + - rocRAND + - rocBLAS + - half + - composable_kernel + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo jobs: - job: MIOpen @@ -30,8 +36,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -70,9 +74,8 @@ jobs: parameters: extraBuildFlags: >- -DMIOPEN_BACKEND=HIP - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang - -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DMIOPEN_ENABLE_AI_KERNEL_TUNING=OFF -DMIOPEN_ENABLE_AI_IMMED_MODE_FALLBACK=OFF -DCMAKE_BUILD_TYPE=Release diff --git a/.azuredevops/components/half.yml b/.azuredevops/components/half.yml index a8e7e3677..7cbb7d46e 100644 --- a/.azuredevops/components/half.yml +++ b/.azuredevops/components/half.yml @@ -8,8 +8,17 @@ parameters: - name: aptPackages type: object default: + - python3-pip - cmake - ninja-build +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo jobs: - job: half @@ -18,8 +27,6 @@ jobs: - template: /.azuredevops/variables-global.yml pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -30,9 +37,22 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index b75c74198..7ca60781b 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -10,12 +10,17 @@ parameters: default: - cmake - ninja-build - - composablekernel-dev + - python3-pip - git - name: rocmDependencies type: object default: + - rocm-cmake - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - composable_kernel jobs: - job: hipTensor @@ -23,8 +28,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -50,9 +53,8 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang - -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/llvm + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DROCM_PATH="$(Agent.BuildDirectory)/rocm" -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON diff --git a/.azuredevops/components/rccl.yml b/.azuredevops/components/rccl.yml index fe47b32ff..5b97477a1 100644 --- a/.azuredevops/components/rccl.yml +++ b/.azuredevops/components/rccl.yml @@ -8,21 +8,37 @@ parameters: - name: aptPackages type: object default: + - python3-pip - cmake - libboost-program-options-dev - googletest - libfftw3-dev - git - ninja-build + - libstdc++-12-dev +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocm-smi-lib + - rocprofiler-register + - rocm-core + - HIPIFY + - aomp + - aomp-extras jobs: - job: rccl variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -33,14 +49,28 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc + -DHALF_INCLUDE_DIR=$(Agent.BuildDirectory)/rocm/include -DCMAKE_BUILD_TYPE=Release + -DROCM_PATH=$(Agent.BuildDirectory)/rocm -DBUILD_TESTS=ON - -DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/share/rocm/cmake/" + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/share/rocm/cmake/ -DAMDGPU_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rdc.yml b/.azuredevops/components/rdc.yml index 5bf4352ea..68958c8a3 100644 --- a/.azuredevops/components/rdc.yml +++ b/.azuredevops/components/rdc.yml @@ -8,6 +8,7 @@ parameters: - name: aptPackages type: object default: + - python3-pip - cmake - ninja-build - git @@ -17,6 +18,15 @@ parameters: - autoconf - libtool - pkg-config +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocm-smi-lib jobs: - job: rdc @@ -24,8 +34,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -36,6 +44,18 @@ 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 # Build grpc - task: Bash@3 displayName: 'git clone grpc' @@ -57,6 +77,7 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DGRPC_ROOT="$(Build.SourcesDirectory)/bin" -DBUILD_TESTS=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocDecode.yml b/.azuredevops/components/rocDecode.yml index 2e067d6db..a4d7f67f0 100644 --- a/.azuredevops/components/rocDecode.yml +++ b/.azuredevops/components/rocDecode.yml @@ -8,6 +8,7 @@ parameters: - name: aptPackages type: object default: + - python3-pip - cmake - ninja-build - pkg-config @@ -18,6 +19,16 @@ parameters: - libstdc++-12-dev - libva-dev - mesa-amdgpu-va-drivers + - libdrm-dev +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocm-core jobs: - job: rocDecode @@ -26,11 +37,21 @@ jobs: - template: /.azuredevops/variables-global.yml pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: + # Since mesa-amdgpu-multimedia-devel is not directly available from apt, register it + - task: Bash@3 + displayName: 'Register ROCm 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/${{ variables.KEYRING_VERSION }}/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/${{ variables.KEYRING_VERSION }} 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 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} @@ -38,10 +59,24 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release - -L -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocPRIM.yml b/.azuredevops/components/rocPRIM.yml index 6c12ab9fd..8dab1b870 100644 --- a/.azuredevops/components/rocPRIM.yml +++ b/.azuredevops/components/rocPRIM.yml @@ -12,6 +12,14 @@ parameters: - ninja-build - libgtest-dev - git +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo jobs: - job: rocPRIM @@ -19,8 +27,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -34,12 +40,24 @@ jobs: # ${{ }} are resolved during compile-time # so this next step is skipped completely until # we define explicit aptPackages needed to install + # 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/build-cmake.yml parameters: extraBuildFlags: >- + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DBUILD_BENCHMARK=ON -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang -DAMDGPU_TARGETS=gfx1030;gfx1100 -DBUILD_TEST=ON -GNinja diff --git a/.azuredevops/components/rocSPARSE.yml b/.azuredevops/components/rocSPARSE.yml index b5907db81..e0dcc1e16 100644 --- a/.azuredevops/components/rocSPARSE.yml +++ b/.azuredevops/components/rocSPARSE.yml @@ -8,6 +8,7 @@ parameters: - name: aptPackages type: object default: + - python3-pip - cmake - ninja-build - libboost-program-options-dev @@ -15,17 +16,27 @@ parameters: - libfftw3-dev - git - gfortran - - rocprim-dev - libgtest-dev + - libdrm-dev +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocPRIM + - rocprofiler-register jobs: - job: rocSPARSE variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -36,16 +47,30 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc - -DCMAKE_C_COMPILER=/opt/rocm/bin/hipcc + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm + -DROCM_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS=gfx1030;gfx1100 -DBUILD_CLIENTS_SAMPLES=OFF -DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_BENCHMARKS=OFF - -DCMAKE_MODULE_PATH="/opt/rocm/lib/cmake/hip;/opt/rocm/hip/cmake" + -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip;$(Agent.BuildDirectory)/rocm/hip/cmake -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocWMMA.yml b/.azuredevops/components/rocWMMA.yml index 5dd847636..e1179419e 100644 --- a/.azuredevops/components/rocWMMA.yml +++ b/.azuredevops/components/rocWMMA.yml @@ -8,6 +8,7 @@ parameters: - name: aptPackages type: object default: + - python3-pip - cmake - ninja-build - libboost-program-options-dev @@ -15,7 +16,18 @@ parameters: - googletest - libfftw3-dev - git - - rocblas + - libomp-dev +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocBLAS + - aomp + - rocm-smi-lib jobs: - job: rocWMMA @@ -23,8 +35,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -35,11 +45,23 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_BUILD_TYPE=Release -DROCWMMA_BUILD_TESTS=ON -DROCWMMA_BUILD_SAMPLES=OFF diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index 95fa8ab98..f4337b75c 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -30,6 +30,7 @@ parameters: composable_kernel: $(composable-kernel-pipeline-id) half: $(half-pipeline-id) hipBLAS: $(hipblas-pipeline-id) + HIPIFY: $(hipify-pipeline-id) hipRAND: $(hiprand-pipeline-id) hipSPARSE: $(hipsparse-pipeline-id) llvm-project: $(llvm-project-pipeline-id) @@ -39,9 +40,11 @@ parameters: rocDecode: $(rocdecode-pipeline-id) rocFFT: $(rocfft-pipeline-id) rocm-cmake: $(rocm-cmake-pipeline-id) + rocm-core: $(rocm-core-pipeline-id) rocm_smi_lib: $(rocm-smi-lib-pipeline-id) rocminfo: $(rocminfo-pipeline-id) rocMLIR: $(rocmlir-pipeline-id) + rocm-smi-lib: $(rocm-smi-lib-pipeline-id) rocPRIM: $(rocprim-pipeline-id) rocprofiler-register: $(rocprofiler-register-pipeline-id) ROCR-Runtime: $(rocr-runtime-pipeline-id) @@ -61,6 +64,7 @@ parameters: composable_kernel: $(composable-kernel-tagged-pipeline-id) half: $(half-tagged-pipeline-id) hipBLAS: $(hipblas-tagged-pipeline-id) + HIPIFY: $(hipify-tagged-pipeline-id) hipRAND: $(hiprand-tagged-pipeline-id) hipSPARSE: $(hipsparse-tagged-pipeline-id) llvm-project: $(llvm-project-tagged-pipeline-id) @@ -70,9 +74,11 @@ parameters: rocDecode: $(rocdecode-tagged-pipeline-id) rocFFT: $(rocfft-tagged-pipeline-id) rocm-cmake: $(rocm-cmake-tagged-pipeline-id) + rocm-core: $(rocm-core-tagged-pipeline-id) rocm_smi_lib: $(rocm-smi-lib-tagged-pipeline-id) rocminfo: $(rocminfo-tagged-pipeline-id) rocMLIR: $(rocmlir-tagged-pipeline-id) + rocm-smi-lib: $(rocm-smi-lib-tagged-pipeline-id) rocPRIM: $(rocprim-tagged-pipeline-id) rocprofiler-register: $(rocprofiler-register-tagged-pipeline-id) ROCR-Runtime: $(rocr-runtime-tagged-pipeline-id) diff --git a/.azuredevops/variables-global.yml b/.azuredevops/variables-global.yml index 421b52f3d..d74ed2960 100644 --- a/.azuredevops/variables-global.yml +++ b/.azuredevops/variables-global.yml @@ -27,3 +27,5 @@ variables: value: rocm/dev-ubuntu-22.04 - name: LATEST_DOCKER_VERSION value: 6.1 +- name: KEYRING_VERSION + value: 6.1 From 3a68f43df7ab1b984dbf3f3d8cfcdf0024cf3741 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Wed, 29 May 2024 11:12:43 -0700 Subject: [PATCH 048/175] Reorg 'Deep learning' and 'Tuning guides' docs (#3153) * Rename 'Tuning guides' to 'Hardware optimization' * Move deep learning to Install section * Change 'Hardware' to 'System' to align with index.md * Satisfy spellcheck linter * adding new framework install graphic with JAX * Fix link to ROCm libraries list * crop framework_install graphic * Reset .wordlist.txt update * Prettify deep learning framework installation page * Change spacing in list of frameworks --------- Co-authored-by: Young Hui --- .../how-to/framework_install_2024_05_23.png | Bin 0 -> 110421 bytes docs/how-to/deep-learning-rocm.md | 22 ------ docs/how-to/deep-learning-rocm.rst | 69 ++++++++++++++++++ docs/how-to/tuning-guides.md | 7 +- docs/index.md | 14 ++-- docs/sphinx/_toc.yml.in | 6 +- 6 files changed, 83 insertions(+), 35 deletions(-) create mode 100644 docs/data/how-to/framework_install_2024_05_23.png delete mode 100644 docs/how-to/deep-learning-rocm.md create mode 100644 docs/how-to/deep-learning-rocm.rst diff --git a/docs/data/how-to/framework_install_2024_05_23.png b/docs/data/how-to/framework_install_2024_05_23.png new file mode 100644 index 0000000000000000000000000000000000000000..363f30c07f38b1206f22b449f52f7c12f0dae736 GIT binary patch literal 110421 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

pc$zkCp72#x?&Z%X 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 - - - - - -# Deep learning guide - -The following sections cover the different framework installations for ROCm and -deep-learning applications. The following image provides -the sequential flow for the use of each framework. Refer to the ROCm Compatible -Frameworks Release Notes for each framework's most current release notes at -{doc}`Third-party support`. - -![ROCm Compatible Frameworks Flowchart](../data/how-to/magma005.png "ROCm Compatible Frameworks") - -## Frameworks installation - -* {doc}`PyTorch for ROCm` -* {doc}`TensorFlow for ROCm` -* {doc}`MAGMA for ROCm` diff --git a/docs/how-to/deep-learning-rocm.rst b/docs/how-to/deep-learning-rocm.rst new file mode 100644 index 000000000..5493be62e --- /dev/null +++ b/docs/how-to/deep-learning-rocm.rst @@ -0,0 +1,69 @@ +.. meta:: + :description: How to install deep learning frameworks for ROCm + :keywords: deep learning, frameworks, ROCm, install, PyTorch, TensorFlow, JAX, MAGMA, DeepSpeed, ML, AI + +******************************************** +Installing deep learning frameworks for ROCm +******************************************** + +ROCm provides a comprehensive ecosystem for deep learning development, including +:ref:`libraries ` for optimized deep learning operations and ROCm-aware versions of popular +deep learning frameworks and libraries such as PyTorch, TensorFlow, JAX, and MAGMA. ROCm works closely with these +frameworks to ensure that framework-specific optimizations take advantage of AMD accelerator and GPU architectures. + +The following guides cover installation processes for ROCm-aware deep learning frameworks. + +.. grid:: + + .. grid-item:: + :columns: 3 + + :doc:`PyTorch for ROCm ` + + .. grid-item:: + :columns: 3 + + :doc:`TensorFlow for ROCm ` + + .. grid-item:: + :columns: 3 + + .. grid-item:: + :columns: 3 + + .. grid-item:: + :columns: 3 + + :doc:`JAX for ROCm ` + + .. grid-item:: + :columns: 3 + + :doc:`MAGMA for ROCm ` + + .. grid-item:: + :columns: 3 + + .. grid-item:: + :columns: 3 + +The following chart steps through typical installation workflows for installing deep learning frameworks for ROCm. + +.. image:: ../data/how-to/framework_install_2024_05_23.png + :alt: Flowchart for installing ROCm-aware machine learning frameworks + :align: center + +Find information on version compatibility and framework release notes in :doc:`Third-party support matrix +`. + +.. Learn how to take advantage of your ROCm-aware deep learning environment using the following tutorials. +.. +.. * :doc:`How to use ROCm for AI ` +.. +.. * :doc:`How to fine-tune LLMs with ROCm ` +.. + +.. note:: + + For guidance on installing ROCm itself, refer to :doc:`ROCm installation for Linux `. + diff --git a/docs/how-to/tuning-guides.md b/docs/how-to/tuning-guides.md index 18341db10..a1fbcc5cb 100644 --- a/docs/how-to/tuning-guides.md +++ b/docs/how-to/tuning-guides.md @@ -1,13 +1,14 @@ - + -# Tuning guides +# System optimization -Use case-specific system setup and tuning guides. +This guide outlines system setup and tuning suggestions for AMD hardware to optimize performance for specific types of +workloads or use-cases. ## High-performance computing diff --git a/docs/index.md b/docs/index.md index 3406a9531..05e31e4de 100644 --- a/docs/index.md +++ b/docs/index.md @@ -37,12 +37,13 @@ Our documentation is organized into the following categories: * Windows * {doc}`Windows install guide` * {doc}`Application deployment guidelines` -* {doc}`Install Docker containers` -* {doc}`PyTorch for ROCm` -* {doc}`TensorFlow for ROCm` -* {doc}`JAX for ROCm` -* {doc}`MAGMA for ROCm` -* {doc}`ROCm & Spack` +* [Deep learning frameworks](./how-to/deep-learning-rocm.rst) + * {doc}`Install Docker containers` + * {doc}`PyTorch for ROCm` + * {doc}`TensorFlow for ROCm` + * {doc}`JAX for ROCm` + * {doc}`MAGMA for ROCm` + * {doc}`ROCm & Spack` ::: :::{grid-item-card} @@ -94,7 +95,6 @@ Our documentation is organized into the following categories: * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) * [RDNA2](./how-to/tuning-guides/w6000-v620.md) -* [Setting up for deep learning with ROCm](./how-to/deep-learning-rocm.md) * [GPU-enabled MPI](./how-to/gpu-enabled-mpi.rst) * [Using compiler features](./conceptual/compiler-topics.md) * [Using AddressSanitizer](./conceptual/using-gpu-sanitizer.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 964d54c7b..283b3badc 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -22,6 +22,8 @@ subtrees: title: ROCm on Linux - url: https://rocm.docs.amd.com/projects/install-on-windows/en/${branch}/ title: HIP SDK on Windows + - file: how-to/deep-learning-rocm.md + title: Deep learning frameworks - caption: Compatibility entries: @@ -48,7 +50,7 @@ subtrees: - caption: How to entries: - file: how-to/tuning-guides.md - title: Tuning guides + title: System optimization subtrees: - entries: - file: how-to/tuning-guides/mi100.md @@ -57,8 +59,6 @@ subtrees: title: MI200 - file: how-to/tuning-guides/w6000-v620.md title: RDNA2 - - file: how-to/deep-learning-rocm.md - title: Deep learning - file: how-to/gpu-enabled-mpi.rst title: Using MPI - file: conceptual/compiler-topics.md From fd337ac22029e54d167e8b75edc009ea5607047d Mon Sep 17 00:00:00 2001 From: Peter Park Date: Wed, 29 May 2024 11:12:43 -0700 Subject: [PATCH 049/175] Reorg 'Deep learning' and 'Tuning guides' docs (#3153) * Rename 'Tuning guides' to 'Hardware optimization' * Move deep learning to Install section * Change 'Hardware' to 'System' to align with index.md * Satisfy spellcheck linter * adding new framework install graphic with JAX * Fix link to ROCm libraries list * crop framework_install graphic * Reset .wordlist.txt update * Prettify deep learning framework installation page * Change spacing in list of frameworks --------- Co-authored-by: Young Hui --- .../how-to/framework_install_2024_05_23.png | Bin 0 -> 110421 bytes docs/how-to/deep-learning-rocm.md | 22 ------ docs/how-to/deep-learning-rocm.rst | 69 ++++++++++++++++++ docs/how-to/tuning-guides.md | 7 +- docs/index.md | 14 ++-- docs/sphinx/_toc.yml.in | 6 +- 6 files changed, 83 insertions(+), 35 deletions(-) create mode 100644 docs/data/how-to/framework_install_2024_05_23.png delete mode 100644 docs/how-to/deep-learning-rocm.md create mode 100644 docs/how-to/deep-learning-rocm.rst diff --git a/docs/data/how-to/framework_install_2024_05_23.png b/docs/data/how-to/framework_install_2024_05_23.png new file mode 100644 index 0000000000000000000000000000000000000000..363f30c07f38b1206f22b449f52f7c12f0dae736 GIT binary patch literal 110421 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

pc$zkCp72#x?&Z%X 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 - - - - - -# Deep learning guide - -The following sections cover the different framework installations for ROCm and -deep-learning applications. The following image provides -the sequential flow for the use of each framework. Refer to the ROCm Compatible -Frameworks Release Notes for each framework's most current release notes at -{doc}`Third-party support`. - -![ROCm Compatible Frameworks Flowchart](../data/how-to/magma005.png "ROCm Compatible Frameworks") - -## Frameworks installation - -* {doc}`PyTorch for ROCm` -* {doc}`TensorFlow for ROCm` -* {doc}`MAGMA for ROCm` diff --git a/docs/how-to/deep-learning-rocm.rst b/docs/how-to/deep-learning-rocm.rst new file mode 100644 index 000000000..5493be62e --- /dev/null +++ b/docs/how-to/deep-learning-rocm.rst @@ -0,0 +1,69 @@ +.. meta:: + :description: How to install deep learning frameworks for ROCm + :keywords: deep learning, frameworks, ROCm, install, PyTorch, TensorFlow, JAX, MAGMA, DeepSpeed, ML, AI + +******************************************** +Installing deep learning frameworks for ROCm +******************************************** + +ROCm provides a comprehensive ecosystem for deep learning development, including +:ref:`libraries ` for optimized deep learning operations and ROCm-aware versions of popular +deep learning frameworks and libraries such as PyTorch, TensorFlow, JAX, and MAGMA. ROCm works closely with these +frameworks to ensure that framework-specific optimizations take advantage of AMD accelerator and GPU architectures. + +The following guides cover installation processes for ROCm-aware deep learning frameworks. + +.. grid:: + + .. grid-item:: + :columns: 3 + + :doc:`PyTorch for ROCm ` + + .. grid-item:: + :columns: 3 + + :doc:`TensorFlow for ROCm ` + + .. grid-item:: + :columns: 3 + + .. grid-item:: + :columns: 3 + + .. grid-item:: + :columns: 3 + + :doc:`JAX for ROCm ` + + .. grid-item:: + :columns: 3 + + :doc:`MAGMA for ROCm ` + + .. grid-item:: + :columns: 3 + + .. grid-item:: + :columns: 3 + +The following chart steps through typical installation workflows for installing deep learning frameworks for ROCm. + +.. image:: ../data/how-to/framework_install_2024_05_23.png + :alt: Flowchart for installing ROCm-aware machine learning frameworks + :align: center + +Find information on version compatibility and framework release notes in :doc:`Third-party support matrix +`. + +.. Learn how to take advantage of your ROCm-aware deep learning environment using the following tutorials. +.. +.. * :doc:`How to use ROCm for AI ` +.. +.. * :doc:`How to fine-tune LLMs with ROCm ` +.. + +.. note:: + + For guidance on installing ROCm itself, refer to :doc:`ROCm installation for Linux `. + diff --git a/docs/how-to/tuning-guides.md b/docs/how-to/tuning-guides.md index 18341db10..a1fbcc5cb 100644 --- a/docs/how-to/tuning-guides.md +++ b/docs/how-to/tuning-guides.md @@ -1,13 +1,14 @@ - + -# Tuning guides +# System optimization -Use case-specific system setup and tuning guides. +This guide outlines system setup and tuning suggestions for AMD hardware to optimize performance for specific types of +workloads or use-cases. ## High-performance computing diff --git a/docs/index.md b/docs/index.md index 7eada8714..dd30f5079 100644 --- a/docs/index.md +++ b/docs/index.md @@ -37,12 +37,13 @@ Our documentation is organized into the following categories: * Windows * {doc}`Windows install guide` * {doc}`Application deployment guidelines` -* {doc}`Install Docker containers` -* {doc}`PyTorch for ROCm` -* {doc}`TensorFlow for ROCm` -* {doc}`JAX for ROCm` -* {doc}`MAGMA for ROCm` -* {doc}`ROCm & Spack` +* [Deep learning frameworks](./how-to/deep-learning-rocm.rst) + * {doc}`Install Docker containers` + * {doc}`PyTorch for ROCm` + * {doc}`TensorFlow for ROCm` + * {doc}`JAX for ROCm` + * {doc}`MAGMA for ROCm` + * {doc}`ROCm & Spack` ::: :::{grid-item-card} @@ -94,7 +95,6 @@ Our documentation is organized into the following categories: * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) * [RDNA2](./how-to/tuning-guides/w6000-v620.md) -* [Setting up for deep learning with ROCm](./how-to/deep-learning-rocm.md) * [GPU-enabled MPI](./how-to/gpu-enabled-mpi.rst) * [Using compiler features](./conceptual/compiler-topics.md) * [Using AddressSanitizer](./conceptual/using-gpu-sanitizer.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index ebb46ad4e..11855b6a6 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -22,6 +22,8 @@ subtrees: title: ROCm on Linux - url: https://rocm.docs.amd.com/projects/install-on-windows/en/${branch}/ title: HIP SDK on Windows + - file: how-to/deep-learning-rocm.md + title: Deep learning frameworks - caption: Compatibility entries: @@ -48,7 +50,7 @@ subtrees: - caption: How to entries: - file: how-to/tuning-guides.md - title: Tuning guides + title: System optimization subtrees: - entries: - file: how-to/tuning-guides/mi100.md @@ -57,8 +59,6 @@ subtrees: title: MI200 - file: how-to/tuning-guides/w6000-v620.md title: RDNA2 - - file: how-to/deep-learning-rocm.md - title: Deep learning - file: how-to/gpu-enabled-mpi.rst title: Using MPI - file: conceptual/compiler-topics.md From a767625af89f111c830f2cdc8121b778dd445f74 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 28 May 2024 09:29:32 -0700 Subject: [PATCH 050/175] Add missed ROCm SMI changelog notes (#3168) Fix link to rocm_smi_lib changelog Update RELEASE.md --- CHANGELOG.md | 23 +++++++++++++++ RELEASE.md | 29 +++++++++++++++++-- tools/autotag/templates/rocm_changes/6.1.1.md | 23 +++++++++++++++ 3 files changed, 72 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c2e0a716..67d62dd85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,10 +70,33 @@ HIPCC for ROCm 6.1.1 ROCm SMI for ROCm 6.1.1 +##### Additions + +* Added the capability to unlock mutex when a process is dead. Added related debug output. +* Added the `Partition ID` field to the `rocm-smi` CLI. +* Added `NODE`, `GUID`, and `GFX Version` fields to the CLI. +* Documentation now includes C++ and Python tutorials, API guides, and reference material. + +##### Changes + +* Some `rocm-smi` fields now display `N/A` instead of `unknown/unsupported` for consistency. +* Changed stacked ID formatting in the `rocm-smi` CLI to make it easier to spot identifiers. + +##### Fixes + +* Fixed HIP and ROCm SMI mismatch on GPU bus assignments. +* Fixed memory leaks caused by not closing directories and creating maps nodes instead of using `.at()`. +* Fixed initializing calls which reuse `rocmsmi.initializeRsmi()` bindings in the `rocmsmi` Python API. +* Fixed an issue causing `rsmi_dev_activity_metric_get` gfx/memory to not update with GPU activity. + ##### Known issues * ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. See the issue on [GitHub](https://github.com/ROCm/ROCm/issues/3112). +```{note} +See the [detailed ROCm SMI changelog](https://github.com/ROCm/rocm_smi_lib/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` + ### Library changes in ROCm 6.1.1 | Library | Version | diff --git a/RELEASE.md b/RELEASE.md index 3a0b1b31e..451955ee0 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -62,10 +62,33 @@ HIPCC for ROCm 6.1.1 ROCm SMI for ROCm 6.1.1 +### Additions + +* Added the capability to unlock mutex when a process is dead. Added related debug output. +* Added the `Partition ID` field to the `rocm-smi` CLI. +* Added `NODE`, `GUID`, and `GFX Version` fields to the CLI. +* Documentation now includes C++ and Python tutorials, API guides, and reference material. + +### Changes + +* Some `rocm-smi` fields now display `N/A` instead of `unknown/unsupported` for consistency. +* Changed stacked ID formatting in the `rocm-smi` CLI to make it easier to spot identifiers. + +### Fixes + +* Fixed HIP and ROCm SMI mismatch on GPU bus assignments. +* Fixed memory leaks caused by not closing directories and creating maps nodes instead of using `.at()`. +* Fixed initializing calls which reuse `rocmsmi.initializeRsmi()` bindings in the `rocmsmi` Python API. +* Fixed an issue causing `rsmi_dev_activity_metric_get` gfx/memory to not update with GPU activity. + ### Known issues - ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. See the issue on [GitHub](https://github.com/ROCm/ROCm/issues/3112). +```{note} +See the [detailed ROCm SMI changelog](https://github.com/ROCm/rocm_smi_lib/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` + ## Library changes in ROCm 6.1.1 | Library | Version | @@ -97,11 +120,11 @@ ROCm SMI for ROCm 6.1.1 | rpp | [1.5.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.1.1) | | Tensile | [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.1) | -#### hipBLASLt 0.7.0 +### hipBLASLt 0.7.0 hipBLASLt 0.7.0 for ROCm 6.1.1 -##### Additions +#### Additions - Added `hipblasltExtSoftmax` extension API. - Added `hipblasltExtLayerNorm` extension API. @@ -109,7 +132,7 @@ hipBLASLt 0.7.0 for ROCm 6.1.1 - Added `GemmTuning` extension parameter to set split-k by user. - Added support for mixed precision datatype: fp16/fp8 in with fp16 outk. -##### Deprecations +#### Deprecations - **Upcoming**: `algoGetHeuristic()` ext API for GroupGemm will be deprecated in a future release of hipBLASLt. diff --git a/tools/autotag/templates/rocm_changes/6.1.1.md b/tools/autotag/templates/rocm_changes/6.1.1.md index e2548a2c4..77b7ac846 100644 --- a/tools/autotag/templates/rocm_changes/6.1.1.md +++ b/tools/autotag/templates/rocm_changes/6.1.1.md @@ -52,6 +52,29 @@ HIPCC for ROCm 6.1.1 ROCm SMI for ROCm 6.1.1 +#### Additions + +* Added the capability to unlock mutex when a process is dead. Added related debug output. +* Added the `Partition ID` field to the `rocm-smi` CLI. +* Added `NODE`, `GUID`, and `GFX Version` fields to the CLI. +* Documentation now includes C++ and Python tutorials, API guides, and reference material. + +#### Changes + +* Some `rocm-smi` fields now display `N/A` instead of `unknown/unsupported` for consistency. +* Changed stacked ID formatting in the `rocm-smi` CLI to make it easier to spot identifiers. + +#### Fixes + +* Fixed HIP and ROCm SMI mismatch on GPU bus assignments. +* Fixed memory leaks caused by not closing directories and creating maps nodes instead of using `.at()`. +* Fixed initializing calls which reuse `rocmsmi.initializeRsmi()` bindings in the `rocmsmi` Python API. +* Fixed an issue causing `rsmi_dev_activity_metric_get` gfx/memory to not update with GPU activity. + #### Known issues * ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. See the issue on [GitHub](https://github.com/ROCm/ROCm/issues/3112). + +```{note} +See the [detailed ROCm SMI changelog](https://github.com/ROCm/rocm_smi_lib/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` From 012c55ab044ed65c910c6b4bd8ad5d382ea20150 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Wed, 29 May 2024 13:10:41 -0600 Subject: [PATCH 051/175] docs(conf.py): Update PDF version to 6.1.1 (#3183) --- docs/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 3d31982d2..5e31f14f0 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -38,8 +38,8 @@ latex_elements = { project = "ROCm Documentation" author = "Advanced Micro Devices, Inc." copyright = "Copyright (c) 2024 Advanced Micro Devices, Inc. All rights reserved." -version = "6.0.1" -release = "6.0.1" +version = "6.1.1" +release = "6.1.1" setting_all_article_info = True all_article_info_os = ["linux", "windows"] all_article_info_author = "" From 593028299376be0f2ae860fb9e429428264b906e Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Wed, 29 May 2024 13:11:19 -0600 Subject: [PATCH 052/175] docs(conf.py): Update PDF version to 6.1.1 (#3184) --- docs/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 3d31982d2..5e31f14f0 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -38,8 +38,8 @@ latex_elements = { project = "ROCm Documentation" author = "Advanced Micro Devices, Inc." copyright = "Copyright (c) 2024 Advanced Micro Devices, Inc. All rights reserved." -version = "6.0.1" -release = "6.0.1" +version = "6.1.1" +release = "6.1.1" setting_all_article_info = True all_article_info_os = ["linux", "windows"] all_article_info_author = "" From 7207d815d1ef1f7a631f435f08e8d83f5ed0b759 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Wed, 29 May 2024 19:51:06 -0400 Subject: [PATCH 053/175] ci-build scenario adjustments for aomp and rocm_smi_lib (#3185) * Update rocm_smi_lib.yml * Change checkout reference for aomp ci-build case --- .azuredevops/ci-builds/aomp.yml | 4 ++-- .azuredevops/components/rocm_smi_lib.yml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.azuredevops/ci-builds/aomp.yml b/.azuredevops/ci-builds/aomp.yml index 3b15e09df..cd3912c3e 100644 --- a/.azuredevops/ci-builds/aomp.yml +++ b/.azuredevops/ci-builds/aomp.yml @@ -8,12 +8,12 @@ resources: type: github endpoint: ROCm name: ROCm/aomp - ref: ${{ parameters.checkoutRef }} + ref: aomp-dev - repository: llvm-project_repo type: github endpoint: ROCm name: ROCm/llvm-project - ref: ${{ parameters.checkoutRef }} + ref: amd-staging pipelines: - pipeline: rocr-runtime_pipeline source: \ROCR-Runtime diff --git a/.azuredevops/components/rocm_smi_lib.yml b/.azuredevops/components/rocm_smi_lib.yml index fab1fb330..6c302ffec 100644 --- a/.azuredevops/components/rocm_smi_lib.yml +++ b/.azuredevops/components/rocm_smi_lib.yml @@ -24,4 +24,5 @@ jobs: parameters: extraBuildFlags: >- -DBUILD_TESTS=ON + -DROCM_DEP_ROCMCORE=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From a2574adc73bba75331338066980d56a568cc126f Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Wed, 29 May 2024 21:45:34 -0400 Subject: [PATCH 054/175] Disable aomp offload build for initial external ci-build work (#3186) * Disable aomp offload build for initial ci-build work * Missing dependency for medium pool use of rocPRIM * Latest rocBLAS source needs added ROCm dependencies --- .azuredevops/components/aomp.yml | 11 ++++++----- .azuredevops/components/rocBLAS.yml | 4 ++++ .azuredevops/components/rocPRIM.yml | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.azuredevops/components/aomp.yml b/.azuredevops/components/aomp.yml index 6c4e1ad41..98aacc163 100644 --- a/.azuredevops/components/aomp.yml +++ b/.azuredevops/components/aomp.yml @@ -96,16 +96,17 @@ jobs: # offload does not exist for recent releases, so use CI conditional - ${{ if eq(parameters.checkoutRef, '') }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + enabled: false parameters: componentName: llvm-offload extraBuildFlags: >- -DOPENMP_ENABLE_LIBOMPTARGET=1 - -DOPENMP_TEST_C_COMPILER==$(Agent.BuildDirectory)/rocm/llvm/bin/clang - -DOPENMP_TEST_CXX_COMPILER==$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ - -DCMAKE_C_COMPILER==$(Agent.BuildDirectory)/rocm/llvm/bin/clang - -DCMAKE_CXX_COMPILER==$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ + -DOPENMP_TEST_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang + -DOPENMP_TEST_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ -DLIBOMPTARGET_AMDGCN_GFXLIST=gfx700;gfx701;gfx801;gfx803;gfx900;gfx902;gfx906;gfx908;gfx90a;gfx90c;gfx940;gfx941;gfx942;gfx1030;gfx1031;gfx1035;gfx1036;gfx1100;gfx1101;gfx1102;gfx1103 - -DLLVM_DIR==$(Agent.BuildDirectory)/rocm/llvm + -DLLVM_DIR=$(Agent.BuildDirectory)/rocm/llvm -DLLVM_MAIN_INCLUDE_DIR=$(Build.SourcesDirectory)/llvm-project/llvm/include -DLIBOMPTARGET_LLVM_INCLUDE_DIRS=$(Build.SourcesDirectory)/llvm-project/llvm/include -DCUDA_TOOLKIT_ROOT_DIR=OFF diff --git a/.azuredevops/components/rocBLAS.yml b/.azuredevops/components/rocBLAS.yml index 765c3972d..4ae2e17dc 100644 --- a/.azuredevops/components/rocBLAS.yml +++ b/.azuredevops/components/rocBLAS.yml @@ -33,6 +33,10 @@ parameters: - clr - rocminfo - rocprofiler-register + - rocm-smi-lib + - rocm-core + - aomp + - aomp-extras jobs: - job: rocBLAS diff --git a/.azuredevops/components/rocPRIM.yml b/.azuredevops/components/rocPRIM.yml index 8dab1b870..12c92ed9c 100644 --- a/.azuredevops/components/rocPRIM.yml +++ b/.azuredevops/components/rocPRIM.yml @@ -12,6 +12,7 @@ parameters: - ninja-build - libgtest-dev - git + - python3-pip - name: rocmDependencies type: object default: From 7e1a1bc7c28cd33a78c4e4e6fcb56f59fde231b1 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Wed, 29 May 2024 21:50:02 -0400 Subject: [PATCH 055/175] Change offload build to a parameter (#3187) --- .azuredevops/components/aomp.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/aomp.yml b/.azuredevops/components/aomp.yml index 98aacc163..be3ae93c0 100644 --- a/.azuredevops/components/aomp.yml +++ b/.azuredevops/components/aomp.yml @@ -5,6 +5,9 @@ parameters: - name: checkoutRef type: string default: '' +- name: offloadEnabled + type: boolean + default: false - name: aptPackages type: object default: @@ -94,9 +97,8 @@ jobs: cmakeBuildDir: $(Build.SourcesDirectory)/llvm-project/openmp/build installDir: $(Build.BinariesDirectory)/llvm # offload does not exist for recent releases, so use CI conditional - - ${{ if eq(parameters.checkoutRef, '') }}: + - ${{ if eq(parameters.offloadEnabled, true) }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - enabled: false parameters: componentName: llvm-offload extraBuildFlags: >- From 7504e6bc13ab0531d783298329d40feb16af1026 Mon Sep 17 00:00:00 2001 From: abhimeda <138710508+abhimeda@users.noreply.github.com> Date: Thu, 30 May 2024 10:55:24 -0400 Subject: [PATCH 056/175] removing docker from external ci pipelines (#3177) * removed docker and pointed ROCm deps to our existing builds * removed vmImage tag for pool * added pip to apt list and renamed from rocFFT to hipFFT * fixed spelling mistakes in rocmDependencies * added correct apt dep for pip * removed leading slash in the cmake flags * changed cxx_compiler to /rocm/bin/hipcc * added llvm-project, ROCR-Runtime, clr, and rocminfo to rocm deps * added rocFFT as a rocm dependency * removed docker and added our builds for components * removed rocFFT from rocm deps * Fixed typo in rocFFT value * added rocprofiler-register to rocFFT and fixed typo in the dependencies-rocm file * changed cxx compiler to amdclang++ * fixed amdclang++ paths * moving to faster machine * added cmake module paths * switched back to medium build * added libopm-dev to apt deps * added libomp-14-dev to apt deps * added aomp as a rocm dep * added aomp as a rocm dep * added hipcc as the cxx_compiler * reverted back to clang++ as the cxx_compiler * removed unmentioned rocm deps from the readme * removed docker * added python3-pip as an apt dep * fixed compiler paths * added hipRAND as a rocm dep * added print statements to see directory structure * adding a print statement into /agent/_work/1/s/build/library * added -Tensile_rocm_assembler as a build flag * removed a broken script line * added D to tensile rocm assembler * added DROCM_PATH to build flags * fixed typo * changed build pool from medium to base * changed build pool from base to low * added env variables using josephs pr * removed docker from hipBLASLt and added rocm dependencies that point to our builds * added pip to the apt packages array * changed cmake_cxx_compiler env var ro amdclang++ * changed cmake_cxx_compiler env var to amdclang++ * changed cmake_cxx_compiler env var to hipcc * changed cmake_cxx_compiler env var to hipcc * changed clang to amdclang * changed all refs mentioning hipcc to amdclang * changed cmake_cxx_compiler back to hipcc * added a HIP_PATH env var based off Tensile/Source/FindHIP.cmake * added hipcc to HIP_PATH * added rocm-cmake to rocm deps * added rocRAND as a rocm dep * removed dcmake_module flag * added libomp-dev as an apt dep * added aomp as a rocm dep * added clang as an apt dep * reverted changes back to how they appear in develop since this branch will be submitted for review * removed unecessary flags * adding -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang back to see if these are vital to a successful build * removed newline character --- .azuredevops/components/hipBLASLt.yml | 2 +- .azuredevops/components/hipSPARSELt.yml | 45 +++++++++++++++++++++---- .azuredevops/components/rocFFT.yml | 39 ++++++++++++++++----- 3 files changed, 71 insertions(+), 15 deletions(-) diff --git a/.azuredevops/components/hipBLASLt.yml b/.azuredevops/components/hipBLASLt.yml index facb51dc2..61d4a70e1 100644 --- a/.azuredevops/components/hipBLASLt.yml +++ b/.azuredevops/components/hipBLASLt.yml @@ -51,4 +51,4 @@ jobs: -DTensile_LIBRARY_FORMAT=msgpack -DCMAKE_PREFIX_PATH="/opt/rocm" -GNinja - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml \ No newline at end of file diff --git a/.azuredevops/components/hipSPARSELt.yml b/.azuredevops/components/hipSPARSELt.yml index 0554aa775..e2576c571 100644 --- a/.azuredevops/components/hipSPARSELt.yml +++ b/.azuredevops/components/hipSPARSELt.yml @@ -12,21 +12,40 @@ parameters: - ninja-build - python3-venv - libmsgpack-dev - - hipsparse-dev - git + - python3-pip - name: pipModules type: object default: - joblib +# rocm dependencies should match dependencies-rocm.yml +- name: rocmDependencies + type: object + default: + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocprofiler-register + - hipSPARSE + - rocBLAS jobs: - job: hipSPARSELt variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm + - name: TENSILE_ROCM_ASSEMBLER_PATH + value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang + - name: CMAKE_CXX_COMPILER + value: $(Agent.BuildDirectory)/rocm/llvm/bin/hipcc + - name: TENSILE_ROCM_OFFLOAD_BUNDLER_PATH + value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang-offload-bundler + - name: PATH + value: $(Agent.BuildDirectory)/rocm/llvm/bin:$(Agent.BuildDirectory)/rocm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -38,17 +57,31 @@ 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 + - script: pwd - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DAMDGPU_TARGETS=all -DTensile_LOGIC= -DTensile_CPU_THREADS= -DTensile_CODE_OBJECT_VERSION=default -DTensile_LIBRARY_FORMAT=msgpack - -DCMAKE_PREFIX_PATH="/opt/rocm" + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + -DROCM_PATH=$(Agent.BuildDirectory)/rocm -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocFFT.yml b/.azuredevops/components/rocFFT.yml index fcfb58ee3..4d16c0a56 100644 --- a/.azuredevops/components/rocFFT.yml +++ b/.azuredevops/components/rocFFT.yml @@ -10,20 +10,31 @@ parameters: default: - cmake - ninja-build - - rocrand - - hiprand - libboost-program-options-dev - libgtest-dev - libfftw3-dev - + - python3-pip +# rocm dependencies should match dependencies-rocm.yml +- name: rocmDependencies + type: object + default: + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocprofiler-register + - hipRAND + - rocRAND + - rocm-cmake + - aomp jobs: - job: rocFFT variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -34,12 +45,24 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang - -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS=gfx1030;gfx1100 -DUSE_HIP_CLANG=ON From 58f543c0107d47c51cb881ee542c39556ac2761f Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Thu, 30 May 2024 10:56:52 -0400 Subject: [PATCH 057/175] Some new external CI dependencies for latest source on default branches (#3188) rdc: amdsmi rocBLAS: AOCL 4.2 rocPRIM: incorrect compiler path --- .azuredevops/components/rdc.yml | 1 + .azuredevops/components/rocBLAS.yml | 26 +++++++++++++++++-- .azuredevops/components/rocPRIM.yml | 2 +- .../templates/steps/artifact-download.yml | 1 + .../templates/steps/dependencies-rocm.yml | 2 ++ 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/.azuredevops/components/rdc.yml b/.azuredevops/components/rdc.yml index 68958c8a3..41a445b18 100644 --- a/.azuredevops/components/rdc.yml +++ b/.azuredevops/components/rdc.yml @@ -27,6 +27,7 @@ parameters: - clr - rocminfo - rocm-smi-lib + - amdsmi jobs: - job: rdc diff --git a/.azuredevops/components/rocBLAS.yml b/.azuredevops/components/rocBLAS.yml index 4ae2e17dc..b8cfd33d2 100644 --- a/.azuredevops/components/rocBLAS.yml +++ b/.azuredevops/components/rocBLAS.yml @@ -51,8 +51,6 @@ jobs: value: $(Agent.BuildDirectory)/rocm/bin/hipcc - name: TENSILE_ROCM_OFFLOAD_BUNDLER_PATH value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang-offload-bundler - - name: PATH - value: $(Agent.BuildDirectory)/rocm/llvm/bin:$(Agent.BuildDirectory)/rocm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin pool: ${{ variables.MEDIUM_BUILD_POOL }} workspace: clean: all @@ -67,12 +65,36 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: + - task: Bash@3 + displayName: 'Download AOCL' + inputs: + targetType: inline + script: wget -nv https://download.amd.com/developer/eula/aocl/aocl-4-2/aocl-linux-gcc-4.2.0_1_amd64.deb + workingDirectory: '$(Pipeline.Workspace)' + - task: Bash@3 + displayName: 'Install AOCL' + inputs: + targetType: inline + script: sudo apt install --yes ./aocl-linux-gcc-4.2.0_1_amd64.deb + workingDirectory: '$(Pipeline.Workspace)' - 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, '') }}: + - task: Bash@3 + displayName: 'Download AOCL' + inputs: + targetType: inline + script: wget -nv https://download.amd.com/developer/eula/aocl/aocl-4-1/aocl-linux-aocc-4.1.0_1_amd64.deb + workingDirectory: '$(Pipeline.Workspace)' + - task: Bash@3 + displayName: 'Install AOCL' + inputs: + targetType: inline + script: sudo apt install --yes ./aocl-linux-aocc-4.1.0_1_amd64.deb + workingDirectory: '$(Pipeline.Workspace)' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmDependencies }} diff --git a/.azuredevops/components/rocPRIM.yml b/.azuredevops/components/rocPRIM.yml index 12c92ed9c..f107344c6 100644 --- a/.azuredevops/components/rocPRIM.yml +++ b/.azuredevops/components/rocPRIM.yml @@ -58,7 +58,7 @@ jobs: extraBuildFlags: >- -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DBUILD_BENCHMARK=ON - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DAMDGPU_TARGETS=gfx1030;gfx1100 -DBUILD_TEST=ON -GNinja diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml index a1cd9aef2..382a7d14e 100644 --- a/.azuredevops/templates/steps/artifact-download.yml +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -12,6 +12,7 @@ parameters: - name: defaultBranchList type: object default: + amdsmi: develop aomp: aomp-dev aomp-extras: aomp-dev AMDMIGraphX: develop diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index f4337b75c..e89046a63 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -23,6 +23,7 @@ parameters: - name: stagingPipelineIdentifiers type: object default: + amdsmi: $(amdsmi-pipeline-id) aomp: $(aomp-pipeline-id) aomp-extras: $(aomp-extras-pipeline-id) AMDMIGraphX: $(amdmigraphx-pipeline-id) @@ -57,6 +58,7 @@ parameters: - name: taggedPipelineIdentifiers type: object default: + amdsmi: $(amdsmi-tagged-pipeline-id) aomp: $(aomp-tagged-pipeline-id) aomp-extras: $(aomp-extras-tagged-pipeline-id) AMDMIGraphX: $(amdmigraphx-tagged-pipeline-id) From 6864f1546ecd12e734a8c3316abdcc53960f3cd7 Mon Sep 17 00:00:00 2001 From: randyh62 <42045079+randyh62@users.noreply.github.com> Date: Thu, 30 May 2024 12:52:58 -0700 Subject: [PATCH 058/175] hipcc doc link (#3190) * hipcc doc link * Update docs/what-is-rocm.rst Co-authored-by: Istvan Kiss * Update docs/what-is-rocm.rst Co-authored-by: Istvan Kiss --------- Co-authored-by: Istvan Kiss --- docs/what-is-rocm.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index 4c3f4e9ec..14782ce1e 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -121,7 +121,7 @@ Compilers "`AOMP `_", "Scripted build of `LLVM `_ and supporting software" "`FLANG `_", "An out-of-tree Fortran compiler targeting LLVM" - "`hipCC `_ ", "Compiler driver utility that calls Clang or NVCC and passes the appropriate include and library options for the target compiler and HIP infrastructure" + ":doc:`hipCC `", "Compiler driver utility that calls Clang or NVCC and passes the appropriate include and library options for the target compiler and HIP infrastructure" "`LLVM (amdclang) `_ ", "Toolkit for the construction of highly optimized compilers, optimizers, and runtime environments" Runtimes From 6a5defb82518ecfbc631708de0c09fc649403622 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Thu, 30 May 2024 13:17:44 -0700 Subject: [PATCH 059/175] Add "How to use ROCm for AI" (#3117) * Add Using ROCm for AI:wq Add PyTorch Docker installation images Split doc into subtopics Add metadata Clean up index Clean up hugging face guide Clean up installation guide Fix rST formatting Clean up install and train-a-model Clean up MAD Delete unused file Add ref anchors and clean up MAD doc Add formatting fixes Update toc and section index Format some code blocks Remove install guide and update toc Chop installation guide Clean up deployment and hugging face sections Change headings to end in -ing Fix spelling in Training a model Delete MAD and split out install content Fix formatting Change words to satisfy spellcheck linter * Add review suggestions and add helpful links Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> Add helpful links and add review suggestions Remove fine-tuning link and links to D5 and MAGMA Update docs/how-to/rocm-for-ai/deploy-your-model.rst Co-authored-by: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> Update DeepSpeed link Add subheading to ML framework installation and closing blurb to hugging face models guide * Reorder topics --- .../rocm-for-ai/pytorch_docker_install.png | Bin 0 -> 56629 bytes .../pytorch_docker_install_output.png | Bin 0 -> 451563 bytes .../pytorch_docker_test_model_accuracy.png | Bin 0 -> 28433 bytes .../pytorch_docker_test_model_compile.png | Bin 0 -> 160414 bytes docs/how-to/rocm-for-ai/deploy-your-model.rst | 113 ++++++++++ .../rocm-for-ai/hugging-face-models.rst | 210 ++++++++++++++++++ docs/how-to/rocm-for-ai/index.rst | 23 ++ docs/how-to/rocm-for-ai/install.rst | 60 +++++ docs/how-to/rocm-for-ai/train-a-model.rst | 137 ++++++++++++ docs/index.md | 1 + docs/sphinx/_toc.yml.in | 10 +- 11 files changed, 553 insertions(+), 1 deletion(-) create mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_install.png create mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png create mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_accuracy.png create mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png create mode 100644 docs/how-to/rocm-for-ai/deploy-your-model.rst create mode 100644 docs/how-to/rocm-for-ai/hugging-face-models.rst create mode 100644 docs/how-to/rocm-for-ai/index.rst create mode 100644 docs/how-to/rocm-for-ai/install.rst create mode 100644 docs/how-to/rocm-for-ai/train-a-model.rst diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_install.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_install.png new file mode 100644 index 0000000000000000000000000000000000000000..8e655a3ce9e7cffa569e442635180aa8a77f96e3 GIT binary patch literal 56629 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 literal 0 HcmV?d00001 diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed4568d6d962ed41f551ca271274237399e29c6 GIT binary patch literal 451563 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

EhjlerDe59CjU) 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%0AGzoIzD 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 z

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%0A1h*T)atZyHL2-hM!yc{!L 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ìn%p7>C}b1OTV*2Q~O-i9y}k6_+<+) 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≫ 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 KTYASn^#1@rcx(y) literal 0 HcmV?d00001 diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png new file mode 100644 index 0000000000000000000000000000000000000000..66d0b970402772e46bcd567125ac3108305af901 GIT binary patch literal 160414 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�QO&t@!ZI z;irE|QufG^IkDl~*gC{SOL27FM;{BK#-2N<;1YXl>b?!P z#U)>vE%cChn5ZFN(M4>CxAjj-a$nu8e*4gUy6&c-QX&>zJ9Z4y{!$i~tCbK~yWd-X zEKs?sPV$5Ky2hx*@=iS~Z+L7gsV-fGC@?|zesgGCuwXd2b{7w=1*Mv8Ot{3kbg(q< zwrCv_`_u&K-7C)ZZ%`a zoP)yFIAT9fO-S1q6cb6v_AWm(SXCJ)?@;tJlypmhYwE}qffDKL8&f~bR$UxRPgAnz z>fPiS6AQiUkE{JS*<^8{*46><=7jn2ul0W7E;CHAi9>ZRiymD3ISN5GJN+F~^(4QC zoHN(yVRd}fE$(Q-QSTBD+gBgT_a?st$KC2{$!=7?P-PJ38L0RX9H98|>1>m)QE*uB z%;{2<#3?FqB1L7gd0wyovqriye@^R)yvoUui_0M~kTN$eM`gshTC@H*97QnW)%rtM zxW;o45-PqCzQ3U>i-Qff!h3av+p^%mPDzTx)wJ^?NQb>1AP9^;yY%WM%5^El*me^@c9Rbhd)vMv&o+ z>a+ZCH{&w8NRiTQ#Ar!{X#1{L{$nsF1E)fOi;y=m8fAQys91DznAOze(EaP)kt~BY z{?e|MDx0~3T+#%5#*<3K3sq4?Yp-dZ}ryrX@PR;mkw&hC#WP z>uZg=eoq|;62_<+y=u@->+vi~@P1HqC0)_LWZJPoi{Ew5A8twce{{WPT+)C0|6N&H z&X$=us4UG~spS?MUo$hcY^XVKq(lxJxdk#a%bA(DP%2mD-dl2)D5MsM3pXxA#SO^y z>HJ^6-}yh!$93J~4)7W8alDV?cs*Z$udo_GfwC@=t;Kk3IMtRxVv`Z~tDF-DJ48(C zVqQ2sg7r;6fYL))ZKzilZ^{*h?>HBx zWS;#qJ~bWVN&UXud`&*aQy6G_qKN?s=Ou0*#6${yK9>Qf%mjT+&l%L~gtsDc?3A-u zf}2`BbJLvHrujEKnHf*{pnr69H>)dZ&xV{ZARohLiFDP?>;wy*%0zTBWZe|&Rfe9z z8(`%9swy7t3w?x8ADaq_ag`ELXm`dJ0&@#)GofABOlGkm_Q{LT>81v%&lRRO)neNA zkhTHKDb*4TQc6m0%FPTH>6PVvGzAKFO7+NR(f?)`73c!zu=jkyE(1PRg&92G{|prF z?+@5BfBH&fYO&+=p5GjkxBHfeiqPdWW`Y_QL#nu}ctahBxoNXKI8jxaQe2KjM_HB~ zO;=m8sGuZ&KqkSEKeeLa&T>lP6K;#@)cFSsPMRDD+WYa)haeVixJuF_Vbauusx}pv zT2)h9(BZLU6Xj|%b-Bxn3mC<@q}{BtR&1QvtdMMmN0-rEl}Szf<=9+1n?PTbjTEn6I>=Zz zG)#l5>#;jxR+-CwHs4_D1G=D!D-+tnUA5ZX@2GnX*8hkq+X36DEG!&)TJBe$3KuU{ z^4Ns3syMHwIjL2lr0^;orB2X*`)seYa@dOQ&QF)M#PCB9cS_8^n_x$*FZ>lHN2#9? z6}F=eRtAd-XNXtZ-pdn$^6vE3br!rsl=@nKsJa~R{8?{)z*+iK+V>)afU-d%NgZMm zl9Uo(?#6j~lJhy>dEU;OG*Dmt2l@>P6bmcQXzdUQs;Z=)t=ZUdJwmJUTYl?yVbkn$ zA>#m<$r1Hf^0{VI3Mnn^@ie)PGig~>n3W;Kt+!^DPPOnvaw2@&V%!kajv!7%1(4K8 zKKeiH%!d_?58|8S!d_0{o_})@war?K%$S#XkS}^M!$ouc4sS6%H~w+YsQn>HlL@|W zMGOG;Q($0w;`)#4Yeq_nL^i*z1lzE}Ci829{jSAj75=8ehlcf6_{U8rdA z;jTdJ+83z zi`n6opDtAPX;^!tNA9VjC;sbuomFp`PyZ+Q09cCu-wK8QEzbX+5C5ND1x}rZ(RL#0 zsN>%}xK%IQjAwM(>fZlv;{IPB^j-k&f2?a~Bk(}8ykkSprTM=gw+=KSJ)K>ex7hmU zO$((%=W3oMJeh^}f97oC0q9EqH|g_N9-*@&hVINT4oE(qV*Rw?PgaT!fE+1a0?;Fj zI~`(W`rlfICWbCsrXF?8Eqn8rfbz9qsGi+{D@&>9u1n`j-X9e9!T=sm3!pxiA1Mh&MH zQBnF_8V8csuM41(a*$s+KItx@7rb;g80S3y`<)l?0INEKZZ?DbliH0e1Sr)2shZG2 z5JErZZxz8OwdAxw<*#e1dY%aKwW^YD9ei5eGhQpW1m_2wpi2G2>|o_5?u4(^s{oW2 zu}Qoxpw0-I;(D&)_y(l)BD7{2A8^{%>MA;!w-!A6^pZWumIRl=e&d!^l^+WxQ*@nf zU%wF1Hj9)0Id}@h()saGiA6l@yH<-lUQub~fCkA*t4uh3lACyI;as3FH~ve@V?&$% zv)CnMo9^o^VxdQzth>mD=`n~<{(;G*EH@iw_~;?8lPpY!-6dz8#8m8e%`KDzfLaYc|3!A`6+pmRv3#Q| zKyW2g@z+H4As-Mc!x%4yZW-0rZ#QCA^}@6~_7%)6cJFE)skT4%c<2dNy{1WBTt8k* zndJa<<#1mklJ61Z%DEO3G`*kjjn{-Hzm9uYhF9^A8YR-+vWt^PW`Rn0i;t2|0M>B3 z#MC8#(qwjJ3`|tNUOiEzLQ75c{=e3 zjoemSfAl`z6xkq&T5X9p1S;6#KY)R&ztUqezTL^b2*zQTE$>#Tl+zi5zs9)M|GU%lUr)XuVdDyVbJo4C zW3}VrXhSJ*lW2fMG=qe^t;(uCytMcvqFWW#ght?8sPS*>B^>z+2kM?gl&5BR52Iuq z`6>KF{!jJfmKD$dVA~Uau3Ih5Rb;6DAXjL3I91SGRPB}5n;`TO{3Yiemcfhx$Gzw2O4hj zQj*We36NG>$sz6y{##n`e{SJDkiXdc4a|V?n_DoBf@W(aV3ZTl*3$xjuPDVAbdkD_ z%AY<3F78H>S$5AR#IhNS&QN097B{Hn2XxJ|N;I5V@EHGj#Bsn;-AIyr%`C#NaeSn- zHffo<%F?K+?Adm?(+crm16EEEBY-VNN-!=cZKl8^@NPh#B&sS3yT~tBc#3HqTjIXE z^_6DCU8ASES05S$-q+3Q$AdQ@V)&QYbWj5AYukNyh$8Vnm*tl(Wp7IsAGayP#s#M; zkfp!Nqa#)3l#iqB_;2)X2k$bjr(6g6L7S6H#{II5>ROY_J?vk_+DdFMU7u1qV19ra z+lJe(o7@|yA4I}GeI9>)G4tCUeX@f_W6pknb;4e0!c+W5oS9xI!UFrT)vjKUhY(O} zWAeO~As2U`fNH9n!hJJm_ac;M~}T6X($O*;${?L4%pnYdQ{O^me?oN*d%OlP~yO1{SW4?s`Rt@ z(`O2sp>KSv)f3$uQ?(k!00?BL0@uzbtGigJ|6;_n38hNdIve1&S_14EOyN~44N2YP zGB2U|UK*t+Vx6=#fi#?yWnD~5WMIFr{#5jWUq$@o!2VyevH28?8;D&H(KHy9%enCO z?^Q{0X$Rf-@qh_(YralWN$6v#q7t@A%ZX#aR`_$wed2;5t`Zm~z(i9kGPG&}RFI0$ z@jw7_v~b?wwZZ8o5Iw|G3ar#rLu|NR(0b!(GS64dpoQ{g$KOOmbdKnM{Qb3({lGE{ zS$a?&pM2Dkg3B&pe*sWLmU2okRjpECU-_8y5^wpKNs4Dwf%UsxX>VlMh{?Ry#B;3m zp*H3IUV~Sc@HHv7=65}et%_Rfw+#1=h?8J%kMzSj?1V+yM>R_9;4+NP$p60UK^U+A z`5Yl&{2<2iUS*9A@`4A3A|H+$mvF>dj^9GHA}7{1@;B?dBk=0%I(2bGibupSCfT3O zkT$JDPn&i5X*tf|o0iVJ8nL4YGy6{Q_tu7L$J&}zgAM}y7^KUJ5-xz-0=v8<^tj`U z4O-nfrM%L>P@nPHwm82veI;!wn3evOT)))xDwxVw^oM=21$|rLKZ1{!4u^o+Gp_He z>(9EI#ruE`)F)4z7lF=3i7oDhmNFsSNaHu_PUDh?S2b)``o$ZF9W%+xMQ4fIHf zzehRht%#L!dygqz15jJW5WdjCEgO}u{$gSw zSBDkf&7?NeCy>Oxag=*6f%B?ZC;bh+wm_TgqyOam$Uod5w|zmc-gB8)!m)T*HO@EI z?_LgH)0>cAIt6juHf;+aEp1XfkD+nbMkofmEvJCOMV=N?3+BoluRr3K%0fIWR$VvS z&2IRKMXR%1?pT+qj?NYYQ=P7tXp|2$Bt6GnPuo(N4$;{V8wVwy**?HsF|lmc|L4EV zut;IRs#y(?)bgzsB1cbng{E+)t`oL5|-yrQ32{`DD}`*h>M`qw@a{kzxv zf=RVXD!pc^JD1&&`*&2Tn`5)rrPyoNC#E#qOl1CRWJN4~*sZ~|$mk}HHZN;wWoImn z`V9xa_V^oct<<`=9vdt5v+cWk&J?e90jbg6t9Qe)+1GqxMz2ymp1ty2eKTlR6)Ko~pr4pMS;Y*YyFUzR$N%R7{nBp&>1bV+q8+QYgwuHCLSBA&+9SIDc>k)Ea1PyR z15crzXnO2}j82&3z}W$S*1qW^VG>tfDjJavQ#Mqm|JTp;e827(bpC=O=vQiYjpuSK z8!MwoTCvkF>M0P(*p@1f`Ok?n5M`ZS(g2{2oBkSufw>u_k}a$A-ssX@o1Q!WH3(lS z{g{t%nFCP6v7!sBz5jJ!dFhZ3^=R?QbdgX``p^G3=zo$V`){D)|NET(<+%2LZwJ8V z{~s4PMJ|8QF%B-e#i!LrORosiguVq2SivVCBpj%>8AA(%+IZ_VBvDTYeW0f+)~LQ*ftQPxGz*> z@Klq0?aMJ9-c=fFE+P$PgsY&ziNX_{!)J{Sy9cGw2t7fgwsS!MU?5S0^=Hr}Z6msU zFq$OcsxiT{lwytS)Ll7RA(gN=-cJzI%bp2^6yLrGsyG;fmqFkKO|zFhB|RHR1FFz+>SMuGii zWLJqha+^uR)J279??0~PnI8}p9=NI1ErU%IzJ4Iww$-;WElBZUb!fqs0j)ZR^Ebny zcUti{T7Ql!un4$lVFij`9~;Yr}U%+4>3MksBsWtwYE-)5!z&#Zu`0MLFNxE&Ag41 z{RgG9(l|!bS-LTRU*MRg>rh7%{Dv`*zgT=TL?&JB>5{L#bc3*#NU+qbR9Dlqy?}B8WP!WL3bKhM?}5-JOGj)Y7LTT$YL~*qN}+yb6;U*34Oh zTn&xak3Zj$g6LQpF)Bkn9ucGskJmJAD!Q)*<*ebWf(8E`aZD@@;WMWizb-rZ>)Pk}rbA)c(43$<%xB z3!R4KVGC!5#Rhqwp?i%>B8x9tb``(D)?}T+s}JEZgZ{lTU5c&vvhL$-_MKY@07{&#r9koWUyx2kJ%gG|TR zdZ;DlPV4&9HOC39vB&elCAH(jL(a>ZzWOfAGzV=Z6>>O5qK2Tle4G4!X8noVn4>Lr zqb(VdS76KH?L4;e>n7%p(;(~JMsj^(>}D_eUoi16=K-^tg>c%*1AjWb8|=QTa)x$n zr?lt9zBgvKxYco$7?GCIw9&nr4U8{+gcjEp?(qG11IrA)+n)kj%|1*PE^?)&N)4H# z8>c2D>z6SJi=#icxtohBo#({yURS(pj3CR0qkTM=g8{!MeHEw;v)L$%XwlL52B6>$ zxho9JnC%%9KS_Kpz91-B%}EVLTzEAtI_cefvcQOoDMe{*bRnk6uMlq$F*)~9_6)Z= zXRTF`T3qJjz&i>&fx5d!U9EF(ifV{6RLSqUg2IFhdxJh-YW&$60P4m7fM8n_jL#k8 zk@vD*2Uyta4SHaL|E^r&sQfx2j`rStp){KwFn~I^(#59(jG<=#8|M{6t_@^F3x+R? z^VX`9z0cHPqJO}*hz?~Btu{Vi4}>IGm9EXq%a#yL?WuBE(8Dth*l5ZuqOIq1p?RQ) z48dFJDV{N=w0p_K~wR+|U(gUSWy z-ytPP-p{ww+Fzg8tBs-A?=$BkB!!z>(x|l|Qd-A09fgLD5^?s_2H7{<1z$Hec9MgR z;L=W>g>-Rb)CkBWJMr%a=C_nOzU%L$M$5`O(!rTu1RbPhj*3TpEpSt6 zy`hC_XwpG#IXwFj_z|TS2;bS;0?+SK-Pupu*Ky|S=)n1~ExQ4BI0AZ%Ty2rISv4$? zC;kClPB5 zRfv+Y`i*FIm3SAp08YK5U)ax=EU!2efOih9MP$LMZHHE^j%(BxyNoV(~I z5&h%lwVfyX;`Nc35pXU;tHb2%{Ixc_#Zl)gTbD?oHOb4nvietRKQstGJ%}F#>8A&h zA9#1fO!r%@Jsr#pIm|GcxxoE?{xsg$h##*qo*CuFc{f>19MBrE)JAd~GeDE$qlrJ_ zo$I@cxxDlAaEU(Y%;pXC=9Pt^(stJqxENxVE%>7~9QQZK64BDliB{oh@7>g%Q$LK| z<`)x$$gl*(4gIJH@V74Qgich+dfZ1M9RB2pGANyRX&ySixRuBLpV$rbTOkpa?pzpG(1>>}5;)ZAu1=^w#` zAO089$?}`lo-OxN$Uk--U&0oj%vJe<4;{gjx}E~hdUU{B)xc3|$WQ8&A1{2iWO)<& z(cdnq^k?fax3AT`wu!`GamsI}k@K^HxxJcoiLt`Js4d_w4LD=SjGt2Fk(vyfs&Yo9 zML_MVY>EQZkr_0$e#FX}ch$Pgqgo)Wue!crT$Jo#$5Q>H#7K8dN4$q>xY}@%;tMtE zVL@g3AUSRyuX3ep!y4{RKX=9>WMF2a*9SXCtDD;B@qhbA~m0B_AJk3>+B)?Z^tF#0PYPvXY|Dv)>STNYF)GI^DUYhvKAAgUnh4M zDFquf((8Zl-OY{aaUk@)Yq*M~6``p(zWI4KU}>H5xWF#Wf4wxZ=vseVf;$Zy|FzGv z)c0NoqGKg+{iJV5>6SwK?wI13+cIdfW^`qZuQPAvTCJ#WMrr*DXsuNf5QY9mlWwmB zcc1J#bUQ9Q60~5}VK8psJOIeL!JQD94u&skI(gD@_gWN7t9VVHfHJbiwS$u*rO-Kvdseb8&&K=YY*mFb|KAd$>%g0YJR!z z6ElUX#ERyN-p%MuhhIu-Q4{-md=%|^ulZ4dfTko56uLD?^{o@|=t<ZeC^xpJKCbxf`$JPe?KNaJ0!jiiL7n3!+by%aBcD<4Oeac4F8bOjkS`Y(JhQFOC2pg!>Sw|Ly~GcvpS zA*{x8g1222k>oKLco=5DBSHPJtuqJfm%W+-@?*w++Pf*JZp*xnoLVsYjH$g0BI?+H z@Kf*4Pw)&;UwV90A`k56fk2HnH@>TAQwIa&4f>4XmN2+I^r-(yR@zI<`uBL}qD@%P z@xd%SC*oyLozV(-jOUetmhyCBp(yLbrjkA{y_IN@XY*BJ_c?E>x>kQTK|{6EqZwM1 zuf27!O4G8cX&2*KrytAdasE`nY>jI=f0vdzC`HW;$#dU4JRxPeB{G0A)s#vU_{U^u z)^M>C8R{6&r~68SxcNbZZpI6r%>}EEjk@uSS8-<5R+$f%7Y+rC*v6N;vgG@GAQY6; zoKE^La{ZhN^1I@n{02USpN?zWmyfMHbEl`1h(CGZXY7`Y8#PC+O7#og-6?5#l7HIG z4r8@^Wn#oAG>-8c;>Pij?4w+YY*Y_gX*6lQqeOicc)INpc?-&!j536--)qbaqId`mb41j_^ z`pDd>R&g1+BSSpUvMM04T}iRVA>>;Pe{Z8oR8@*aYe%aNx!mq-=bopF9G&4Q7%r|h zTxOL;xUgQ+OyXC{^O2L=BtDU%Pw51OTJ8t`9V1<6X9##Tbg6XGrgZyEeha)mK6hFb zuX=fE7`xbje%cAl{PS^Pxl+eo+RjCa59W!0M(&#OPQs?r+}#C4ip_B*Ni>o$*VYva|BUYe}? z57X~ufYjhoGRceM!s~Ivv-`evPqnK((34rsa=*d+t>UsxigE!O0j$gi30K^jnP1QT zVQN9u_S{xyV9rcxt9Gt5%-^BFOR3F8WK~0%TMHs}uR3UNorl-8BGYc_?@?%#3SF-$ z>b~?H>n)$f;dk8j_z-?=aCZ3F^6V9v#=hV){#PZ8+1m8j?sBsd+7JDG*>7bizUBLoMo*2I^eArsed=xlH6p?AoYNo$!;M;D>@2@_;VrWeDUR$=j{de@dDVIUThFGc{S5E(Wjks78E* zPSjgmeYZ%AKVsDT1MHIi8+NXA&31!f-JVh1Z^ZXL_jAIoCbkSq@gL?{$7Hw-B@}Po z9mRK#P%_rAzPL9jC9$*Rb7%0PBY;7gA9rma=vIJQAm668WO9_Xa^btx5>8>>ri*kr z`0|g<*a7*iy0|YUsY=VnOTHh1*hl(&H6Tk6r_A5P^A4dY*f@1o?#7H8D32>>Z_Dbh z+aA>BP|0Kc-L|cG-$>4`p=32~X7}CY&;`%Ls_%SAEBu;Wm!mKwsJPy9A#PzZc|rs< zfFWl*2U%yp`@o196d{T5=7H6Qv_>>7J-bpeG{sAiRty+|#qu`-IGZQwAa1?NX@j9D z*PXWh+-|E!4x78$)FBeR-WXX4)Lz)^XS$Rp^|?YYf9yZvFxrEghAJLiT01?+C)izn zMB=1Nx~|cOu}Pq@b;k`lfqYXVJ=tEXFC`*rpq@M_LCz=Pws#&?n+6X|oT_iL@e*qB zpNZUB@mlQSyEI62+PpSVlYKn_Ql^fBJLP$$8vZ^yUlPXrcr2%HpmT$XWUt*E1P<B&4P+cPY(cb76+>Qtc z2PXS>jkF+j?(Gkga5H%MDv>6ik!5Y@Bit*GA)RW7#D>Tc`8Bm|2Dddma3?Kne2{+K zx(VNen-D8vpdG=c@uD3?>bBtxgo{s9E|~vKE85*HELF^8Hy%7F7Ht^eqAIO9DZ^Xa zB#pKQ>At@NjajQ1^Y+!*krun+`NN3ur8Up4qTxqECL|`a_J9O$)Ev*XAS`b5_!CD8 z$JT)ciT64E>4lrPl4Yv@vCaD+zI!Bi_t<4h6~%f~aN5ekN+Z*6bAs_A^4e?7zNnw_ z2wto3O()`>r@#|j7#qyJll6}T+yeX}R2RLT$od9rF9)19+yIXD9MuNR=RUvZ1Fv;GA_6$>9g^r{Gs@;!mF*FQjvQh zMF)Ofxrq2DFUU^i-tiU{8NQ;i!5EM0&yRM(%ng%MLH9evoH`q?b-`6OYHv>ZZugL{ zapn{)i$}7)NoEy`nK%Xt`C%_S+a7$5+~XJo!#B_Urknp>Il5S@9FQ@7bL4n4v_NxH z3iinVgsf6l@x;aJ+@e9O>%?QZ!I7pE*Yb;fxYB3IuKLx_jvs%TKTcad-{g%BN(N`5 zPX+P&`MRD$xZnIlrl7a2zGEf6aKB%Ht>ig<{cL+wsbPje;5tjt^D;Qyk+V?m7>-cA zM1Ga8zr9XeMQdJ>Oy=O-dOjw$Npr(*cBn3KxBT%d7wEX}9fB<>V@=rYARayr?lk5L zXdxQYBq!?kOK@a*mMmXcEKWE!3zc-PErs;rku@Reyagb}uwi4l--hqEE|CjoG@Cq|2f>X8>R7*hM+x$|r^3nXKh& z+$UY_9Ou;qa|*bq$Xpy=`OfUI#0Ks{YbT{j#R@ro(kDm@s-74Bpx$iJ5*E4RXz3Pg za*d<$Yd2ion8?Q~T^waLvruYlFl+*Nm$3R-q#Xn{Z9x zCKD!9wzpnl$H`2~Q0Fn-SH7V@IcOg?knYvt9_;W!islqw``mMY&o*FFbl@^*!W%r> zctV#zG`rco)6K@Hhgg6ZWH+cPZ6-$2DbL=nENljez z*n9c8feM450$;|M#Me2;yw1bq%kdD-NZP1RsmC(p@w1jlH|ZPMl#uzeEvu2*kh-F6 zbFJ5Q`~`~P)8{?YB8uZfS)V;57psu@tecN#!hPSv5rN=4^x}EwnG29rJv% zmrw**0uzT|YUF1``M;T{M|e(4nH&n$_|8ienA|5?Yp!Oi5J)^@M>H3d#~5xVqmrz> zdjMqC)XRqx2U44}-PF>}(h3(3eC_U!me7pk$B)kDQDp5Kq@H-)m=$^&eBNZQE;;Az z_=i>s#rS(}1A>n{W6*PRn9l@|%W^vRob9=Ae|i0(gXe&qbN^nCoo_|kq&ejh;>jh` z?&h{ln8BQ2qp?QA$%0!)(HZo1L*4B*IhHNkh*oaCGPr@)$Zx)Og09!_MN=FiNIe7u z4l{E%`($r# zBy}f5>Iz5|67e>XvRNIxN4HH5ZC$UZ$SP?TIT(cdi0iqb3p%LliwQyR5(bhGu9a3x z7$XU{TIJ-Fc)Gd(|Nh*3gEf#48zo{p1b)hY`kxhxTWqawmUkPVI_lFaQs%wR9IbeS?!ws<}z&*34r{+%8=D2AbNGXI>+> zYd>*ellvF@-2FhvclM9XN#In(?Mw+kcIhu4 zbMBu($f6v&Gq581n1Zct04Xvs(y9Ce_K6P)&-rGY<+;Gy$#@SiXGna}%6lhyPA13P z=F}=OCQAY~mQc(2T5~IL#TF7Zn6sUvfvV{`%udM0*Y%4;A#u87$S$Ohwa4F<+^>DT z-nL1j{^-!W{KMKli3@y(T{AtrE&0L5G>c@nHWgT?OXG$3&gb*QHE)J)U!OMkc+dft z*ad!@NGFbW(E_?d*7B-G)BF{(DPi{%UxkCTeMIGwLk&fDv z2fS)q%EXSs!R$Q=V*0$R#)0d`N@C>+3p>-6@45u;9)s_fZZ+)O%O{q#<`>$E7bt~! zF?H7t)fNx!=p5Eeoy$!Scy!dg@eER8rD5f1{Tqpn_A*-j>jA)AHDu6z`u)z!T17|e zHPP_BDqmoy7w%6&mKWTNhxe>86&u?lM=lRpghhurJm%|nGdkf|kUm#w zSFa{`SJa`;;*4g(YxV40LEip7o7!7kmE{`~JC1e?amkeV8_ab7Sie2);J>M8Shgjh z;NsVzLCV*1u8Ib7@s}6#l1j72+cV&Srl=ZasfVm{hrSR3Im%qooC5QWFjl-PwQ!4^ z>SN@WPa(MMDzsP3-G`wScB%WJz4E7&Nx}-v&kORmAgF2coB?#AX{e$aJQ zB(OUh*2Hqfu<|Wihd-~Gm{seYSj5UKf^TylykUZGuaH80F&gy%%mDt$WA_>|s%xV- z6au5R#J7t4ni&v=box^w7Z-A!8-~qKzlFea6r&2(>xSgx5L~aWxq^R|l=z7G6Utwr zYwUK6@6k^8eMaTP+azp++T6|Db(5!3zYbM@r8%kFo05GKuE*nCq}{@v_eZk8#*KQ& zQPY#KylJqqOblydjnpJf9gV~$zaI1GgdfXfSOkz233%Zd)o%qjW}T^lF4y`=&98duBr zoaq}HOvP3bzu$s>y6@M`Q(`OB^>kR?r}8>Fv?-^{dvsh+M<>37`veO@YH~lriw_cx zNoT?4WQ&+{NAwUMLC)&Hg?OL9Qg^%*WB>wUwwfaq_$+l#en@xkP9|kySkrK;Te;f>WC))p9 z`GL{LWJ)_T1ZUP%BQ#ioyN}#AuR!5Z{g(a6!BE@YQT_Jaslf*!CoFu(_#BH+{{RSC%XQ4h4~!3gYZ|Fb}p6r7|^4^Rnmo2>LFr&6nuc1WFd5&0rJm??W zbK&MZh<6M2_B>;6uAS~vgNW^Ozo~qLfmNl9!(8qezZD;W{gR>B*LGC@k27Quxpc=~k^Ht@WsHKS zinT;yEcwK2nnn_TXBw`loQ7z ziG6%481}pPb=Onkct;GZbNJbhY2S`j?k7SfW7JT4?$}%trFvJfm?oNRey_v_L8>HJ zRY_y&gNr+`n(s9?vkCh^y2foR7_pbXE#|z%uzMcrDPFNGH|NsEIjOkqwa1N}M>vja zk6PC6ZzTC|MD%&W7iTv!v)+$Q>y&_B{GbIQHN9eQscY#!%8;DQKHPr2EC1cBn!%Fq zd!xFW1=DrsGkuS*XHdTVvd;uHDAx$`)8fC(vY=^+NH&m4E@f86Gl zT3R552;34~9ecbOBrheCS--+$Tbv~9AB_*ySD6Wwtkw_rvAwRnNc00SYm5S?&b7v^nGr%87u6i zZ{SI{mA9Hs9=pfrCfFyqK;IrA>&MJ4Yo4O!+ChO}rFp>Fqd+1v&(atCY@+*4vFgO0 z0cK&j4`wd+*R~n2UCx__SU&x{ys%F^AjADgso!~ff6b&Q-E88|fLZgddRLVd533vw zj%{V^bF}u}i&8SN(h%yi=$@~gDJhSw5zezlftURNmF_h%(Y+80+j`w4_J*rD(G*!@ z@>T*ZB|)CN)AW3KUhqb7rSNyVXrSJk#E*|ZCro}oCTxs4X%H=l!;iVajBEOl#IyQ_ zs-af^VvJzN&CrMT=AuDmB{8VTyn^@=Owl&KMJ1P3O3%nyav!Lik*S2(nFo$?DIlkz z{u92h{>r=C;umsv%X_C!+lpB^eg^U^?b&(H%x!b+C)SQB_Chp-m>@BDpa+ zztUOP`w4vaB>`Ib? zKeQ%FuFxo6Wsj}6af1K=8hdQfACdIR1*8+GuSiUt(0;}IDd>_puJ``c^sr@2y@KDC z!*ulnxp>XNkeS;p8MaxBbWW!RRF9^1W$s4y=Zwi-h67Ck>)~&+Z?K`$k0kzG0&$ui zl;JanUwa(}J{QO7*Zc&ad}S}0y0z93O$!BJLZjEDhg;8$4~pYnhft>iHv$Q*7<1^t zv}hyzmPmUe_EJyqFp0J$L8j?~>gv|w5vVuu84-FZRl*gU7BfkVd@V4G_U^S`z|HOE zDVTwV%3vEDl%$WNg+qL{#XE-`IPCd467&u{1C6J=od#4@VVMsX-9&E_|P^+Uh z=a+vSVC>w7UFuil@iv7n<_8G-P^}_W@(RR(0C@Xe_N0)M*m{_{`HA|s)`A{ujzC@@ zxU|ogb6L+I_0enJFK$ghHKLY*#qi+1*Oq8|t=e8_8uva)&bRdObRA1`P29Q4Fd0zL zE3gy?%mxN4Y_l48YaTtVYeEOz%>|ehJ2DWJFX8ZCf;9vk6ZxLgz8Z}DA9=@})oeA{ z-yc2h+;ZBjZz>=cyEeSXfXM0*PKLwh)TsBi)!tGF(w;MU%YbX~lIZ)VS{?vKrpDkT zGVNNUIvV#jo}H3de%E9fzT*OUT>X$bkq_iQ4T&<804cI3wIWz{*Dil6&%B|DR-K=A z;h%!eR)P8PzT-{TGY8TB61~)nX<8>U^uS;w&qi%*fJHUn^SXy_K3r^heF!L9gg{pQ z30+65?mz?7Lgkts+_mfS)NWDhTzKD7CIWg>f10kLDCeP5hG}X+T&aRLgNPAzsIBE} zK=r+^y7&#`mbUbLNlTMv?Vk8Eb%duox3KWDRw`u1M&`0$)zJPr*`;b6%{j2K#1o!N z*wV^CY28FDT$)bCKMCTD{)E8t^%m-a*h8`|l-#6#-$QggUxCg|&|D<)oGMj>yuRR_ znZDArQ~iP7z6kjyl9uf9eE6dkM`oulQ3CNbc938_Xn)LN=;CjeGY=YMxAC?9NNxUz zD|Afig4#dGK-JA8_v%vxSqMj8ENF0S3*ytEM!$p`U9nI{H$DnYdajkMvYfZlD7$r{ zUHul(ZQo@3bJH=sAvyPEp1nU2CiR_80g_;Y#H|>a#F5GYZ(EgMq(a!_;Iy(TyZ(Z#6;TwEJF{!_JYVG8AVlSpRH#g} zx66d@l=qSGI7aB$%9R!^?6y+owu@33Xwk?IcY9xr$b>PfEpR~9mAh=%^%S8dUC(-# z49~xdA}?$X++qpOn{{l-ATIZ>R0h$UGq~VcbGV{c_l{D;173Ps(7$?H74wgw7qk$N zufA2Q2i!v(mG~+Fu|mskeZH0qFOPhj*f+HdPR%X(ic_7I`xgX8LorAD{jfNf6iqe3 zg4d95K*H3)-NJP@&kyqxzqcc5zdQ2oF#vL%X~KH4d;CEIc%u`X1gW$hTURLIt{FTJ+;jNrSpUBF~&V00|>>#s4leq*ag z=lu74*d)^yp4+eMjHCDh%iEY&w%C^l%uwyS_DX)zBeZ*H8!axibDiKPlyT^Recr3U z1zAPf&a~V9@Rka~9PYj_8NKmmVs-E{b-sb~nY~QE&x)n~&gHTDpKgRS5;pSNE7l`nS5zC;+Mo4C@;#T!ieCQYlnZKH1>c5D)#>Nxrf$o# z5MMGQTvn+i>buWj3EarKAu#wI5plu!l#4b6*DOxo>J`t*ivR8HQxC0>reDyN zm$Fe7eJ|mEcRS>w@QevZ> zE7qH=B`2;aC6TM*0hU$FS$Ho~MHgL5@~Mr3`ELZQJ{qp@RLA)C-6)^gw$ojh@E!xN z`lQC3nZ!_VeQ;4+Pk!p|vl7hA!%Q)?*TqKC9uqKA)Vk>%adMrPJy3Q^_V==LEe`83zG|x5s+F8$tQ}Q3HGOKJQ2k4L zsNSY`;~kL$!}cl$@2RitWIfIG? zqd`q=QsK}jhO8Z#O<`sykCu(qWEho>h;wlhxbhY|*O}*oU7EJOx>FUyRpvI2@U5i= zO>fogyS>L&kM~S|eCww!v_QO~RtV}z89;vaU_8v8UR;#`G?sobgrVS`vB&DJ-3yV@ z_W?%E=dzf;$!85BkbD;NHea=WUb7_v?uoeJxE)&6I2Lrq2PXzrvEavpYGx)BiFMidY{EXLc>nd~{wFjpO}merg6y%SNkpAD%Po zTuoWP=I)W8Hz2>FHycFodoBJ%{(<%$+tagwgtg%X)MSWfk>P&mmarYDH!?iW!BRNa zGTi0)So`{~^C`Ccu(tIpNxc>6F0|oBS4YZ%jr5naqH){SN@Gwlhp*ZO)4MtA?352B)fbGI6h6y|!=>ykgaNKt)u zK9#Jg>O@fZ$_H)_eY#& z+*zN(Euv8CpAhoZVg6I8=n*gZebCDKh8uBMRIJS)rHF45GC|}tnKb#~s)R1&m(O<^ z%%1ZOoq2zSA1{4l%@~qL-Qu3HGf>Q(&B>TE1g+H~Y*+ELHszMbg?PeKPrT2tOZ~Hiz*2Xj0Um)B(I^*vd)AFDH z(IL+jpQ2ACuHq0A>VXddB^3wK67ArYLBaSRQNBh&usOd?#UI_CAjUx?>G$}g^195gf|A4oSU>`XReY{SLa!3N`=+|a{=HFhr>wd05quPG!@w^_^&{24I z>NmF&TLjo*DGL@ROc?i`^y!T=p4qM<69RSL^My+M1$f)di8L}LS>{(j%;^`Qv0+Ia ztFGZ2A(*DyLBZ|5I|}*j2RDEL$s2U8<b;=zfzFz4^x4=U*HZerTUWyMbJ zW!s8#)$vwWVd5oL=;_)S5F*JxtsLz#X;I%?l-<);)wvZ$5l9Ypux@_K#=WR6-P-7& zamyt7^4;T%F3Hll_p7_A8gbQWJmy~5Hr7$Ui!7(=uwE0l}4T2(yNWLdSo?x%d2Y{X!+X7twcwYqQ z-8sREM^;L;b{ANaqVeeB9;#=)-^G4}J2lQwL5G!G)BhyIM)N$c^aH)otcM}hrCgefn=W^AtCAAm6+`fM**v)?|sc4zJvwOd=GM{HB)a_B_ z-epW7YKr(4^TJ0jZ_1dsmrpDC&3oTiM&b5HvmG!;r&Y(2Rk@9qb+R}1YXr$Hf<9&& z#G+gy`~II>d3e!Pp)daY7h+#lajBurx^W(pdXci1w79x%5YJ4pR;{?eehSWR?e(s% znMM2Vn;V%u-=E(Y7t#tuiKd5cb1@k!wzk;mw6pP zc9Uak;<5csM0M9Pk0|{8p0(n`W#WtGdOI>WCrBm{NxgsgdS58EVVd%a{%z(v-2eM_ zI8nbl?T9}!VNSBFuofLb~RH8c1e|Q`}YR`R%B(;0> zIJVh|R4zIZ*hGJ+1~yl_Mw1HP0T`$s{{yUBC&r%DN3&yZ@S4w624`3D>kSNEAarIV61U>Nv z%>tI?=9y$rpR_@uYfiL-X2@Qb`>MBJNSJ2I4CbD=KkT+|U)==iBOdjPnkkUSJ@Yqn za*GaL$tYC&2-rDw7gH5hn9U5OH+|h#o4JIn&{asmLp>Fm)KTSR6TPsx>+bR)>*+Z z{!4Jso2U94fj>Gm4Lse@(P6iA-e&HcofzS7ALsiNKT^$nXdAzrb|!Dbf;KQw&@6rB zp0>uLVe#e??d72T;k`P$2=dxB9C2TD=G<5?pNRx;7`Gh^a{!CEhyP*93DZ%^UYVAr z^&a)ev@y+P&~n6vp64zfn56UGVzBCH_-EfV2LA~(SOV*lz3XHk5mdNUE|HY)C?jzP z>2|O(l-l$blj<=A!N^`rUiw0q7FAmkSyXC$&S1OIn%EH8o?D@vT8!KgIa=twGZmNq ze)04i?0PTY{l}-c7s4>UD^G78Is53=z5A!{-#a~^QYdVMsS8+~W*yueWgwozOCNIT z->UF@-^ZgF(c}uN0KDzC)lyLLGz!)EWcMgwHEV&Y<#oi#dSgV)$1;)SB$eTL>smIi z=l-{QP#v{pV=j&U8sYQ(zGm$O6&j(+AIxP!Pyar(ul)VZ+j8Vf^{5doVNn({6Dp}+ zkS22)d|s+5R${{%elvB8ga*&Qm`oXiBjPM1b+~m>j@K6)@KE`0euj2~zoNp%UO-J9 zTSt$0JqFm5>=nqfn%aa4J%H)kIpN>(k9eYdl&*3s@BIQ>aD= zC}qcP#3{+q7E+LvE$DbtQ|1kQ71(0Meko47B8sJzzJuIB4^yrE<0sL+Yk%T&znCEI zqRUx-x0nNaKA1`paE}zdPTeyPf}6~|rVm_%aJ?$EFwa%hH|ug_GF!Zr`tH(9{Dw6e z(uy^Tg)x0~{zA)P=Y&^3lyN(^g_u7Nq5E>ZyVd^fiW5x~=lg)qC&`~m*WRvXvu3}B^PCDVV27b!y4s|XY zkJuwTj@ofL*t1F@8teNsLT{)qPZ!Qvhbb@;812WGT5_FjJp19=#^9&TLCJiL49v?OTk~vu#&l5pnC9MB0Kz!9?41PTh(pE4ic@0PZEH)T zm8%E$9;@4p;;qVb`m$J89`1na@_n^eJ89whWtF6vON6JsNNJ3 z-m{Oszz}YG>}FPnO@N)@U40toJQzG1Hnj7NQ2jKEet2ZtUuj}(E>ewV<68Klxf%>g zDP)zdi9FcT%9F+7c~0O2HxIzN_pFLIsSFcF?dE<#_05_0#IRATmH2c5ubxS|PPqJi zK33YaXdTZSENgC>aNALZ4!KDEek~J<+nRQ)>C=c-fV46#Y+VD{OS^sM-c*!uSj8Aa zH_C5?1vj&`X=N4XNR`Oz@>KhEvlZjthmXH&-EUWo_9i5dHhp z;rkZ+2`eonn)JJj-yp%JE!P6!_KJ1h=Y|Z)AA&p5{H+0`lqR8Z(1qd(J?vGZgKdXi zc*`jlM0!Da4~aE-+q}7{aavU8S9(2h#aCY2=gX-(sz-rWRp$9-MO{AM_#>kHrDLt7 zwZSF5GvMpv;WCEpG8yMD#P#De9!+-#-W*me#? z3jqgAIa36^xzG@E#Ej3i9dPe}kF@f>tEnfm{%TBF>Ez7NjkMxMnoYD#elcEXfu%mZ zFpD1Av@~+mHnm8up@?!SXvXkeNU-#w`|mCiW^D4+mPB+9<(LrO3EMo%HVqlFRX2SK z3L*RmOA2$~S$%Qbk(71GJgj=cdvpgADxaigLiq5|#y)H5JM65Rzr30;EbB|FNbxeY zU~Ks?3w|01$O2}K3?00MzuTsP%w)_C630iyiDvF9pHZ(OI zdY=RqC0~Ph*3T~)Dxu2ae&_xc89Hx_%exI;MhrQ9oX|yTQQ}9X$r8jj^e4lhR}~?A z@eo*ePb=uS+ktkG+n>6fqx_CIb+Hc!(?l_>X<*fq`*tmma&$I4&u_>?w_P!b92!^e z`PJxwIB>FbD@b(KAi1)p8YzzPvB(ci;ltUXhVMU~TS=EnD|9}S^SpU&N;J>L9I22D zvs>iy6+6+hyvsUGhHIok3vLG&tyzeLzWfFR*UG$0YFA0-7pmpybOTMcymsDm9m!`u zSi4B$p*(jtDh7&QYZ4s%YO^pzIZR6wcOF2=QQ)FL?y9)d`cbz1sTut<2+XUxKIK%H zfFb`W7;0-$(JKS2 zzhhA7^}K)Qc=b%pL+>@)EE>K5*)dlQPYpd^C}))C-jciX$SVnp1T+5>!%iGwkg6Sh zKD&M8YWEJ%wUc-s0F}?vfi#R;;T8koj)|TFwBv5!Sv0hrA+G70i2LWjRb^9tfo%TA z0jYOwa>YFaJTYEe&gZAK>nxyzXwNJWsNw}EdqoBIK3@=8q`&d<1;0U#HfbGl+9)k- zfWLdM6Y^Y+Iu#&tI|qWEWLLY-(C-}NuC4@b&Ng`ocj+Jm|7hYDo>;ntmLP#qVM&O*C_#09ZmL;@m~TkfKNjJqj3VG&l75Mc-W65tq7s8`ntPYeP?IH zITQK3&1{JIE%X}?f&!mq+>2f|6JnNEa=PmJer4@jocgVVc=-n9l&Ig*?&D8Ce!IzGob8KSqc7w@BYt&XFC0^Yd( zo4p>gZuJE}R5dXLsO6GS!vD%3!k=NZn=)OxUOig z^269^tA-Cp562HR7+LfNW2@k&?8cHD>-cQsh9+ELqh6!UI18#*IdaaW&=48@O)bma z8WJ0%UGxyQHSgPw>X+W?gF3ydk2&rhs&yu|C#&w+`A-a!07PXfJ=JncJ~^exl2pxDL$NIj(m9oX zdjZFk*4;>%z*YTMM+n^6M)00de|;DV**6J4p{DyO(HR zgMNOpBB>imnh7Y7s3F*!$@D{T5nejQ5j3S9d+W_1@W!>FCf&4nZrS4Vv3XYYv_;7!nQI|Ps!>}PU^z7@l2(H;J=xz?LRXr>sY>h zXMNEd4+vC!|cu%E#WRp~trSmdL+O=XLA9Kk%wAhVePLQxwBPY(FG_|^H6xlz3N`$nPyIVS?puEurcCE+4mw5% zeRi7sGh>2g8l*%qwL&eK8oK%Dl=RoUo-v1>FTTCEJcjz)1AB9qlDiZx8xqeBAZGJX zR(z!6Jt#$gPy^6`|3P@sXg$*14OlV_LZhVR^w&72Trsr@pPoHm`&CW2CG8tN&Dmf3 zo`o0|eVsk?iH#6-#51WYBg?^Axcp#G4lj@!{Cv+|*Q|xzv0U{Tq*yEmWSCz@&cLNV zS-?y~KW`QMF%@l@v=P6^fl#bJqz7_2!Jm7({@{=n{!14A^|w_Vv)Mi3vaOlZP4S+) zI$*qvw$s)1g3IG^eX4__u$Znn&8spoE+Y>yo7e$1XenF~!|94wwIy*_l9U||aU~Y# z@)~;AItqvg?`C^wC;fDfv>mMrxjQepvi`eE_;3cD)>9`BqRxbxs@q%)FFJ(gfc>63 zzTBrC7eW39FsJ&ZE|Mfr+)YseCZ+UqxH*IX>5&t)h2F*lDc9sh03#;(T|5q^ruE^r7c}FP^dXAv?h0NlqaI z`g!HX>k`q{I&D~~W2BrImh4mFj4-vPo2wdKf(7I1G6NifL~b;}FX_k4Ol_BOVm*|< z^a0}mF8q30jB)U57&t@Y=aH}moXff{h4efu&nB-whCvx(8tXwGW?SpTnQ>c7Q* z?03#;EvTj-X*BuGLOqhW@p^rHnSIE!%jTM|{XL93&7V`Ne!5yXk8PA=%*cq;kM~Jy zCGCUOIAoJIyFt+c1^(F@LnAk+UuQ3~l8QXvk=eVp9GsjA+!}Pv4YS$evnop0`J1}% z6CyPXi_Il^e`I~~$Z!qHYSr2_VnRcJ=?zOz(fWO_uO1BZ?Y)A=VFY@>gHzEhX1~{1 zAWBu{EM7*-tKfeJCI2Ip-})-i*8V@x#SZY^)MWE}3ttVilgiAU80!Z&-O9fv?Qmqx z=g*Mrtu@*GEe?xy<*^}RXsF0Ey^O`*0PZk4#x@KTAuC?ao$<+?S>t-1v2xjR=lXmw zzY|KTS3Q#bG-o<%w&`IZeZ4yphJCYQt@m<$aaG0+FC2QjMdI>)ccgBNvshC$dhK3e z;#Te1Og?Ag>IZDhbBro!v`Lb@2uP(uDS5BLlILavkqXhOAwy-R8HF&!>+)+v38qZAGVUB%n6{5e8Y zh#ZK9t@X$rxcT5#RsD`OOpKOFm>aF}+v(S&J~YbtWJlAB-lDu+S-+hvDJE8JTvJj( zupb8EM6oT|KtE8kMP__S`)NnG61_RuqXQ7KL7#-rzZq%0tH(pTTsre^F%4kF1J4$i zwwyJ{nbTin>jDZnjXALN!Lk*jBmJ}N#90lA?Q>Eo1YbK4;(sW_|J>WGVK+xxWIe}h zT5uk7(44$hLnl$`%%X2(pLx%U^{6aM$u9gP+3zVuXY_5*NmRqfz4P;t(*~5Sg6$)? ze*mHIARShEE>ix)+!emA+A^-sxNhg z-3;yXLG?JSnsU1(1k8(uK0B}1J@QAT!op^d@*XrMq59z6UDNQf3_r(*X{BA+a$_Ivk)ZU>4df#?lWO(v+OL&+99y>14qa6+zqm=Sws5XGkG;_2 z?xVOB%9(7|*>ccD)^(il%q6!XJY1d}&p6}uSgiEnIQ1}dbh*lTkCR8*@W?L zLUO|_fO({B(um(*ZoFuLgWvs{^VOEc+v=*n0cg=2HK3UguZeFwtEXFhYX%c^w<>8mU7Ivz&&o zYv0H`$8{YS>pDDmF2Zn?vD|AnR`(EdKRhUQPp7}MQ}h-H@fRPs9!PfQ!E3Le{%?nY za||CNl!ZKYt7ndFDg4d>>!O_ZW;y=QmigZ`>|N$$srGV&pSxVFk#9*-g`c0R8?7#~ zjvG)ju&(3uRmN1TLr$M+TF;oz1}Z||1sz2B$QLL1&b+PFH=bybT=o96bwKsl@5I&U=JB=x09a2^Zcga9?j-BZ5dvBbup z$Axl1+xqvlJz5NO7;|>1>h^4r>B{F~=m1Q4d5tuVk+A4Z)zM3bjc3@Va`vNnNe`!l zb;Dkv(nfKCVy)nG>BT9Xz56$F=m3Y!`%^V)!VcF)oay&*!d^|g|7{`vrK(4r;+^;M zi(qh48^@absm14Dy>%(@h?BUvbxtZ!Cb5`rIX~r_J0YrqBam{(86knc918Q$L%GNX zH-%5I5xO5RJeRt55X^Z$L{2rokSlNjbC|4svaVrxuA&Y2ie?h1AIZ>mLC>-qJf_~W zxsevHWdzK1PobUn&JL{;y`htf)`!0%$jl`HTR(Y`nG?$&l5mp?C5KN+9c^;q89S5W zw{&53?`;`oL;HpCJIhxb@?-F(@lc6(<}^}=2T)1cB2T(yo8m<@;XkR7h5iqTe#LR9 z@Rms_dH#bt0&AFtD7je~4)pu4HcI-)%fIcQ@{WTUz&9zy?QtF%iE>D9wNnk!PVxK{ zQ>H{tlt`AMsxgxNsUK<&7?LIVeXpnN`E&dLSY*?m8F{OT>bV;X&J+cK<3y9`73(k+ zrvVE$c(L=|qfOlQPoA13Yk!e=!n?x&%E-)8&8D-Dh5J@&S#~dZxod%LR~izG3l-E= zG9XI=YNo5t_QV}$MHQJ|Z8?wqQ7$BEBm`2^#H#*>QB4v}5KRL*(SBz5NpNBO22Cb3 z21f;coFG)5?TiO@BQh5fXku74rgbjT*Y<>1rWyGQCYKy^yLQdl0}$50Sloa4eyFmq zC=(1ylqvzrOf4kN>a}^jcG6Pu4j?u9>c3&zuth=ffos}LULmp}&CU1yj`F`HpXqQD zPG4-?yw*Z-4yxj+yQD-c_K26j4b|U-+FMiXLEw%>DeLsu;qMf z)jDz>p(~Z;|M4~Cxy3sJv{mtv(cZvRkXB(trNYXko^_GLBn=yzzfcHB236#9thex? z3@Ko^Qr>80p~V&?Pqb5VkEv0x`!_XwwDsKh#NQ+X?V*E2B~m!-2lSf?GkLCbw@TDG z#rNMo%2Kw4$8aU@wA=JVdur6bC+O8!zG_msaxVgqV z2Q^O-2o&OZ3nlE|w66V9apADRrGd36B8d;M9l!G!Jcg+3?lx@G7%%ztTYPhN50Gd5 z6)YKb0lljL-p|W>ljg*b8iovK_{DQZW6)Minen8tR*>y9OgxKBb`pgMkgCgnxd0l- zgD;`aEAplUS1mY{k(s=0Pf82gm*X1)8`Xpx`5of=8U@I`cWuY|-cN}|Ad%%EuP)Sj zJ);Jru!mh*aSe?v1f0EKI!@KS7u!P4*QrUW{o{bawbU@vX-AG&4-4$4*96Gp?H{bx3 z>6+Z%f7I>1T^CG4sM7}5>O z?0mr8`&LC@VUGWox7=0iJ*u8`>SJ-$niX~X3cc1owCNN$mOL8Sq<;@-thx2W7o&q{ z8s2!)mM+t_nu3nq9PLhw1m($Fgiu`egS&+!$i=~mnb;=_B1yDj60UH*{&=5iD4HW%u;JdxoMPwW(6g=D>)f_kRPX?YPNV zOCu$|6}Jy@EW$}+s&t$(r?p855nJEZ6hL#&%V2(rhV^P`z8=RNei1hS1ze7cPE0+J zAP!vW5l5uJLx{iAAQ76d)|43-n`{tq^j@qQ0b6Q zuRTC>y{~h1Y0K-Fm!V#+otdGazqA~v&0_W{b4!1amix%;sssf>j%X9%sx#A8a%s*Y zn540~0e;Ud2;&a1a`>N4`FFL=A>*vV@l;qKMx^)cLtC%*=o3b#aXcqKqi|Jyg5?#> zt@Jgl`eK!A)8fHZ8-8+r&sCXN#GqYR?myD$_zhE5(mHrY^$s<>l7oP5{Z4!yrr*7X zh~PUF8SyPmU@f|;m$cv0zsq*!R-k1^8FT;8GVEYCyVs@w_s@&2uQvoK*cn=L*UOgL zelJZA%*7(;k5vvI;A+Eq@)^DE=c#<}u6Afen8E8T$6jL6aoBOEaAT(a zP5xMte6Fa2ynxGBRssWUwq33>>>C@#DMWFU(&Of~;UQh!zR5labrv?GrAlxwlqsCV8UOBS`V-F%S$Ziw&KY6^(bsXPOAe!LNB$H~ zK46|YvP``to)hmihRXMta*J;<6VEkIuh;iZX}MSjxQC0da1OtMKNQeTve)#89G6E$ zHmg-{J{)mjcpDRs&L0-0`f%hyf}YdBH|KD8G&F(e&iXhpzGU6Z_zM+0gUwF(vpDl`S}7_)M-kqYPHbZ;l1T-LGyhAaC4_zm{j5qvC4qi|iF`V4R*% zg@h;x53cDonh;NtODlpK8>0u{yNm9@cR27Wia)ub>vQmk4}7|jKgSsaOwU3Tvq2V@ zdTWk3_8TSXf8Q9_{AmQBZLMBO;%NLQdCnB;>ZAbpYVq=Z3y)CG&p(7p9k=2Rglls;d|#A_DQk(ap9VqhG^!bWDNYhMP8a-sk~$MxzJI=-LVM9_ zM|;`z#nE3rJm6~@+9yR-R&j9E>GaUms%_ph!$ci^oT1U+vNLazsjShVoxO(3%^dCy z!FM~fBM|`QMyJf>)9B)hQ7GOg*L4ncd|P;jw_JKG57^%kvHnm+?dvLh+!yOsTuF&r z+aZCnzPZuzT*O2ibFgeb{pu;vPBMNDmhooe;!NmoP6Rp!7c}-(i&MiO*4UI8`|Y9E z&w+69#z=PF2lmL@7pKls?7XxTMxW$8bNp(y4yyDf`~;021k>D?+Ao_ERG7zrdMCe~ zY_HJ5EQFDsBCBM9Fq856_`K!x_$@dbmxMzE+SjRu_f)@z5c9rC#CJA72~Z%P(ALp3 zgL@RAA#lC6ZRWBZ-iZsT#u-OZ*rkd2~9 zx2;zIHrc&Ep-%%4-y{w3UDTNJ*LB1qx_uS0FshE_rp>B0{`Z5#$sSwt+l|ZTy%L)N zO}CviVnXNa>+t5EXZ8d_Vpudw`u%=V+Q#$q#6i%wk(6$l!Y7U7(j|Snkol0=$AjP4 zuvim)U7hI4!xRt4%dy3;VtA~&%l5fl4yO)ZvXK#4&bEH2uDgR3rkc*-LB}?CDi+|| znh%-%o?59@QVgj{Pyyb^u^?n%d^ft#7ujqPJXjcRGFRHJnv-+gE4W$?yOT1+lxPMU zW1zD7H1Tw!hdAQ)gr#i|w(G4Ebhnyn`+Db{c=FP{f~MN0H;~Wammp-LO2M@cKMRjJ z6XYRGS7oK<<(O0APs1_#(q3yK5+x<7G^(!WOXt1&mO=LxE-6Wr%ZP0qNGcf~UW|mF z{A!oBxSC-}IT=OEi83aBO}fKi<-g5wa0;VlRaEfw!V%PG_{0?*_?^QfdB*B`@6ENa zE}J~;u=6j=_(|)6@Qfue>{N;zmz^2wUTkZ$%2A-9@IW6-Ui)E!LjPB(1EuSh}91ql1tQ6Bg$M|L%VY@c34vk&ysEV06BrL-Ylk}Fcli|%L9Mf7AH%G!{h`r&Q zE~RL3ORac~h~n201`;9152E>z4sC#~1@$d>z#1pgKX9zK(#n44ytloyfv>tepaF0a-lmct`a*dB2Gb=gw*X)cxivXaEkghxhC zD#JL%l^c%j#On(DmzAH7a1}=Nr#!Z2K(<0OHlsY|lkBC-40zL2LqT$G!lwc_NvG6#Xs6d**+7vVb zzO3QkM4W2Y55Mg9b%G!HK9$J%QgxQ~-ukf(>)p24$g!jJ;f$ZbN65{994#yU58*Ax z%q4r93IxU#HJ;H80`=Kdgif1+<6deXoWc21ehpVwGJKb;js2SxBkF1&k1Ob)evDEh zGi&mSHWI?%mzP7+*C%|2B&X&u3BhA@ro1^a$z0H)eQ)$$P#2Y2-E;VU5xSs%s}T|2 znQfKhkf!oVu6T0I{YT|=FMz5*7%7=C(_;G!=7)uT4ow3a)E)*Gls6ZR1fQMDHcf+S z9~V1{e2Bc@=q+Q>tbRL-(}Dr=ad7)OH$j<%bv0OD0H}n7PSjLBQ$i`51=ncCE<1o;hJ+kYUZ_1@2&H|Bf(19om8V# zU6lAOdsRI%v~3=CySfG!8H{UWX-G+bF> zXd%dgrx58WSS5<9tDhX@q&RT^?AP&rtj?6DMgJvxG3eyUCZk75tvp=}$2T?0*0{iU z>q3fEYIhkue3(UVfsSG=|h3wJBAnK`YKbagkML zdbE!I;w`gAF*JSTE9@Vu3AiA9mV4Tr_DN^S`ALJ%k8;)Xv|uwateg;v@&xC;e(h3~ z3Unxp=yM^Dci<8c#mluTE)e8+d&nk-TRxXj-&yP@uU2df|wfciymgj#%G;5%ifrz_usg8Cf);Qm5 z-SrPT%?-KDJ9)k9)jdS94i)0^Np}8(+ljvrvDE{kc+Wpr-?^3q;bW>tHsdnr^@RsM zeC=$CIQ?g#@4-ZonK3KyZ`O&!RFAw1u}(DxM#N`j54+1u^YmO_q5G&)r9Sd4u3!7t z4Mv8~ME2c5k3CIdp*wacrtrMmxKrQo?&@h9chds%OtOJ(y?N-B#m2pF3_{1tDQm4c zsa*S|N$uSACCz}U^1VUdLbYDn(e&Kq1^VPo12;mBasM}9s>JOv3D~Ko$r=D@74%-< z3O-_YF&_Qb3@WvBi11o$+sWfZ5;zu9sU+hK?C^WMuvwiQFJ(qe*$v4ukug#foJlYN zv&xE^?1!xUf2UxzqybNRA1a2I#U;?_2{#K(VK?Jf6!pbddd#sM2U@V;GnDV%5PBwQ zo~@m@sC~>J!#3Jup@hMIe@*XR*_xNCn1NJuSN~UI+Sv2e9t-MHUH-N=<*`{kqli$* zz?l^rv*EF@$u#r%Jpg%k=pB3kG zU0pcaG>n~94?tFGIl!i>?_>!%xP%T!=U&hHvQ^(%wy%mS;uIq-vVz2`&6vk(2JUQs zkjy|JZRve*c~(nqL&@71zo7_SX730)U#wm%Dk!a7`&3V$ET){CE+}n#D?EpZXNuop zEKQP!fBTJ1H@3lq z3!qwU#%J_hTm5USS8>-fm>1_=(oEZ{$>LoizVa~r0NPEhwW9n_tCO{vsxe<^aWB1v z1~hkHXzXz};_tMCUnR4n9B3bOQ-U?{DrHBt<0*6 z&VQYds%~4FW?~>wB~uIdZ=T4(iK4h!Jj#S6=CE{c0*~RA5dxdu#cvw7`#- z7Oq?B;pz{@%U0fJ8^eNbo4D07gH~l`+{`P1=mb*yadbmBNe9lg6 z>yn?}^^WVkXsdqFg{7=&9w%sJ+jU^+^ZU)QpKb|DW9+%{=9!}3OMh0S<^WRl%_frX z2i@i%o_{_WE9LuQiUEzUaV=$sak53#zbD;q(P{R|YvS$v5O-Rv0w_Myx8l;Z0=J_J<(Qpe9hBMU zoXv)_+4$~gvr2FLktrF|i3SORYKR0`yc=Cyhm+j@&^3Wqds{00f|op$rRFV_E%0y) zvoOrlj6$u{(ZT?G9`i0KL7NTSK%SuF`q5tM+ z=wXhKN4&hn>Sh13^U&O~w)K!yWcJ0kQ`wl|50D>jy?r?q5VzzN( z*?Qy*i9#;kMZ=UVYDW^gOV9!ycZaNOft&W~Mj=yfu#&Bt!_rXS5-TXzJ6 z*(??!-_u`~>>B>W+T0QEP{&w$FO2z~T}4~inr^%^0frzV)GV7M5=WXb=qb65tq; z%KnA@UT1<1pBE=aTgFUR4_y~lY+Z=1J=cn_EL?!L#? zO7|sgWsld&C*5AvVw?hqA~r7O@V`uYIHeWI`apA7XwFz~o+z^$jo(OET=Hz&m5yZ9 zxQ(ke{o~SCjFzpSJ5Ne-HeGF$PoS74XtO`9+}zIxDu1|(zC~GaS$T(CXUE{YpCkU1nOcV5%B##e z)DiB-mr$+GVf&Bcv)<+%NwJu)-&^b;jQr{T`6OaV%&c}h``p5K>+lx`vDpi9IsIT8 zYKkaUCqjb2im?^|!n3S^BcuvLAT;Z}11_?mWG1Bo+nnzr}NpCLGD) zsc+12hJTYkP}g0}b_bKcJ!_EnaDl(z(|@R)IwgKxCKIokYFwQJL`-H9IfGfKtH5(+ zn8po{i6-I|35hGUucMZ~R)9Y`?@^Xb2Fi+8D&r`HqMN|jNu!ZQe@rrX+*KncD9bP- z?_KKV5TJ5j8K?ocXiq(D#S|( zxY@&0!(jvpk<7eHBz&=?HY}f0mi}>#6N#L99a7W#tgX`0s$ zmB70iI2+BSRPj+QSGZ{Z*jP&QGD{Xg3dCW!jd4z(Jmze#CjSy`lzxh`U>lNWC?nR~ zzc|Ls$0eA%d!8+gbylM6Xn26kMu)sB?um0Aelzy89s3-(AcEe#&@ddg?oRj%&4vWc zd}e+teH<{UFUS4?XF1U<2@MRGIi|TaxZLz1pvI}gfA9TO2&?d+6@b_mYVr^jsS3+F zl{4+mlBUQl6VCa68t`g}FD)Q^95^>r{b(`9LoZugmDVE>?x$E_FYyHQwZ4>gcBVXe z^?R_J4F<}oB(9A6X!{$2JrFgdaUB;515{V3VJCjrB8!*w8^)qOc!wpp&M4eV?ncaq zEj7LMs7yMWGp49o;f*F3pD+l|(nEIdf|o+3nqk_^s(&)YoXvQEvr)?tOnFrMh#MF8 zOxOiUfWseLL`wR2681LNWn%Nm&Zw84%{Fzg+IHRA!vg3@kX+gqZF!RQxh(_X`loG{cBmzPlJ(>9)edCfgUpygOAxO& zzjLmGGgvu++YQ|Oys4f)i_gy$d;(?#?5ZSq36k3)cJ{ckw_Uypm5 zpG-u6*UvIjcA;7s%bMARr8dVmPgy=X%nQ9xwc-IkA^NJxX|piNY3aG#ibbZ&xY0zo zhqng7QPBWm0iQ&@kHCpK#`Oy((N8Yrgy3E+VAV4r-0SiXJKwLd*ecvW$xsd>3*WfiE(NI^fF^ z-XmrES1F6$L-axGD}`5XBybC%_bqUobmw$@bXZc)( z=(h)2$e2LIQxJ)wAiZjdp)(k3NDWeBCa??qR?llDadXk3tuG~0DvEI(QM0daJ_FXFck;g{+-o9)#DMh{!uPoB?t681hB@tWUn z@T>of>w5)0`_dHy{zYDnl}@(F(^H1jkkcJ0tEWo@1=DyPEObcEA2F*cp_95k2XDqW zlLEv7!#*LwRDAUdh_HREC`2wa1m4sPvx#kI+7Ih{x*eohS5pD0$B8?JII3ZuwCS42 z<~FmLqSkM_0XbH4Mm3i4xg4c|=L?Sy8V%chGT3+}4RTY>d(y2bDd7Y1fh}Dj!;YJx zX@TNoT0u3`+M#CC_Q;!xFT$@r}{F) z*Xu8AfDLBTpqPH4b8psjdS$mu^MjTqFh;q#Zdm>y>jaZNw;ZV^U+!Kk$wK!J%Iu0o zOlpcu*8^VduBZv~2&H}Wp0LfW4A5SLjv)T2%ihuEY~zo9QT}aH9j~*y zl`^@oK<}1{@?L+`Ry+SR_x`qy0J9Q^1qpBEVj$dw;_~@#AB)F2HP*`{ENUjgrPSPa z?7K%&b0hxb$*KBaCV<%bHvRq+Uq!O>xStu1B-M!T-F^SFWz36(6#;bN`OUX$A1h_O zd8XTGrf{=j%Hr$(Bv7|SxWMM7$m%2TRYE#eU9hWyD|tLHlKGIfgb8`&$_lvdrN2uJx^Dc z?D3<$;ye=kp=GTlKIBXQr%Vw%AFMN%v*M)b7L**6vUDt16bd|>ZdagtmHgW6fvr2u zF3u%rthO>#;ijIQo7JkC&)Yd1mjuO}QWFv^akwd_`^Q0b zrg;HMB1e1b)9ej+M(wLSs2DpE+VHM%`AStRL?%_27&+x-xz2~Y>(;8{SG{*ctHyNK zNL{!wxBOc3_ChtqIt;GfB;hGJ&EH2Cn#q67JN}Xc;J~QG1gD%IOYfX5vh%E%ltfuO z5Ur)X2ni5yh;&fxkJzAO_o}(j|3lh+hc&UTivo8o*8*K4Se8nUih@WLq$HH6NKu-C zQlyEYi1ZSAKt(|XL8U_gl_mlSH4v)QKmwrz2oQ=0ArMNWh9p4lxc5H$oU`x!@BYX0 z05g;MX7aW7{k;S$RZoG>xl;*_O9u)Y0zV~!;wgI$yG_shF^#&^d~pm@m${$^)J_z8 z=H~v_`f_GOg!=_gC~aF*{@O?Ry&Y@z0otE)+@`taUf*iIl;$HB>`kp9r{U#M%~JSZrs!U!yThf!N*?mrk|gbfrwVqUQl$QNun%yb-z=L!fpZ9 zuuBNE0CUbcd}Oxq9mhg%ISM~nd?qg=Mq*sN=c0kKy-arq?EPT#6)D& znPXD{m|~+}Av%cXK-`X&OY7rWCt1-yunwORN5a-~fQrSJ@i$#wmESVW0#eNm9+r%4 z@=E5Z;gcn?LU?ci$=zQR^m@rZ24j9hsz+q|o5(k$Q0Y5gVFtMC-}22R>MfhbzZ|8R z0a5mbb+$&37si}0h~RLo@@u2S%RG%fokpQ{_@o5!wU*K%d|nB95ufV( zfzWYPD4>x1@e7Cv^)U9<;`81EmjNN~qx{Gh<7m$+=o6j7cl<^J_KxP4B^4wrX^O{% z8$MrQRYcw__zW^duh$9la%L}dS?W!4eKBTVja-XIxk}Icy`3zrIA1*~j_1F<*kd2> zoOO1rJT4m{mcx6NJP)k=-NCGCWm<^b<#DS9#r2&p!Hg?CCV;jjR_?CIbQeUPz!gmM zrC#CRcsa?Gc;3BAc3ym;OU%S2rDhgBeSL;ybcRSNoa{@`zx_xgTDnW98V zCfuiGxDz>BC{o3umHbMPiMSYH`i21RT;G@;uENAiOc&D;hr?8^_{ow3C-+K7G4xBZ zRbS;(Uz@y`K7gw{MSyhiOZ2&#Wk=ZduAEKree}tjoi-Nqis3!%^z#Yc&lZzu(*Rnf9NRBW3VX>4KzE zU5h4tanRL9Q#scfsY>HI1Ypqj!{fH5f^-+ATlTNv1h!@@R4e7~^w<2b7s9r#d8|h! z)QJoGUM$I+*P3ishx_;{9j@;4Y|2vqlIBIE#zj#aBx+MYed6=Dd~G818A$pdufton!fL*(621+AyG0hjCH z@iv#S4=*y&lxK+e;!n~sliI-iT9#o>zT#Z*?0C3$m6CuP{jiTapgD^Kn zPA^s0Fa18aqFsBNqL_bwV@hI|f9eK!PHW+CWvs8kgV&5V&dmB8GA=Xb?L15(-gy=U z&zRAoQmnPD)cEIPCVBhZT;=ufvzI~3RtmtBo4;6M66_pkkeMO?D%*0qn~0EM)`5-Km23_-$h>cx4`mwoI1IH1FGn5;d=~$8GXqu3n|ZPj zxqtmdt~VpcKt1aOWG~=a#NR@eqF(Lda-WI*5Ax@Whey9Y1D$@N{ry5uT|8A+Cgp8g zc)GoATK#dda)H}hh0J+5&-XL*Z>llJ6Nl!G!Ic=8<0j%{|1W9T5BrcF^fZx(4*>y> z*$+2FkP^hk9|O5a9Uj_8D&aC7xjdXLu$8(+VDD2Y&2`3(D9KwAb z9{zq;*=wQsguPyb_P1&oX*D|REo@A{4)G~aww{Jc+}qkLFPX3zCTDZ)jd{?yvb16A z*R$_|`y6r8ckC3wdBSsH(@$Zm(tu&w-mUfH$&Y)I7=a%`+1If{VNqybSx(lw=5MqC zm;?x&`&N>7Uf+PUci%0FPTzKS>tixMn^W+8l2i2@{ZeQh81JCK%J<-9uQV* z!;NvuV}9pI`)m_=tl&#czgoV)k4LeI#t$P>Jl+Xdi??pMAY8$q-KkVX+&QLOtGi(m zXQWE|^mZSf21KSHD%I6;9oBnop%3WD`;-jPGK>gG#dtM+^AlwC%Essu547^>E}j!Y_)dHOnH)l3buqzt!;45t z{sgP*3XkvI;iFqVztVPUS4WXBEI%pijAOu|$k#Alu@IkvPjk&t?9I6>MIFgFx9_Xf zq6xlAMMjApk~iBD!Ne$zXu-{>{BY8NOcZ)0{0ZG^`|zSYWMewHtsq%+G}hvP+7&IU z1uGQ1cop|eAJ;zoV(lO={oO{%U6+pw;*a>%cfT15tEYqtTDWpHUdJe!OqtoAUVN}r zGml(TFMsqSttlk}3=h3iLkMw!)Zl*$hi3-CZP0^^842;&FH%bl+^8fDPF1%}vjC?#9xeeJC{5n8DZgkq`c%F8|r=8(aP6c)4FmiR0dj17RKC+Jiu8^^F|bORcYTjExs>%Po*7|b9BP_|nF;9iyVEyYBw_i= zD+)Fin2G#?dNM3TotiFyVf*D9R`tJckHgX{e23RYllM`=y0j$w^fPYrXl>e5qno>$ znCTR(=Au~E$H9|lrXA7UD01)y@GhN>;c8hU?zq<7%1eG zFgSnb>NG@0Xm;tU5i!>#O%gvB))GN4AXVH39StyjGJWC-+Bt%PPg|lRkzHKp$w74yfLh-pr*pj%+)@n}!HFEsBIdi2BQn%e3THf(cVN!b)*mrzqIdaG}E-K##?L)cSo zF^A9*urr-+jO}aoF3wXkry#$~zs8I>6Vot}S91spi;b1ou~toHEDf+9+sY*BB&wvZlvrSqbtIlh=kFoBB1X6zdbmRb(|pUpu(? zZIJvB2;NXMiLyPKN>iMy>W1ZxSD&cO!r8c(e-R4u9yVTmH z)X`f~E2RxnPn@Y2Mda3?zSzr#I@uOWwZhgCStKRCgK_w0No1j`3~Ilp4hsn~V08nS zNKvJGN>=ARtpM32BXaq2Qx`oGKK#whWbqUXIA_?zP?QfON}vC^w2h_hTrGLQ;sZg2 z{Aq`)I+QDu9Dq?iYe;dEeIo^QcT(@AG%juv-b zV)|}<0F}0_=4*>`lC;ZMHePiXNC-#$rKb96AFxJwE)TNC}By(Ppj;rNcW?6lNtSop8`66|j zSk^?{D1TDHi8NkvGfo#A3GVm_0p+||g@BqnBLj@xsO*hqzcHfq_I?Hf$e+6!TKfo0 z_>_z8;hfWDwhwh%O~x%*2Rg(k-Qo|gnfTaSum|(RrNqDuwd+mSR+R8NxA72-l=sF& zOXyiv4v^91kM(x3ldOc4$r2zRZ3CP(?aq~wMiQ)mY)D53k#pi}M=T$O zHCYGdEm1_;mY>!`X${OuBQJltC0>|p_g-0G0=+0PQ=NMmaVf5XF~u8y*@v;qD=|CO z7sjoxTSw4cLME%Db_}r;vwI)eW(!tLt<;3RfV1I z4apU=j0hg6v5nB9Ae<&o`-x6TtyZtvXmdYKAZLa2SJfyU&&jtmBLDWGwk54yZ?~B` z$;!S=r9%un`6(*%*>tv|juxcIc58?1QLB0l4gi* zK9+zUtBy`ly%aDAX#HR)*TxewiL6XIC2DXX~)4v3Wz^q_+Qx63yp@3JM6w5ng6rdKFnbsP=Sy)E;q()e0m)dNYk0;`pVVpzt5= zbk`I6<+gpWq^M__8YaL*Q(Ep*$p^siof*>ULns{8;OXS)zWY5>3w1{;`X}{5m;-Ho zZYKNw6W$`EU5E$gv-s|hNMT+@p0btFF_^VA<%s9wpJQ&BKTk2Tw-(Ym)&peM9uj@I zdBd-;a(A@5i{`|uxI~57+D%84t#?h|bfRgudin-P%nMU^Z*_t;g>yr@;JSbs+YW=(Vlu8a zcQJ=U>^Ii5p%2~CA57y%1+af{bK6;kbqPPCd?oJCDstw7RR!=N6Ng91RLx*e)9VKI zyN$nBRXBZh@n%^xzr3CpP@x>XM=M5YO}xh5L#9V#aEhv3!cnB{-g&e-Ee)DJy*?Yb zO3jU_@>v>( zLpUE@G^S)bb%eEpm5#1BWpKu|vl5yTfwYo*xleHqZ~_xj@`|@@21gZ0^PzpzaQRr5 zVA^M_*tq0kGqO(-SFw#>viDEMFf)~^R`4;G<9++pw(Q3Lz&F!ue)qcdh^06+w)E-F zm_<7qCQmDl#@PH&{wKE)!&>Cq8ax1ROJ{7M*YiD>(++u#vj z^wwXc?R_o3sU1|ys$LwuUmF2-kSHkY{Ntd~j^IIlhvK$x`HIn{ZS|1gT`|5R(Q@5$ z*Pliw9(GS{aT-^SeO65jc8+i^_kF;r`wuSOEljj`n+-M+%_SY0#Yx=Gy)UvT z9(Ahit*vy5)G@HpNoPgksgp7HH|Cf83upjW=+w45LRAS=aJI~`PFbMi4`t!!q1}S= zO9Wr`$M=a)-rw@Y@vt~Mx%n6RZH@h7Uco;M4&L0n8d({zlOuWcjL#nHg>p8g;vez< zieP`gOr%Tx%7Ek{E<8Mck4w98WdQg1FWDp<-lT1zTUl9 z>u|xXfL;Yb2p{NU|?t#!kOK;})7!ZaBRkA?$;cEi z3S(quR}JeRRpCDFET<5BJHo!cM#9@V<>yG)`0N=G_lS{E?HMHh%X^HG9Da=&HAN&W zvsJ$EXQ%%ame0$_BvvE3O|TWhxJ#2s5!-sV?xG>-9p9&S#sbhrhd0|^%$Eloc#y4s zvXk5+7c-ysa;J01p)bKa+2jwZ?Iiv7qUK1E^9LlHdA)Tax(vJO)w(wO&QUbAGX<}1 za&9-R{0+xdKup8#4iNg~2E;xRwC47FerKa;R;MW_6WOfkg8X=EHGHQW$(E`$a%{)+k+v_v1)`<(yl!n6UPy#esIy%#78J2gacS=b%gASKX;5jH`h+ ziED+FHQD58=c0`iBw@;17n`SfqmE`<>dsQ5HbTQcQl}>93)!O(G5Aka!t>B+-91ip zbl8_ZwhJ4&rjw`z3K-SKYmY~C47Wj^d-hpF3HBl5ao#hmYv-#=%|^BdZ))kasV*l+38vQ#u7qt&;|QMt>zT|YI3#r!JRS`e`fbq>NZOI!%uAQ zXu_CwN z&#CXy=q~I6zDB?-C!26WtU3y)XoRd7Gaj9Q7Ryw4k&?&t-FWGtq;pxwt?eb<$VDr+ zopY^UVaM$`v--cU7?QRxfJ=Yv?l!}K=qKecJ_F(1#V-MoN;yv;wSzwP(dQnSy?db& zA$&5&Na^~P;Y!3yO`*TvcC!ROr26)@xbf$lL;=kCxmo6Y%x03NNRg`1k%J2{qPAkQ z`Ui~(x88ETUBp$H=4a|nR0TZcyg$939|eBt7AOQcI=L7U?0*f=HHc_9i|9 z@_yviE?aokgMm`|^+~c!0%hHUkO#*42DvQ9y5rlIO3j)OVwh#_lg#f?y_;+DS+?7m zn;ZBirr~l>ln!);bSL##Xr=j6)`9w#iP@v{J zOw9wQ#C(kLY9x3^kLtj0Mt(f0FRWktK?ePq zF!MH6Gp{Cj0@HRi`BV7b_m5!?#N|RIUI3;Uy9K4bqfaOmngsaKUzuVCc@Hm9Lmb+} z>prX$&Fw9_jTQQSOT8q)JY1+%d+6-jnJ)<{G7pohjl7Mmpk>s5a)nF%G0G{%s3=() za42p`*UeMI8|GfWZJG}DA zV5Bral^$ezF5yQd@!gXHjMDaQ1S~Y-YDuILq}Fd+dSNZmEo{ua<=NgJ&h(ML7TZ$e z|CBpJiJLX4F~8&5mb~~TG|by9a8)PEf?NNYwEs~E^P)EV4oTzX)k|Se&6=V84q#u~ zj=FH$moEKwqezV*213mVc=ggt^R&?=vo;R1HE3hvj7#uFZspJ1YGD0fdtbcih!Aww z89Ef$CzKFtx}0#SZ76#My0{brx;e7_1xE0}ipf9UNvtH@|GfFz;wNh_8`~N!Y=s|^ z>59=rGUuAWFb;-0>{e?eGI8c?0uTY5X=-9XA8Y8D4<3&}lBZ9a;QWZ0REef%PbUTI zvYt6VoL+A0rWvDq+3(I9pBd$wGTg&X>SQapom@`L))S=Swe$B&#h)QJZm|=8*@Ym8 z7?`7Ed7lDHW}@S8RzQD8jf3H)VmX%sM0n zFjnp{?U7}@KOqo*Ww+L=qIkkkdcR`ziy^}pZlwJ*7AzU59UjoJY47&S)Z&PRVOk#! zX4pGe$2f`N4Jv#G${$3Nx|gmsg1>jANk)qu=yGJQ9? z%MyQc=u3BB&U{Bk=Dhr33gCrw*git*a*Tf&>N>G5MM(&M{-`1!B@iK=;%Jxs0eL=K zElY78n5}q^_6_2QY;qi;aPN~NkjZk><_0v~{`md)2(|8%?L1?z+{a4+Y@tYV@(Hwi zUqzc5<#*5Mkgm03f%A_`R~!dz!psZY(+2l16_%P6Sj$762FS8Q>(Ii=19qWQuaRCQ z?*hy5PrAM#y-GphcgL>~a?=&Mw@88l7laZrXa5!>gd|Y=j;-d&PYm8ZZ z4TH(5$wU&!m{sgV;BD&!{}9aZr!~xQjvJk?+fP@-bj1RzDipc2Zt6JPy{YA`Ia2TI zB19rGqgG0cQ&ss~Lp#0el^QFWZovxNGaD)%W&DB*>0}R>5NXIa@}?`Bt_|y(E0N1$ z#dd}CQY$>{)o!C=>P&AfhA^yLQ+huKG`iHt+p9UwxfLS$W6-|bQQ%>HxJ+kJ`-3;c}b} zZA*9iiB1dn3rqq$IW?Z@QX3+B8$IN%<(E}b=v^SBP55G%?)A$oe9icB+XgI~+-dT; zbXPXU7Me{l3PD-Mc>481F0F+NO_fnun5)KZWwD#yZNYw19ku?UU}E@$p1C$|V5m)T z>-Kf#hgB@D0`zlz)(?VDl5SHtUsz*+Uinz+ks>#(3m?u)kH#%^8<lIW%h}RL3KQdc}Ls6~T70Qc|4T;(})3lqIuZZlh zDE&MLrK-pCFyY>v}e>e{lR^5SqkpZ$GN_rf3G(BQYO_b0Q=%^uVk=R1{y2vX# znYfu+RgDgkY>e^q9FueYwSM?(1QFv0sDBz?5}qM|43T3!u94NrUR!HrChU)-pPr=T ze1M0*{5d{=y6!p{iEyp>k>Wm0&r3L4u&3LY`sljOuYUrbf*k)@>wh_hZw17{BmU?Y zIJ5ZEJ>vVNLzp+9iH)fHm@Aaju(;0W(f>T}cfD)>5(r0|2f9s06dlk)*G!(aKx{s)8fhscl48LPnN`Ua*QWh?6`M<;{# zwLt5C9p#_L@;O+6D@Q^#D_&)>2Sl1j5HdgACq2pNBkM8GGpIE}g+3`@pNxb}IA?xK zDNFT7l~~2mw4t+V7SiA*puQ64b&(*xpqEcjRp6Z~p@`BoUo zyJ#7}E^J|(vJHdI1hy%eOxc{6_Iw8x7$ZOu_Z!tyw*aXZcQ5hOdMaIkY~302djTu7 zHTqw^<$s;}x#vUR-0e^3JG;LeE`+NY_H9%cJLPIkYk&Eob}K74xbyz1%raNkWI{Hl zEmg_hJ+XV?tS8=uCF`zfj8h63W@%Wu6sJi#J7+Y;+;OSlA*{=b=Dgr<&Wnp2N#_%H zh;c|lkzb)Xcji!ZBfT8z=w7madZ-wX1S*V*tTXXGB@91f*B>V+a3(ff+sUKc&J@cnyGUtq`5Uf%MRuqCkAV zoQQl53NPj`n$BmhKe~L0SW$g)9Pvuu;p{}mi{|GJR@g7fLQQBuOdEgK{pAcBo?}$o zch3J-mUx^(R3*@QQA=g0n}7!wIWrE<3lStwcW^;NZkL(5t(Pjh(i`t)_zu_c$k%>Jswp+xpVD z;ZIp}JzKevQ3-1t^Z4e0bUx@*dK__X$Dx20YFgx+)Mr9Hc_{1@*)g0)sY~FNO$=Hl z)RM?Bs?#5t@voyRN;cIT>)eY)pW7uD^53WG=g@X!b|X*B*s37K2zgZfWs8V*6%=~+ zosYvD)K6m2nk9#WgnHZjf(q{sX{Bb#e6y4;Bo!1F>N9?fo+4}@zv1~b68CQ{=-bCA zp!-s109XxkiXfi4b^1RZ5#4QIJDWY4T#hP$J50qD$8VfI`P>$6AXO@8zc)GLs}TXE z@&Cv$v11BFNYEy?XEfs{Ki|-&$+v2z`CIzD-Q-dDKI#ssG~S5M>b_IB34$aJjEROB z^ZKsbDb0SdtYSVk;I1CXeds(qP%7x7AhUpV_ zqGqQI5Vbulv;TJ^)ecnRfQnP&<>79wb)h>tKW8!$S~-U|?zFn#+yiA#YL|XPDA2qP zhU72H)kY|w>dkhZIDxvrV(kT6^2EIp=}e!JSrv4=MZBUHS8?Qc_)$ktFF09+Z%v@7 zjpZQ00pjGWuk5!T<SFl$44s;gWl1MQbqasW)tVE2C$!4P0gxN zw5_R3VoqDR+vFSn)!33smSFtb;()TtL1$U32}d*-F4IgymI>#XD1P6>=c~aFwbseTUclUf8vRL}=y`>aQHy zLTT1QoA>c-KgML@ET*g)hJ`#Y(>|bHJx`kJkb{2Fw@j@6)1Y}GK2PYM`qIC>R6xc?bHL~u{zq9DnyFZO+e!KcbJ<7_QWj~F zfqI0>%2mcLC+#UZPT1_I05dhk$wEKkUh1UqdGGh{spE>M!SZn8rg|2W4F}@D;gYNO z0+XDX_H&Cm3qBXwiQEBNtu{mAby61bQO&MTSnOPnLtY|Tj>|LrK56>TxjobN*}w}y zPpzu|fgk_(HJ^6l2Imm(*Szjudte5+_&yVy68Vi=kgJB)+z)gG0wvuL`-)B@{;~;$ zCZlse+~kVY`~wDdAx(?`aVBj3^TGhc5RA;K!aG>TJC`^3jR_S}Y(%5P^PH#Hrt`=d z{H~2x&CGaex0EAK9~!OTcPMOf$1qNxx0++kb$I|NhFv*pNsIp*Ek5S)4gmQI;gZ7* z$yFC^9mwV36rh(M9x9)Re1ssbT$vDVEmagJ`jQ6RL|4OhRa$MMkn#8XP8OW!7yIVb zJJ85W8}fahIJBge2gBaf^5%h1x-&r8OIgPF9X>K#KQHWfgS37c1XyJ|{}B&N(sL zAT4SXdd7GI8m`+`?jgAJL(aB2ddYjPwm~~VX&S7x!E=gAdqZ7Ic*QLH&v927d>(Bz zawYvB27LZk+bPU&TS)%OQglz?J5x%-jk>asE4tJ_e0XBTsIISAj0pYC-2HA@`|qK} zS)iX3B}f@(70Wo#xU)0Ie=bx9B%JjKv_EetHkck4X{C_>olf7(F{zDdOH|*tSP|7u z@L@`Z2foXgva4MUJk~6sHOH%<(+O-avHYKa#c)CBHrJPS&kQqiy-&;wbnOFUucnBv zHjKMIqBzh2ru;~E$?UID(_t>f4Otpb?Mn1;7e(T1|nzr2bGb%pykCue&_Fd&n(wZbBp7 zXEAkl!1Ztt&23cW@RAXA_uDWIZ+93D5l`ql??p8#Od|O%eWle0Nw%SnZ9j184=E^I zv%OtsdNGdwCqNY*c0`}EcX|N8m68lw5aKbgQ$1_5V#H>YZk3BxctN9bOyLV!X+Ds* zgyA-ng?3tamZ>_liusfsYX58^da?A__5~-SVxvC4;kEtCKN^k2Fmmz#-CqA_zN3EE z{A>dOCHuFmTiic=G#m0-3=5l4OJI?@XER+1|?9>|4u7 z_>C28i`aWFD$*o3>D;xZm9g{2&(N6}5a7RbgwXEufoha6TLoIbpVj?1eHeeS=7G&= z=|(BQ55i*pUt;0dGnsJsSNbbt4B3B&dlyI!gRyvb0qPZE;IGc@^XE4V(JHKuLk9Pr zs?GOE@rHPIG^lJTNRzzlo9^DuQlfvfw`M3c(7YzoH=D0n+f#t?+npTmd6;;#d&*0i z9M1VapKz-WfYvUS2swA=F63q=0Jrl69eI4D{*_A|0e>r#=(+A(J72xd)*H0HnQ6cA zgNbww@y4(F)qYf7oO%-Kg)WPIT!6I;`H%7CW56zJxEl~HKAs*oNoJbub9`$@aX}lK z(rq>y^&+j(|M8`+-7_Le2wF1goPN2%VobHnSWRg{5`oSo$?@Owx_|t@QO^vLjRk$J z$0b!YdzVxJn?e8cl^tb_Wx%Z0vzt80|N9q*p6|t%YNXiZi^?SbhY0U=)noFXGt>X^ zR!n?3^#7b#%7)}Dj1EftI_I_?M-T%znGb1qx2G=-r2b=mS$0%5P}V!(o8!(0jAFXW zXo!a%O1e_qZh>57r!ZzDOrTpt+qAnlQJj7q;Y^@ePR+>xk6hmITb?eIt=>o0y8`_K z1Her8`BMA@$PR=U49u%eSHGRUq~qm~`+Opj6K1zXRnzl&wOu~8sVb4`j8eb?x8R}v z;Hp*N^Hgh>&#q}^1>JgWsaKBBe)T%1HZr=mz_nJDrCR|`$V_&J3E44Kdbl&2(+Z!s5l0*T zvcIyoqW!`hk`9Y6^F94m3soFAXyiW@a2w18;>HWiD-1^5J(c|IlK+hwmX!M*Xq_Y8 za)Jv^yoP0!I@g|Xu6v-USkrt#i5m7G^1k}=H1ovc`&joLF4QDrjKNS^MN zzDe~2`%)#ppjKJVA5#repOl3n0FBn6_2ZE&rc&*g0h@~Lh^#NzIPtW}q~VrpH~~$SjZR zZjoM>hORHrWIU|ke?Z=B(=Bw<3MQHkgs#+G++NcKxbesU$y|X?&9LVy{gxt!h7Xpt zftHMT^2-0qFWf?;cCx9#$a2rn$4+UQtCRe31npVXycx}wri9JG;L$4)BZbBz8`~;9 z7l%qe_aWcHUrTM}c-CE(kQaB{&77C&5XAbQ?MYPbJ+9Ov@SzD`q}=Sb+mz+(kML0r zi1bqtLKG@nV^2gV?b+>#?XA8Z&TEY>VBN{|=r{2q#VI#<`*95XT|gh^1BWE*g?`b6 zE4OfK@%|&>+^cP_705cJpb`%P(Xldq!)d)yC&FcAdjA=Ae>pT08O)e?`EyGvqZ2m4 zx#eP?0lYpf@c@u&-Ija(o5A)Jac(V!PZO9jcjkPbXt*B3^W1%sc4Bqur-YL{P0jze zlO5#ak|K(;-y^vQl8=n#P_wbe1ZM2+q zy}2A>t|vj1in&o5rDTW*`2=e z=(ogg^V;!>V>~t8)9)UK37z579!oEI#ATZ@i~=XCj=NM&ApIPFKs2i}miLdkA+Jqv zhfc^JdcM-ul*mCb`Pt`jZ0vLZl6|x@DPg9Lxfd9BW~r%$(-X?K5?s5=K`O^-cd7v0 zJvpfwde7c&`eyL_-`hFT{J7nAQsjAZCPGg<2K0b7&>=xI^&8*a7HVS*lZX6<-*4*n zn0KBT_KQag873$cNowI;a9elhmjaVE4oWA)wBDU#M9nQa6eZR~!$R7I{A=VfKJ9xS zXccZK=0W_nT-7Ja$xcp*aYXKDigBfW2F}ct7!}E1)jJh+W^~ppp5xt~cB!|tIcfqi z@;(sSY1svISS={8vy-2Arr4S!YrJxR_Fbs)y??5L7C z5Tm&JEP&mI`>F2J_AX8_zPOpnrC~=@7y5rL_#osQulfkSn~_rd;vHSHmeakCSD3jR z?{H&u`HPru7<+z80);m4ADq5)HH-1&}Kraz50LAPbtr$|ih8y+Ux zUYv}sdq>+pGw?ouhwqpfWb8X@=?Q-vug-Q$sd^y9W;W&lG$T3VJvS47XN;Zu>(t{_QPzdaT})d-1h73w(Y_n z+^uC?g`mJ1SZFA{WJS=?oY(vJ<<CgjU75LR1$#;d)MJ_IrFZ>y_%o?yN4jrJNdxB0aP< z@F@W<5|<2p-&`ZRXk{T^L)aP*Ni3L9s<7{4;`Qb(5N=bpN^jH$G$F;0DH9Dg?yiEe zwz{!BqTcOV!&}A!rI6HK!-VbK13$Qz*0_h#3YV9aSo-&@IA<3Rs{SI`&VPXMt-qqGcXA_N)|d$I6U6F zt^%-XyubQH=~1*>PSr`25e8kU0I%+?UvT9f)L4hJ4IG3##}zq19kzsVZ{ZkUs`gbN zX#97#pR7flB1;72>981$dR9R*e;}fmf5jJHyT4$Q`@~+gzEEcKHb$92R1-Df% z(!p)%skVCi!us)*(xjVGNdgbkFEI9H>Y859h7@lZ5w2E)3zA72qf20|$V!u;9P}nX z)Y3SR8~8xGh_9l-2|=j3P)OTCrmW3xIFBL=W`?9vjpbqGav`WBirbe+q9tkrsYYRc zhV)hRZa)f*-O!WT6dh2Jt&OS8wDS@(wo|s0@AgQqZ29w>za~}}|U(!!y z>#Uj}8auUi|4hW>bJ{WD7{6@&F2zG?p;-BW>&PnfJT5pKBbPIyYz&4Y`1Y!f7%arH z(Q|1{3X7S}aWMPI)jvvH$G*V8(^B)(Wf)@yFFIsOJyXdHpUjMRUId6iyoa92y2_UM z)U57|+8gSN-rF+CZVp=WFO}_XNon0=xlK-alJFi>@d7R8<5<}Akn@!KocLFJ19ob^ z2{>@erx=#*k64C>5=J`Aak-Sk?QNQV!@T-Ex;A2jiJ(UENh0>j250qP0Yb0NAzWu! z87bv0vn|$RXwH4e`hXh>x+9s3{*){5u&0K}Zpq{74mu-eA62hrfose`#9!-h{@}A3 z9(F|~5?4J3o~{L|wAtePJa2xLD2OMofp^Klj~`yW7JYGwe$KqDP`N5Bm7TF3QZ{f? zCu&BReeXW)%E7_EM>aF!ogKt1I;-&Nd^ualm>EIY?P(ih%X`Yl3}}@lzt}gUC@-M^V;`B0TbdB zk)X}jU)+GRkyG=RjSLUfG(_hO0X5(rMxJG68f$!O$8v%_I-uXrvrR#rW2q^AX2;_X zTX12UIj${d7E+-tYcdP2)z*a3#4W}6`#=13voS;aWB$94@{Ob7V&GYY4emoAfcgEB z_9?rvQ;i&n*!U>r?{-L>Uj2tM&LxyYZe`6<#9%&ZzIRsRY~KsNE+=_vf`g^h_5{BB zH8V7D1{gEftJR&b>2oR%QzH(uOFxTs85It!n-(K_0i{BUyqvfD;yIeG+=E{6Ei_AtwjXiYRObjT{OdB16Q>aF~U zKI3TD@YYnA_Do5RnO9+pRZGkz$Xn6AbhV9%FmV=qqF+*CeoV=i@EgTYE|boXYhR=j zD|QXR5tB@eYer5nwIr4-5wwu47$5mnLY;dKrED?a_`Wj^EWh+hb%j1OLt&v$4up*a z=2k{=T7tv$%_F0$SEmW!@%-Z3q}#Q1V#FVR0C^#G|+4Bj;E)V|Rg zTuTTh4L|p?NyKj|=h5D1QDUjj!x`4Lxnlg&Iy;#ArBjSeX$V|QSt^7hN9uBni!FC! zsQ)OR%C^n%CV4A=Ni?}K7$obSE(wIFLKoGFdHu7l?0B*BHZd_u`SBv(Y6RF5i85Rh zWRgQ&!iFYrga5oF6Zt2-acK&TomdbF!|xx~s>NlAM+W>7XS?fdfel=?-UVcGfHy*BKyYJ438Z1@vK5 zJCphYj33hOs0zRKZZ*sFAhU*Ytf0;fvm&c+vye0T&i`4$Ui3z9$kx-QZucCJ!M_<{m{XKwVe` zeIi+XAv6w9K#<|nXDJ}%IZx8QaQjGG0|q)__-o1#chC&C`faQ+4goas$w9GmEyob88Si>C!{{=eSuzJtDQQl;|zjz702dotlZ!9t=Ud*8;Eg zEP)3NR=55`sp&?kV<7xSXy^lcCR9oyBK+I+IPNXOw%Y#k5_w+7q-OJcP4(d0CvE#g zi0f;w6;6ueXbRXr_=h^^cH0vv5^(wS)D>+t8GvW6gTC$7> zJ6?kmBOFvrS;fq&#w>~KD>TmNTc^ao5F^(#A!T6-*Ys#a5wMp{sZmql+b*2%i?)%% znC=2tXhE@-tLQ-ekwv#kxJ7++bXaQWCw zP<&8Pb#LRETempJQ33NV)}0ZPsmD5fqixcpbCz0sKgQcYg(qrb0n`cJD?>e!^kV7Fj@gnKUcUDT=jn6 z|1guUHO<8?lJ3E=-jF*?H6TY^(|5a^8V>qWsMN)8o1P)oZhgkN+X3#4ij4Nb2;hA! z3L^TRbN5`$dFESG_wEIpKe}Z=%VfTB%!TdB!^fHy6Y(m6B1>zcS9xyFgWKWr@Loag@{8I{MrlEWiiha7M_%u5>MeyQwABi9*P z_heGIlEYf*w<{s0M;ue$Q;P0%8iG^g+)=C)4E>Py7^sjY8->I5Zao>W3$5?tBk5WGZ-?xO#>5dkW8I z22|$&Id2P3#uuMqwhYo%H!eX}<}`tg@*+N+X2`zeN^49Q*lSiX66v4dI{i@i%Bs(5 zPUjT`eI7(-p#*Jz(7E~17^tI~{VZAF5M~JdtLx@m2-BXD8atqP%hpAP&r$~)W1UeI z4w!`PI&HM?K(#&Y5kX6yv0SFla-JnHtvP{WRqt+oIuJ*C+TA8xSj z=haBaEmx}ANj)Rh&z0PT5>D0^9JI``Re|i@Xgt+fTsu;XKD;8~De_P&O&nf(WNhEP zivlWC#n7y-3t2`r9TbabQ^|_xyWlZWBTp+Q9>cdcO5;ZAr!A~z$d)f|LEmcGtM{6x zwjpulp0@7!l{`H9k$4gtzqaHD$_kFuT{IHk>JtHfy(N7by z*yH<4aClj8DvI_Qb^T9zqrM3zl5IDy}PBn zfNz9s{^Bmt{G7PfD^ei?t6k>^d7x)&Si=&n52*$r*aJU3u1zLD6;q%__3dcZQMJ6K z@;gub?oO~Uv1yk z2jW-X-(tS?LR+A|#!M-ESW9ba!)l}NTR&%fEtrp^hPrCI)RD3tgH%tM^y!J+A+006 zwk~omPbiRzF?igqx#I(Gax3)5b7*V*HoK&o`Nx;fw1j{M5-|^0WqMvq&g@guX*_-+ zJ-Yk32`8!d&VyeV*=O)$b`wH$EyuI!ra528T1gCUUgYfTb$~w|3#;3?+~)KcW2?N$p~tMG9uG=M4%1J%G%fp zV+gILT&ZnSy+sotHs|YCh4OwH0|H|X(n=+rkJ{my9oi0kG zhJF=th%IQJozTX)vBUfcY4%;~C^fg`Q<#T9_pp3=zr!Ie+?JmlFQ(~}Pd5@yp7878 zbT#W?liNB_L}d3CrdweH$%Xtgv?~Mas(f-44(_ea7;Fuq*wF&+jV`Hn6`%}pb+#Kh zNTXJP-}B7wOKxJcSMk9IrYj1pD+Svj$GrT4OTYeUz4CyY8L2Ir=iw>Svu2R}Ca{QQ z;(KlA*r6lWA@|90@=u^Kd)dK=JC;Kf(UO$uF?NLQdeoLWd5UJ0G%xE>cIF6?a|%a( z<)Ec%Q38;LVrrW<-O0&q*1I9Ach!0q7>UUP$~!)PO!22H%s%{45@;g8#dE3G@m=!& z!h_mJ!<1uNe?dMXOJYY?CbQA;3X2MXqeyG#vLgT z4LuxZR8?OL{(y?MGbuCN!s?ovanlm74P6&_=P+x!eCfenE+!L~A``Z(k@Y@TTkRHS zAHHFACw5CFXvQeB-eT{f>FZjh74V;-eUGpK+;0WPI$-jbWTzv$uzTWn+7^ zWwNXp`HjrOTuXuKZf6!#q<%Qw+DA1?rP@No`fVv!!E|kv=|E|0@&5ihrSb4B`yUWN zUpD~_2qVL^fVunVTd9Xw;=t?)fN*Hn3Aslp+I=vxZxPYY=Xui&LX;LC-4giP7yL<| zc@2G0Mz_~7Wj6{C5jmj;}P)429XLlR(;I*_D8f>(O3nTwectPrRi|2V4Y7LpJ!S` zxmk1CA)ws#G;>tRe%wfK1MRE~K!>V#QKthz1jFLMdXIhN0mhJ5?g?hq;O#uwp$gP! zah^kY>t((1%;<@}EOu|!vY5wH>2q#kiK=2aXP^FDP_Suga*{<1VMj=ncBmjiFd&NK zqKSj3f0A`++aU%o_wT%hUe_Ew@6TV!2}=TBw%<*jlP|C|)QF4CrY3wBKz!fI9L&TVe zYeqPoi|I*Q-K;cxW^~KeY2$*9m?$IjX8gqS&-=YwI)L12w)sYIT+<-32y=dCMNoG% zXLY)?HWFlO`qYD`;&{rI@~_KOLwa#knOF>3EEYAU5A+m*Gm^%>v;}zFrACgt!Nl<} z6fZqYs9T;IFi~|v>`3o5Vcv%L`ToiPwuK^_^T3SuxKxf|qtB`vNEot0-I(k~eo`3z zpI(BnBV6pm5pOc(BVM!SQE7dy0>wL4iO5$LA`l<``AFzv;koB$T;W%evaT(;dd ze4v#DuXCruDFLo=Y7r(Qk|MGJe=Ujzu}{>4)3B7Ok0R>vn@f#`x4`&IW&-8fEAXDO zE*qtVmYo?R&$BtAC)64tY~ST#U`_V8#~G`*>@2Qu`vKf6*C#kqoY#!3&Sf@oq&Xz+ zN9OKKjj(nIx4}siOzzCs$itAZ&(5m9Tr)C2u!Q*`)NWC>pu+pv&l7XQoM#h)>9RpGnG#$B z8MaP7PwW5U^R*qlep`a83Cg|ld)J#UCnL~%0CzHw*LAxhvyS3jIclf@1yyBd~I3N`6G-aq>bwBGC8*nZEg1z=I=CFgT z-u=;=^R9&Qzl-$rmdTLsk`=fbP^NK zH`?$^wx(>}p~LWW$SHDQk)II#fQC9j_Em$cg~*G-1)fMd0SH?-7e}D?oH7 zUD#JXQy;nRd(G|Uxg!T1*xbxJTV+M}7QW=-W~Ry`7|~K{QqRYbGP5)N)X_&GdbeZV zeOyqs^g8Q)A)Oda_KipZ5JU2K>%6EdkX+pG_l}*Hj5lRKfb3AreC`y1J0&9SoMnT} zJ=D-I4?Tr4!Y-@tr0~Or_$@lL+3V1csQxTomP))hWkfGmW2#~)b0^2_g3|NPEF}|^>sc% zK4msmZp8I+I+#zJNO|DF93FoGjdvOq=Upm8L}tjO^6cJE1f@h;$Ghp>v>rV+xOZyY zx%{TL2r0%50gE2;MAuYx&0~S^jEjqY-Z02$t07QbRFKJRde}o{r^X9T56CZfxbMHm znUpIOYF8+Vox|%w)6h7;W#TROYpRlO+jiQh5b+h8K5*MJmS=^jO?D?1zE(+Rtmc!4 z^Z(Yi@7bemF5PvkuH#z_xQ0BKE?C#2p&GK%?+i|@3pn5B>wAh+*I#Y`?4tU_EbRyy zbyN!2YDi%oKt2|MkBl@|9bLfg(m<@wr+5bEK}SlD{}3{NJ19KGTW4AX2%s#mx~cGKHb z3u>o+L?0x7{NeQ7`5mTn`u?hNI-*O|?s@gtT*&_#hJ``a!>U&>&3NLcts6wKgyoM? zXEDSR&s*$!4WFwmm|re18?$!U6lD~bcKxHlbqI`dz}O^g%-s=z)-t@MzMu+TLhnsd@bkdHOeJi+(v(jz7lc70U6xy z&F5b&5)(*HC0wK5O12N;UY!)OR{H755x0nb$X3L+LAWl>Udm3ke0rW}a}{kF%XXHy zLY9~|(#Vo~JaD;v=5dJgtmXT6=FIQ>%I94h8`GUS&QTury=%yu5(stte9l?q3y*F5 z49eh*BFK1wcY_Ns>RYqN*E;uf=I7K4>;kiBKdkR*79kLEdV_{@JkHB1|v$5IR!rx=FB z?Rg5=Ns@|j-}%^rh41=*9BYJM_W8C?w$s9R`) zt2!}Li8$raZ!Ry_>2klkc8^5P1eQ>72A*e@kCziGT7fSb-~DvAL>bE==V%pZv0@*`5Muj z)zxc6&qa{fdaL^Iy-L{F&FT7?qa!#d^?Fp=f^bN_%ehBKoNb>$(!l`_?_x+W2B~%}wNEz*FCxA0bNJ zL(C~Cm!@r;YJq4ti?)!)MDl~nJ6qE};QYJiG%rW$NNH1!__S|df;cUUl!!OziXeX0 zAs6U-X;1sPoQ8Zqx0EH3STe(tt zdvRN;cm48wN|uA?UR)H-U8xr_SX2W{`@7B5tXa@%3A@!Y28blX=NHXs_eYy?S})+F zsk2dB3fZ(p7`c?MAYE5J2h+*bb4r)s2`={wkcQKhv zysKkcNxS*Y)H5-IxL~H1IlCRSMfW@rP%0h$y}Fe_%RYfOP`l=mVZ9@0s+I*S>QA4C7=G)gYJG7mFr_4~pQ+Ti`;nfNN^m(qoTdJ%>@w5SBPdVUnI?~@G6MVd zqhSdirt&%|^8xw9$kJ!=?7{q(8tp<`CgQotoTu3H-3F-v-*{^&T-VHu^JF)4e(({a z7@W@!Mo(0-hCu$pkaOh`gX7Tjy_eZjZ7Qku_mo{l!^SzdBp%rryFtZ3pC6#R;^D;o z20DE_JnOCsuQcklhIyhtn7Y4ufJ^*QBMn_Sf= zyd6P4TQ^V+t``Mw$Dqc-S2z=D#~@Uh{+Mn%_^$J7zl(~q4?@$7Lq=aMzx0XnlwR(~ z-eBz<5GtQdT3OEY>EF6Wa!J&Y&9hBz-7yEPey6t;wY&LJ-g$mBjHgUcJg=H}K`(%q zZ};MZ3!P#P46A6d2j`45z1V?FfmiWpjxzl+VxsNAA z>w|3%tQh_sF!SAD2>RE6cx0ZYPp3$;_6PL(j@G@Q~Z0SS%q}RCQ$74@M1gG7S$h@=pmi3O<_Pf6G54!5t>A?P~ z^bGvhCg%^Eb6&{7@qTsGCYPP|y# zLe3PGSC5O1)OvG^7~_h82%mUYB9zZouL|G5Ti7x z6q6_#Q@ek(;4x8@7Qyjz`W9bt6kV?E0hMdD?H4XTE!I>GBudb3sH>^Y<&r|X>}Ed; zO`ZnkQPm49?(x}^WS~pXx9jQr=XW`KM zIk=e;74zrbNJ>MkXCk5F;#>>>2J4PAtG!J#2a+ci+?;2zl!@^VqvA9tb>q&`O6K0J zlw6r{9=*z$yBIave&W``p8KV#Hg<~A*J?utKW=KwyjqT~qy<&XHePOR*VnenIGcfH z8VPH!+B81WO#_{7K}NL|KP{ID1?ikjTlsAia+VR7VBZ*tDkGm2LePmxx^tRWvX;~H zPg=CB)%dCN_5AIvN1L{*=$PD_Qt9=yq|)B|t?G|H&<&J%Fe>ea4Qt@aR}CE%l~{EH zU!S)`^G~kH_$CaXr;Prdo=g6f&r^Q-Ar3q0BVmuV`lYoPzK`6{-4FrgbZv-(;5V&T zI{^0W0c5eU+?wAneXoPIDf)Z$7iSx8Jd zWR7$ebvr_WstI_U*O6HsFYNCvX=#cAA6mIOON33i)-wo4glA)@D< z)Ka|BnS^t|rm6z{hs)%A-|j1|^j$ zCmm}b0Um1~I1Z}@%nFb8&jE|bgipv~bfRqs5WQ)hgO5SSS4-NhexF}}FH<`<5hxgW zg&x5veLW;@cHYm%emGA|tV9GbhoYl^1HH4R+Sr~%pq<8f+s!^1xE-I2Y91{&=O`}7 z;Iwe{nWpY}sj6d#nq00htARD${Zj6(5%QF&JA$X&;g`Vzu*y>#!cVIEu)VM5v3u1v z{m@;=^wkct2|b)U=Yt3E#SfazuHMu_Yk@0ebw{6eCUR(HpwTqZeT>=u@m{5ON@IUC z*1iT!CoGh=zOz+GS4nx(PCAA?Ny?O!%ny5J?2Z*74Nopw z0E&M{6%s<m-%P0c1#K0d!p`@2gWjTYq7;M zZ2XK6;f%y=vnSeR1M;VNCl>6Vtu8xem%UkRu{OoncATH`G`B@qImd5Jw`f$NHCcA* z`g*v?w4}9{qjMEi!{XPT1dv_%=vPTDCVIDom1Dqi;uMek_^u~7sd4*Ab5Ak)F0zd; z8KndM#Xd1hs~K0xjh))9m2{v_(&{L$k|%tN3(kK?2LgKT?=L9YZNkYuYJMrzZ{Fs9 zF5h(<`@JLKcLMpq6#0^JEpAql7iQt81^mQdU0fhQLPS3`iR-}&+2LF6|eN9uy1aoZ0`yVojYFe>foJ03`E+p1WsCc`D#Pn zj!Q9p_S|R6%|aQ$UR3zc4e5hitn)4MRqcTX@9ex!;H3a}`76%S1>4BRL>}I88xQFM zhc7LYiusFD{E^=9*BOHb4dGeoS$&IN{P*ZDW=r3^<@G}wbSap@>@i~};)ULFCZYII z*Y?Am@2GKAYyBk~Yie|#S`}cg$I{^?av@(1xO0dz4C-~sYz6b$;|pNm!*f~}i49T# zNu8jsbPyiE((hxkA|(OtIh-7#kW_Z@o`8;C$cXUyW(N_j#_>F;A~jyPLw%(ICGbd595)+dL$d#|Zpwj*j$3YAY?(vR`@b zNhK`wEi7bjSl?>BO}jd(W#! z!0er~fC(*laNv_Y+|78dq%`R%-Dpev68x&)cp=U)n=?VL$kf+LBzr%bn;bbdf1nC3 z&liyKfUp3fHmxBW*1ax9DMpl&uM^b1%|@AdiVYU8lq9uSIZL7xcChD*V{|0+TAXu2 zA<1Qb3i$Q;uo=>R~T0pH!5!!74|X{yfKw;Oxw zBKa4xqSGx1vxT6R=yiLw83pA4*N&Q$J4P+*S{BGg>G=m{=?0yu&y8m8QsG6*_6T+3 ztmvQZ`oUSQ1PCdY{+!4f+kNc3VvQ#Xt_w0Rinfg!E-8*FH2B0)kNvuATW3*rJ7^j9 zn%aBh27OC;=x?%*>m49lwK?D(1l~ZI(C0W&AGP(wrh}Sq&{T&OW7%n;n|fGhi!b?T z!C8_Y)Aw`bStrS%j8c23!jC$kVPoXGz1JX9|H3u>eaeKL?URsE zWn79~a&zT#2`=(m>9!xLKnf%%W!`>EzB+@FH{u2^=RuyLu$U=g|Z z0ND3cI1RakUO9O^m`7MT_+84OLsntMqK*{l$YBFvvqNEVjTd-B+a^zjz8PFJsJfB& z+z74BhDsk|$?NKHXW2B$W62#y#Wd0?Ok7&dORwDpM%H z;lRh~oN13IsY#Kua;_$FKOU)VT`%-s14o_nr--ME0t30dcPZ#sUbvI2FJn>c#p0z~D=NbP(t*I#6hMU)mV7c;UG zba>?F@4{(^`5>Q1fOp5q((h;*k`M3l1p{$g_X^ba7@(VV6M)G7y59giRr5X5DI zYsSUH_})ZrtMmG5;!{WdmoXy9%Y=O=oN+G+X9lC2R}<}R#lVaCY`Fr6#*4_36_2F_ z{~u@?jD6Ln;F5L$7a7byI=mG;RuZsXKv%qsGMhIFSoRnVY&bSwpKNXHR1FeQWy*T- zCz9MUH7m2rMd2i9O2UbY_ubF=Ec=0OCXO0+f_<}=zbF5L82X!JmiCNuG%lPoh@5Ep zp=Z2;j37)f-j1>lKq!mVCSLKo5)bj^Galt?ZL^;)FPFaV{eDT+`*|DvTR-H!h3$m@ zA@wXr6UeYf(x^fXmi>hJNN+E2cGbHddVpC%tRHpse=%PDe!M?&;I{GpaD?q(+W)=e$Kx>4ZtTADk@snRICQ$1g8 z)uJnv6bG?p*#$0qu@0~64Y>J6F?796%b9Beq^iVdu&M*?=zz`I*J3v<@mRdab(%c- z5j|OTJ6qu9=mT-usQ7|a64NuD^t=C154bMFgi3p%&j;iPx?_}I&Jxzug+a`lD^<@(a=*ztuCw?q6sRzer<)iUrnWW+gv(>_ zW2>SWTZt{N^8A>Kf1#qg%(raP=HFJ!yVYep;LWvB_Gos{?=KHJmOLud!B3VH7K{82 z#A@X<9Z4Lo#O=0=8py7hbZ}Yo|&0uqUrsnvzdW|D6{Hr zj|4<=-4Q*={87(-$D6tSwcKPv&D zUXJ?8X$zz-TapI-f$GEOwy|BV@=qr&`Im)-*R}hA7mYG2@i|!tm`WHOiuD+JV()O0 z*0zz>y{f%9llP(*R^uv0%}dy@X!}i?@&lyl=V%i+=~+Oxcz-4H(z4@y_OE{T@@JGv z6`MRDHd<_=dgI{Mp9SxAcs$78x7?*^{sPqf@2IryVfh?GDr9C^|URkGWpw<6S0;wtxJz^`$`ql0sBE^YqVJVzXOYK?*ol()MWz;OBitEL8k<~}gu$jj zQMic3uu`EiE|#2ZszfwLmZ5U4l-&E zGT_Mjy^%$4T|(1+R<9twsBVA`jTkIu75U|0pPxt(AjgDk+QWwH5nj)ReQ|Xjz`Dt( z8dUW~BpJQ`us4g742jX9Sg=)TTM~k@+(?nVK#)abTHOj~aQ;R89qeq=6(lx+`NFy$ zmxRcefv`LW?)~lsbQRi*o)pesFi1q-*KLzI!=1hk4JNzhMp)#$kiF8joe*yoZ8p#y zSLa6akPC*QYZY8RZ@Zqn80pDXx`57Ci7*EBw(S_d6%Bs~p~#1s3>qt;(XXA(qs47y zcA|xwOf-;I2})AsC+X{d(Pi=Qa9hSj;MeLGru63k6Q;j4!ztgrl)Vy9!n~q=v3bg% zrc2a_YGy!fU&*_{GUQ@Dzo$5)yadw@K!$b*ZUpVJjt#Iu=|jfeb#3HFHG3dvFCF|u&iO8%Qj(#qpdehfO2UIHU#+3)8mov4U z%QN+S;m>^_Toib-vKY(aJeU}32Wp!M1U~3^I%4SqM)I# zK^lVrR0dp`0@K8F)K(^Vo&K=+qFRcxs0ZsWo1=c9Eg$%|+YBh_R++5-9I^e>(3{w2ePC{C$)f;nNe z_URnbO2$-j`I#t?%5D=7or8AdMm)pQw#+ge_Eq5YxS!=J`GHAH8UGfRv^LVh*0WyX z6A)T<)KkR|TjK&7IdUqQVi`3R>H-t`WV?&3o(Oh`u9A2_ay+jM7vE0zY_{=H`0Nmj zY;uL*@0BhPRFhp6Z+>XInpJ6D@hQnrSA=|Vu-NVQvW(mkwJku>8e3t`p>2+dDB6}+ zQ=PWD7}wc*PA8&}Ez|Ph+=+}wKpIpNP>$h-s2mGAHrX?DA1+gQv(>=-qK_H6c4NdQ zq4ayv{eZ^_$&w7fsHqnU&-yg@SRNDRWxkDnZ`*GeP?-m)kE#jlw*1H`+sCl>NXN`b zvW1Fd2kTKw;Rg?gw06G%(X80%jS3yZg!K+3lv23a4Wkfr_{JL5!KDB% zv5P!WVkSp#;E-cnV$3vzX(CxuMKZQK9YV1rjmHEZ+IeY22)3b)f)vZtLW7|B{fqXnlJA4nCBGp2L3o ztzG^;ws@WSakgBWQ%`w*|A%KWehiGa42b(Bjc@${x`xS?%`t2$;&%Ju?qg0yt_oi!5ekR|9q;7)4)gn=i~j)hy3To>OudF-(4Cy z^}p}*uh%Lxhcy)?F%37YZz2c1{s{2DzDg}u3n=@oP5$c;Xad4vI^hC@4?{WNTD}1b zx;e7a6O$@iAx0)jF@E4?4rT59qHp<`NlrTpsS5J~7ybV^01Jy$lm|>YKZB;hUMv40 zF!i6d;S9sqE5e@SDnUA%z35K<)%9b%OqOr|vn(IB9&qD2Ap+ka6M}zj_Gz?v$xi(H za{>R>alM6lw51%mvW9QnPISHOU*5o+RK~Z?+cff6X62azvK-t)IJaH|M04}U0GSW_ zcbKVB-~|M(Ne{Jh%gFAm8$LwB$4DAvF=fP6Por1la-CrgRt^|?oogspj%+v<)E_VK zPeSRxPRY;}uB%+LfNX+)s$+=lkI&n$k~QAp+b!LX&dnrEd+}}s8?99vzsPc0wVnA; z6V^4m%^INgw|K2;2cP@W1kMVr|6UnbK@5!?ghjjb$Diy> zB3FP5N0Bphok}sfi~g2jlK#1k2ZR0P9%3o7FwfZ)ZCyTrIY#e@SW8H9e^0vK*`#p6 zu3P|xT29C9#LpKjrJrrwn?9N=Tki3NRUgvc1dW{1Jj&cN(HH}5 zHv_QUV6gTLgiGQ$sK;wm04bj3D=Q z_LlbU@CCVnX}LSK2RdK5=r)On{8G$Z%ldUM0UGT`5DL|ua%|Y>%-`9HnuQ1wcc`$g=NV7`!8G{Jqn!>tk zITviMr%gH185!D?qA}B=r1G;j=)bet{&iS>0BlRo%_6_`#W-|^o7Tj$I}z@i1l`$w z>MMkb|1)2SWov(~pDJ${P-J~$5#niI=i*{O5?gvOU>E?2I@XqzRt3LV?}LF`r0X6C z*vR4WNi->~e>$S}%rJI}g@DwNpGv%Ocl@AysNPs}Qx|8uf!KqY>Lzpvh2qRMv=IiT zw|$-E*Tg!Jn}@v07&X4v-4>NZQfk?#&a>@63hqFWlks?R@%F)~o=QI#9JdAZ-5$ts z%Sd>lv?Ih%v^xLoreO$z7yBRI%Ham#;c24){bi$lXTY+hcx2=uG_IP12rB>cwgjyz34IPEri*07R zH>$pNzv&o<@DdJWC~+KZsH7sES+T?$N!>s?;*Y#9q{%l)?o@k9)s3aOG58NQ;VlEU zSq7|@gfSJGckZpb>e$QptCA{fJQO6SjS4mka0JE!Q&}!Qz5>tlUSQaG^{`61`0W=V zL^c#O@okgql*Az71^_Sr`)?~ewuKU_em^8GKKAKZFs=>kDI943)Nkuo|6^aK?#OZL z*-s;nzeXx5OQH)Ws$}`hrNi8RY2(nlf=Xs@aw%oZ!??s;*XZiAQ(c-om?M%`bnss? znV(J61Ukc$k`eQVw}4#98q&I=(f}Xwf;l|Jpm*B|IFIKYDjVUIcBbS zt#0QbPV?YV%T|R$mBRunSYV-0zZ3OU07aR}e%iU0umR9~dlBS~k>}8uu6V&Neo|ZR zG*BSr9zPc15uk#e+gkYnf#0LM)E7tpWP*71`UEqy9XhHFzfhoM~^?5-0( z!WSxZf^``NY8A|kD>~CXe7mO#K6XjZj?^+XOdYG}Zn8hC1RRVeV)bJ*-~4xXC!exn z)S3GVeJdua5&9$%VKuM4mC*Tc9}b#K@VjDhZ&%Z`Q~a_aG_qk3dLzF<^y|Wl85!~N z&9Yr&z&Wfh^yeBWtHA;MnF9uN-uZIX{_iJ%(8O{LY1f`4v^?gw@isE#sNA z0jD>qvim&v)(DgqZqf(5EGo^JYsJKHCz8KBG!5Y$RQ$nSZB0a5n%D~bcU$xthMSH2 zTKdUzwjF2;T`H8vN+t#IT4=w<#UFh=?*Nb1US@x)&qoCstt5D-qPk%Z7#~8CyfT*V z1^L|)kDPt$=h4tNweZ3o4$j&*s@Uh2H}-}ftiY}2p0_VsoOBTrD}}waRorRw>rP`o z3k_~s8+|+78r0wO^&jbwu2kRPmT0}hn8DN2!d-fb@{*zbi8J9$*m->awEsR>2^Q<| zXh2S@I=7(y8pr}KDB1Vj5t?UlhwnUjYEzIC0NNpaiP^@gZ*ZVJ5Eos(l52az%^%nYnC-JF+xaPbo0a zP}K*G$p_WG2u~svh^7yRFkZlJp06MsZftn<{bdBE&m_xQd#DZo7e+0$WPIERn` z)|NByGu;9;$0m+vox)L9q=Q-!l5zqGg7lhk822ES{M7lE-G24Rwx?8APJ*q=8!;>P zVqQQu*37<_aygeV2A;AXEdO9~jx4(1_6Ny% zZED9KFE_64yIb;)T^_?I=2;nySS=RI%RP6BYF24Dr}(cv0?=Quyr^X9`B_MIRZj)f zH1i7@vpNyKQsghqap{1-kI@Q)jY}U4FoxX{Y&~Aj!6Ip`?*>Ch3)`aB%OX8>yz$?6 ze0@|Sr>`@-%p%BHIUzofLfM6s2ga<&O|gBnSoG101;&5R4Wmp6V*l6UOOS-}+>rR< z;ek?d|NV>&Na}(Gx)0gn<2yVQi>n3-b%u!^?iUz8JJ+19E_ZZiYGMkYuZwH=>nQOa z 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 E05ArWNB{r; literal 0 HcmV?d00001 diff --git a/docs/how-to/rocm-for-ai/deploy-your-model.rst b/docs/how-to/rocm-for-ai/deploy-your-model.rst new file mode 100644 index 000000000..fd9fe8584 --- /dev/null +++ b/docs/how-to/rocm-for-ai/deploy-your-model.rst @@ -0,0 +1,113 @@ +.. meta:: + :description: How to use ROCm for AI + :keywords: ROCm, AI, LLM, train, fine-tune, deploy, FSDP, DeepSpeed, LLaMA, tutorial + +******************** +Deploying your model +******************** + +ROCm enables inference and deployment for various classes of models including CNN, RNN, LSTM, MLP, and transformers. +This section focuses on deploying transformers-based LLM models. + +ROCm supports vLLM and Hugging Face TGI as major LLM-serving frameworks. + +.. _rocm-for-ai-serve-vllm: + +Serving using vLLM +================== + +vLLM is a fast and easy-to-use library for LLM inference and serving. vLLM officially supports ROCm versions 5.7 and +6.0. AMD is actively working with the vLLM team to improve performance and support later ROCm versions. + +See the `GitHub repository `_ and `official vLLM documentation +`_ for more information. + +For guidance on using vLLM with ROCm, refer to `Installation with ROCm +`_. + +vLLM installation +----------------- + +vLLM supports two ROCm-capable installation methods. Refer to the official documentation use the following links. + +- `Build from source with Docker + `_ (recommended) + +- `Build from source `_ + +vLLM walkthrough +---------------- + +Refer to this developer blog for guidance on serving with vLLM `Inferencing and serving with vLLM on AMD GPUs — ROCm +Blogs `_ + +.. _rocm-for-ai-serve-hugging-face-tgi: + +Serving using Hugging Face TGI +============================== + +The `Hugging Face Text Generation Inference `_ +(TGI) library is optimized for serving LLMs with low latency. Refer to the `Quick tour of TGI +`_ for more details. + +TGI installation +---------------- + +The easiest way to use Hugging Face TGI with ROCm on AMD Instinct accelerators is to use the official Docker image at +``__. + +TGI walkthrough +--------------- + +#. Set up the LLM server. + + Deploy the Llama2 7B model with TGI using the official Docker image. + + .. code-block:: shell + + model=TheBloke/Llama-2-7B-fp16 + volume=$PWD + docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host --shm-size 1g -p 8080:80 -v $volume:/data --name tgi_amd ghcr.io/huggingface/text-generation-inference:1.2-rocm --model-id $model + +#. Set up the client. + + a. Open another shell session and run the following command to access the server with the client URL. + + .. code-block:: shell + + curl 127.0.0.1:8080/generate \\ + -X POST \\ + -d '{"inputs":"What is Deep + Learning?","parameters":{"max_new_tokens":20}}' \\ + -H 'Content-Type: application/json' + + b. Access the server with request endpoints. + + .. code-block:: shell + + pip install request + PYTHONPATH=/usr/lib/python3/dist-packages python requests_model.py + + ``requests_model.py`` should look like: + + .. code-block:: python + + import requests + + headers = { + "Content-Type": "application/json", + } + + data = { + 'inputs': 'What is Deep Learning?', + 'parameters': { 'max_new_tokens': 20 }, + } + + response = requests.post('http://127.0.0.1:8080/generate', headers=headers, json=data) + + print(response.json()) + +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. diff --git a/docs/how-to/rocm-for-ai/hugging-face-models.rst b/docs/how-to/rocm-for-ai/hugging-face-models.rst new file mode 100644 index 000000000..63b32e006 --- /dev/null +++ b/docs/how-to/rocm-for-ai/hugging-face-models.rst @@ -0,0 +1,210 @@ +.. meta:: + :description: How to use ROCm for AI + :keywords: ROCm, AI, LLM, Hugging Face, Optimum, Flash Attention, GPTQ, ONNX, tutorial + +******************************** +Running models from Hugging Face +******************************** + +`Hugging Face `_ hosts the world’s largest AI model repository for developers to obtain +transformer models. Hugging Face models and tools significantly enhance productivity, performance, and accessibility in +developing and deploying AI solutions. + +This section describes how to run popular community transformer models from Hugging Face on AMD accelerators and GPUs. + +.. _rocm-for-ai-hugging-face-transformers: + +Using Hugging Face Transformers +------------------------------- + +First, `install the Hugging Face Transformers library `_, +which lets you easily import any of the transformer models into your Python application. + +.. code-block:: shell + + pip install transformers + +Here is an example of running `GPT2 `_: + +.. code-block:: python + + from transformers import GPT2Tokenizer, GPT2Model + + tokenizer = GPT2Tokenizer.from_pretrained('gpt2') + + model = GPT2Model.from_pretrained('gpt2') + + text = "Replace me with any text you'd like." + + encoded_input = tokenizer(text, return_tensors='pt') + + output = model(**encoded_input) + +Mainstream transformer models are regularly tested on supported hardware platforms. Models derived from those core +models should also function correctly. + +Here are some mainstream models to get you started: + +- `BERT `_ + +- `BLOOM `_ + +- `Llama `_ + +- `OPT `_ + +- `T5 `_ + +.. _rocm-for-ai-hugging-face-optimum: + +Using Hugging Face with Optimum-AMD +----------------------------------- + +Optimum-AMD is the interface between Hugging Face libraries and the ROCm software stack. + +For a deeper dive into using Hugging Face libraries on AMD accelerators and GPUs, refer to the +`Optimum-AMD `_ page on Hugging Face for guidance on +using Flash Attention 2, GPTQ quantization and the ONNX Runtime integration. + +Hugging Face libraries natively support AMD Instinct accelerators. For other +:doc:`ROCm-capable hardware `, support is currently not +validated, but most features are expected to work without issues. + +.. _rocm-for-ai-install-optimum-amd: + +Installation +~~~~~~~~~~~~ + +Install Optimum-AMD using pip. + +.. code-block:: shell + + pip install --upgrade --upgrade-strategy eager optimum[amd] + +Or, install from source. + +.. code-block:: shell + + git clone https://github.com/huggingface/optimum-amd.git + cd optimum-amd + pip install -e . + +.. _rocm-for-ai-flash-attention: + +Flash Attention +--------------- + +#. Use `the Hugging Face team's example Dockerfile + `_ to use + Flash Attention with ROCm. + + .. code-block:: shell + + docker build -f Dockerfile -t transformers_pytorch_amd_gpu_flash . + volume=$PWD + docker run -it --network=host --device=/dev/kfd --device=/dev/dri --group-add=video --ipc=host --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $volume:/workspace --name transformer_amd + transformers_pytorch_amd_gpu_flash:latest + +#. Use Flash Attention 2 with `Transformers + `_ by adding the + ``use_flash_attention_2`` parameter to ``from_pretrained()``: + + .. code-block:: python + + import torch + from transformers import AutoModelForCausalLM, AutoTokenizer, LlamaForCausalLM + + tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-7b") + + with torch.device("cuda"): + model = AutoModelForCausalLM.from_pretrained( + "tiiuae/falcon-7b", + torch_dtype=torch.float16, + use_flash_attention_2=True, + ) + +.. _rocm-for-ai-gptq: + +GPTQ +---- + +To enable `GPTQ `_, hosted wheels are available for ROCm. + +#. First, :ref:`install Optimum-AMD `. + +#. Install AutoGPTQ using pip. Refer to `AutoGPTQ Installation `_ for + in-depth guidance. + + .. code-block:: shell + + pip install auto-gptq --no-build-isolation --extra-index-url https://huggingface.github.io/autogptq-index/whl/rocm573/ + + Or, to install from source for AMD accelerators supporting ROCm, specify the ``ROCM_VERSION`` environment variable. + + .. code-block:: shell + + ROCM_VERSION=6.1 pip install -vvv --no-build-isolation -e . + + +#. Load GPTQ-quantized models in Transformers using the backend `AutoGPTQ library + `_: + + .. code-block:: python + + import torch + from transformers import AutoModelForCausalLM, AutoTokenizer, LlamaForCausalLM + + tokenizer = AutoTokenizer.from_pretrained("TheBloke/Llama-2-7B-Chat-GPTQ") + + with torch.device("cuda"): + model = AutoModelForCausalLM.from_pretrained( + "TheBloke/Llama-2-7B-Chat-GPTQ", + torch_dtype=torch.float16, + ) + +.. _rocm-for-ai-onnx: + +ONNX +---- + +Hugging Face Optimum also supports the `ONNX Runtime `_ integration. For ONNX models, usage is +straightforward. + +#. Specify the provider argument in the ``ORTModel.from_pretrained()`` method: + + .. code-block:: python + + from optimum.onnxruntime import ORTModelForSequenceClassification + .. + ort_model = ORTModelForSequenceClassification.from_pretrained( + .. + provider="ROCMExecutionProvider" + ) + +#. Try running a `BERT text classification + `_ ONNX model with ROCm: + + .. code-block:: python + + from optimum.onnxruntime import ORTModelForSequenceClassification + from optimum.pipelines import pipeline + from transformers import AutoTokenizer + import onnxruntime as ort + + session_options = ort.SessionOptions() + + session_options.log_severity_level = 0 + + ort_model = ORTModelForSequenceClassification.from_pretrained( + "distilbert-base-uncased-finetuned-sst-2-english", + export=True, + provider="ROCMExecutionProvider", + session_options=session_options + ) + + tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english") + + pipe = pipeline(task="text-classification", model=ort_model, tokenizer=tokenizer, device="cuda:0") + + result = pipe("Both the music and visual were astounding, not to mention the actors performance.") + diff --git a/docs/how-to/rocm-for-ai/index.rst b/docs/how-to/rocm-for-ai/index.rst new file mode 100644 index 000000000..5be7b0995 --- /dev/null +++ b/docs/how-to/rocm-for-ai/index.rst @@ -0,0 +1,23 @@ +.. meta:: + :description: How to use ROCm for AI + :keywords: ROCm, AI, machine learning, LLM, usage, tutorial + +***************** +Using 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. + +For more information, see `What is ROCm? `_ + +In this guide, you'll learn about: + +- :doc:`Installing ROCm and machine learning frameworks ` + +- :doc:`Training a model ` + +- :doc:`Running models from Hugging Face ` + +- :doc:`Deploying your model ` diff --git a/docs/how-to/rocm-for-ai/install.rst b/docs/how-to/rocm-for-ai/install.rst new file mode 100644 index 000000000..28f5baba5 --- /dev/null +++ b/docs/how-to/rocm-for-ai/install.rst @@ -0,0 +1,60 @@ +.. meta:: + :description: How to use ROCm for AI + :keywords: ROCm, AI, LLM, train, fine-tune, FSDP, DeepSpeed, LLaMA, tutorial + +.. _rocm-for-ai-install: + +*********************************************** +Installing ROCm and machine learning frameworks +*********************************************** + +Before getting started, install ROCm and supported machine learning frameworks. + +.. grid:: 1 + + .. grid-item-card:: Pre-install + + Each release of ROCm supports specific hardware and software configurations. Before installing, consult the + :doc:`System requirements ` and + :doc:`Installation prerequisites ` guides. + +If you’re new to ROCm, refer to the :doc:`ROCm quick start install guide for Linux +`. + +If you’re using a Radeon GPU for graphics-accelerated applications, refer to the +:doc:`Radeon installation instructions `. + +ROCm supports two methods for installation. There is no difference in the final ROCm installation between these two +methods. You can also opt for :ref:`single-version or multi-version installation +`. + +* :doc:`Using your Linux distribution's package manager ` + +* :doc:`Using the AMDGPU installer ` + +.. grid:: 1 + + .. grid-item-card:: Post-install + + Follow the :doc:`post-installation instructions ` to + configure your system linker, PATH, and verify the installation. + + If you encounter any issues during installation, refer to the + :doc:`Installation troubleshooting ` guide. + +Machine learning frameworks +=========================== + +ROCm supports popular machine learning frameworks and libraries including `PyTorch +`_, `TensorFlow +`_, `JAX `_, and `DeepSpeed +`_. + +Review the framework installation documentation. For ease-of-use, it's recommended to use official ROCm prebuilt Docker +images with the framework pre-installed. + +* :doc:`PyTorch for ROCm ` +* :doc:`TensorFlow for ROCm ` +* :doc:`JAX for ROCm ` + +The sections that follow in :doc:`Training a model ` are geared for a ROCm with PyTorch installation. diff --git a/docs/how-to/rocm-for-ai/train-a-model.rst b/docs/how-to/rocm-for-ai/train-a-model.rst new file mode 100644 index 000000000..f9c585445 --- /dev/null +++ b/docs/how-to/rocm-for-ai/train-a-model.rst @@ -0,0 +1,137 @@ +.. meta:: + :description: How to use ROCm for AI + :keywords: ROCm, AI, LLM, train, fine-tune, FSDP, DeepSpeed, LLaMA, tutorial + +**************** +Training a model +**************** + +The following is a brief overview of popular component paths per AI development use-case, such as training, LLMs, +and inferencing. + +Accelerating model training +=========================== + +To train a large model like GPT2 or Llama 2 70B, a single accelerator or GPU cannot store all the model parameters +required for training. What if you could convert the single-GPU training code to run on multiple accelerators or GPUs? +PyTorch offers distributed training solutions to facilitate this. + +.. _rocm-for-ai-pytorch-distributed: + +PyTorch distributed +------------------- + +As of PyTorch 1.6.0, features in ``torch.distributed`` are categorized into three main components: + +- `Distributed data-parallel training + `_ (DDP) + +- `RPC-Based distributed training `_ (RPC) + +- `Collective communication `_ + +In this guide, the focus is on the distributed data-parallelism strategy as it’s the most popular. To get started with DDP, +let’s first understand how to coordinate the model and its training data across multiple accelerators or GPUs. + +The DDP workflow on multiple accelerators or GPUs is as follows: + +#. Split the current global training batch into small local batches on each GPU. For instance, if you have 8 GPUs and + the global batch is set at 32 samples, each of the 8 GPUs will have a local batch size of 4 samples. + +#. Copy the model to every device so each device can process its local batches independently. + +#. Run a forward pass, then a backward pass, and output the gradient of the weights with respect to the loss of the + model for that local batch. This happens in parallel on multiple devices. + +#. Synchronize the local gradients computed by each device and combine them to update the model weights. The updated + weights are then redistributed to each device. + +In DDP training, each process or worker owns a replica of the model and processes a batch of data, then the reducer uses +``allreduce`` to sum up gradients over different workers. + +See the following developer blogs for more in-depth explanations and examples. + +* `Multi GPU training with DDP — PyTorch Tutorials `_ + +* `Building a decoder transformer model on AMD GPUs — ROCm Blogs + `_ + +.. _rocm-for-ai-pytorch-fsdp: + +PyTorch FSDP +------------ + +As noted in :ref:`PyTorch distributed `, in DDP model weights and optimizer states +are evenly replicated across all workers. Fully Sharded Data Parallel (FSDP) is a type of data parallelism that shards +model parameters, optimizer states, and gradients across DDP ranks. + +When training with FSDP, the GPU memory footprint is smaller than when training with DDP across all workers. This makes +the training of some very large models feasible by allowing larger models or batch sizes to fit on-device. However, this +comes with the cost of increased communication volume. The communication overhead is reduced by internal optimizations +like overlapping communication and computation. + +For a high-level overview of how FSDP works, review `Getting started with Fully Sharded Data Parallel +`_. + +For detailed training steps, refer to the `PyTorch FSDP examples +`_. + +.. _rocm-for-ai-deepspeed: + +DeepSpeed +--------- + +`DeepSpeed `_ offers system innovations that make large-scale deep learning training effective, +efficient, and easy to use. Innovations such as ZeRO, 3D-Parallelism, DeepSpeed-MoE, ZeRO-Infinity, and so on fall under +the training pillar. + +See `Pre-training a large language model with Megatron-DeepSpeed on multiple AMD GPUs — ROCm Blogs +`_ for a detailed example of +training with DeepSpeed on an AMD accelerator or GPU. + +.. _rocm-for-ai-automatic-mixed-precision: + +Automatic mixed precision (AMP) +------------------------------- + +As models increase in size, the time and memory needed to train them; that is, their cost also increases. Any measure we +can take to reduce training time and memory usage through `automatic mixed precision +`_ (AMP) is highly beneficial for most use cases. + +See `Automatic mixed precision in PyTorch using AMD GPUs — ROCm Blogs +`_ +for more information about running AMP on an AMD accelerator. + +.. _rocm-for-ai-fine-tune: + +Fine-tuning your model +====================== + +ROCm supports multiple fine-tuning techniques, for example, LoRA, QLoRA, PEFT, and FSDP. + +The following developer blogs showcase examples of how to fine-tune a model on an AMD accelerator or GPU. + +* Fine-tuning Llama2 with LoRA + + * `Fine-tune Llama 2 with LoRA: Customizing a large language model for question-answering — ROCm Blogs + `_ + +* Fine-tuning Llama2 with QLoRA + + * `Enhancing LLM accessibility: A deep dive into QLoRA through fine-tuning Llama 2 on a single AMD GPU — ROCm Blogs + `_ + +* Fine-tuning a BERT-based LLM for a text classification task using JAX + + * `LLM distributed supervised fine-tuning with JAX — ROCm Blogs + `_ + +* Fine-tuning StarCoder using PEFT + + * `Instruction fine-tuning of StarCoder with PEFT on multiple AMD GPUs — ROCm Blogs + `_ + +* 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 `_ diff --git a/docs/index.md b/docs/index.md index 05e31e4de..3a9c111b9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -91,6 +91,7 @@ Our documentation is organized into the following categories: :img-alt: How-to documentation :padding: 2 +* [Using ROCm for AI](./how-to/rocm-for-ai/index.rst) * [System tuning for various architectures](./how-to/tuning-guides.md) * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 283b3badc..827dfb050 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -49,6 +49,15 @@ subtrees: - caption: How to entries: + - file: how-to/rocm-for-ai/index.rst + title: Using 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 + - file: how-to/rocm-for-ai/hugging-face-models.rst + - file: how-to/rocm-for-ai/deploy-your-model.rst - file: how-to/tuning-guides.md title: System optimization subtrees: @@ -141,4 +150,3 @@ subtrees: title: Provide feedback - file: about/license.md title: ROCm license - From af84ba09c673003310f3b2750315ea3bf07469e1 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Thu, 30 May 2024 13:17:44 -0700 Subject: [PATCH 060/175] Add "How to use ROCm for AI" (#3117) * Add Using ROCm for AI:wq Add PyTorch Docker installation images Split doc into subtopics Add metadata Clean up index Clean up hugging face guide Clean up installation guide Fix rST formatting Clean up install and train-a-model Clean up MAD Delete unused file Add ref anchors and clean up MAD doc Add formatting fixes Update toc and section index Format some code blocks Remove install guide and update toc Chop installation guide Clean up deployment and hugging face sections Change headings to end in -ing Fix spelling in Training a model Delete MAD and split out install content Fix formatting Change words to satisfy spellcheck linter * Add review suggestions and add helpful links Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> Add helpful links and add review suggestions Remove fine-tuning link and links to D5 and MAGMA Update docs/how-to/rocm-for-ai/deploy-your-model.rst Co-authored-by: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> Update DeepSpeed link Add subheading to ML framework installation and closing blurb to hugging face models guide * Reorder topics --- .../rocm-for-ai/pytorch_docker_install.png | Bin 0 -> 56629 bytes .../pytorch_docker_install_output.png | Bin 0 -> 451563 bytes .../pytorch_docker_test_model_accuracy.png | Bin 0 -> 28433 bytes .../pytorch_docker_test_model_compile.png | Bin 0 -> 160414 bytes docs/how-to/rocm-for-ai/deploy-your-model.rst | 113 ++++++++++ .../rocm-for-ai/hugging-face-models.rst | 210 ++++++++++++++++++ docs/how-to/rocm-for-ai/index.rst | 23 ++ docs/how-to/rocm-for-ai/install.rst | 60 +++++ docs/how-to/rocm-for-ai/train-a-model.rst | 137 ++++++++++++ docs/index.md | 1 + docs/sphinx/_toc.yml.in | 10 +- 11 files changed, 553 insertions(+), 1 deletion(-) create mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_install.png create mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png create mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_accuracy.png create mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png create mode 100644 docs/how-to/rocm-for-ai/deploy-your-model.rst create mode 100644 docs/how-to/rocm-for-ai/hugging-face-models.rst create mode 100644 docs/how-to/rocm-for-ai/index.rst create mode 100644 docs/how-to/rocm-for-ai/install.rst create mode 100644 docs/how-to/rocm-for-ai/train-a-model.rst diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_install.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_install.png new file mode 100644 index 0000000000000000000000000000000000000000..8e655a3ce9e7cffa569e442635180aa8a77f96e3 GIT binary patch literal 56629 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 literal 0 HcmV?d00001 diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed4568d6d962ed41f551ca271274237399e29c6 GIT binary patch literal 451563 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

EhjlerDe59CjU) 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%0AGzoIzD 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 z

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%0A1h*T)atZyHL2-hM!yc{!L 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ìn%p7>C}b1OTV*2Q~O-i9y}k6_+<+) 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≫ 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 KTYASn^#1@rcx(y) literal 0 HcmV?d00001 diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png new file mode 100644 index 0000000000000000000000000000000000000000..66d0b970402772e46bcd567125ac3108305af901 GIT binary patch literal 160414 zcmYhi3pmsL|3BVYPRThDoroN>oY|5}MTBz5VIh{7vpMZhIYpt8Nl4{XIn8NkY&pl6 z95OR3=dd}SXWM`G=llEL-Pg5UyY{}`+xzu;o}Z7`;~9V3!c>s&INzQzhb>- z&q4H_J$suDAL3rAcC)8EF(-1c0RS9@Veh0z zhFk~d=n)&*+(Ht_u+1=z6L;6OI6#Mo^W0FcZQbSjq9|o_SV$5bwN8uCG%D7g#+jBI zMHi2S@&7B8r>a*D6CGd2g({4ghA2#AhbjbB!xW-Y=9YdX2oD)AdX2PqCT6wM8UE74 zS9d~T3ORspskgCOhc8f%3*{AW6ci(4L8!Jx@vZHi=<4ki*X9vP6eqeSv>*C-WVqBI zCB3xVGNX%fD8XqhY9XjS%@9&r;AfPou?qhXqqbTN=eeB^SnBaw-w5nzSsph@X_)!k zXSDSi2n^$OC3TL)zDU}&!N3?}sGdtKI8TsmK7wq$u*%oSIjC(qB70LB z7_Yth@jG~n#k+mNcq>UwVxV!Q({G7bUpdCqPZ8uRga+vBzhMu2wZV~F0Ya38(X$y@ zrhOpNqPaHv+|-UfHFN*Clk~s7MZZ3*u3~VzyXb+x4;(BBP7Is2-d|Ye$crw`Jmuvw z1ses&R#~;COrdKlgRV`=X0_WtnJytcSgJd1(WjOMn5nX-oaO(4d$|C)k!^S_dvsr8 z`P6yhJ0ev=r>}Au<;W6H?jve@3}ZFChR^}j@w6K7vIs52vN;(t);Dv9`g~~0L-ZLr z5(&{{GD#1nGjd(=9(ws!=x)yQsZ^`qL#Zo>cx^&5K17>3q?!s&N?A?GgIni&4f~MM zcB7mR_w4Z{j$JSWz!mKf;C~^qX-;?K-2KgT(t|ApcDL|=Eh!UhK?GM5YoM;Lpp&zN#7 zLdwTDi=dNd!ghpKriZof+LPE0=Ls_Ei^SzsEJ2T>9T}j_%J~|^Xhr2XfjuK7D!re} z{VU}I)KjS#`tR`O->feJZ?YRvb+{e#h=Y|7=v^4WU|a!2h+^o*93i+JYE3@@Q$YsR&p>Z~z6B;|dc zoT`bJx8syyqF<&q3XLp9;nsdtI_J}_k>Y6YiPkE1_9Q5EVA^c`0%TpEXlu2N^I7Dp zC0I0-zXfktrPJJiUOTF3cL~RB(SU+mE+bL1&&k2cRx6Bkyidj|3Fd~3tu0L=kHmmu zaGEYRD5K~zo6kML?dvMUp@He?nQ+Vta_$=KqIq}NEyq6S&IP9Hy$nZ^j5>8j<3cue z!%>-!7}wX9*^V%Pe*V2so3C18kKNI|?$I^1idu+-!d`FAxQmOGIlD)G#bmCo>M*SX z2^YIGlZSoTkKAi3i3s^P50IIc`eb#3_h6hsN+QRi7JtdU1Pt)~n_zqj=x+{n3B=-f zU2^o!etkD>`OFJtV!wc$N>(n1TH>E_9!3!i_x8diM6u zYhTnLd)B3pZ#4(2i%lE~wC7ef6<5onr|4-}WqR@OAIekABiQU~HBexeZGfNLxXX=5 z&TBAazs}Wag^+t+MjjUQ`))NO(}5TN1laF1y9erw2f_zEZ}^8$k|AZqeu{;}(i&J; zIlyn_kL;aA9ahj%(}_1dS_SHbO+`7GHw@`BMCkFLT#oey#kTbVuWK=gFeNYRnQ&tGSK@k_}GmTFj)CgHu2d+R7^Q* zV1JBNZ?LbkwR2|6@)hDpkaH_JZO&+x-B z4VaG&#l!gm^dxhUQI!9#Li163(omK`B#uBTLZ{;h)yj{SP!!P6v=5UIY9EA&9#>UBdc zQ9IXoy|STv>C zf&o)I_Mw`)eB0Yk4CZEbzOY2UrSw!&HuggaB@j4ppGtPf>gJ6>kv0mtePiG}zI46Y z>GFtB>BO`q6D&3WG;^9m1OMb_$%U-$x8J<$${+2~vv3qX_O5&@aI|FO)u)?}QoI^p z;i)2x<=Y01i(09E>sP;KcvN+6dF?Li`;w?&Q1gcGIL-N&67wttY+29JpbESNhRn)d z-RX~<<{zvt#g;LUKQ`hkXJ#m^*|SZ)(d)8~6s3#nmI}^8K5&UK^>MQHz-XYz``ztR z<7jrkM(Jh7-DV}~j!Q3i;a>YX+k=-F>tNTBHD`^j-7e1p@=crWFShgYMm1nVRRTD- z$poeQ+85O4sF8b@m#dLKpuhL$>8svk(oBUCxwM`v(TMC)T+3NrF`qYZT+g@3ZPDO@YtJYVmU@dOd$HGwO5krQ7 zS&uR*52>>r(nTZ|#|R;3K*?6gt7El3)Wz$j0XWkv>l4MaCzG3q6(ZC^y0Zs1;aBFD zwEGU|5xGBC8w*5VAm4DBAKJ)q_AJdeafgCF~EHq0m~gYSu&^*;8H)^>?`{t$z-6?oJL`kfAhl<4nwFn+ujx375L$S1cL z7|8{3L_1-xz+}qz+|Q{oQQEjEYjOcIxFh78(@0jQuECD{Qr>yOvgKhL6@xN>6f#-& zO-?ohpl|ZiL)rK9fkdf|&E(TQen`vv%zKS2UFxs?Q_LT5CEWPpAI%NrSZ51l+Z`{Z z`+}ojUI{*x)y8rx-`QrVSKXQ8J=NDGv-2sD>Zj#eL}HTEMXL4sv~y_M)fgWLlIh`(qp97BIq}y zhWUjhp2?3(yAmtgy427z1TQqyIWc(elu*Jr|+w-W-9IRmLIe(yUFiN7~J$y$9PSw%WGVZZ+q<_);X;eE|&NZU^o4Upk!M-6#w>?57pzq8f~O4%%khe!pne1agdsHi~2 zA3-H_IXlWa0%Mxd%@PLnX!8%*xKe_Oglrd1j(C6j;+K4#7IbAXH9FGe_1w^xLha3pK5QsqB9nMsB-X z3$~Yt5eU%EtOyoQ6Tjmeap}TGvEX+wfwim?h6+fLJoT^9FVA+UcoryjeE?rj>{8f0 zPsJmPMlKpd^b`&4^9x=tlzx8RSOu7BeKRjUa#kgGYQM{kK_7^wZpFJ(dT`%Rmk)Oj z->Mi;OeyUxSUG=fo2k2@ywAoHw17TvqeTYdhWdoHx!-Me;BCI#A~kM_hT*8KbT*cI zS*wxfE1kUREmkbGtDd0x;JhjciIny_-^_l=VG8GC7I~V)-ieipt1^_^MDlg>G#*7B zQR@CunMIYugM)+7fg*+Rg_quXqB9CgzmdIj@_F_r#3gv-B?mfZe%U_Tag}DZ$H~r> zvc^zO7!HT|yjKNpmQ4a650q<|%a=B%v~`l?7|e^zcmQ0L8Ul8BnSAUT{9t!kj3TY+)Gcz=ohWN4&SP37DF~E()W9FcNNEHq5L+g8ByN z3)vni>WY1`{f$P`&OVN2%nG@uQI{Kj_AU5LTyd^m3(z4#2%HD@=WHkZs!#n2GJ5e$GqG%X%xjeg3E;I-Pif7=llPX4+?(80&G7u4_vTv!R}@lQ!MWQ; z?Td~2Vo!ouBK&1wfR8+`JSn}rgq`uFG~AiJ-@H#dG+jzgfR&=TQ-+I>2$*RY zG<>1~iJ)23J2g?3z8#S+GC%~SXrU8LWCzM-to8FDHB9m1%>tK%CZ}Yld!GBZ&$>E* zSc(25SGDIUjZ0N#(9Up`9^iCOL1{$NF?_WF%RQzxlZ|Bv{o71GWxS1PEPt?ftViIp z)NTPez7+D3W!@;3k{{1^q$tK1dC#RW{R{s6;P38G0BL(y~`H9_&3Lh^8oGsofh`7ohlkH@SN?d(&^N*Fl zEn=AB6<};|me<#}Q$F^HbjC1&huI$a1mjclw8G0O7C)~9s^PQT-jS30<_W#G-!Z_# zSg9bx>i1wK*N_*@+4x43+!RZMiY@l&WK5QBJNQ+P%-q8?-yN1iKGT$Hs|e z^&)b8<%$VDTMbe;zCu>cJjQ+L72pTTT+XWUOzEgu!C_)+#o`c;U^n#D)p^kC4MBQA zm-e!ibL*Yhu2U*A_`owBp@*u4{N8c1K2FU)V$ffoiUu($VUfaY#0J$g`OCqdb%ZMh zNzNd&-lkp06~f{-u_xO#VClY!#Y|)AK`iNQRU-V@Ck$Nx!5np*+gey9V}IQ|cxOY2nieLJv`_v@NqNyz1e1}`8!DB8Y-2>}B&aQIdjsskPn0{E zrJ|CyUHg8?bx_6BUhRU#2*h;l%bLdb2@uoXCuoQM2lr+S*73XPY1a3^e&~Dj;O#KB z^m1m*d+J55aoUNq!Pnj*f2QR#ka9BqE>g_tHqM-d_DkQD=QC%Pi{rGNv>WBm7%tFx zYU{ik0(%avhD?M;eKKOfH$X}gI*MmzL?)EBHeGJjG%g>E4p&p%Mbn*DJcins&0A=r z8OZ2XkpFpB5>R7&_{*iNm?^!EmnD{Qc4J1ndYj-avWN8_GivqiS?`jAhM@#;EUHb4+_twL97*2Fkg)SB^-gWFpHQ&cuxO!#RQ(bTH zu}@e5E$sX*>xcVEpEgpLmt%YkauN|<1LMw+=42lfW8%R^U zubq`V+na7g>h#`)<6m9WaobdnKGCvKI$S)*DpQK_AjX5gb$@S-phceu*wy&p zou}}SXZ3jIH7Qg~eJQz`w{^!qh>wWoSmj2ldW3j>l)G7hd|s98_6}f?HCB{Zn(O$! z_u8pH!t|i@eOLP}t$gQRqwNBwXF@9DD#8VGEISq9y=ukpkytCeEF&-_}SGUd-BJnqd_<9}o zsP|zr9dFvRb>Q1Z<3Yn+-S)P3)&@%_3gT{ZpIgG*{^4=!Pj(3{gMQNy5q>zNHs}1z z{l$ewZAp?AB8?}|c9D!(Zb98MLSzbi4XR z4ny!FE2tAOZS-YTu0QFtp=dy8B($wd^l&J#`f@5%2spj2kgWItYX6=T&gc(H<&9FC$rJ zvWY8&@^e9*IEh-Na$}#|xm>v+Td!+gl!412Om?ov-J$5I{k)-qbJ^B$IdfRW`IlCg z5N8og<(L}BeEGrr^c>O}3|+dfxb1;tCtW+|uy9Z8o&bA((=)Jd?z z#DAM>W6VXawlBB8d;;3<4+@)E;V%iu7_oxZt$aW%fTL-DAq?@52lVk z4}oreKcvM}2GTy` z;pC&Ub?GWW&)s3!8kdiOH?x56Egkqi;92;Vjk{~5ge4F^G2zEr>8Um^k;l%=du6rP zL%(8*2F=o)%astHSG9W!STo&OyZOmQ?7cXzMosp}6?+9%*Lf937()K}dhvhC>kbD+ zm6^SzTN^J*$gT5ysl zE&Fqv+bq6?ZJtzJ8|^W_d0<@ezKhB3e%=aaqP9Axwq$2<3&h%*r2v6k(P&eVo`A?GZy8p`cEA1<{Xyuh^%{1b;I2!Oql{bHPI zvK1I_J$nhV21B7wFuT9MA^{`}IU6tdYPBykv+YpkyreT<6p(P0n?o7fse$=BRQB^K z_rF=*r{$kBjNc*O7w%OHjAkJ||M|J;?v!wEL0MoX;C9i=@y@bUWrM4~*cH4s{h6Kx zg4hw0V{0f$9PPqqf(Wiaf|;SM+_3ZgYqUp4rswo|Po>!UIt!bgmYppF6a9h;n!~%9 zvf@jZ!Zz>Ioi@>HJSD1_S*pz_}pu%4O z6r4dN1sL-zYv#iVF2wi9b1bz}DbZ8>1%tKq>iD{^B2ICorA>j3 zko>AzuUWE?EyAB32tbG5l=k~=PtUrU#krg=RxTu8=c9AgGVN^5(>22*F7_08xi^g~ zDNAJ@z1JccOI9Lor3xdgd0^VAZCHrs`sU{X;uZK)jd`1C=T^!2mz#_`sopO3FxA;i z!W2NwtN4b!?<6@Wwtl^=%QU1e6YO9?9J^4gI2Zn1iz?W?44{y<5JIAS`~0N+qI6y(**`oSBg~8)c9-sF2Tcv5Y)FeK?}dJd#m`4T zPclZmAEuxRjyTxozn9i!N4)7?>LK&4hE=jJzcV7mm4p&rO@su)eqnb)_O}sciuK4o zBsu*%pS3}#S)TnvdWgdT-bc~%$mxh3wU3h~&12GsD~3Zj0)LwtX#7ok*lnu&cV^h3 z-)S0eH*z9r5J%VVh$C?6*j1RoLKf73y%$ERVQIUTaK2nBdpmL%=U&DPNX;(2R*-C} z>RBz)x!=~nU5~d?u6Qo@!<6}hn4@IBkQ+y@ep~xiZFX7lWJbZ|XBAlScVdq-muo=w zWRt@jh2?hgO0Gk`gT1ZdY|6AUFGmn~XDd=f8`tF2Re}*ROsXM0>ReyTdGPHaOL)MmZ){1Gl1X&@xUBadZ`=)?5DR+&;`eNmBikQNl?8#Rv z6`9E;(6vPZ261$DoOU*o5DVS8z9O$(-_)LMXp>F@Q-2dfgwcdH4q~yJxUz0>I&;e_ z>yPL&zxvL;m7(k)=d}WFPh}P5>GW6(s4L+j($hX>hLzxY!yeWe>}9vv@TLHYAoMp@1|a8LL=;v`p^h`wX^>liffi6s2bnWhC$5K+260TL%O!7 zH0PwpH;jb-RPdLb0Z()m$mgBV_NslA_M3m_+P&DA4YRgz%5>y@ZWAQifpqwS$z0z3 z9hEut6Na=`LyMv|Ty9sHL>z7iK*J$fe@qevWzF~p?6F6Lra?ftNS8JD(yeow>dDEK z65nQ|=YZ-eL7C@1?ugTa4qYUlfUwRP(CU6?YOZw&?q<@lhq&;TC~`nZO$V@Pw=x+f zv!(G1Kj4^IhLVmyVRkf?5tnYhwFD{?vmrdwMXxh9Vsz!~Ba_hZ_ z(|3AuyX;3uOdH7!e)eHnpR;mEJzUG6>rdV1NCIZ}-MweQMwS!8K-~-tND}_B2BR2P z!LMG_@rMpgtGn&LN!GGv9UEDCFrMmm95$Qth|iVuz5e}{-S@=ZxSq(eZCQ@9#Q4Fg zMC^36GBZ=K=#N9UtOYhu{4LtM=DgaxDO9_hW!&h66H8_RLSM%=iW8Jxtel4nX7V~Q z<)@VSYLY)Wy@9&ev(?6+jpfH$fsk^?*2#=)x0KcDOwj3iAyG>!;uhcet(r}Xab;Pn zO$P{l){Hr(!oC?E=DDvI;%WaqISXt;n(vuhg-^!xe@e zndZT>CZ$@lkp zfLh6~4h29L!$DSr<(a|kt1k1C0uYjMdv^cGu3@YV`wgI)_)Pnc2rBC7bUZyMUuBlW zPgFlk2gPqPc619=W_Jt8Y zZuEQ&$X{ycPh08QOr_f;8`CCVMt+I%6XCXN`a25EvxDKCzf&IAWka$O4S$Edccnc; zqN6>CbJoWa7(lVUw9Ka0977(8x)I02ct?Ob4Eg1EqY?%#%zV0wRFvp;9Gpv`RACLttxDHoZ z&h7@zF9$D7zL#OVN%lckB!4;+g#P8puk z4-7Vi(anp)heC{OG6+csq>s6=O2I4YZqys^Y<;{(*F$0eHPktXY{5QHHTjId@J<(o zAuqCaeR>DfLu$pAV<%HQO*4E+g<@#&MW1Rq4?``V;c_)|7i$c#yfB>p&GJ-Mw|m=i z3cbbMqRbieu3)=1f8{Qn2t7$j+xZ1;p_jf=SWdz03UrK{)A`G?PrcAzgI`~ATrn&K zl9bFi@@wKNC-5m6SG_ts>kdNgrqimsl9ANAhQB~-oc?K`VmmZz0{w7iMSaL4d*Jd{ zIlZd7Rj3-aed^7&37wW5R*O3S3HWO34M6qGnBK`n>b=j*DnMskc8=_ONiouwY(N4t z)6Q_AmE0KKyc*UW^0OdPI4+_fP6h~HkwNG$XZ~7<;!O@H(c+#Fu{tQz+fIdxoyqVv zutKqD1MqjiCX&ANabMYdHd7&bW+~itTRxf_mQ?T7aDQv!6 z(D?U~3y^lE(%A)9=a;a(WIb8n(s^J-(Hg(2sSE&d8h7z7Bpp&Rs>Qi9<>Gy2ma3BUpAJsDMp;8z=A9oE%ItIOE0`@XtnPv2AxBBs= zMCa+EmB_VfGyNMElU-)mc^Y^kihk=%nmXwIL#RRDSE5$3hiXR#MzuWA<4o5!F_gkyb>X|m1UEeLJD0qQyN1?!*pfQXoFFmSVRr=$o^goEMIAW^5nCSPHpi>H(O-*+K<1PYU94yK`Zs@tAWA0)L{D>~ zsX38FY%dT)-@tL2eYKd_$_jd3*Tq1*hfxr|E6gL)>sUdhSL~Fw7r*kVlP@)Owy33~ zG8F8%i{-*QgTvKYu9Tr6%FefLPOqoq&~^q@iCphfZEjJ~smv_xQmb}!h?NstN*xlEU&BHAaL2;3E5e=dyKqcA@NhZxI-wX_+VeKpgrjGv?+P_$9>1TlZPeR z+;6}&M1>%K+YQEJE+EMeJvcDU^9^>O+<(fC%Kml#-j3A(VC3ZBtEIvCiF1D=NYdf| z#FPKKY%ly@2Fd^FNcnX1)L(q$fA`(L%H8(?1Cf&DxuL#Wu*u~3DXrWLAf;zu#^uN@ z@HTC|lRAFrKPq+><)ZBL>jL^I3u+m?>0ZrLtJ{i<29jVl{pO%d@W(D+(=+@X>^AjP zXPE3u=-`s5=^N&K39yk6bz!X^S-%=?5@JvJZ6DmR*p07B|BX6N@zclx2B(2ES|Vs>Wb7Kl-U&}ehUf-39na|k{wwLjPZ_Vdin(vvn5W^i;d)4npYZd>_{tv} zgU=WrgmZ_hJ414}5A+R?zAX+V2bL2577Zi+2$3F9oZh?c5cE?L3H6nVe&vLKG(;`GfK( z5$%w!ai5tNt3D}=YnV~*6QH-1*_SvqS;#Sf5~s zyiKjuUMwDTp`;7AJTD#(^h)aszsLl~jr@uk>6%0-&1Q8VTjqLwjqKwwMV772AX&Lg zo766$J)}_!DZ-U4K$+e3U!}Kj!p!8Bg^I}_GiO5fGN*0ueLLP{E-Wu=YH5E&Hy6Y5 z17aJBV4&0Vrpao*6Qz}oN<00UR8!dLt~MJ5kk572q3$L*p|6`BfqKrR?*fx&MJM=` zX576BAXaMZf@GG}z;ftegO5psQK;l!eKbhObA5GC*r5bN*XGiNLKNIvjAQx?lrI3r z+J+aN$Z<)@XP!AGd=_f+MXl82mS-q2CUtVR8Km49^8sstUkfKY)}pS`)y^hWJT)^o zNU~naY`wVG8Lh06LH2?4qRj5TpNun@TXAp!`4_y5&|mIUE*SHZ#HERtTG`{uePf;D z)Gbee(=ruTbMP#k3Xa{+wRq$=KHNlEMH0m~&wfC59fscWz0LpIeLhGTy3L2MUL@)o zIN%~+t6Q*+%O_qBCOMza#xJ|S+H6Rq8^mmRu>QuklY`U$#4OkqF}bueD#|OsgfQA4 zbI-;3JAeS8Go4d{VshC|j0`4#sdk^5cV5i$miKV_8m$8l3Q+(^RxIAX{ic86)zX#T zMxg50%hf6;9M{Z~LlmUTq*2eqcm`lf0{tbFc0aZnv`M%j}{#dhBpj?E#|xv_n0~7axTv^^6q4Akk3H zSL6umD|~wOPG!jSl5;N8rWYkk#YMp?-8ahyjpAuW@l>Ct)FqAHlZ#_yMcnv$@e-h8 z$MN>1QbY1UAh_1Bdi1ATJ%HX+(%Agf~M9t@4DaHnpmhSb&pW^uu$ zL0@zs#l_KBr}@VswI zosY;03(w`m;e6VhC#AQ9+yRaO$R5L-g7I@&oA~s#$>h( z;lc#!bcnRP>-M2>_Iui@(kd`|hV6F3;=A0|*)CmLDh3Pu8^sSaXd82nYA|O${j7e2 z@yQ&~Pk9o+9!!7H?TS-6jH`bY3>+;Uhrfa{9`tjq<2Hpf+{}>-{W_%_`&+<$qB6eO zAY~>F!vw&{u&-4KRY9IXNj5{Z#TdB0wi@NbcDcxXX5Fh=|>Mv)_H2q8Uz{eE^m%kS5S}_#|FBp@)P?M)G}nbXTq|8kYmV9DCC^? zOeYvRM7NECx=U{h8+Y^>y@R8S!&zZ8voD3rk+gQX`&?QL;N2H6$17S%cSci5C1v0R zBSM%Hdaf9&{hv^GKjY;8T;J-2^G$nOv0%>ykCC$jN!*hGn1@VEgUU%xj!jp7S7Yg{ zQ9eKlo{CV*`(PibHH-KPm^Dg9B(&uBi20V;z)v7~G9n+>K}tS1_m9TY?K*vilwjxm z-+3xUXt(dHTCRY$TQ`=66d;k8{04Tu-H9{vzBvEkF?pWlPbi}D07G8lO;m3f#3LumU*LUiT@b)ztPTTwUVF6$M10QAr+M9Q*9mK zUIjBgT9o9$MJsN-EOl3Nu?jZ_3!I zcPyjXOBC&V`T+{QVKScD7-*5x%`O<@1hvoTkN>8fm9XjV;h}6^AOC~Xyv0zASu*d(sRr-IseG(RY8T0jI?dIL1yLCh|Rt6q)%H(YoU01L@Ii>uF7| zTr2`%H|4QJF0!q*lzGVzB%l-KCm&5>eM|vf(a}vubk&*Rr07S^j!F#85Xb2w zCeo+BE*Ixq-c*@AVSF#mS_cB-iqRoj2a(0t{dI20NDwD?f1=ZuoZD(z3@e;^aultK zYeXUU{FL}xj~;%?lNrNJ)Mt(`%n!-Un#V5wG5?l)zOlfHfA7c{3{$Z#o-qY~djn?} zWQnsYH{v&=95lvgi|wK-TFbp9mH)8w08-%Z*ox<7AG?#=7#8~Ag?yoz#L*6zh3Sio z3r>}hGTOA0Bh0NSr;1Ag(2CWxI&nSIG*?p>lWxF}Qt*JcN;i8S@<^yfgBDtyQG`hJ zARE}`+FnFjt74~DGSrX(&_8QEP0G&}BYxaaPd@Cg*zC_u?KK@?M+y3(f3!S9@WL-@2nK>XJ2maT(25AF{q?gO1}5e_~>wQ zo0G&@IRTk@q@fxwG5e3L_ssd@5wf3?Em4u(V}o@(dp>rM?IKGkv5GsKM^hG z##3@Ql6Hu*d)jA>&aI*JP4j|xwMCfSo(QmnkP$npJ%a}S0TbE>QrMEBBNIm)=MY1` z!b3uzWJxx#`VFRBU0$yqZRw8s^1N{+^qE1kdWjYT$Z~@d$ITa3xkD33%*&Nr9=CSJeaHQs&R_yH+B$PVx`RIo?o zYvo5w9jbcg*spAF9Px0sn_0#!)$+9@hQh0dK!TrWNm#i(k{c#uTH5uJewjWdBy%lo zCSbUBtr3Eo)m>cR%iP~4yq#r=YzH+!NH z0@7qLd=jVa7pxZPa1or4X@`}5ja^3zhgk1UW=`rARSO}lUJgLs^HecuS?!1D5$EiH zWrh>o6^K0no?D1RRM07>p6%W9U1wd0k6G%CG_XQ;%2sl+HR}?tXA?8wqzjCzsm&Z9 z27^h+A>#n>UexG;iM-Oi34&EIqT6Q)iwptNy%Gxg_1q}&)u zH`CLO|KiBG;9mX0_63U-}L<B!!P{5E%~lD?40X%Uq6Uh|KjgZ+<}JuH<`zYmJjZ84jx*A z1i!vtH~Dy!RZ_NlhmJoi_aHLV{-(?TNegXxQk~(H{fpe6R?h$QzK5drH;F|9eXrul zWwJLZPMu8fMHPyyygvCZ*(BM9V_>$uwKMF0Du6JQF5nc$I=P`I{Y{K_KIrmH+2ppu zI4X9Fwr5qLv_Tp}O=fjX1y;_NE#9W<%Dn*EQPXL57@O~-xP+8(Pu#EDwam|#^?;-r^!;YO2eL+kK3nDxUQwxfO>@t0NnHm9IO>oz(8}uYs zl*_^=FH`2a%cZ(x*SN)?@R0?pI4yn#RB=u2F-;GY+?@~4oG9QU1I_&7C!i=fZKYaKBJqSN&S~f6T(HuNV<>hhL^+_rjASp88V#s zgSBAcw|;qMo;*BY;Zi`BYJ5Ic_SxTYC?eDI)lZh5FVK^khi66Ye{mypkmfH5NI#U`uPGw~763FN*EEZhd#(K?ge%+o{+8Kri;a|h^dXu#N%ke67|Ar~LehSJgD6_?_ zi#_L#AB!blfMlx0wz*||SKPMmS~mB)=M<0~P=3pcECH&x$E|Q&^paaNxD$V6P9AkF z@Y4%AE)_^Kibu9e8wvC4C)$Ek0Y$Z22M7{9d>7`qv$WiTbu=LB;u++^VpjWBhRtoSrj@CyuN7KPuR{ zKR<0B_(18m&aEo^Jo6HRlRDA8&+;H2pfF3U1mHwY^C#`!q?;Ie~ZHZ?G1DKADE3>Io)S8`)vMOL7hnWXQ_ioifoKp zTA{z{xI)RTVF^M!kaw?to0~ioSd7}f(1P8P>eC@vFaPa28ULUNCkHhZb(QW_F&zEM ze^eQjNE>pi6I`R(L7&j+oSuF7thR9B}Mebj2NUWe8i}8m@RmyIBN^T9RT+U)npR6S|gDjER?*9W~XW~P^J=K38 z6`MZ^z^AOJd-Ojh(ilcP9+2MPyN1Lv?1)*$e+Nx{D*jPH!?ejOn^#^0uI{+c-4bCd z``i)*k)z^56h`XX=L@sWekZ|`>yj1Vj@ehgbc><0e`R&DascVL0uk0U@(5wxytO~n z%5}SeyTbTpT>93Q$L@tjS-y-4)u%iXLv>~}IohQR4!85DPs3;j*#F_OwUJV7UG;Yf zH-*&yCX@{r=JF{nd{@a9mJs2dTq* zH>X-;+Pt+(N!RF&p%54Av*QATs6}&6zghD`-KXF|Gq~C^I+w7|ziyBcam4iuy%A42 z?JJ$|f{zHA=gv33!X9=FXSQjhG@(cUlx;V(yFaTvRy&}k8922fxu(q71b19m)9KZH zj`6|*4L`}PKQmaB9;ZDU0q{m%7yetj4leu;mk<*}HFFZ;r(japH$UGp-fhV174vXq z*cPmiGyjb{6u!*#Y|L!`LmzAD{V`Un;t@_(Hp@w*2TheyM5(@VP*17Y zM`pJ}EJkGzdJ@z!ML~&hoW^kro7ODNf1Pa5lM6~8hKWVIBpRF6wr#HaGY3fz)>8h#Uw83|8hz~^!kjcLcjUJGt?7|fG6t)O4%q#X zHBVIA=qY>c1nTRWova)tqiK(PY@g4ja`~VXm-ZL#S6idXaQR&8%E0O-YV>+1W|aBn zEe4GgrHw(g(`5?i>f`tpp9<%62-bTCPyij)gzGVbc50Jvkd))9wg;9BnMQ4rn+^*t zLrsX*3yI}Oc4+okD*&~#xQqAHm)Fa}hLJ`Kx=ho0rU?x5*i!DSyJ3yIi}V}F{tecQ zs*Sw_)?gQhx5Xdwc+OBETX_C|Chd9n$+^YFTFx zX;fD>UECb0rtR<&AV`eZ$8>4+V?EJp`N~#4oYSead%v+uIn9ch#oO%xfUbtC!qmSb z$y`fb03-?r2(?U4ZT^2$y?Z>XT#1eB1In0vN zg^*|tbLxOj&dk}0n2fC`GsB!_F*A%|v+eu7KA+#`x~|`U{%~{H_I|%#&&T2ZEE`0g zo>S-oBL?cKTRk|CjK`G~@SXsfMI3-OBQU{R=1KL2v75~4r^cUdBayzJI@@GeLSB^P#+^^^{@%kj`Of?%OW_{UUR+{SA4 z{X~RNpYu|%`l`!y4b1h`OR2r$h%#AYdwksRF7h0Y4{Cdk&`>0t99C?vZQ`wF-!@xW zWZK0O%W?;4q?Pr;i>;)e%X3O?FuO_5)*Xkv_+Cko`r(tf`;5TL$hi#Ufh;u;&U8J8 zaR2vmVARoZ%S;RdoXl5{83ATEN~bPRw~3HOy{CFfqv~Hdx7k*0>ZL`lSVi}>|Jx|R zsQi7uU>@D^&crZtGP^l5*FQ|L?O+Sw^O0KsLW7ga@`o@9ie9J2WLaF>z7}H@Tg?Ti z`Sf3e`;T_;SfUGF{;|-{sb7(&1Er3nrns=)1FC^lNWM`Io%FJ*q&U~N*2Fs%YdRvH zKU?xgz0n+^-6*#u4Z5Q<^ID3r7gDq#)~C^RFjr!y&BeUXp&yc*0;<(!$!ZcqY|%@d zWyuwLq$fS5HPYe_8ra$yI`mC4TiP?9ujvgz>(hMr0&3=x_HZRNsD0!Ck+oDXgJz(Z zt3QIyz`ru2U0277XOozsV)VjK3Z{~z5@6A43{i&q9 zUHIyNRTD%Y5cYUa;DRri#Nn3sT0DJ zyZqngP8p}@BaaapHf)5{Q&5TwWgGnE0A#-r1KOP{y5>?{rCN_n%=gKcg+vA385(N* z=Unhb*XnPfukFq6ym%Vm3QdF9yb|lYaKm5~XG-p~isM@mJv3UmyKYBY4vyhF#d=+-PX=a zKVDc1m1e5?9718g1G3VEEsabTGvK^uq~>x_S9@i~5OimY1VtptKUyn6X&)|^WY&SN z5?=A7Kmzu=IS7sOB3!=b`nF~_Kc_Cm4$JRBWke{yRtH27y59nCyXPj{rQMFCyHO$( z^(B0nO`Y)>b%uPikWsx7>@6~ApHihthzdz)26461G5QyqP3ET}`n0oeH4OG-V+KI6 zl6TV_xiU{Z*-`gHVG;svAX*Rqf_cQ~UkT7NyO- z;U9cxG=hj5`yTSD79x$Bv(R4Ozs}eKYL(E@f92-eWYU`=yAZzcTPvZRur|E)Plq5V%`7O3Nm-!~|%N{Fp0sjMeF zJk)8RI}m|OsSiIm;P|r2x9uBjDYTaZy3^JSm|g$({`+SCeR!c5iQfTkzzOsarC{Vd z@bCx5bhAeTD+i{1cJhK@TEV9&ksY?f!Y~YSICs_ggz0|2b;A7s@FaH8@+!;IDex@u z^P_}0?*-dY-XV@012Oxtht}L4-KtSpy>+NVN;Gv^V5$C*CxwDoL=9NJX6~2?ympl6 z&|q_{z=}l>V0_6r zOQHGO%6*7~0)vbyXN`5n$#_3zZ|jn`uKjEx}Mbz7L;@EcC5yF&u&?2B>oDAKdFoQ zb8RK&V&1mOW6e1Q9VcOV-9qNo6 zPc`H)HBpTZn+VcOrgNW7ze}+hSlP=F!#^nGSfmv!tGx}A(d&d293s`~$ycYRran~onl^|SP}gjA^%3Wy$qf9CqWi*G)q3hhFY zQtp@{PEf?%?by(m9&%!-ve6y4OW8de-Y_lTM6Wt=_UZX}n%+Uw4*PXjki!^II@;ks zP@k{d@A%pFtz2{oaH`0phMo7?PG1FFEm(~8@l|@3us$x=^^j{u0E_v2b$WeB(VVl=xxHU4vc?(}Tbvp0W5D25_C7Z3WPZOEeVP#-Cj8MQkd z2r!d|ImfT7m+>i**0=Ps6J-l8Hapb)QgY9&wV9tb{epPp7gn(zE&Lw*4Vq zPpvl^GART-@1Bfv;9&lH7q$4GyC{2!@b+WXR{i3A4$As`%iYPf&xHF?!C_j#Rpde{sVr%0WH!_=U#Eyr3F^YnaeXK%8`-$0APW1{7a1S7P3BwgvE>xpjiPAm zvhYUQZu86yi?({0EDb4$$428Saic*ys4t&D?y9NUTEjxq zSsg-BW&-G#vo-o(uZ|-1w{6b>ObL}ylX9n|Cl2!AD5*Z=Z)V@D)VMi zj3((j{CJuTk*}=u75ne(#$!vOSg@AD67mt`5xf+t05Jl2StE>nEOQgqRY{xmG~sj> z!8{^&M-M`XjoYFa#RkQzTtNF!evp! zk@+r|qHV&SVWl5Kl7AS=4U6pqph(v>HKOVtx@~$7k0uFSB5Xe%Q>w_~y*}MxMz#qs)JfHrF&N0RPzL2Pe$O$_DyUUG{OA)X@lj#aKpJ(GC)k~RT(#&bwG69z&8RHnJ=59FsK4j#&$fep6^Ii8r8b~u z=n%Cmh$x?VxfAaWi53l2h$MwCyiiAcPUi#ByOmc&HJ`g14~xfr4xrT5$2NqH1Nx|Q z{P9Eo>L0^i-ZCg@NK_k1GSFbULd{yPbA(VyY+x33zr(PlSB(FXe0mRIUtZOxnTzUp z7f-5Y93|o2(-U+D4(#(BPY$$lYqB~+0Ju%A$$*O_L~}FzSUY~Q{O=U-vO*kQdvyoN zQtS9Rl#@N{hkJ!xhW#n#?2P(}_ZrUXfJ=fD?GJgWofXcZe~m02vJaiD*8WS{9C^uw za1Sleq!PFbmwShuJsbi#$EH+T$Ga*)6HaNry`5-45az?_$_v2o`c_#rUEGZf&?{PlRiJ_+J0Iezq`)&=kh1(fb-Xxg2Uc);aGHj}# z9$B3+9rSy-N*ha``iR~INn_GB9-jYB_;>)tO#eAH{czTQgX-~lx_7$q|M#>3M90vj zQJ86uY2@tP8_xqLMxqK@l0vn=BE)nXV%$6TueFyf$m=$=(+?PM1|aQj`-WA6>Iq!?Ydp5y8Lu zLm=0fBaHmsUFvBZ%|A2!yXN}yqbdWHSL`vWtN3lqsRPG4*WKRq!EvFwx$ zfCg7twQyu0@fPfgHQr~OoKRP=e}s2CWN+T4rY9oks79G5KlHsYd$YP6%6~$6y0I{r zu3gcv&^Off&8UdDnog^du$WXG)`B34uQlbyd$NBQT!w5Y>Bnw##Tf+W8HOrHvT}bi z2-ml}R!Jp1J%MebyRZ9fz5hJ#3+o~-$PHE%{U+v@g%aiwp1*MUWN?(+^6G^_g5U*n zp)>J0&ZcV9Kv#U3v+XyyaLNAw;k@sn&BjCEiH3NtB?(U36Mb{T2JX;cd!Sn5vl0sH zEPlx;{WxiAcG%paA}YH%XyGL=CB9ET58JXpd`eS4&0>sf+x%k7DXC+imtFlN1eSnLs`MbdF zMv-XW;DXe-;`KT|$IM5r&jsR>dxtIo)A-u)-FTUxPh&&55`{N+x1Oe6onS_^^FKBVXh;)#-+7^gkC09cY$d%v5Q5v-0!kzcxHw1@nWn8(d9_pP!q9<=|;G^|HO|x3EPoNSi+y_$}eKMog7O z_{Op4%tE}py(^qg+ZuzU^06HP(${MLVMXpiNRtV7`?6F_FnNt}l{;%x6^NLJ9$<+t zEFo)7B4K9f4_d;J+>gT+Ao7NiZ=>LC&_J4ZIYVxEmRqvZs1&NY4<-Fj1DC#L3%FI{ZN2p4+~=hB z$&9Zdp^tL)z+=TWRCALy>sxkg>!~{Mndu6pjmLL7wAMnEUuxp6Izl(!$0=7dbnW?9 ziS-7+m-T1PVRd%Ic5D-wJN1Xom9zuQ!xNISj|rpO>^#CwxY2w@;W@M85}$~jv#=C90Irjdk8lQy4tn+53Jub%ckZwRa~b8omTbeWk2Mct0NQvYJA>bi%&4?xODgE6c)xq@ZRryXA?R8Bkyc;7I zG#xTf>}L0Od^5N9Fk|>P ziEB`ceAbh8QW-~@souSKI;7RtgQ_T;B!4}bM$@T~1Uri~g{e}&XTICfB;2#hHzLl* zQYBT-78A-0_Au&Iya86k+{wAvgrOvXf6;uA<)&1(3#di;E=5e0apCKvp@CpmXb95W zdl(14GBP-{F}}+w3fx|nCvC#rH|I|v_gx4ug?loy5ELuwbSa;~uROF_Yiyk!^ggZE-VDqUKByMU|Ac0M?w z!fqZCo|IO@sw2xV?YUkLq2I#2u)0xs3nM78jHvz()1{msi03(DxSR&X-ity;h!=%Z zZyhGCyhNNT^G7hi!+E8MFXz@@;%-=Xw)-6^NqxXRHYI-rZDhNp$bBN|mwhs!a>t5G zMwPDtX!JcQX8FROGu=8gcTOEtS2g1GIk*w>9h1)88aXfaYw+Co!v)|)kyU`v zG-oR*{Z&z_C`>rix>G+lzxx(FIUnk+Qc8Y?ChmgsN;B~7Qt%Lb-7gynBDi;kTi2!M zYjVX?6Z?0yh$4<4U7|8H z-95eEIDm!d_Q@vs!GS(cHKuk#3j~J`%y(-8q>qgNAotFy<24nS>p^xtEX69=hq6nc zO}ars13Vx@7(u2#_L0@*?5|^(VRy_c&T6O za&^HyBO{d&hyEHRxB&2ry8RWRii9@zizE+@_>x3;w+pZI3)>mjHBJL;3SI^wJ#4_t z5J$i5eJZB;zb7!4|8efVU`&q#xtlfsce|%i=jrI6Ij9kxPO963Il8qmb`X$mU)C{P zCd{@W_mF@BzDx}@_X{vQ$4A#rP6BSzPXGZMHj~X8(wKk%W*Mv$IK(E8J&E2NvW}RT zjI=X zW&E>H5|E8!$uNpvMak)hZcRe1mDYwuJB|jA>^}zuy>f6=X3)3_WS8`TG8hSlA@R{NsOA*ec()s(ZtA>fQghB8^_yHgDf;OJ zqfuVa{`u8A6$1W0BlMp!3OFGF$mV~p_W%9jOETbI4KMdp`Zh5ChC5@TF+cML|M{jb zw=dd{56skSd$x&o8Ca3N_*US_hmgVFRXcC_z-Kp{94GocdqKGm7bQ`%F%MfNVor`k zQNCbm3XEm^D?2`hta`+V>yCjUfH|5ew02?hoiT_LKHj0R*;8K==Is|Am7~`1++Ss zwF0=zYr;GkH8KjNP^Jw>q8Q!NwP2aBt5x;+(<4>B9AVc36jfkm|FL*jjaEE4@ab$P)j8NVi6y!o|B3XBtu?R5I^tW;aE!hQAO z_V7WROqF^RWqwAct_obtH z0pqe!)!Ml{?U1dVZmysyW2yf${j0imxrJN2uIejBZW)Pw#ooWSwPhGpeL56il2FY=7^DR7vt?hG72 zsxkR`8)Asns1EMFi{nFL{15C0gqKjJrS5?1n{^<@t?=`&+Vl6IWx~}$=UtthgAD46 z^v=j6_Nl3}IoTNSf_^?XFqOO^77e+UgL_VYr&aXNg>kR;?~2ytcUKyBOj=|xM>uNT z51E)dHC0>azn%EM0oI05SrA_A{(+R5uk8>g?27rv(FV- z3e>x*EtJ&sG#^8R>&ILjAj~t2i8u9sF#9IyKLblQCttl~1J>4TdvB@Gvg1$+^)hx^ z=E}|;tRIYBgP}hAx>dz+rmQ%?MonK$t+b;!l{|pu{uVkoe7S>_r(SKPG^uY?edlKXC;iahd(n+73z;g0pMD*~ z@H_kL(@(;ABQ`EfH~X4f^XAE`0=wZp3N5-b*#6-38IG*RH0PFQDAwCcPISW?vv{i` z2q>FiyfT_Jbqn>( z<!06?_?=j2U|Ny&cr>=oZ*QA>suVaVxGflI}n;kPxq)Bh@l z=y(7oQDunxgSkq$zhy4^nD@)gVozvltxD{0?cu}j=*wbaMesn2s$iF~AK}C8DNL7p z2B9Bc751aQ?qk>@0mStkzjzxMkNc%*HsZ6pyzHG&LifwfbbE7Itan*JA=CL}PRz>d zjv$P-A12sk(s{gV_C66fimvi9?8phIK|w~tTDkTIAK_`F zlLjff{+WSm5?D_i+lI>|vKYDEL?uhA6f-00XI+Ct*89lqnB-nPkH|;Tm?Y3xsk{p} z_&PCB!Q!jK?R!q*4CnPL_;KWgFs*g5tYt zK2I}Sr|7MwV7O;Mm#mDwMeFWCWWg;}SU$CQPi43dQW3%ko<7{5tcq>XCRYKNNKb;T z9Nt6?>&$vRcB??fXxuJ2Jd-%F_Ujof!{-7(+V*?F7)p?we8-ybab^oHw^6SfCaC>~ z>F`O;sASvWN0M_uw~171C~dg+g!48+j7y4}LZk9XDzc~8x`jP_H!E~@tnPx((eX9u zAx0HX4GY_kQPLlLkT-Vy+gij~T601SgRzM`74Bknl>hDro=h}t0tUJ0fJHM2YZrHb zOk3e}HbrDbsfP9DZLkQfoU~uz=Ir7$xhOtY%fCT7CO>4&dI0;r2HjGiQ?WfeEdb?j zYd>V2F}*8`B|kNq&_DLFf5|G&DDqFJgh+R0v*Y8=_`@HO&AgOQ4mvwo^_R+Tau zwuRNE8P=lbGXtzjYG^pE)}srcUVP33WGPY!o1T`zNwJ9 zpp11!gwdt3*@eoosgwA7uIhU_mfzn18@>@|>&r)HMC7IM+3Zylh_yYcU&x{3Zg6au z6LCg?{gif-C^4RKG`=RU?8KSPmS;Utl+C8m*r{NrQcj~5J1hUxWAiz#5! z+89qV6DD0qHfl_a)K4FgwfV_Jhb?fdMnvM>$=y@rvh|Wes-gmJd8ytvGTLV-Oj)XB ziMfRS=>oY0G}ZI<^t^-DgDVcVm4i$B@FanOWa^q6GygIKleju~|58gMC$K0O_q2u# zkyZfpx7$|L6EiU3!^i}6I}fyqj+YVgTLaPkG7dc!Vq2`XTH+2SwZ_P}jqRDi}iO%XrpXR~{2T?}5-Zw$^QOVWZ@1FM( z)XO?Ii-mvAU#60;fohNvQ8&0f9qP6qGljBPo7?Sr5K=b?@!=um?#&UcBeNpg;ca`z z{!&BWJOUEfza~5vNEp8cpz&_=mal-J|Hamwq9z|jsF54nv7`zw14e5EE~7g;iBbK~ z^(Q&Ke6MSNbo`u`fn73Z#zaFE`|1#?{E|5uo)qYOH^FD_SuN^)7%}m3f5gABWpw<* z?wVNbE44Vy&%C`N->90VyloV*q5WlhPSgiiMd`;9RH|BJj6{pPXKQp*$jSjgOW~tR z%c;u?){P<^^?Mz=j7_&iUe%o4@;hKEt)01(@Hu)3+#&T++FBLxvfOSIinZ;n$~-d{ zk-oP=+U{7%t24z_>sO~^WS<`8^aU#?lDJp#-x~y&%^IBm2|Rmq^W(7q zY1+4o`MOONx&3OYPGDH20mEuJM)3N(r-@i%2&-s+_RX9h6;h~j?Ar3W&Ch<>9-AVd zeUcn33y{tne)mo$-=}9nIUeeje@+w@e0$!WkNU1(2p{xgyZGsCvHIL74+FH^xIYo% z#Gj<*5o9;$xbH|`e@PDz*Ea_~`BYU^dUMi=H?LXB@m0>dAJ=ZUZ=DttU2fWXe6sx- z;>wp7VBJnlvh9Pqt&tyl$2zMfbI^gQ_v0_}PU)II=QP?q3c4G{c@sXB4c;u%FRdiH z$h@rCOVtDf<7Z--*-w9_S3wGljnnG%Y#8xHnWjX|ycK0;!}eq~Pn2_yU-a|;1_wu;hA&o627XB0R8|GqK`hU;!>ygu$v>2g z&=uh-l8PE!G`!*ldi(A9>f-)6J#B~^2oVa#s#%Ryj9v1U1RV~L@6WF0q^xnK1Lcg7 zM~bG8@4{Dpm_KKnZ5Y*Q~^R+;kFpbJ`j^^k=Q4WWR@C z_+V7sWX5o_Vq17lk?x4NXVK({!DC-(093Znsl%l__kkMf<-it$SK}wW-@1U0Rpn>3 z2wkTfuWAxcRBEn^#o`7vOss1PXy;k9=Zskm0e~M=OX&zo%O-{ZG2$xf50nSDeNC=C zu5PDK>c0{6Pb%w`)eFb0HQnt*BVn4R!J??Cvf5XNrOLjzx-}+^xk~)b&nNBFD_=K?Tszz$-)B?nq>kF1U!5=7)sQK8S)il+Nho;ue8KnA57N#^ zd74SlIZ;Y1?A!y4vrEVOO9x~RXGxA3x`S zaNK6|>eZEKU7q}~ZE3ihgAqRB5j;$VXYCf5KC-xPVAEJPS&QmHA&-T)?*0z@8~RDn z-}RAn6TIcsmU-g>I7$9)ik%>hcuKg{TaP8w+>W}N1%AH5k9#~+udE9D9i}XJzLA)r zw`OxuC)%R2B87K4WmtCbmhtO0nBd9Sp10Kyx0KC`!VGI6;wy=i?KZt|sVm#;hV{t3 zyOTZSKCq>I%HfACKM@@@>qXRZRL4d{eZhzcDOKP6D*;n)pQGUTMAEvOdSXx7QFtW5 z_3k;|QBVGviCRxY?(HBLyv=uXR7Mx4myg%gU}2!0k8O^T6_#N>K&#Sa>y#!wZ!~D|)TiEJ z`)rehbz2~u}%=Xy2BTgttt>N9mX?)AI44L7mjIaW85 zSZgn)4*NWTSW@n|mG5{ac+Ugarkl~qnwQvD)E)V{TO_cEeHSfv_b{eaeAf`|mMH!$ zgsVdtnX_d|xhni3KT7pnpQgU5?Lx+nQRV{%wKZT+=7mOpWql2T)|xe(|VcgFa0eXdxcvlhdO}rKT&vsf5lhDoh%kqQ1nH! ztk|buk5dZ7E_U-~;dt#kJz7o(in;%e{fLchOL_(O;sO4W&B_Js0@@48sE*WfkI&tk zVFn-;zC(+i_;YrnmUT;MGe@hf>|kO1JhD7p8EzsrqpK$zoz1t4AeKl7w-MyaY}9&c zeS<-tqC$6cXf1n14Np30c*+);H-c2_p5 zDQy13wYlhCfTOE295gN${iJGZNy>?M5J4CV7G7$mXC{)ir;Eh9!af9pW!p0z&%Wfv zz^jcm5ij_{B>(oiyema>HWfD06!Q9RUzbFC^n%R~B<7<%&@=4NLbwf)C)JnlM^81a zZXamPW~WL%nd5~I)o3U13iZxlC5u{1OLDP`m58ci8iV;lGPWI$W$8q|jB!6;2imsxR2kX8RM8qB zDCoBwreyda4L=j6dH~vOzKQRqw2^e*7zydQmb^avr8aivxX5U&xLdAav&3K8c?C^0 z-%q!@wcw&P6?f26&H#_n>qe2+iy`f|gArxiQ=|*%(yIKy4!;Fo|9IOS3ezf%`r1Q6 z?XO{_YhxR;2w$hgQX3zkKL!Zd;l*}{*KOJO{B{&F&al7Clsu-jKkK;eWLOWn3V96% zfcm+K2cS@x+vavaebL}P)mmM;b3j+)K4rsVvx8q(?;|{$Tx!R4L36IJgo?hw>#Dw7 zzkcp0*NOGj(H@K)ajnZwz9VK^NWBHlF1)#&z_&CSG)myFR_h%6g)lHdN*DEYa_W$~ z+{9Ow5*0c^_K;T`5dbl5D;h1$XFQCo4JZ?8@s3N#TA|S z_vszf#CPeqX3v{XjFVSXqLFAgEKOrbUFE{7jR#xhRa@sVY)b;B@kKn1_m>TH^_Osl z=&XSM@D9KHyN}_jtjha{O!Y_8+2Zh@Zy-d0QKNH`4@j=8&#rDPwjD{(iua^8Z+Ii} zQOplj3r?~dwr;HrMxJ#b-9d7G4rmSZ-5;Uiw&8^-x8NjUvmCy-WQ;pZwzchgV{^)l zoQoqgazlnLD3edlsv>MYi#=CPgcx0p+dGl9$cK9yq@AqX`ud|1gRG zx$O;jKiFEeHG2K|oJlHthqvf^bKeK3n3c2oMn=SXl$eo6B5}*qp{6B4XazNq|6i;- zKqtfjd%+5qCR>KrLm$KXjh>u?hS-2!1@E!BvIn5=lfBTu*jzSyT=I2a@{Bm1G&R`v zO(n%H*PB@i`g@fOGDwt99($NjR(mlOD-X2~9cdMgTpzvmT8#N(JCJ89vsc`zb98f< z)bE0G^QINs?z%!O&1bj=XMIi6>o=o0hqyAh_u65D&uD80PzGUd>kHRUxH@zv?hieM z8x{dVYq&jI9M_8o!F7iPB}_GKa)VR89p`c!&y?VJ$%8|8>}PXAH{%8S*9?xc?6%k*9|&I2#c`fj?vk2I ziA|%KOcPf6v*=e9-Y)R$jPDx5YWq-ar8kRqc&m(n3v}i*YSkH+BTF1Uua-N&G+X+t zC=$-ZlIWae#VLc%jo*v+Mclx?N2eI6BeS``EY<+`Y}Q_(t>tXzRy6xHHPzpLKgt9) zK)3|6F%lt*6#xfKnx1tB0Ss$J1zSZt|9uHpvgGJEGQeW5$aptpjeSe;dFOe}-!jm0 zFXXB*Z^=ER!C!fv7na*Ig_zk9?v?x8_#<|3WEDUe0RAuu_7jcKm^Q)RIL`B zw5<9D6t{Bz5o~#&u&r&U|H1L0r{O=$fTSWalZo-b!x1-7Bq48-#eSD5>7Repo}&pm z#?NSWy|dX;FOlp7sK_pqsG_SvfPa%ufsY94-G#3|os2huy#qNU1)86tjb;$8^n0Ed z>UE5xS)7r>5fzzl5Kide{ARysM|2Z;7OWFkx)8A&U-5%?e`IuJhM$ZCh|qd=XqDDQ z8zKKt2!Qm5Z!Dx7K+J@1-I`~u$0}{F!It0Mht!Z0$HYgkx{; zOlO(wdry`K&NFgO{x zV6Df;d1#VU0~3q?(nwYZ#Mp1c!X;vY!4_xR$}fNC*vRw`MC}rI5`uB6cYX!(-{85X zt~BaskI|Cn4YXH}R^we?bH>QoENi*nu;UY&5?->;R3iG%b~nk#b&zz7;G<#ZLMzCO zKMqAgO0$4sv6DFS-c3MM$9Jm$P&-xI((y@O;for5k0vYoyN_?%3zP#ZP71moPEfQV zOes3R*6;FC74D@tNgujKPYSpk+ZnS|SLo+}dM3j9wG+?%tWQvMs@TUj-HAsYYwyr% zchqVBy}N4{q_6b(8s9L=!1HG)tT#jygQ4x&3X<3NIj5HRePOrH7sKb{tyK#VouycN z1L@bmkqdo4a0x#=CI&tep|`1UXZ_=)rC;CTRQf)xKcm%)<6poGftd2$QcJAw}4`!>CnnwtB)Qzm)l^!NABgNe={l9unCjv!7f z-3Cdj?U!~fsO}3N6QH*O57!m=e3@45=a%K;_oD{oz!eUB6M+ZXOBGVYEb&s!EW`Dx zl2Qc+mv*;XYNNg>?ZQJ(rA6C+kgT|4uZv(W=hw&uN}fpbk>TCE$a_xeAq_EYTI-~` zcfZr7KdZwCbo7N>wWl$XI}D15bW(!n_iS~uDKpVI6+VBSZRr%HDM(R)@b>+Xq^ckJ z&j26;WLzA+M`(%M5`}qpFQ1l}FLYecn1;CqIK zKXtaqZjTooKLDKki|wOYORRIAJ+Z4S{j_CFF(%in$bPSo9)UWHtk*`ZpQP&D zixl?^RAV}myo~`b8{qFlXEuPuN)83F#l&Hp$G?PBg`M<$uk|pI7@>hnh&I0ahf#iw z>(z1bn`OV2QBI_icX)s!+#(fw(bWOOKFhYPbBV9|^!VjaU`dgr^=V5Zb~W`(pFDun zg;mmz;C=R^QX%)KKk7Eof3f5wP)*Nj6>>B}u2l}STxG0p3iYFA@@BJ;OHsY9;%^x- z7XyJvbAGm98QBDnqWGWgsDYa*Xk$zK0}HP+b~)KGgV2%D&aCq&(g{HNs@x?X%x~BS zYom;E!_&6Td4A3Qrj(@;4=b_&s|RiFbb6#LF{PNXR{xfVT>7GS#%S}5D#L@MW{vwY z{XSUvQyw^)JzX4bMX&I`8W81M%vz_$5Tz~nJL%v%8&9WCHNf@;3msvqPNmMmR(M`? z>&=+_y1^ioCPL*~g0ugM-1+j+9ji&l*YbxDFmQ*Q)5Rh!ruoPoMpiAQ+vW7&ZK z1N7?TS7Ekci|;k|WAT4tP`bN;T^VZ=>TLq#Q4zx{G>cuf_k!+`<+nWLTa^W84sV=o zawqMGGthVK^(#GcL*)@5#uF45_D}o~ls6XiL*edeRkZLVS%?t*u;CV^NFg}dp4uOe zLL@~>^WL+5Kf)aCIg8QS0P(Xfw5%;pn~Aq{D^V8@USpUIkBTKn0=r-CXx`Hs=%kwO z17agb~VRx8*2hT&;X#+sv=t?8EYQ{cg(SzBhlEIoF+@2w{O#MG^)bs;WE zRleh>FI!T2?^r!{<%1G%U-X*ld-f3npEQi6`wh;=IoUEliq*o_=isPGNiSdLJl3C6sd1fL zzLWzmIt4TdvRu!4R~!ZG*;;R^V3OtoI&puS{;w}J^K!_wa`>^u zLFhRR)uJmod@#ixOgKLmqq@e1KiR__@puMwgxlrj7;hx^`N@hKf!?M$|CziZVX&@b zG(9}4G@-IEu+~xXPJ&1mt@bUHGX^yigFfB0=NP*eX`3*L@YjwmSb!hr^N}h=C6Xhv znCVeQsG~}_W`4N~p|7EjjOCnUYgq}Ly7$wMBMOG>b=y5x8j?btK?%^e1mQPU;*pSl z>gGFj<$x8!Pg1u*SyH0a4d;Lo&cfbVsoU2li<3eRK2mHPB5502g!Y69i!riCdrocX$Z}%FNRm;+=_j|RfsygkB_hfVxH!ytde5IGJ zf^ZPtK}-f!sfusaA^oR@lCRB_lhT)Tm#vJUw_mf{MVS)!pawP|E>9T?nYH_&wHrSx z)~4h!JyMw50sS(oJZyL@?0fVdyd+4K{1$P|!u^kS%fPLTAKBfK zzqoHt?*m`S@y^@pxrjwCLG~~DEN;eFI02vTnyuZN3fD*U?AB}_Fprw&Fu4y_5C#{4fH=M7T)~gqi$O8KygasHk=p$Iq7iai98uLTF8tIY?rE zjr2BJCx?nZLUnBc5d-Z3Crf)p?0aB?p7GvDqS{vrTB+n)&Vz0j70hWIZsL4ak_S%A z2K+!4nX}ZN0W4g7h5I!#9X?~U5gU9boBbYFMNj#nl2q0Ri@I_(-V^e=`GqWg^-XR| z%X?^Qlw4e}8P{~=z3*VUt;yWroJXXCy`N8T@BGN9xjpAgCf#8DCHw zTiGk_p*~tZ?)fmdYuM(|fW%OUkI3MyR)P8)!zR1vGl;9R=9!i>t{Jy^9Dmf{rVZrPf^zeQ2Czk$7vWDq&Ze%h&1NVZaUj&Cd zFDsy}%20XBcM%yC4$j#wETaNBec@VK1M$FB-rEh-`Q7*#y*u{pvEWH3ZNLyfVOFhD z>x_2-+gB^12plUpP;#jb|6RrAj1Dsq!@l)Xa81`QnE$&is|GNlHjLM_2}b;|jBLE* z51Vf2yWZ;GO+y}?K4o;G&%1;0SNq0~{M)3kw+p=<8zL6T)4umeR5_M3DM$8to-K+T z6lK>JblBugF7(-omYBD?^zLm24w|xrVa1p`fhQ#2kz(`HwJ*4U*3o0Uc$!_B`TpoG`l;@FMPD;6{biT@a>PI+CkDYiT!eSu z2fc7%`JGUegJ`&}l60u)6J{Iux5}c5@54l^UJZ{U;zwq4#n=*CF5DBeo0(n;R42Zo zQCA==QsMeo9o|#=O6}Nkm*-bI`_KeVcpO=wyMH$1>Ew@dqqd;H_HU%;;4 ztVj`hRUuyc`M4sS5bm|=IS`znNuLCV*zms^8@Nip7;HM(&_tIWIaaWHPi?;jZqYo; z)(8+zdW$7XR?|+52H#e6*+NjfHS)@Z3nqanH32 zPjR{Q1Bgt@#G&4s6-pB3_85(bXY*(+FlSohrUq8!#*h;=VEpDg&X-rXXFdyzOGqo& z?8o7w!1x*ZCch9S3VJ^sxrm3Ksrx2@BYvj6dFIqG_Iy>>u$GI+YEf2�QO&t@!ZI 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 z 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 E05ArWNB{r; literal 0 HcmV?d00001 diff --git a/docs/how-to/rocm-for-ai/deploy-your-model.rst b/docs/how-to/rocm-for-ai/deploy-your-model.rst new file mode 100644 index 000000000..fd9fe8584 --- /dev/null +++ b/docs/how-to/rocm-for-ai/deploy-your-model.rst @@ -0,0 +1,113 @@ +.. meta:: + :description: How to use ROCm for AI + :keywords: ROCm, AI, LLM, train, fine-tune, deploy, FSDP, DeepSpeed, LLaMA, tutorial + +******************** +Deploying your model +******************** + +ROCm enables inference and deployment for various classes of models including CNN, RNN, LSTM, MLP, and transformers. +This section focuses on deploying transformers-based LLM models. + +ROCm supports vLLM and Hugging Face TGI as major LLM-serving frameworks. + +.. _rocm-for-ai-serve-vllm: + +Serving using vLLM +================== + +vLLM is a fast and easy-to-use library for LLM inference and serving. vLLM officially supports ROCm versions 5.7 and +6.0. AMD is actively working with the vLLM team to improve performance and support later ROCm versions. + +See the `GitHub repository `_ and `official vLLM documentation +`_ for more information. + +For guidance on using vLLM with ROCm, refer to `Installation with ROCm +`_. + +vLLM installation +----------------- + +vLLM supports two ROCm-capable installation methods. Refer to the official documentation use the following links. + +- `Build from source with Docker + `_ (recommended) + +- `Build from source `_ + +vLLM walkthrough +---------------- + +Refer to this developer blog for guidance on serving with vLLM `Inferencing and serving with vLLM on AMD GPUs — ROCm +Blogs `_ + +.. _rocm-for-ai-serve-hugging-face-tgi: + +Serving using Hugging Face TGI +============================== + +The `Hugging Face Text Generation Inference `_ +(TGI) library is optimized for serving LLMs with low latency. Refer to the `Quick tour of TGI +`_ for more details. + +TGI installation +---------------- + +The easiest way to use Hugging Face TGI with ROCm on AMD Instinct accelerators is to use the official Docker image at +``__. + +TGI walkthrough +--------------- + +#. Set up the LLM server. + + Deploy the Llama2 7B model with TGI using the official Docker image. + + .. code-block:: shell + + model=TheBloke/Llama-2-7B-fp16 + volume=$PWD + docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host --shm-size 1g -p 8080:80 -v $volume:/data --name tgi_amd ghcr.io/huggingface/text-generation-inference:1.2-rocm --model-id $model + +#. Set up the client. + + a. Open another shell session and run the following command to access the server with the client URL. + + .. code-block:: shell + + curl 127.0.0.1:8080/generate \\ + -X POST \\ + -d '{"inputs":"What is Deep + Learning?","parameters":{"max_new_tokens":20}}' \\ + -H 'Content-Type: application/json' + + b. Access the server with request endpoints. + + .. code-block:: shell + + pip install request + PYTHONPATH=/usr/lib/python3/dist-packages python requests_model.py + + ``requests_model.py`` should look like: + + .. code-block:: python + + import requests + + headers = { + "Content-Type": "application/json", + } + + data = { + 'inputs': 'What is Deep Learning?', + 'parameters': { 'max_new_tokens': 20 }, + } + + response = requests.post('http://127.0.0.1:8080/generate', headers=headers, json=data) + + print(response.json()) + +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. diff --git a/docs/how-to/rocm-for-ai/hugging-face-models.rst b/docs/how-to/rocm-for-ai/hugging-face-models.rst new file mode 100644 index 000000000..63b32e006 --- /dev/null +++ b/docs/how-to/rocm-for-ai/hugging-face-models.rst @@ -0,0 +1,210 @@ +.. meta:: + :description: How to use ROCm for AI + :keywords: ROCm, AI, LLM, Hugging Face, Optimum, Flash Attention, GPTQ, ONNX, tutorial + +******************************** +Running models from Hugging Face +******************************** + +`Hugging Face `_ hosts the world’s largest AI model repository for developers to obtain +transformer models. Hugging Face models and tools significantly enhance productivity, performance, and accessibility in +developing and deploying AI solutions. + +This section describes how to run popular community transformer models from Hugging Face on AMD accelerators and GPUs. + +.. _rocm-for-ai-hugging-face-transformers: + +Using Hugging Face Transformers +------------------------------- + +First, `install the Hugging Face Transformers library `_, +which lets you easily import any of the transformer models into your Python application. + +.. code-block:: shell + + pip install transformers + +Here is an example of running `GPT2 `_: + +.. code-block:: python + + from transformers import GPT2Tokenizer, GPT2Model + + tokenizer = GPT2Tokenizer.from_pretrained('gpt2') + + model = GPT2Model.from_pretrained('gpt2') + + text = "Replace me with any text you'd like." + + encoded_input = tokenizer(text, return_tensors='pt') + + output = model(**encoded_input) + +Mainstream transformer models are regularly tested on supported hardware platforms. Models derived from those core +models should also function correctly. + +Here are some mainstream models to get you started: + +- `BERT `_ + +- `BLOOM `_ + +- `Llama `_ + +- `OPT `_ + +- `T5 `_ + +.. _rocm-for-ai-hugging-face-optimum: + +Using Hugging Face with Optimum-AMD +----------------------------------- + +Optimum-AMD is the interface between Hugging Face libraries and the ROCm software stack. + +For a deeper dive into using Hugging Face libraries on AMD accelerators and GPUs, refer to the +`Optimum-AMD `_ page on Hugging Face for guidance on +using Flash Attention 2, GPTQ quantization and the ONNX Runtime integration. + +Hugging Face libraries natively support AMD Instinct accelerators. For other +:doc:`ROCm-capable hardware `, support is currently not +validated, but most features are expected to work without issues. + +.. _rocm-for-ai-install-optimum-amd: + +Installation +~~~~~~~~~~~~ + +Install Optimum-AMD using pip. + +.. code-block:: shell + + pip install --upgrade --upgrade-strategy eager optimum[amd] + +Or, install from source. + +.. code-block:: shell + + git clone https://github.com/huggingface/optimum-amd.git + cd optimum-amd + pip install -e . + +.. _rocm-for-ai-flash-attention: + +Flash Attention +--------------- + +#. Use `the Hugging Face team's example Dockerfile + `_ to use + Flash Attention with ROCm. + + .. code-block:: shell + + docker build -f Dockerfile -t transformers_pytorch_amd_gpu_flash . + volume=$PWD + docker run -it --network=host --device=/dev/kfd --device=/dev/dri --group-add=video --ipc=host --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $volume:/workspace --name transformer_amd + transformers_pytorch_amd_gpu_flash:latest + +#. Use Flash Attention 2 with `Transformers + `_ by adding the + ``use_flash_attention_2`` parameter to ``from_pretrained()``: + + .. code-block:: python + + import torch + from transformers import AutoModelForCausalLM, AutoTokenizer, LlamaForCausalLM + + tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-7b") + + with torch.device("cuda"): + model = AutoModelForCausalLM.from_pretrained( + "tiiuae/falcon-7b", + torch_dtype=torch.float16, + use_flash_attention_2=True, + ) + +.. _rocm-for-ai-gptq: + +GPTQ +---- + +To enable `GPTQ `_, hosted wheels are available for ROCm. + +#. First, :ref:`install Optimum-AMD `. + +#. Install AutoGPTQ using pip. Refer to `AutoGPTQ Installation `_ for + in-depth guidance. + + .. code-block:: shell + + pip install auto-gptq --no-build-isolation --extra-index-url https://huggingface.github.io/autogptq-index/whl/rocm573/ + + Or, to install from source for AMD accelerators supporting ROCm, specify the ``ROCM_VERSION`` environment variable. + + .. code-block:: shell + + ROCM_VERSION=6.1 pip install -vvv --no-build-isolation -e . + + +#. Load GPTQ-quantized models in Transformers using the backend `AutoGPTQ library + `_: + + .. code-block:: python + + import torch + from transformers import AutoModelForCausalLM, AutoTokenizer, LlamaForCausalLM + + tokenizer = AutoTokenizer.from_pretrained("TheBloke/Llama-2-7B-Chat-GPTQ") + + with torch.device("cuda"): + model = AutoModelForCausalLM.from_pretrained( + "TheBloke/Llama-2-7B-Chat-GPTQ", + torch_dtype=torch.float16, + ) + +.. _rocm-for-ai-onnx: + +ONNX +---- + +Hugging Face Optimum also supports the `ONNX Runtime `_ integration. For ONNX models, usage is +straightforward. + +#. Specify the provider argument in the ``ORTModel.from_pretrained()`` method: + + .. code-block:: python + + from optimum.onnxruntime import ORTModelForSequenceClassification + .. + ort_model = ORTModelForSequenceClassification.from_pretrained( + .. + provider="ROCMExecutionProvider" + ) + +#. Try running a `BERT text classification + `_ ONNX model with ROCm: + + .. code-block:: python + + from optimum.onnxruntime import ORTModelForSequenceClassification + from optimum.pipelines import pipeline + from transformers import AutoTokenizer + import onnxruntime as ort + + session_options = ort.SessionOptions() + + session_options.log_severity_level = 0 + + ort_model = ORTModelForSequenceClassification.from_pretrained( + "distilbert-base-uncased-finetuned-sst-2-english", + export=True, + provider="ROCMExecutionProvider", + session_options=session_options + ) + + tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english") + + pipe = pipeline(task="text-classification", model=ort_model, tokenizer=tokenizer, device="cuda:0") + + result = pipe("Both the music and visual were astounding, not to mention the actors performance.") + diff --git a/docs/how-to/rocm-for-ai/index.rst b/docs/how-to/rocm-for-ai/index.rst new file mode 100644 index 000000000..5be7b0995 --- /dev/null +++ b/docs/how-to/rocm-for-ai/index.rst @@ -0,0 +1,23 @@ +.. meta:: + :description: How to use ROCm for AI + :keywords: ROCm, AI, machine learning, LLM, usage, tutorial + +***************** +Using 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. + +For more information, see `What is ROCm? `_ + +In this guide, you'll learn about: + +- :doc:`Installing ROCm and machine learning frameworks ` + +- :doc:`Training a model ` + +- :doc:`Running models from Hugging Face ` + +- :doc:`Deploying your model ` diff --git a/docs/how-to/rocm-for-ai/install.rst b/docs/how-to/rocm-for-ai/install.rst new file mode 100644 index 000000000..28f5baba5 --- /dev/null +++ b/docs/how-to/rocm-for-ai/install.rst @@ -0,0 +1,60 @@ +.. meta:: + :description: How to use ROCm for AI + :keywords: ROCm, AI, LLM, train, fine-tune, FSDP, DeepSpeed, LLaMA, tutorial + +.. _rocm-for-ai-install: + +*********************************************** +Installing ROCm and machine learning frameworks +*********************************************** + +Before getting started, install ROCm and supported machine learning frameworks. + +.. grid:: 1 + + .. grid-item-card:: Pre-install + + Each release of ROCm supports specific hardware and software configurations. Before installing, consult the + :doc:`System requirements ` and + :doc:`Installation prerequisites ` guides. + +If you’re new to ROCm, refer to the :doc:`ROCm quick start install guide for Linux +`. + +If you’re using a Radeon GPU for graphics-accelerated applications, refer to the +:doc:`Radeon installation instructions `. + +ROCm supports two methods for installation. There is no difference in the final ROCm installation between these two +methods. You can also opt for :ref:`single-version or multi-version installation +`. + +* :doc:`Using your Linux distribution's package manager ` + +* :doc:`Using the AMDGPU installer ` + +.. grid:: 1 + + .. grid-item-card:: Post-install + + Follow the :doc:`post-installation instructions ` to + configure your system linker, PATH, and verify the installation. + + If you encounter any issues during installation, refer to the + :doc:`Installation troubleshooting ` guide. + +Machine learning frameworks +=========================== + +ROCm supports popular machine learning frameworks and libraries including `PyTorch +`_, `TensorFlow +`_, `JAX `_, and `DeepSpeed +`_. + +Review the framework installation documentation. For ease-of-use, it's recommended to use official ROCm prebuilt Docker +images with the framework pre-installed. + +* :doc:`PyTorch for ROCm ` +* :doc:`TensorFlow for ROCm ` +* :doc:`JAX for ROCm ` + +The sections that follow in :doc:`Training a model ` are geared for a ROCm with PyTorch installation. diff --git a/docs/how-to/rocm-for-ai/train-a-model.rst b/docs/how-to/rocm-for-ai/train-a-model.rst new file mode 100644 index 000000000..f9c585445 --- /dev/null +++ b/docs/how-to/rocm-for-ai/train-a-model.rst @@ -0,0 +1,137 @@ +.. meta:: + :description: How to use ROCm for AI + :keywords: ROCm, AI, LLM, train, fine-tune, FSDP, DeepSpeed, LLaMA, tutorial + +**************** +Training a model +**************** + +The following is a brief overview of popular component paths per AI development use-case, such as training, LLMs, +and inferencing. + +Accelerating model training +=========================== + +To train a large model like GPT2 or Llama 2 70B, a single accelerator or GPU cannot store all the model parameters +required for training. What if you could convert the single-GPU training code to run on multiple accelerators or GPUs? +PyTorch offers distributed training solutions to facilitate this. + +.. _rocm-for-ai-pytorch-distributed: + +PyTorch distributed +------------------- + +As of PyTorch 1.6.0, features in ``torch.distributed`` are categorized into three main components: + +- `Distributed data-parallel training + `_ (DDP) + +- `RPC-Based distributed training `_ (RPC) + +- `Collective communication `_ + +In this guide, the focus is on the distributed data-parallelism strategy as it’s the most popular. To get started with DDP, +let’s first understand how to coordinate the model and its training data across multiple accelerators or GPUs. + +The DDP workflow on multiple accelerators or GPUs is as follows: + +#. Split the current global training batch into small local batches on each GPU. For instance, if you have 8 GPUs and + the global batch is set at 32 samples, each of the 8 GPUs will have a local batch size of 4 samples. + +#. Copy the model to every device so each device can process its local batches independently. + +#. Run a forward pass, then a backward pass, and output the gradient of the weights with respect to the loss of the + model for that local batch. This happens in parallel on multiple devices. + +#. Synchronize the local gradients computed by each device and combine them to update the model weights. The updated + weights are then redistributed to each device. + +In DDP training, each process or worker owns a replica of the model and processes a batch of data, then the reducer uses +``allreduce`` to sum up gradients over different workers. + +See the following developer blogs for more in-depth explanations and examples. + +* `Multi GPU training with DDP — PyTorch Tutorials `_ + +* `Building a decoder transformer model on AMD GPUs — ROCm Blogs + `_ + +.. _rocm-for-ai-pytorch-fsdp: + +PyTorch FSDP +------------ + +As noted in :ref:`PyTorch distributed `, in DDP model weights and optimizer states +are evenly replicated across all workers. Fully Sharded Data Parallel (FSDP) is a type of data parallelism that shards +model parameters, optimizer states, and gradients across DDP ranks. + +When training with FSDP, the GPU memory footprint is smaller than when training with DDP across all workers. This makes +the training of some very large models feasible by allowing larger models or batch sizes to fit on-device. However, this +comes with the cost of increased communication volume. The communication overhead is reduced by internal optimizations +like overlapping communication and computation. + +For a high-level overview of how FSDP works, review `Getting started with Fully Sharded Data Parallel +`_. + +For detailed training steps, refer to the `PyTorch FSDP examples +`_. + +.. _rocm-for-ai-deepspeed: + +DeepSpeed +--------- + +`DeepSpeed `_ offers system innovations that make large-scale deep learning training effective, +efficient, and easy to use. Innovations such as ZeRO, 3D-Parallelism, DeepSpeed-MoE, ZeRO-Infinity, and so on fall under +the training pillar. + +See `Pre-training a large language model with Megatron-DeepSpeed on multiple AMD GPUs — ROCm Blogs +`_ for a detailed example of +training with DeepSpeed on an AMD accelerator or GPU. + +.. _rocm-for-ai-automatic-mixed-precision: + +Automatic mixed precision (AMP) +------------------------------- + +As models increase in size, the time and memory needed to train them; that is, their cost also increases. Any measure we +can take to reduce training time and memory usage through `automatic mixed precision +`_ (AMP) is highly beneficial for most use cases. + +See `Automatic mixed precision in PyTorch using AMD GPUs — ROCm Blogs +`_ +for more information about running AMP on an AMD accelerator. + +.. _rocm-for-ai-fine-tune: + +Fine-tuning your model +====================== + +ROCm supports multiple fine-tuning techniques, for example, LoRA, QLoRA, PEFT, and FSDP. + +The following developer blogs showcase examples of how to fine-tune a model on an AMD accelerator or GPU. + +* Fine-tuning Llama2 with LoRA + + * `Fine-tune Llama 2 with LoRA: Customizing a large language model for question-answering — ROCm Blogs + `_ + +* Fine-tuning Llama2 with QLoRA + + * `Enhancing LLM accessibility: A deep dive into QLoRA through fine-tuning Llama 2 on a single AMD GPU — ROCm Blogs + `_ + +* Fine-tuning a BERT-based LLM for a text classification task using JAX + + * `LLM distributed supervised fine-tuning with JAX — ROCm Blogs + `_ + +* Fine-tuning StarCoder using PEFT + + * `Instruction fine-tuning of StarCoder with PEFT on multiple AMD GPUs — ROCm Blogs + `_ + +* 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 `_ diff --git a/docs/index.md b/docs/index.md index dd30f5079..0f37a3c6a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -91,6 +91,7 @@ Our documentation is organized into the following categories: :img-alt: How-to documentation :padding: 2 +* [Using ROCm for AI](./how-to/rocm-for-ai/index.rst) * [System tuning for various architectures](./how-to/tuning-guides.md) * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 11855b6a6..a76f9dd9e 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -49,6 +49,15 @@ subtrees: - caption: How to entries: + - file: how-to/rocm-for-ai/index.rst + title: Using 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 + - file: how-to/rocm-for-ai/hugging-face-models.rst + - file: how-to/rocm-for-ai/deploy-your-model.rst - file: how-to/tuning-guides.md title: System optimization subtrees: @@ -139,4 +148,3 @@ subtrees: title: Provide feedback - file: about/license.md title: ROCm license - From cfaa056ae00d210af4872da5c91daea321ecfe10 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Thu, 30 May 2024 17:33:02 -0400 Subject: [PATCH 061/175] Add rocPRIM dependency to rocSOLVER CI build (#3195) --- .azuredevops/components/rocSOLVER.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/components/rocSOLVER.yml b/.azuredevops/components/rocSOLVER.yml index ca9a00c90..db1eada1d 100644 --- a/.azuredevops/components/rocSOLVER.yml +++ b/.azuredevops/components/rocSOLVER.yml @@ -26,6 +26,7 @@ parameters: - clr - rocminfo - rocBLAS + - rocPRIM - rocSPARSE - hipSPARSE From 2d8eba040407a7a5ee99a5b6c2cd7e6c0c302c2a Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Thu, 30 May 2024 17:13:54 -0600 Subject: [PATCH 062/175] Disable pdf builds (#3197) --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 8ebe82a90..dea9d45a1 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -6,7 +6,7 @@ version: 2 sphinx: configuration: docs/conf.py -formats: [htmlzip, pdf] +formats: [htmlzip] python: install: From d25045334cf895f71dbadec7e8a44f566754fa11 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Thu, 30 May 2024 17:14:29 -0600 Subject: [PATCH 063/175] Disable PDF on 6.1.1 (#3199) --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 0f6d1e61a..56600599c 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -15,4 +15,4 @@ python: install: - requirements: docs/sphinx/requirements.txt -formats: [htmlzip, pdf, epub] +formats: [htmlzip, epub] From 61d18252abc285e3047c27fe0e7dd0e2ea1442f3 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Thu, 30 May 2024 16:28:13 -0700 Subject: [PATCH 064/175] Remove unused images and add link to usage in Deep Learning install guide (#3196) --- docs/data/how-to/magma005.png | Bin 89647 -> 0 bytes .../rocm-for-ai/pytorch_docker_install.png | Bin 56629 -> 0 bytes .../pytorch_docker_install_output.png | Bin 451563 -> 0 bytes .../pytorch_docker_test_model_accuracy.png | Bin 28433 -> 0 bytes .../pytorch_docker_test_model_compile.png | Bin 160414 -> 0 bytes docs/how-to/deep-learning-rocm.rst | 10 +++------- 6 files changed, 3 insertions(+), 7 deletions(-) delete mode 100644 docs/data/how-to/magma005.png delete mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_install.png delete mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png delete mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_accuracy.png delete mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png diff --git a/docs/data/how-to/magma005.png b/docs/data/how-to/magma005.png deleted file mode 100644 index 3bc2d8be6d4f60a21a194b608c3d344cbbb5927c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89647 zcmeFZXH-*N*EO6F3B4#tuX-uHccg?WBE5+8CcT5S&_Y*`qJkhbfOKhs)PyRa)X-5N zbO<02AoTX;x}W|be>X>GLZrR0E%ZCss;c6 z0TciL&J%<2N0f+&?C={BZw*sF0D!XR-zTu&tLzm3Xu14MRmmtQ=Wi}ikg@Uf>EdZf z|L3|V_N-6woA(e7oS>Z$+=hsUbi7z&e?0N^onp<85469&F`#`y%4@98fjo`L%Ra8U zRd8DTo0Ajrv6F%%<2WMkczz9Sc=EgS@1m*OF7h^B^}&0Mf9}0iRVu&b*&%rI-WuVUZLguvtCpKPUhO>7HZ1JA*atg-=wJF}e}geAin-5i$?k-pqJRm1x(U{CD__?xo9O zw6jEG1(7SHt!v)~`P;61D~wuvfdD_lSFirD92m5+Gj}f5Z1A6x?AZC|pMUhC+xEUq z*Plu_?OE*aulA*s4pt*XJNPMkpb;G>X07LowI6znNBEtH&87Et9IyG_E8mnY}))AA#j0lQ}3 zt*fjfuD{P7W6wA9EBzllcz{?8yE^Ev?oW`L2t)_RPk%LCoghnIotitpK3yccP7YyM z6f$poXBBpAygfK`((JQ}!M|ZLC!W$ni`Z#T20AF`UR@oH@=kRJ->%+Twgm)dEFyyI z-LBcBy*t~;lkfVk&~6iszSmVak9n+{rxi^^^`igaWX`K{@_kMY%go`E*j4cq&R-gv z8ag_HdXy|5g|2ZEx@d=vvlX(Lqk!#69$DYDHx;WhRv}4X3MSQ}rztOHq>>pof6yk^ zG|!|o)^yzbaboN^-(cSN-I=c9Yfv=gzMZZzM-Hx@C5(Umy81W=bd(u>xhplZt{0wj z`(bjlZNL3_d3m{On4B)|bgs$k^tY9RgG0F+bZ@?8TXturhFv>X)_9@5S$%%GC-6z& z9?tW&epKP;oL>pKd|r~FCfKTBWRcE<>Fw(s`z|$a1ElEDibd&V3H#UqsY4oE45zr8 ze+j&<1d_-^Afcx(I%_|%tCJpv##mnmek&!3)#%iH+?Lf;qiV}r8=w^`M2l!cE3*-BWk8qR00J+%^eQ6SDT84>Ac3yV})wr z%sj+GWKs*SKL##DT&=Q`iiVPSd+$^=(akRA2BOPthP7cS9Y+$c1S8JZGw8Wz(s&FL zEUBpEurM>Cr2gWom6(0c_H##*pPwb%=&td;!hXG_8(~0^TweebU;HU#H4FX(s?AbX z`IEgbQXk%My?=Wn6dM~m_V;(awjHvJ4p~n(K@3Vbqagkm z(b&r&M7Zlzg_?+n2;nE-kAhHXMQMf28y~Ab*f63pUQJkppCu%V4*o16s+na7j+{kwYKU8gjS6s5e|j(eyS z%Z}UpcQ&qX>iXII!dklgmhnze%GYe^>q&OXo=l&*LECtII4Bg7fjk`Gn@Y^i_D;z> zeURt%K;OsM6)u%ku>FA986bvr>>|@kWJfXiF0HEwnMlbf?bl>jmLOnE8?~O<^j7d& z?;bbhiS^L>9080{Q1jv~N`(*sjgBMt2_x%QIa=z9#$k(6#>3<8S{uOosU(5OP8b{8 zSLa$=6H9;NNbq%yMUDM==p_x}xehF{e;{KXLUn1;9vWQW;8VRAv`W#6DNG~)L#Y(b z;ATX6Ma*l@&!Fn|UZkl*rGj3=^Z~=X4io%6PRpKI_afMOmPJE6LWcKzl;&!wx zsRR3c`>TEEOtod3G7p0est0-@x195NPK|L%WRjN@w`3f)U0#Zq>pY*WvwvE!O5|Pe zUZQ}|CS+J*hE{rUs?x;7Dl~#u5VIxglSd^G0Vk@Fu<810JvpU#d#-C7!L;E$f4n_) zH2sW2i7NG=spGl|at&u&0Fd(Xp?b)&S|}J`=;2C}EO@-^kMn;2;!&W&!M#<)2+&8& zX@p-dLkAUYTy63B=4>@Zxt|lxCCi*nis>>AJ4K#CZNWD6!Gm=Ewp7bfFT_GG+!N`l zIrX_P#^hv0jY91&Z7e6E;~n*k1E0<$ezq|I<=N z^_UP{0_Kf4$vh@f*XgfY^|pQ>c?KruQULSl;qkh~G&{yJ;`$hOu~Wn6m6OexL$n;e zHCg_#i4CB>As93&X6 z+ENlXegQvS&#;Epuv_X({z|ydM=C%jwEp8Q4H=7KwNq!k6;+<^QDBVK*bM}Kr>Bfo zZ?uG;ma)34?aC&(eR?u>kmE_1d6@0(pH)m9Cx!aw6J>HgY~{XHX-ziBtWKDz6kas z9s5Oq3_pl-CiSwWV3siGSmc14@XIK9b;pqOnvIe`7sF013mj4>2s67yGb{r>yZyZL z2N@!DecEwrJZSv&rM?8>VtCH|r}k$!(I^=r?u^+g$6y?w}+l?9M$L%Jj$3d8KKaWG`bh&%RTc z+YgEo!BUvjfl(HmsB;|656i3}deB|L6oNcOufb@&(#Im9KHJ|M;EG zqsP=)wJ%vvJ%g+O#=*|EsF>iN6u4RiUoL+gPI9z?6bh)}tXl<^ZyMp2cI<#k@YR_Btvs# zUS6HuC>mLD%G>@lo@DKO3oM!nm&ycok}oJ6<0h;|Nnk5CMC|;490F*sp-U7S3=#+f zz?O$+wf_{w3jc0e46m#xGIF3MH4f0+aQ_cj9$WyoG<-q_S{Au#qM^?W-joT@v-& zf+jw>&}K<&cl2a@Ap#l+kjK$YFGnySLfY?8wNc(*E!I%UqQS92F`WL2+qd~4doufE zrLa7VJFOn7M zAKAna@#q)2K4L_U7g~`7ll~GPF{9aoMRZi0NCDqJ(crKEH3e?+88DMg3=-Evjau0l z21+~s1VEh2RGPKDn1dyCWR$3^1j1OHCy$Rwh{pyCM3jHl;jKo+h~V;!>zgBqbe?Q5 zImGAqCLAERQZ;+K%3dyIR{Rd;|7x$xl67as^>T|UBaRJA1L9**lMI-%%ifXP3D!NcMh{d(#E*y386udqPu~V z4%Eabm6~d{t5i_xwnI((p6rF)Wx&3uCp>UL@kVK``MuJ^HAn6pNc%6cp%I_R=sZOg zs%L&dL{2s4;+j8oqYIjt08isJuz-H^M)PqQ==8SmE_S&GN#*r=1BHCGT;Lm(PJ51MAbEN8s)`Npf&W|?vsGj*iM)QFTxoC+md>j_V%&#Hf>cCt$Wv42!DTtnl z;-Be-rpUc90gzBi*H3O7A2qT zE$jq7!TZ9z$p-T9bACaS@Pp`cyJ(MX-zWG)Ox9_HW#5n3n`pH9zm9N;Sxq79WLzSK zy+~Oeb@AVs5fc7+;Bd9kI?3Qzz>PX8UWv-vQ>z3&--ze;6n^(K&gUF^ZT;@Ih+Z=N z8PItE52h^2Q@64^ z-;szqhUR+R9>|SyyKkipf%#=Jdtfs;Ge+_?Nuhv8YY8sSuyB;YDzh^Jojf=SXSiPi3qpSGR3tYRTp7O7PVLD*=w04Eu7qpxW<_zCv0D9uWG7W}36NKHKCdYv|Tc zdA-}K1#oxElQ5{B>4iK2=rci3OPOrCX;V1vf{aq3Wd>^Hslh_20zCZXg&scJ502V2 zj@bXSwhzYJc9K)p`zqV|3zn5B6xYnJ*-Yt;-AGF%$2O#Q0Y#Q7PLe z%|j^Mnn#9o9(cl?rUk0`z5w7KscZloRr23k4^HnF@{?d}$(43(3CUL##!o>5?r5)( z$fnUpm}OZJl@;RHZQt%Co@wegPGsYELV2j+L@3FSiR|3>IRtAvY{SAq*~cO+k!&$e zN$n=y==TE;@YRGNAvrGm;@s&%N-C<=k3jZS=*ngl&7W2e=Idx7v?AjU<~P>}A?94{ zFEiV(5zE%*jo|zAIAPtrlqZ37X1Ddj**r1Kn)s^ibsq$s>q$KJ=5kxWHA-JU&bypP z3KjkOQ1M=M$np02ak9;oAndu15>=A#vsi2vSZcSt=QeYjEJ^evrNjTBbDWs=eiEJU z3U2=fdap2iIGI^?pZIWw5o8a{vgO%COzEIhb*Q$7i3O@BoO!EtGk$h$7BR4$o1Dct>yH(a* zhmx=*%#oiQ0$*Hxlqstr@?7d@3&MmHz44tJhY+e+hs#JKv@=+!>OA)0~ zO2!%$`_z9ZQv_d`%&Rqj0W8iIWIV>i@gZ1A&ug^IE=LO$~vKSww3sTM|?egT%)j0bB4pD)!- zb0*@ptkVAoUnR~ZGRWS;IOz9FxK8RV%afNS#*ui#YSU$i`I#VoT2JuoKx&U%aqB@8 z(b(T-W|OqeXRKDxT=v)_7wBVsc1JH8NU@INjI!zSqsc*l&DF7^JTpp#bu~zf*e8nZ z#A5^#B`nP`5<@!430Dchc_)V<&*0m55iTpBEikY~V;~fn@2pT8&2NdPRuRiNMMKS=!*2H-qBqUG zinvkHOIYCvR=nWhRA`XBBRPBgM3LX|AlhMLr>4!!2fR1QOZgJ~QPYh@UVQ1I0F%>1 z2ZKf097o?fSMZcE2s$gIiSpDt@SdSa7DB14I!F?afa~zU3I?W@Q`9>DsaJr$wda)< zi>ORWjGtv8X3V>*Rlc!Nr7mwfOXruTBc6qoE{G(AXQGvYKINcm3;V`YKxO?LJ;9>P ze+nT~-RHvn%pmDZPNB6I+mzgY<_JcK5%JE>%Wp-P7Xy-$U+CmgV3ef8#s1m5BTqaN zdGfMgB-JmDMU!0QjxOWj)8lDq z>G$j|5c!$RNBL(fw2bAN)hcMoGJxh&Y`oqKy)VEAF zwdodEcq`%n*gtm4?1IRG`iHoTXo^b@gbf`I2@H2&+ za?eFmA-S!F6wtd?mp}SKWHWb4`OJ8REV-)8^Z|;)9>V~mmemFX0SA80spxRT)ptrR zARsUeOGhogjTbYsl85QFO2 z=t`P0h&x-#s~W&EW2di7Og)p0ruP;7j=cx(=ntPiY~aZ8Bfl)jh@I&VrbJ=A<{Gt? z?p6y~Zl2v~Ah@$sEb4b}p}~8(n_%XhIkDg6$u22D9eK5RQ^+$iY{3rGCXKDvZm!CW zsZX`#>%uWsSG=_kHO9$ zVtueX&9lD@J03H-ievrEQsY_Q-KIJRXBENzy~6h}Z=ER9c>hPAeO*FIj46nJnc=xm z=6bwM8xDSfbkuI$ytyp5-yFeB7pgTJeAJ~q%c%lr#;33p1WLKXH_e+$vOQa3t2++V zTTkMcFvF3LPpoztMJSR0`@*_CQ)~W1?c52`kMZ`*QP~_@YgonZqxGyulE{j)i%c;GS+(Yb=Rh5D1KDwEZlaal&>})f=_meig9aU>LAfUw@ z`*!lXEx{39F$0H2U|n_dGH7uTr{luHO8YH~S2;PcKO?>Bqq!Y4YL0#Jk+iYq*cw@1o;5`z^fA8%;%77x~ z_sPDw*Rjm!?{w&#m+LCr>c#2>NNL48rzsPA3jd2 zD+~5WEE*cpB3!)TAU$u%9xfw0HN58f`foh_BU7O4WZ|U1j|b9Aeu6J1;dyr;n+_yPq_x-&h3|D zBZ(*-#5UjdT2y5IWV4mg+Kf50H)Tnwal@BgrJN*}{&SB@E(lO|`PN~_=}}Jge>1zu zZ6ZSm*jiQMDS67e=esjE$i1U??ZSd)hA(~`EIm1r1`eOG`KS2n&5Rtyc-Y8aB_EM= zK1E*A$ogu37F7!l5(%t1VgoZ2BYiB@sF=bc{Do0t0VVCm6dkB zU(u@L+}UGwp*hC+RQdTYZ%HREqN;Au0okK09O4#KiWg)FA_4 zXsNiXkzT-TZ9#!)`Czrb@|a%GqHG{#cRA=@SWp9=$p9o0lF^mPcBvl1z-cO*fj}s= z?~m{oM`EDksBiWoCIV?hi$#KUtXhw$W;^Ah_g_?7Jga;yXGyrS1ElM^K3)F(3j+eXG6 z+%zM=lX&~C@3FEBQl2c@nZioxK>ygIx6tlyLE&3rtG%{=8eGt;-TTdwLp$^{$o6(U z-7>$JmSd5noD~K=^}o!QKST%;@JRT}Xd6zn|G6W+kY|2g?98z*^`U3&9jc{B>j-~K z`sLxunzj+HS4r#f73YnZ=h%1r>v4CiB&25B5(eYyPUp9m&_rxl5-5Yv|&qS@pquo^DWQY4!cdBm_eBKFWFbDtpkLY0)qgYFe|+1Oxxh1%bCoWB+BF|Rimj7kB6cF zCDzm49iW#0f9ipF*(pG@|0h99P4@7!g1{#*B0wZq$I@wb|IOWpX;OM*-eiyoAx8jG zDHUTJ_b8$Z6}&x{V-Fuq%G+pxm=VSR=7~x|l!__9 zuvI~?ri?7dEo=dRr_tov&7?PBg1G}LWH`OWi+LNx=9|}V?)y^_PpfEjwY|vzhj|{{ zOMptMEX=Y27Vte5{$F=kkEI-k7>pGibGI**$aa?4#?glSmCI}qt7Z%`zOR6~+*ZV? z?0om$YL@sCLaCW(W5gF4{eP`zOgLprwN;-2rN9`69k8i3djvu?SW7z3DKBKii5vP@ z@lCEWD8UCie-g2KJTnop-(mgtI^z=#K2|FR{8ewM_%gC8>NQZ<{sD);xml#^YOTA zg2!4ZiilF_7rP>_LGqpN#D2Wp7k_EXnl?AjzU{i&msH(P!r36>I>{~c4`^r!c{vsI zOl`rg4Zv?$7E(V{#%^H_dnAza5XNG~1jpA_Gn|cExVVB)roXk6BS1LA3<->KU2LaB z8XhkSzsWg|l-}R)v08RV;jU|Jc>#1+0zGq4dhhxQ!T95Zvn~A4_)I`tA*)a zd@lf4F~Hnupuwd&S6EnXV2M*jGgK?_oPvQ(Rmz*WpUR^YTYEe;L4O_;6a+SN4%Ip6 zVWM(xiih8@QVsAJmKt1USQSot{L$NK^e8vX5XAMK?1qPkRvw=RiU+t}Q?ep<9)3mm z&o%l<8mR?;*n1aQAiHEb9;a?V0ptFvP?P2#Pmt-NC zR21S&=4p4q9E8ps{Uj731Avs&7IFmFW6W~k<_%W9JH(TfDS<#fsDA0uo#xM%y|>P& z<9EW+FIYgznJ`%hoCcR;t4Dk}wPZg{aYE=EgJ%;vmxqkSdJd&ar5$0U+aN31H1iPK zg*zzqmO6fNSiGMNv;hDuv*&uXB4-y7WC{a7v97X)FT8hMxbfWvfFO*=-%q}UvGyv& z_ibPNW$%Z%m3+bbVt3sWLux(ApseFT&vLD}%zHpvw zYrpyy^?Z$%ptT{u?_rF6c(udx``~`j4fxoG%}{0?hyqT>bm7%;sWYq>mGd-LtekVY zB^=)}XK)@z{~=*uOr?i1C2!(kTxeNj=&o}OxLRb*>;9t%c>JqC+@9)ZZ*4$hYR$%T zZsvhK{%jrqYj=juC@Yhj_%@S~_I-sv1L%}q5@|N1BOzeqs>H9S|k%Z+MVOW-rov3$00g9+ZKB-({|^5fNt zpQB_rEQl1>>VLE$_@L>o?e3>4voVjr`GV~MG6zZc@)KD8fMUa7oOj^I5^ZBpz1_Md z^v&|#CwwXi8MVGXHwg(tdLYB=x$?YYQ*Dg#F7F0RVueAhxtw!SBjVI8;&CHjT&=u# zxAPSWv*Rs`u*8OE+Q1G8@|HwEHa4tjmKhZJ%}*sdfw-kdsu&}oX#eH+QSrT1Dn|H= z+4qSoWe$6Db|*0X0C)p%T|_W-<=aM`d;; zHaZN_9e0pKJOau?2&@zU_pmDkobj8)%P+*Vz`Eq!dDs#7a(^v{vyClOo#HS3oC=1V zLRQw+hLtt>&LsKr4k3kfc#kMRBM3gkDW~Ov0uiq;XoGBQJIaJ&sOtpWX?nZ>vOaRu zzH`_o3cxyUuI?`|rl6wQB)m!jVC;OHOx6;)-*MY6n=z8gcgKr$pmwCVo-SNv)F9Wo z%n#=snte`4k^8_~0bnvmzAtA(iJm$S@CwU$2%sOyr!07w^Hx|8;Q>(Q!YIL{gJ|^w z%R*Q{+hACUJd~R~ZwjWL^L&lbPKF{^TK6T9_Zz=>dvCm`{`{vgVeN8juMZGa>&2QJ zhsQD&=52z_`*VFa-bsa5A1b--rE3vD6<#Yu=1H-S<#92{L<%*yl^!y#HrMq;|IvCp zV~?0}L%~rOW%gfh?JiGTXPM=^$5N$d`Xxmy-hsRIuk_mWV*K8!Pc703AvlpSX0Yb{S=UBs^ifrB{bbDiTVt@?7bO-Wh1@EWk(O{*(C6$3X;fIDl?g6mX(I* zVU+>P;mLrV zfO|pue#wO*TVs_bk;j!&WlHtMIRB0u~Z0pIiz-XSxU)&;=)a!tPUSl?8G z(uU9P0f4?sEkKsSdC$R|q+0FCw>8u(1LR^VgAU8RN{q{DzB>EGDo2iG^(^e^if#9ru&`^(H@WSqg^+TKD62Vo zE9~#Om9V1Ctd@~jN~l0yM7thAgW_`6TlDaskEgi$Q9A4e?IV`k%sP8yt|;oE2`!7L z(!Mg?o=D8S<)m0C>Qj0|G&YUXy;|PV=>ZMy>erord-7#z@TQ1PygebkZ$ZSTPMI|q z+C(phIS3DFKh%7S5X1{VROk=H{fcG~A@10Jf?}`)3x-#rw0V}q%!Ohg-(#G(&4$)P zrw4$C-C1hGNU}23OhZ|YH>!nV##_-=>jUUl?h#;md336X_U~Tx8odeO$@n>1{KO}K z7Iu=%d?MG&7MeGKhFi)-BxojbCu0#Rtn~h)D=oGsaJsjug&!&=m8g&kPXc!}K@7>E zrcHYb<*rFg1NNJ4C|mc-f~Rag9-((||5+cv{W2|Zo10a!Hrcm5`}uF{4RgxBd^eXz zEotXGb6kGht3@(t?Y5M~Re37qe4Ba$hcamhcgjbCxhf>jH}qKC4_Fc`d+<{E_^v{re5% z{fjzBH;!H^Gm(KE8-dw$shefD%fp(ixSSsU=FfO0o8m)*?N@2?l^v)dG3GyuDD+c* z`pJD}#yash*fKoQp(u*+Nl$yEQ?2^TD@OmY+cizPo~f6zN_DIz#=z)QFX1nP=2Np+ zR6(gSCZ%5)v(!_7+qo`isPW<6b)nU4+b1o~{~hkipxHJXAW2-zPH`FO5&tdW#Hl@O zba20RH@=Pk@_kcF;w~5ZM(7l)ut!#WO@&opCn=6b+$!d+eUqb6jyM12(~{ia=tiS_ z*Mm>*2bu8ArP@uXNX&z|-_z{`YVEYj`tI*pf6E@!`8)17vf95MrS?aNgsJcZ=&2LWo)Ypya*Gr3U`&v{pdI7AnTK{yELNF)OBoMhd&1mOJGg$i$|=^8T~5g)mW$ z%Yb_)F(9q6UADNoOzYPX;~9P>1<_ip;YAz~&(TLG9uG@<%^c&;D-4cyL?Tz@j^0~D z9HhqZFOX#!vKvYXr!(k$ROe#0FfqYT8}gVAc^2gk`5&o{bCE>nM_pIC6X7A;s=t-2 zHUq70Q%VY6V@Tp!oCHwsf;iI(VyY|^aH;Y!Kv8BLTe?l_nKeIbcWZyYb zy7)?(DEwu`!sLr0lWKwXZ}!+6O`8(Pp^~ueRcKuly%Can8Xec(STOD5 z2A=|-g>(VB8YySp?8E2}qCj*K#Ep#+Zlwi68W4P|vW0TsLYUOGEqUWs+W%*}{trBU zej%C>`wE)ohKU9yv4#T%0QR|TcfZPmMTse=@vp*~S&qRsAJD|5KN!iCKLSAFWx(0FCOM<6d%AnQ($^{vCM$sKZtb<^ zm6Xsaf%%*!sTO5Z#nShORqiM^``a6WPc_cLr3{Tr&pIOa)r zk{uYbh=1AxatvcXELQY&h!G2xX+EpxGaT2t@qlJVJr24mWYl3V382M$)V8&?0xP5O^vLubd zlIQ4>Fb(MiV!aL{W0l9;F_b1*tr2$$ zRJJPF3mc57^bW6>((a_7LabvD=7dOT) zD_SPmi=)(E9-l2Jpj9j(E%s!2mS@=Ca$WmrQ2xDkdA|0SH8tI%I=P;{{KP!?m-VWx zm$=b2nXn27V@|+@Gx$;aM7$kX1S7C(X>&gRv7g6w%NuL})>=+=3jpw=R5m)q5 zjyGZGFD%w2o7FKk=v?faB2KAs?YA+vkE8S>tt#b%)m=Ho*Ln4~^TQcRj z#Ec_Rb(zt$GH0F%d-`MFtkN0QX8RP%;KCW4d|VIJl*YDJf73p>y{nlwk*Rdd32xp< z`-UJ~XE}e-HGc5b2rVeIBcp9fq)?RRFzWN0y>zXGO86&Qn{iR#3u1nPbUs=AFFyLB zZ8o^%*0Xa;4}Rmb+D}j7 zq85oJwfEg$aXtDZ@cKGQ>Ju?8G+1b7x`rKFSNlIHo%H%IO}m#NACw9UNn0N4sHT`h z%(cPDHXe`PVQJs6g5dJjG-(NoSa}*Qk!Ed`=0@2^qm>14AqSDKvgXF?*UwG6Z#yhA z3{2+LT=s>ft3A81XVS%0&dTM3d!>`br&#DQw}04k*)aZGoqRcU5yh`|K~IJO{y86{ zlGc3})Oe2SZi#|JQuHrQ%1H-wHoh2)-wcyB>f}pnzTIiXHku!W&%S8?WZ5F#6sk+uy(F{MX#H4d)e^0= zOPPRS){*JBEo=0T0`fzHC$yWMe_E!N|j@TC!YcwA`5nGS{ z?UL=NjbFq|v%9k3MQg#9m_F@Hy%l@q=F5xo=#nzM$o9JF|gXrZi-v(w9 zH`iCVu!|on4OfO_uR>J7&FbWiNkOdO?@i45e-8V|?Z`v+@^C)cLg;Tt%^61xf}pbz&&GeTEp+MbRdNDn4{ zYT2;|x0xR*Re6=&H``@aJ~(PKSc&_U)(jugZ9MZ&93^!$eR_PIGO?A_5{)lgWPGs#0Am2&S z*WV)@+}^kBHe2>Si+MZ)!20}?;BiYhJ-F}#g!&WV5bz$EM~cV5WO?j#7XqHy(nEps zJRgm4?oVdzMMwDj^Pg3;T|8@;Vt#1W@|QxwkRD!xtFnX_{bcJ%`)s?|*B`BFMqXrp zaFT+5`TU*Xq?-}kW6Tx%QSrh?$jRCSh{4Zh0b`1I$g` zh5fW}qF?MjrZ`+C>05ZFZk{0*#z=?vkrzgz{5iX=cWCN|neVInAMRg$5&l^mDvKsS z;t^SrC+al8XBtE8~Sx;VelC>TR0y z&ZXD1$mG2HdSm&OWDg+XTDdt~nI|CVk!E;5<$@^u@lZ&DX!uK&;Q7aFiSud)V(cr> z${x5y_KHb>30v#LQ!yUfXHuHCE=3d-mkgpkJdQS*gi!mvB70J4KOVRJfVk=>+!x%)JrqG``fRikiX%|fx%(q5 zSJx=po+}-B9DZ@_<I5cYX$QH?&o{ssTUR@P8~(Iw7+~id$J^)H;~R|MHPX zgcN#jCZz;(lg=o;2T#-Xs@T{0(x*R}`IP5;frL(#b+E7p>1tkkXh7WiE-Y>)#dwe) z^}&-xo%ah~rIS^Ow6AhC^G+eSOQDW5=o^sT!lw2kIb6>FKC5BKxKKb+*hj)Skw(&|D!ru#8` zkGE5w{z6UxeIJrePvuQIYJ0W9MxG?Y`#KvD0O);a^rRZ-@OQ58lVTp0s8>4(w(?Z+ zOY^dSOLe7Ktuap~)$H(|_n1V-YOK_Lb^Z0}ARVz8fEcs7i>n;iF=>Qipdl-T^wkpl z&y7koNpXd(@kcV10pTz<+)ho00e*>77<3&ava)cBK5DrsP>H8?ZaH2-{uJ#0qHvSxI#an>FNJ00NF0$&9e3ckjq0 z%H>WDR!4Fh+-3w#U^M^!3q#>j+NP?kL)h3TlbOR5GOcyZQ`59lvPPtMXnj;_zi{pM zG0*w2Y??T-WVfKcrx9Z$(#hofGWcVwIa0gGf4oEfGFoCXUY^pTKZ@?jz_$O+a=>H9 z1BgVp#dOMxH)5-sRkUM8vT7&Qy|u3)UFO^LmE46P48;gVF?QU=bYtBA;q5J>;(CI& zK?cGQf+oQ|5P}7F85jaVgA?2d9$W_&pgBH~mtdtEZ8s zK%`%LR^B~gF0Zoq4{W$y3@Lx^ zjC9mi{|$XXBzkTWI;Hb@prA1xDR-~W;ul8U2C7S@7twAC&Dz!Zt}d=`EBW=|z)1>deAsWVx{xLUCm`#9vWG9vII`pEQ2=WZai$FlBC-dBY4G_6E;IVchi2dH~X0* zBVG9vbFtjhF*_&Z7@&`;Nnpk!6N)W@r$|O5b9@E`S#>^%;E@YNrU}@|{Kt`yeH*kO zGd)P_iOHG}aMS@QI}by7Ccv}W5Y4iJj^tn6nbMVCroCYrYfq26h0)ZdC@KI| zR1L#!k-kIjf7AiqC`Jgw7~TJ&4x-X(OlaTiv8m19xd<3;kD4B6%U zY8b93yRe+iFPLAnoHJd(!2Miwir%5vDQau|DNBr?^+Lv2H>5GFdCn<3#*&SUj- zg59fUk6ApqO8!e`4Suhzb_=yhx6;pK51p&|D(4>BVM`=hf{OX`E6O|CeFD|g#cEB_~G76Km)`FE7VHG~lj6R0{qJnU>J zAtI9YX@bV0z)^``|`mN>wch??0(*&W$0KV6b(l9Lo^3EK+xXy!vuSo0rf0siXllTJa>~{;UmZq+2(HwB-XD#LER1J@ zOJSE6b9t>us`>4+RFmc~Z|&nHbXbId9)|sYAPEPc>T&9b01doU^a)g5Ptps1n%(IX zW!f>V(W0-u5%iG7k|$4%v(RDI$n>#&j1uLdL5&B>7>%<$5;vZ)k;&1Odlp7zU?1Wm zcJ*v=%jE0~A=e~^L*WJOTsb~H6ZwUivE8R(wtH_$P6tcMt=dR3Z-Pv5|4(?WuiAZi zEFKyRAuQ7p0m;!Fs+ss8A1sT98b;a+uGd57xF)YfCrUHkCvGISczsKoVz>R`s^IPT ziqY>zgj(@?a|blczaT}japo%pcl9@~{iSr3h3S#S`m<|R-QFVRKjqe`0N=Ua&w!PKW`mIRer$E?`8IvX5{xv+3VvT zO1stybK+L5q2SU9(YXAC=W&#hnm;%}D!A^Pn2!~!pd%3+xQXBBFcQl0!e9AI;dE`o z+gVA5t@x0uhZJoFJ+FuRIi%n#T9+eGZsE z;@P4C)Tf@5q`JaBgE20tDtf_8v}0yNz9Zvrq^%;jW`hOVR9g5o71k(-ri+39jC=RE z?-lqtv_FS7I*HSMu3(uZyLrEWGnW0X5(e;T(mh{ZS~tdwN~{1Ri6+H6U!XF~6DTr| z-E46YsqPQGzpS$(l5svfEk~yE5)%T=6a>Cv{0W_Ka0b7)&ld0#G4$R_6hD7Z_|k#5 zi6`>E=!|+;;FDhz0=kF`IjU7`$|=;AM%r22Z46P-o_N!kKt}+^T86Dw^>Qh)KrQv} zpw2Di6fOTv8-|QE0G_#JSXaEYXNd2{@n3XZkRkAiR4(la1QGok|0FW?*MtAH z)Xan>E|h%lmS93SF-v;#wVwWdmu8&0z&IQWChpE$=ZQChaJ*~+rIILeSDUuPp(0Jw z$#tE&pHkP}=iv(c7BGdJ2&f%w0uvhV&2bvYDqcxsbemk^_AA>fIP<2dK2WNt|846r z=p@3K@V}3vZ`0g5zGp^5MUbShT~S{Krfpo}PrIPcG&vmS!!yz%E2ZMp4r+lD7;kn=v~vM>{}8`wk3D2oQbGLBvZDa}ON{cFRRMbnt_h59pE3oMLIhX4aZFA(r&Xr^W2LF;+MQM@J%wH0Q8g6`LBo98{{#6b zQ!%D4{(XBKFuOOaS*}c-n7m^LM*dAQFC2x!Q6M?dNcR8vVA+y-ae=Te1%i|f^}?nQ ztzlF1f*WuwW_NOowY)TegAk3W3RYa7L>AKwOz)9=!I>-MginH#+{;-(_2Xv>5Wj4B{=-N z98~yKPckg4)i4l|OX7LL?Yn=8nrd;T_6pitf!}sG0jA4M#1*ZU&JTyC#Jh6MO9_4^ zVf+&=o8mtXron*}B5KlI>YpVI4!Q??@sHNwGPr)8+$a1wDgKu?%_6v7&<+vYQ1=;C z7H%>g%I`%-r0SDTdF`Bk(YEGkk;O^`3m`$FJD?UjG=11 z*4)!;%BwolNZ5@IJSk7Hu^UiaLbh&jklP`i;6$Oe!TMPL`LApSD}vD+DH#|L&-&?C zh}*YO|DxVJDiPll%Z?|J&!t*QiPvVK;;#R;eY-@g2+Xf@aZl)-W{}e6@5=*d-Po`QJ*FujOw)WPVB!Qmc$O#b|ds)XTg4hzjOza=<5v6pZJS z)Jf<$s{y^#%OgI__J+JqPuL3j5ZVB3VNF@kzi&7wYREiBx`Y%AQ-yt9kDg_>)g zUPJA6UNF-tIUQfupgq=TKGFGJzMI$)VdjWj-VMJ78J|P_fXBWU6Js@vV)4}9%C#f{ zOK6A2*zOPf=eznl=hxV7^o&3Am}c`6Vg^qBosOg@UnpBCcvpswFn-D)RQ^sz50vVU zES3H~DtgM}?8eF)_frs8W4e|RHXY-F@85g>L*q6GS?eRhl>Tpg^Y|5c4ZiAL5vIYM z53~OTMnZ?}Gsj?4F5x7zBKIPO%A1 zNiN}_)n##b8yfAleOBp{+1$Gva~G8d6sUz|5P$8idsBW$?R&6sU{6!jGR#Qwspud~2><&Djhex^${*{iV zHaT~Rp&8*Cpax^ZOeW7sdn=wPB()30yn6k5_QnSV11v`P-Kkz@flBqSk1lv9N2ZD$ zjWLa?mC_16G-BhHe#C}3yBii17ACfQ6;g(ERwI5tePcPexMQ)Z>HLpW?Zs$({HNV= zeT|WHcV-I?jMbpfuMgMy?&K#F8cS)GxPB@cdq3`3ESwD$vh<^V7HMmp|9ux-T>#Xc zqvkOSTM!s}u_bd|E7b}*>*1`k^RLR5uM6M@4yx7EBw-)eoYnf)|V`Wt`*5 zs)|-dp`WAJBVP?@X-y;vJ#r{yoD(vRIsV$R0n0lgROHWZj$30?|IT=i1Selmh(v2@ z^cMET;8<!6*yKTg9l%KXLBwgw_vO}<`i44pqGDNL4x zFIKJN`r>*#QY--{${or6t+k71697An8sG1K?}@cLYb~`Li=8aZON~3EBKKjV_$xEPw4+HA;uVrR1Hljpols|6DT(Pd5zvxmE!WIA;pgPF;)r zxig~?P~7>*T*%?5P^x%Tm;kwCu@MNKal@_qJ#npbc1;k>%@nzQ7+wB#tSQ$LQ8EA>zR&!@{n&!bOQ9#Q`eO2(($;a&%;(&t z0(tiqgGLAl*pA)E;{Sd-s9)10akks|H5fg|W80cc6?!b9-SDe+^?+r}`HZg`-6VwZa8fbtb3|?_Fo5UnSPhnJmfGr`eFV!G zSHXzg?2ID|4p+^YR6^U0=~Fv*@0)7gi22N6x=?(|__C7SX+qX0T8o|YC|vW2zwnn7 ze-{QqOMN9Ghm*N-Uj&l_&6|ooDfX?jYM{9rRM`kDjD5*TUkpEV;22yr5Z~vu5eX1X z3`l>mVAr=_r&KX`Um}0XP{u8-rDnQijjK47oNMpo&i~KO?fB#&S5`z96ihs`K>d*j z?2dmrE&xDk)Lg3jA8X=yKZlpWci0wkmwZn|BafHKvf8c$YTWAv+olmp$0xi^^Y!(_ zdso|nO`N|(zIjP)AqZPT`;~!09%a@5>QK!dD<<6hS4E#5?R_p^T=ach6xIBn@CSVy z()Z_%j);W=mGZ9LQZ1}+?)wzNM#W~-IA^ALS#@tpAfc{?m=PY3^>arzsqPQt3C3Pn zeJn?Qd|40~b9XMVAnqN)BaR$jbI*W_6*9`%e~{dM;~_xI+3cJ^&; zoQ>NLquq%yj#;Mn2b^1-tq3HD?R-?oSWL@pWb9>Jz9GS_y;^&%r~0svWTZ%D6%bwZdpVjaqkrSs64x>OtppXHupdH zd(2U%lrD?92;=_`#Go8>TNcNRaL3@``r|E}d9&n~TQuzZ8gEdq z-jPNHIwwQ&HsUrHrvqIAd@p`A8IBFVu9s8dWkg-?;Q+u~OFA-)SvU`IxJfa-g)68) z7JY{5n>7}tv>@D=J~-dSm`3hqP`s!pm=O5bfEk`ov9w~0a-=Y{mB;G4m?kGBRCO)< znu0z-5Lw_-AZFvUi}AoS9{-$`Rn7#zUaj%5`exqAS_TWh zwjhNUXICEY&t3H$lzgtvTt@FSQJkr2rE=hE%`MZR<(}AUvqeGco$rvV>zs~*M+?8d zK_6HR*s?nE@M^;FDYDEh{6>OQil zHu-W_v@0Z<^k=-b@ABm{$X~5+E6!MvRB)Ctmg*5=+|0t#aOm|TiSazs=$$QLV(zmG z1$oHsnu0Pymy8ZGQ(Kxbnc~Ao@A;$^4}lFCXBzE4rFG&VJFqhseAXf6b63`Z`AhRn zVV=)obEK%uA3D2R$Iyek%Ne=}GAAziTwgbP@>~v57I=AZY_z>|)X``-_8y+a_rr?W z?Mb-cXq87I+3Xg$5Rs;skZw3f8eW3?Hiy(iR~Uj03FPs*LN2V=iC6A~MSm>8XSeVh zANSFq<|9!gyT(oM6#LmKQ=Dt0_`ui??V z!U`3qRxP6|@x*1F?HyK~PXuM}vtVX8r6gH?f0a1qfpDX~ed%J}(L0xysDd&iru6gq zBeNl&&I89ylSV(o&pPS@i>|EjvrX(xOvH?k4_hCGdcm3I4ofQ#{yNx-(}hIML0Q*W zD9`mR0EWiQX)h{eR9@E=7`%Gb@m8u@sKDjyt%1IG(?0e{uvN^LHa_DIG?m}%;JnL= z31VSPKL+p6~)8ia~Zt0au!2g83Dk3~DTj;N$lNmK`^R?u%R5V7SlO`S+QDC=BWxPU4F|{{oY#sSj1?E%wh-O!Cx$P zF>pEbr{0#!3o`i}U&C}|z93kJP!U{R@S#OuLw4j*m#+FZ9yOolI3i?962m;<@ePP_ zbSk!HjC81ZQD;0H}-O`100N5*5&Of{vyvMh{JvuwVIzsPPc};tjp&fA@hgwqj*9HjyB92< zhlLCx%853|So}g0qt5B9prpb)75HfCQ*fZGtQ$RbqsYb!(AJ@Mu!X z!Y?-=noCAE$K}jJK!X}5;gquDo+pMB_B%!?(P~t$O8DPeLAak_ZBzR_rrnRG)kELv zFuy(f{EjLMzN@Z!2zSi&X}6IpGUsL2-mer%DG?(Bp&}9M-yJzdWk=`lObv4pMilSiHB{feiN@>5F$ zWH?)O60G+@gV(xai`|h+Au||6J@WKKBI*f*BXY5M1RY}KP;^8$N+8Zh(bLULl~8;N z-S*MD5p3u|H0iw$W{p2pPBN^EP}-EoTO@VUaDe#YCQ5?yRB9xwNsQkxWnY{dXgDRS zrSkbVS5HlHSZjnz-{RUSDCxo(P@RG8Jw$p&h1Br+XIX;4LY6{)DpmK@hEJu2QJ5Nd zT?LI}{F*lz2b>-3Yh7J8F0={~4`i}z9AE}MyLe#ceAFKv7Ny0@0)-Zw>)9%lf_J2d zpMg3mef%j6OvpzylGcX1i7))UM}j1Ql;v4~!YE#V& zApY>Hk+h{0pCZ06cmToy0BLV6ZfquoG7;qF7lmTdCv2`1r6;cUnq5brR<{uQy;e3H zROUQYBJncBO@Xl__z-`0 zF9e!|FYT^5YXU>qgYX5t$L2ajQU#DF3qf-Y@Sf9`aV*jFnOFfI?~wRD1!xT-zh|jH zSkfz93jB?{=QBcKbYxZpM$WtI>_xa)FoyX4dQTcfFuYWqhKZBYmcub1%yg}M01JUP z>Z9}F$K_aTHFqpP72D%%a*;LVw-}IMR*Kv$wfCw@ZnT+;Fv7cnAp13^A};{5Qf(}f4uy5e9=Z6>phR{Ibzf$8+7%8Vn*$jW5EA!d;DtcB)Mw4r}1 z>QSvlNm0g!?7@5Aaz)gw?Tk!7oX8&iaB@{;tN5KiT>GAG(4mz=F*lUFbS`($y;CTZ zw+OQoKCe5%<7@kB?jeIkJavfW6FrJW-iTnvwD4 zIvE7Rm$r8K1gA-kS5U+P+lU?uz3I@_6~3Z!*HF*UHy)#*6|WYO2v&tBZ|ew0%0 z`2`mPc5jK^(Y1EvIc57Nb{t2#D%s<@u7+Aslar~qD~~@mig$87Y4cNEb>4sXeENVO zw~AqNufEQNotL?$K*G(tH?r`2e+JKq2t$WN>}jGSZ-uSx$>A^M@5A0D9Pwkp5l_Uv z%1pXDR~nr=p2zQg?6jRE9M@h~kaME;hP}|_sO+q()$$H8lmr4vrBVJp0L1<_Bs;h# zmLFM~^_9#kfszBBdpc5|hbUTSR1=)t&~og{&SJ~B{}%S`?vUJ0xO=@CBVmitFQ-YW zc1M@wFUqGCqchsNzre-FiH+*?gAQK8Lydi)N= ze@h{jVtwP3XEPn1#G693k}syx8OA59&kN?X#SdOpS0_xo$x0iCpCuIj+-a5+msG(k z`9Ycx|9$heF`GDP@It;-c<&yanu!S6zqp+07%)GAP|@>eM!H!B8ua*1+^HjOb7;NtqTyPV^l3wv z{MLkOUH)^ogRR-z!N^t5@BV*9q9flb$gki3YjI~!Og*c(!%tu$hzm8ozZXPhn}+wr zvhg_IcSZ|(s>s%blG~2JZlQvi=m>utth1ftaLsVxC=mebWcw@SaB{FI5c$YK$BG93sO6;Xf=zW zR+IAT9#v;Hz;M*rBc1ESzbNcTfNQEK!E?V4G-c&>ENqRuh8jhk>}@hS{0VKe_fN&0 zkdjl{vM;p=sDFJ3@9Cu(3?kfEL~hEDvejD=OzvdAt~6HRi`n-XAb^R!SnEbGF8D*%E*v50-Yu1urg!fW(UHTRI1l)Imbv2iH4g8I7W|0sv$-%SKnvumAg_&=wIjAh}XBidziA+^^T~8 zkULROZiKC}YH=lh4(BJq#QB2&R{&x>9$Smtl;ZtlcT&>)3%c~v;8T-zAMUU>H$yM? zR|0O{Or|^Poy>S_Q{laVMcdw|L;?kbzjmoYGoe7Sk zRJx@8Q0HNuPTKxHK-b~MEk@Q$`vu4(0v&{l8Tj!2eJ@^75G^QUV0aV#O@o0$EUb$< zqT%%)6`t_OTK{yzns$g{bRCeH?XmVu52JLA%o`mf!Q;ENHqInNDpP0O*mq~L3O zJYfnOzJsAL^gh#j#>*MBD|*Ys57b1@Kxh)(<08gdUiz6hUVSKtB#j8B>fGf=CbRP~ z|6Xkne?aZIK6k^9Ot>u51`ffNi*<%yhd&tZqf{R)ThcbH_)pJJ|0riLO7)lCzK<8V zb0%bz{P++QKKT#BsOyB{Z%8q7ch4o%4ucCT20@AoA5GG&!9we61U{$Yf?5mA_YczQ z&y!TaD=MHqPfi3_ug(&3d5I*f5>7|UNIPO=cLHLPN2e|-k^*feMy0aYjEjqUa4PA^ zc0`dZc4bQ_GTpV0TUw+-$SvJ&_h>qTZA@6kp-G%%0Qn;K z(O|TA;XyZTs_SmFImI6Y_I#~$->}|`vEDy^-v5XOa|{S*{Bv0}4jUZl@4XDRi%zZ; z@!cfG^X}k0{<8m^;QUxiITr`XjrL2w;)=AZ&4iqL!0fJh&XT9I80!7=^i|x`>SCrV zl-5Y-q^`y;Ik8LFwP=g{XmPsj-D%M2lAV?g8RuI$VmX!Os{U7=4>d+ZVud`Ol}B#V zD`zg2`WUHfG1X6qRP>;UhibpuGy^b%JED?Q;qt3MmidFkS)W)yWWBol4J6p9vn}hh zfB8m+8N~l-v!7$#o2_=HPJ|eEA?dBeSI~y3D*1@bJLF#ZF)4>{|@vY~BaJzsw}7 z4Rq^j@TUcJ8{N)_;CXw0t%gc$`s({z;gXs@f8k2<%pa_$nw0P0JG&7l`H7es@|k1# zn!sC0Q@veJV)W(Fj}%kL0$Qwh5jw_&lN6~)QbTp6J)HIpAz#D@3YlFrg zS$=6xFeWUF^&Hb7)098Su|u-KrErV;HZ5kW8<4l4Guo?7^DIZipalV6c@a!Qfr9ge zQ&3Tv>;k<}2VOL->fyVJi#A6Qc2XBzzV(m&2cqEb)WR930??TfDy}*hu6=}NEeUjd zC{yOC$PhJ=ogr8jird=S_GbQVzE(b2 zd3Hk@xHT>cQsV0jFfjh`{FK#*it=C9#^ddIKDtS#T@C&LMA?Nc(#ysu6fym$jMq17 z!RF4}#EUh(bG3J^_0D3uNQYuZQ&iGl3L;4m4%}heI1J0Uon-cZXuTFo$2&5m)*t&q zf;>#o@)G|6fLTariHcg4sXU__EPbmP%L$hEqvf3-S0EYvvS~4*}%7VKh}wGX0JO_Lxg8iN)K8 zT_^x-Lesqs43<_N+*SYGek?bAmIw$%bpMFI@=NlNzzpL#{i&L= z^D`E5Jw05vx@*wYpXu>q9{$Oj@G~>prK)G~;syk=zZ*MVJ1Y4a_HZCjjq5KsXJdq!KX0^eDTAbW*{hK~ByQwj z(TbR^pgFmL>(S7T+bwq)b%pH< zTBY9U!&GO_BO=J`NNrZ=H`##f0Bx7>!qE)fsO}p%XXD*LHzfZLME<9#?l52ejq`BdzeYXk1%tftT0T z>|<#kUl;EuLz&vMgN|@Qo6#dD-qD|U>mhG@z0#Abh^9u<5!>-I~K1GcqPZ`i-&4 zGIn0QyAh2lqB`-n@~a2}A4mC3`!8&^ml@)wk$s=Rv%Yyzs9nlB!9b7z;N(wT&%7)J zQ1H{_mc(tYUFTKB(M~6AP-kDUUQpwUI(nW%_Va@&8y-1in1~f0Bl-g02_a*E3(rR|o{s`=Zac^&ny}$pI zQX6LXk-9L1YNGzzjQQK%7Qg;HbWj05+a%;uw_Gabi!nA0=B@lZ8;x z-|3X1l-jh|S73sFFDb!1H${#v0>4$3l6{Iy*Q(z-=Y+i@h}9l_wy^Bw+VOj-@x*>t z#rNbVeXMrm-92cn3vw>41>42OuPrLb~l)Da2lDJQS0rgAtJCI8{YQhpZbXUZ2cU; z7W*HY8`ZiwgRW$zBFk65smsU>(2#gl!fWltxw#5lPkQxnJ5m0zBp>b(q%ioL(ZN4S%+P9q!7C*Oxg(DHC5xuF?viG=Ze|&(LRt09WBck@3#$S}p74B}>N?KuD5~ zB3?ydN{ps)$K*9J(ju58ysV!f6={F8ai4Gd!9j_uOCPd0 z;ir75)Mtnwdw|!29bK_=v}L$LlMWf;T5 zRhLkAg`}=3RY#M2endeSxJKQm_uaBNP$-3J_I=tZz3;qH&YyYPiH@OT zF!iwZ8syUHcfaN6aqBD<>d_E#KC>TInIUyeH013SFA=1J(? zX}SuI6yyq<;;!=M#u`Jy>pTOyLw_`L?S8J|iOm|E`=^C7kR#EQOC+@(h|mUg8K4n> zzm+lH{qu(h#a;%A8c1eubI;yidE@ynH};I)laX1W{1q+1w*DQJV53WhbOQub+!x#Z zeaZ*OT%-g6up7@u_H7qj%aoi-!5g+2CUvXAy#wqq?MLjsG%Bn1u1lKX7S7R*JR#3z z{fI8E*0%2FTKQ`HrfpKg30c^>&KcC&L_@G?fPS!EpL~%q?=!kRT)x2{62N1*BIK0` zcq=_^i@tBhVlU^g;#ChIn~5cwwEc_Q_uuc6if24picfj38Q!?5B6}rN1|^@S6|l^#|MdSZ(5}dT zz6mvAp*MatrBAipPaoyvHAX3OxB%lE`m^Vn@!G#MbQ?U@h&rS|Cvz|0n9s+VztSsE zxH4KYtFYnOy>%*Aw|pUAq%pNoYMzPcipt^HCM?! z!a1a&&$VUu6u#{WJCQnMbsk|EMbgJw4W~KB`(s_s@tp+KS>~f{q5w|yff-RO=%iJJ z`K68Dx+ByYX!pKRP2ecrc$Bo}bpCLf|ELiV$MnX@yiFh0ExKa|G4vuy=yKO$mdP&!!O85Sp`l`TK{Bp*7dDdy%SPw?ek+;5A zbA}lYqM!7oTqk)He!kKE!MCvU!kGi$zA$5OuQSE=TMZXwU4`LdKFdd*X)qyFZ*Gd7 zks9g?*gyx|hr1M)jV|@oubEVg%5gfFBY^D>Gi=zi0ME)Z``WSi9j~vTpBUbW1z(|| z=1^k0h|aA*F{>(S;W#VD!;n(BWNxqhd5e>zZ@&7;G`qhW84CR+>O?W^h8tfBu*r$q z$*=zR^t;Q&_W9dd%{&`?CUnk~Km%?bEH}$RH}Vw`mdT{sM;7||jEvtfS-buSh4^*% z;Qeanj;bU|2t%pien}O|41}y}=F6knk@~}qn|k&UUB?B#y^FA4OAkaVc@ss;D7^iQ z@QSZDn=$K^bw3tM{$N2Ai{b4&2~JMd6y6;(h_Ig&1Sw@XBKNzEhGh=*z*#8W1fX>D6mF6oB`A^&;}d+g3xbQ<4Kp)fU6e^uMEO(; zP0PdqhcsL(agJ$;QE&5`0v9I_3fhi8maSkgNICE)zTfykGTi^&4nb?XMy z?@Oged!82O$kF=bP#N|ekSp~NW&b7=VO>~WP11Ue_8@jI+a)Fj$Ly&|zIQkmr^C3q>IR z_f5hIIQA>dE+Z`T<=RZ3SF+J&C|Sv{3FquE%e#Q#YI?{hLFsWJse)SW-8dl^A{^8N z&>IGTWaUwPj-L8}j}$I*bpbp6H-zY)Z&9x<3?bnp5kCJESE(OQ^PNGq7NyqwM5+nb zgtz~-%6{>1PQR1MG_{g(Ax9?JRS|R`W-_$DB0c>xfUnngyrAafrDugDG79$G|j-e;9b%OyxUi;$JpJyyxlI zoC_dnJ*%W|{#TB5m-A6D!oU?e6m|R(awZp-86jg&F7$s0E)Ywaqy7D^n$V9AFlzd8 z+Lx{S;9-MHEc)bQPM7{C2o&*T)PBTHFW9C1KV#nCKXUZRrvXz#DIIp zq^*})ai<$7QRZ{;Eil!Y*A7MIf2{J$1|YFgETJn~_rw72?e?|ltK{E!j;~WM9O)eq zj8iDOAKB7(|BY$4ZC`ASNH+Q>-G9mnyu)=O6I9-e7X688F)!hzjS=VBg$=NU9P0TU z;FLUt`>pkB*A)0zkM_V&mN$FV1nqBdHj(aq&JftKE=CIzHEBML;C?CSs#Ixfc2^j! zgVpVa9M-uHyj#5Z1GMSrdh=-i8{MYE-R5lL`J_O)@T%pu$Nc%SdsTarhk~(P_Ln+R#sPh>3jGYz4^m*CC5PHh*(?rIh^s!=R#G;rQykmHQmZ&7HqEl% zDO1go{bzP~Gpp<_v!Ce+KnW<*+M4x*-ru#eIo5v-?iFa304|oTq@sS|~pSl2EcKR06GkA3#U(ZYi`MXj*Yi;(tZS*bB zjI%L(`KA6-9frHd4+F2%2r$;L#TXY1Z%F^t zzGxu0%?{LjN*ww%D(yX7sv|*yT7W*NUPp5*io4eHt+cU1Og8iob55hIi&uS?e%kI0 z5{eoF(>w%jSLJMy#){b&M~8_B(5?f9xkLO@x`VtgRc?Cfbmz9wuH#|6Kks}n2;(O? zl@d;+GU_a{;w%O4x6x=`J`}&(g~rh8x=4iA&^mB%(b`QUs{64o>QJM1Mw!tmW85Wy zk9_j}AFwmH`gzZgr~ryY?YrG;ES{cJ{>sZ5!H8F24AP+0bI*}ESxSqIf=1gZ zW$&lnrh#(fiKGi5`sP~8sMSUp0hQ$(@%&1*w8HAfr_9#xJOr4Paok*n2AUp75%7>0j^yoXKU}4+?_{Vu=P$j)=m)^i zzm+yw?9$k@*t?&FDSpCAx+9HdKWVnve>a2g^jx69=b8OXCJU*53rx{NtX>Il*oLj# zo8e{-ujn#w{OV&C??(1VDR!=e{=CIHzTMM9etCq1SgZ-uDZk1>C@!#)dDSE%5NZ65 z@<=B!s5Zgc5-zB$TOG7o)oNry(F3(Uv(su{S*1VQ?xk<0GV5NU4bQMcn-c~mWwaaT zfmJ9?96M~TeO13a$ze1#B`@RP z2EhgvjqPK00!K}yh3zl_K%>3%Eh5gf}5nrQ# z7u1KxOg;>nUu%^q>|ihI;+l8#x6T)Ln8p!BtvEW9W)9hnAO9iFM>xol6tR^tA^VOx zl?y8V?4+@nr+HugMU8`y3j&rgc6A zsyoecU+jK)2!E)2{6uxO!HRj&LSmnN7}h07#x=YabzM2_gQYQg5-?B+IWDrFFz}R1 zljoJdH^iGLk^F@lKGAcp>`h}BF}L99V`Mi4(&a38u;6~MsGMdkZh3PdIJTVoZgqyx z-|JBHqfy5sS~UTs)3wKNhADKK92k_*XdHzGqCHq`>iTkY`|o4cQ|Qo9KRpI$c-;Ou zDs};ulT6_%Z)I@}L^Lr8Dh9}Q9T+YY#Q9TQt%|nSzniIyu~+|2K@5r{jhao`rEDai z3>-f8BBqd1RcX6Pn+SBi-yq|A0aNh&V+F0D;ouvoTWT|1<8O=CnCNenEn zA*wehxVko$8sr{OUPHUxe)pCiKPTdl9%k24E9fEK-pJ97FoEZs5hV*Y$Smo=sbyE6 z|11LVhHg#cS>H7br8<%duR;r_ug~>Rob)(X4!nmR)5p|U;h+4whJtvdMFbc{2N{O| zAVuKY#?D0pcbO!d3%Ner%Y!|wlm4C5PRYgg9C-{W5y7T%$KOe^0(;k@*~>-Q$No0O z=rv8Vm35b=N@bYn1%MWzuWr-L7iC3wOi$`yf;GzUGNK32gm4a>!||`x&~?W|#42d2 zy;!y}#Gsd#k8`QAGgRpL^8MTKlL4=#fo;Y{jd?<+YCG;>WmSHkuIU5DCOsC8TP z)0$_Rz^OgG#*@L9u|xXR-A^qC&@2@U!^b*^?WIyw2-Ijgf(C7w&jMEVM<20JzC;bB z>U5Ph$bGC=>(MH2-kB{j#r+W#UEgroijk3P!-j>7llslmmn4`5ipnOZy>6oD3|-b@ zG2dNYj;DyC!E^Pk6k^5L=I)BTNafBIRHmW%gh9A-ZZ^3IjW@J3%)zTFpv1V|L{ucN z1iL;O+FhJ03H!v>o{+CqcCo=TQX1vx(AM%R5oU9Zwvvxh>GyOe$Ya;-gncrCdj`Q@ zRP)dMd%GC?9I^tz6#T}sWVtWv0D8`Xelaq1m2xIa3&gpBELyLgnIQxNj#FSCMFic4 zfOAg^iF@~-awv{iXH&uy1izhDv18xFAL`kG=VYaoxlNFoOa3%N<&-&AOPNKhjoDw0 zc&=NoGwDY;lKDh-L~?dshv~gaN5zXZUYFm}#Ir-%DwDG$_n`si^VL{u8-4ES404`z#)Hpx`V~V!%K^&N@?lcJJGqf#kwr< z3xggs<&$!17>8#N^;SHZ)}2|yI^oR)Px1D#4L=n;%sj~`4GK5=U!u;*wH;ixQa6=z zR3sU%F|M32%UJF89iWTGUf|<|#||w=@G(9Cl4YU&9xX1UI2^;9g)s%D#H)U&^&Ghv z>_j$^Uc*yf*uxiLOch4-iY2?e$Z^+bHp7YC4}Cz$4ZjLQMnZJq&;4>+~APGR!`=V(;O47{6;pU(n4r zsQ#7k?`uCa>&%1~_-S6?BxaA~df$zs8!&tI$kF$2f%7v1&V@3< z@d6Eo$%NuRXDM94C`e;}fl38+1Ae#-OMa)N1rTz*#y7iIG1|QhJ^8g)j2ZKq(Y(sAXY(uF{fLGZHqP_0un}H4U;v{#aK1Y6y!6fWbk`OOBS34hCct6ZF?my zF4su$5$A%87jBO!g84mxhj(KP)7#pqg(N;xCXHjsFzy-n4|OUE82!1= ztkvJ~&c)x!mzw$|#!?7do5)ZRL0PN9AWnu84Zr>Yp!Rlpnrwm36bP}t$DL*eFRt%5 z?_(Zwg{l1{O8tX}zf}Ygz0^Cxb1eu^Dm1y1(Rhy0aQ(sc!xkaFI=&MWJa{MY2#Snt z>=bqK)1!E|&G#yd*i~=XiXHQUFMNPXu7YWf_z%MNQpf<{Pvzh{7+Csekji=)Z{e>e z8kf?c`5Xsb6#t0i!tzYM9h0XD%LK0pq3Y0^mR_tM_Ll#gp%{BX;20k%s*LBtE5Rj> zhj4>lkkIc#Bh#_JXJ8Gwa+UzGoG`Rs=V)53NsaLH8e`P$erT%Q#oyP;xh$TlG)*Ei z&-q^GFwJY%QLvLDS^m(+6zKL^C-VbD)+o{N9eYK3e9XoUeJ#^F0~(;LXen#!q}URe zU*4$p?o9r!6}bDY2fc>GO%^IOR{+W{Eu-+Syn~>&0h0ohfs1+uUR^8cwP+kKqgmHo z^}i3KlqGps6o8L?_g3yM9XMAcEOTTt^=R`8bWZJcfKh+3YPr(jLvo5>pk{m+{TLtPc<>pGRiH(UVq>Zaw zZs2H|Ee;w8Dz+cYA6zfewee@+DZ%R1PR*7cm@-JNDmx3)n<`f8K7y{d=R44gY=Xfe z=A}AXxAppr<2afez5$5O?~n}sQwgvc%rpDx_^KhF1PM6N(-zo&^E>TOXRXS7laK%% zG{-?f+aPo^tGm{ta9hUR{M+32`?pg|qxkTfajXk3K@up-308MpV0Q)k9NlsK?DOj9 zv?QNQZT~Npt}-m@Ct7a+OD`qeE!`c9w16n6bV)5;(zP^7r*ww_2-00jmvnbZ!_sy4 zfA9VNd!F5yIWu$Sym5A#vPT{0*0t-swoQZrTC}I_dX;$5--@G<8#SX9a~)gR188s< z;7mlC)XECY@x+T!sp+9=8;7L&(Y~uS8Beg?`(->(t@5d*Vv}W z820;PTw?|FG=r!ePA4o+c=ZKR&cqc=u3WFSz&;{dILBGt8bLYYhBgQ?SXLACBXsk^ zyB6lOlXXZb6sm_K3JT~3QlR-DKUwLX%hq|xDNG+&3Fl&u4_z5N*z#qv`t~;o@4}tp zg2(7l*Jjnt!_gPdZz7RkW0ZkAjF+6GtJ+P|4rBA7tbFVa__`?NEheU(QRz50-55?R zB(KEoqnY-l)3O>=CT;tCWH_f$oNlapbCgm^Qf1tFT6qT(VLaVCS@sT%^i~O;FMF#a z8oF(ao@^_pD)3J0mAU3y#UJ&SRX{7cXbdF4d#7~@@l75j)$uP-+uRdehxpW!zizZk zP>Gn!{F!BU^h66j!#`2WLty}93a^@qL`}Fw?S9Q#;yd5lnx=7dmhc^?(vsRRb(1+K zS0Jm`NB3-wrDDhMz)0BLuzl?_FYLVhfXCWrySE+KBw zyr>(&I<$up8zhbI*=DXj9CZl?m!0~$*QQmztaTcqp-c*DG$-Ws(wwlJVC7(%Wz!9_vP4Hji%ZH>=Cw5GvzRotpr;K5m%PtuggOrPP z_{x=PBQ9Hnn{V~tfgvad_;#mFadZ2Lz}ulkg{&>~Er9$h<=7wqnI{Jh_H5-jTl|aB z_mF>cgn(J%LXftpfaj`CQZwHtOeeoBM5IRtC%%;Bgpfs0ZFAR{w+^@Z06^hTI6Y%+EIpK29Jiz#$^1F_YIAhvLPw#o_$!5;{33k`Me7@u+FINd{ zz~Xzwy%T{ow-~oC)*x;Qw18`!0j2T%%H`}LcZx>oQ9a{I+lqN1ermn9Gq~@01ae)> zv^1H_x-@N_lz={ze&N$oEe6Xh`{7p=pqO@JLO8&!OmgZm!yN?Z&KjW95)CG+vkt?) z?ZN{fO4@?9>lX#F$IekbVbeW_k5B(H-HLL{_{=p1xVqg(eIpqIZ)U4z8-U|^ymR|D z+J$)ow@&<$Q~}az4>XMXC7;!wz5+d+&IfXBu!K-klPID=;jQ&{#)Hr7DfYW;lr=9#9{+X3^MP|UgYtHH&Ou<9RVq08$u9O!RgM$890m1nfC#>t zP!M&%qOu)Mrg)t=MZ|VMb}(y=_k9d$lKdoX@U>Y02|Ko=PhkYo>gweF0iuy{OxP@sFgm!&y=Go z`>k~klA-4u$C`05zN>6~9;-Wu-O%e3#EpqoW(4pP5pUrA&DUFYI2`aEG)+2F&^ggj zQ!Ik%SS*w-Y#*|!J8>Odz=F10#dCtA&`|lXDr2fmNH|-)BkaUmDKm$206q$%|6s(J zxb5HQ$9I{Rhk7B!doDLCl-$3zI0rF~Umh~4=2?HU{@M2#ixGO?3iNjRt6z_*tJ90e zEbrQ2Bej&^g&+JK4Z6O?V?D1&dmGww%qQ=f=RyF&6^={KH*%|sv0r@C!_O1wtffx{ zU~%~ETc*GgZ(IMuPG_dOA*-Y2#oRO3cFyVpig}kB-weCa19X_(`>34Y#$PcorXO$O zVqAlA%A@7V7u=Q^1RggS)mW+M-!T)vphVDyrn-!}CVY8C(s(u6B2ljoLfu{&`9+B= z&F>$=f9Hr`Z?l#CQR0JG@e5H)vHO(#OtOD+18+4sWHYzoP1m)az1Qp4;b9z`?*JZvH&J5 z2f5hrekt57a9$+|pwoDej)I+LgO;~v@H!;bH!pk@Z<_}83-w`|owTZnD;xrQKNXi- zhWWPRUjkufcS`+3k^?up#pz$6nF{^6i&jB7O0==3)w@n`o!nCH04%yYnix3j#hq|a znTZB{CgXZ>_S|U0v=ZHioW140}{E37!xP~&QJa6LX_9LouNH7=2Z?^E6bpGU zIswa2yPaA@aGQHTfWW_*dDr)yG9SRJrq@_?GJeiQ72x2=!_z{S31e_CdVvLN>Ok{ouo89qqst8mcSeS7k}R zLiehem+=kU}23zLn$-}2?%t>YA?lQ-PFf09kVn9*9jE}^$<+^y2CLg!rU z6N2%(V29JV(!rh>Q?VWxGhQmtvHFJU#{&;`Evi~_DEW#Gt(w+Ts=BrW9Lx7t8^m*w zOfpvZX2+xJ(bzIta+%@RfkZ+O@^FC<1rTY%-`Qhj6^Z0d?Ydyrlsis^=1#8FZj+?( znHD=}*wsxEZ%;4EppGr>J4LNGcND6Y42d23dA$#pH^Yhk;CH`de5|NF+Ds_{-9;3- z`6cPA+FbDo$a;OZzb&)p(hLi-FT$n)OVfG@@&WZGY&GqzCY;Z{rq136_8zQX6!HI9 zsH&{ci<^(Qk&Ly)Qw2#cD$MTKFkL!j9g&sshH7}}I@%fiO>D?>ph6@gMH|hTVX?rE{G(s=pmbi!R>W{oMgPH4m$4UiL z<~Br&6Sy(io&#Gil!&$j)qhO(#iQ8A%O?v8 z2?Y8JO^ety(IRN4Y*uH!mA(bG@;( zjY@O~4*(jj_!<=PGehePAWel?(0;1nJDJLy_@%qq3bCx)-exo4O_{;F>>#|&jDw_I z%(FAfgl_Y-YIT#EfjT3uH2=|3#i*X?2)W-!ZO^3&Ry&Z7nbT0@36HJWT?3>%y6@tywXGvV{c>cJ)3 z$hYpT$wZVSGW)a@q+K2BHKQw9GhL;piHY-GK1L1Xh}OC-iu_@D1hSk0WGl!`$c~O4 z1HANCNbz=NpLO@7;UIUxl>@DFlH5)Q?}9+fWe*v5r^}6P=Kj8Q)RZp-Wky_nHu`By z+)aXtv37^WCi$X``bU)i12XXOJfL0|&>tXi9|57(7Z@J6niK$ zq`aRO*O96?CUT4=FIed|MMGPfRVnlkaf4@>9{yyNZHs^CbV3y>r%(Lrf~LrY2I4?; z{{G`Dyc0_q+o137UN58Gga8OtOjE62uiS6H{Jj?oC2d(49Si^X5iF0am5Tep+i(U{ z*wE^SOqUT>lsbOJrrtI#a~b-0o$h)9S}p6)LUk#1*EahNke^$y<%(i?i zbLn8Sqja!15luV3X`k-B2%_x>a>qA?g_zfhxC~2gY|GfNTug8#)K?R6;~+t`?$0nO z))Iv=VCzd=o@J>CyMf!U&Z9Eizm@od|9J%-xEVp=n8QxM3CvezcvNqdR$83=J^^*h zltT?EkpDEmle$04Xb`mb(Zb;CB0W=4++D)Slkn09bDE8ju17PPUu|;}tyVFDr2|nz z=k(XkPBjy+g&*8(4(5b#sJhuTV8{F@V#DWIWM*lJ;5*FdC;*nQ;1@HARfJ+wv}@X) zlh(Q{ak1I0Jjc&xTII{h*R?*RyKB5*yzF>Mlq)VOE|?ZOC!Kgc+>|(vm-sVXd!{Ip z7497IP~V}oez{C{i@<^Nlto8CoNex(b7H)TV?P+QoGW6J)FfmVoymPyS3Ip2nJjL< zCwQIJxq_C7?sMsL>D!(jcwrucwVN<2bqL|=@X{PI)tOPH&5IDxyI&RTkO&0V0pNbn zF?smxZsviWo$+*#MpF*J0N}ms*?lM^vyw1x6sezVopUmtL>Y-jRy8R6I@Jv94^kapHlOo_{btQka78+6jmCVus zizcnvSQ1RBlleHw6JIupQ%cT+i{fJqNeU}s09-nfwbi9x4rVx(qN~?GN>AO-O%}2` zWh+-h==Wa%#^ehPzdGR{BMEk3R!bPU5h2fpu~^?3Liya$wS7oHKGdJ7Um5tBA{udH zm`ij5P{V@ZVCXnkVgz=J0m2UU7EN($7BJDPP#D$Di1>om@e2U|mCGH+4%nwoib3Bv zI3)7l%xZN?&K9bj{NSf4My9NzQIxW2VUAJ_j8C~8NUidIZ6Y#5$FYrk0r?4gQnmL7;!x=B@cEgo#CC~#n z@*fKQ4#oW9d;w>EyRHeG?cNCqA?znq(&FxY(6>hrtG}*Qp~g=8xSmCagFLf=IQP2b?CkP+4=9?|d+nW~c)}NS8Pk4J=+?9iOVh-;+<@O8a;8o`_^=>wPr`i>Q#H@W z?1rI8A@?YtaV9Q#cLbC>Cu3`P#jp@DU}9azfpv^>rXvEe1TY$Rj2C#+o+FMeEy+wxQZ&6w1tDx%j=ycXukBlzgJX;TgU zfodF6d5mWb4(o~$m5g^7CM=$6^L77w+}%@(43eQYLU=uTm6E;vv*f`9iK2F85=J4qdveskieI#JG zeCj0~LN%Z}-*))-{rjDc_MEmGfAcUfVHyM`Ps#Z!nQ>^{rI;X}h!AG0Mz9-q;ff1N z6#70d1j|^0posy{4x0e*dEF-#eD3{_VV~X6{;99} z)=aonkaH|~I4v+GqwH}+xao3?cAnqd-6o3~mwCR76azrFpM7ec^S(Z$`A5=7)Ey&i zDp>^joph{u>nXARo@= zTidUuPbv1(wfUrBG5>(APn_vSQ7ug^zRLvZZe@G>t&GI@Cyb6x?l7mxgc3IXM9T>^ z$#({bm(=|gtV7>L+n-bY^jD?)ne(H3Eqo@4PFuz554GTon4Wn~RnYSbb(KfT6n#iA zdVoh-tXE0vPtoGD*JUbH`|nca%$d?Dr3}GnVz34cfrJ*jEzu6PBNCgk-$b9k;~}{& zGFzLyQ~RPvqZUtTzZhHA5L00a%RDlvwDbL$tW6mnud|4#(a2$Pur}tE?#*KMmz92H zuyeYjvVf;uUm+P+u_}M7Yt*rS__~b|aBalgpvZ z`uh)Yldp_uvrH;%Gh9ddO$H(--%@WZwP2%KSB?pyJ)ak^zF;8z=TXG1=Y_y(IS~gU z?<4W*cqbz9ZSsWN2ldSeSrYLhF_hL<@s*6;=B&A5z?Eb|VXOeo6GnoLF`u zj9@kB!@r{r4HIqAU}dUeH*Mu%yHjk!PF~eX3=eJ}`9k%0m0|6181#dz_J+rW!uj#? zKWSfd6v@zsfz;f$xi6KQF;3Qz^x+v}Y1VpBgWb<(=@RcYC$(Egm;JPh+D$ChUL>qM zPOESTDj0joZGQiu@Jd2;v#eU-s8QLX8zUh$wkUV#4MNEEqg`pqY^SP`oC!^uyIoa& z{$xiAn}{W6_oO7@Tf_p|s1b1mN8z`a3&xgyvu~7JKJlXC03?^?>`JZpH`Em*adGjf zOn(d57{z-j>850C(ZfYUcctD82Lj{VZF9cs4OrY8x=>v7e+x_XHfyusY0<^V zTp*%T`+9l_^>H(d`Wxl)x`$Xq#qPx|WpGhsSp^ICc~fTU;O#!yr21=0JPiRrCJFy_ zi0z21?dzG1rjM|njHncI9t(zU3Jz^WCiY#QGFs>C-OL%GSXIQDUX-nd#CF!DrCVS$ znX||lWd>W@Gr&d&)CVST_2?(-lru*^<9(&L0C8Synu@$^#Yc*B#N`Ao6EmJ+(Z||G z2^c3@3i&sX60`sT>h1Sac`dizUa#Q}WmK5%jMc-A zvDm=7N|bc;S2=Uo<5Q`y!r(3-w~+mR*^ZcIq@JmQBPXF-ENW71xBDhk&Xs-D;bJc# zsD&a#Q9!uSRBRnd_3B5WB3oBMyd0?=k*GH5-+fCxyo(gHX8QG5U9NE8dU{x=G_XBLN7l20v)WPRFzR~|u4F+&>I_jY& z(ltSE3LI2>gY_s(WVITy++zE{P_Ggr$TjsdMik5NUDE2OYYJ3aa=6v>?L?H6DNNktdr;cLJ5{p`lUX zv9P$W^f7m!+Z^v6wW+foCf*tS*0~q36_uW?ua78hiSiWv^Sbm|v7w#-wq) z`ZYar9bvI#qKJ9ae>5<2bjkY2KHG>y7lU#l z76xy2eDNL+xQP2vgsEr$5seuEWRI@bt@-6lX`l|boowR($@^2K7koJv`>i440);OL ziTLIfJJ^8?Oe_c<8$HMNCBZ1bZ6v1EJ^o3I@qhf)tkCxJ;xC`G0-E~Hw*GcfmKcY^ zxpHI6h#8s7wDW}@BL5eSPRyYqpLe;mk`~>+kcFO{=lW8LFgBlD&=34b46Tc4@w(ms z(*I5Uqj){VfJaQOwU-PAs1|s9;_E2`vG>$OZ63Ow$Kd}rv|_CMk6mb^vS~tZQzCN| z0ol?E=cO3PcNwLU9P0l!wy2i?+8RxGeqSqECHU*2SD~l#A3Y9SS=pmcMW5-6gfa29 zcmvkbGdDmcL(i||BtLBqodbDv%Gh&W^}KONLJ^TU6i*0#kq0z2>(1|qc_97 z9x(ctP%6AwneWr)pi&JdIOR2L7J2j~+zPiLOX9!UO#igbLOB=IcKg3!ABx{u}i)rLv3+*Q78&$4p#1<`VMRXB_nFC9okptP5ZS>8?``0lmajk$|lvM@cW+lD#; z;X;MKrVQVRE-p^Gr@(qQm@)H>J3eo^rzXof8-N}~mU1DVQ{!&vJB7BFZGn!;DQu{% zlA?y0+c0YS68&SspS+BD;la#P^p7b*>ufOHX7P}m``SJ{IwAT|K&{$U96pk(ula^% z`@#Q3(b}7Y$6FohN!qa=o5taK&V8?^g7|K$M^9mBGPKk$zV30NR}{oHH~twM8SyfO z|6$bH*mUY_d+rq8PD|LHV*33}GdVdDq~Im0urDAwIsc~!Uj?f4Tk%kG;9^8yn*zmF z|2VF41q~QujC4I^X)7vmixNB#3-D;Mq z^t^dwK+W0JRf*Bl`ve17`d=rMU}{meJFY4Er=>3#KJ1kp5@v!X$eWpnH-47)cHK&4 zZbmwxZN6v77}fYJw`!|&vL|2Ov=|0W zYwLz*?={ajnTb5XUai0dRrwJlt&T>IZN7|`G?qr_cXa_#DpQl-o|;$-=*H3nb@{Pz zAeUK>^sWh&<*fPAl^N~Gh*8-nIs50v)clc8qhnkDywv~2~ zgMi8n`~}b1R#t%;x~`VHRb!lHtHMhfD_Pwj#C|Ro5E*lH3K(&#A3`+TvHB8f z!H)o*d^jCO74m_}ZGYND%8)d5PJYsSV0D4$GVY>dy-63S3esh#&3CAjSrUUCGF%KM z?A6+HNALdgg+N>MIK!41ZTw_JRYN2Ftf#E4gAH*8 zjrtVb>Wk?s(;@%f+PJ~BYTr!heH@!Fk$t?$6V+L5oZgptd@xK_XUD$+ZvK6$&m$s~ zX*{Xz-v1ZI!%BOZBwP!|WZw7e36f6}Ef5@JPvoL4VD(IL*gKbrTw$x)kGI4$ybLFC0^tGg<<* zf6bRC?DonJio-PT;Z~ebz(*pk~C{!?G-*yJ^c4>|uI1-1GOG<@z2*WtBuI+BT zQHs}Ms@(+rP_$Mw?fcuAoVaHkE;YQhXdJE~IXj=&qIP)HT+lJi_<-`=Y~*#ZMbOZf=>%&%QzQHv^CDcz*cb z=dg-jFE1qoxaHa8=FBs$_>{dH@vD;0Sy^PuHtSxDdhKhXlp_e+uW6(?bC|fw-)_X` zI&Z{p@{GGVT<&Y%$XW5Kc^4pAYGmcOJJm@0+&#Tfud>i&M8xf)m7@G?4l?M=le5#| zTPRC>NUW{DX=hb_f41l0?d9j!8_`;qZyN zK~zB?o~f57h3QzI>PR%`a^HGk>z9t?h4(ZS!Gckcu&yU6uU;bfK?M|Y^>qls&2jyX zE5r8=BQsO}se%>j3(YSQ(+t+J-{>}C--+I#+A+>a(zB5xuBz?^!7!Ja5H`_4MPB#s zq!otqi!$sx!^g=XT9=0H{H6s}<@Y-vG$XT)K9vryVk)~G>*{$+y@`%Ujw>W?q*P;@ zPUi+&3G9wEDv;iZvdCzQ%Z=REY;>Ryb$>qG%h<5{i1Jd@qlKr^Yr?eM#j zrMfZ$^vQ})X%h_GqR1F6P1GRShoOazNO$j{@9$nf;&wvf;ea``yGT}E={WJX_ zii<~x%}wO$+j~}Ub%g(OwS<)W)mEq=yR+gI$r@4%p#I0kJ4g%b`h9a9Q(P zNkim=f<_wk){^p`qe((P5V1yRbQ!O?3v=A@ zM2x2X^|Z;e9;_x|ZwB`HI{3Ex-Q<4^ZdsM{{k`Gv4=2?V)NGkcq=1kLNJ7r4)&7)S zJ*DvtE@oEH)#3*)#n8^*?l@?;1-H z!CP)G9k!!!Qyg)UIL0rtOIrvdbV`A_`vw?WSb{6WsUHVf&Ly{Mb|f}EYs4Ams{?S{ zxcz0!=MPA4mdqE1tPfL;CHWlHFX36VdJ8`?)~A=Fk@MJqI(5A?@JebYwzkA`+ZC4U z1HNCDm0hW?e)&f{f1^`yykr#OI>(v)Pbm>;j9vGWlGf|#7ww*+IQ91HI@E{BcW0v! zIn&YV-qp$hCkh4}W$zJ2$plHu2RvL-^KRVg_G-?m!NM3 zbW;~R)7&l9D3qQjP^3mIv~{Ou;I`b2!$#ZgLEuiq!4GOaeU z3mKI;laXHCBKP~4lk68~%@P8xT@!l{@47X?2J9p@_2S>4-e^4HS3X0Vl z=73%*N1|T-^5c#-fkB+eK}PMd4DQpXCab~&NVC;`qf_6}2D_A083rH1rt4<+nHNk5 zcuiaEa!R&9;@O_A+|rLL%{KaH?F(ye3m=}w8-8IK%J$yri|NIn*iS{RqS_x_h@Iu* zUs5t3^5F>%h5Ycn^fw71S|0i^tg)?Fbg6KR#HXqymV3))vEiLR>fhPCl=8*$w8#Y7qoiH1cU;|Df))FjvC zf74ws)D@zCDLPE#oge-l+PnWj;a|Ewkr;f%r)G+paSD&&x66G~m=X3#V!&gK&@^7g zYQ!{BLitJx4c>%I8Tq}UJsVE9P$Qhu->p1Qs%EUJLvLK=?$<>4*>{Q3BU#=OEGHKETOfzz>OW`BPM`lY| zb#An;TiFMZAVp>_{y691&ch}=pi=_PHR*W|Pb%#1KaBHc+gV8aV>};xJOt;)!bn#O zxN^z8N#adlo8B|6#asP;eq`#$D!P&vxua&U*1S_V2Kdz>3Upfci9 zWu9w?T}~wwIRy0Q8&#Nn2cicv2Rx`ZD=q8CoQ@9Da!`gD0AHwGOoki#YclzV`#80@ z4Si&JFjB^<@<838Os7{wwN)l;nQj)$s^_QPKNNBLptiR`0H99@Y8kAiuUpJ{&lnM*~I^q-M4-7CRB!PKOis z0rz)*5ES^Icuc~ua*#XX9n{>5@^(H*@3G7BWy!oCj@~b(jzuK&X6L6emGV9%1AjD? z2@VH#JVvmccK->h`cYPJD&4kFNDErkt|VC{ z(yseqG`V?2RgkFk86ZAYv`LzI4gc&D!RODe`irBlkS$EgsRI~3n?%?=lcU5mHVDu= z{;{mQQ@N1eoezTDLgJf%XQJc;qE2@0wyJzg`8IQoFs3$n!Qu7$qv-b(?M0kF{9oYk z_ah>8>aTvNrW`jO|G|K3_*5%93d4xvUCV)Q<<7g}qTjmp;Lu=;odcx{-kz&UQ~y@R z0O07esE5GGp~9n~b&w7vS_#)#;OCNxqc`P$Ijy3ju~tL2p{yZRfIz~Wlzo*8SUW&t z`|}D)VT#_zXT1o?8@wM9>;eG<~mK^TtwZt6Bd0CBe=UsyB7F1m#afhjhd>p3j96NF|Wa*TdR zO&@a6xyZ-c0zEn(q=v<$;vm9Fy$Tvr-##bJqkqe_oW7!Y{9Q_4Ynt*+@XE=LYWgh! zUVzgw)Ge@_0%sLka!o8KdTqmvOsW*PDx;gGpihzG`zp3cdqQeC|i2JLa%s%wYbyij(CaEI) zSas2uqa#Y@grP2#>YDt{ttgn+JV^PKU-iOC>>8!rQP_z-55wlxGL(VLjOsC(J}_~v zx7bkfnl|XDy6pqnKEXc67dmC5+^jHmt<_fDvEYDuc(D;b?f-^?!WA0XvgYu*qOYr* zshe{{0Rv-7rz*zVyk{GxTa^m>7}t50`pc6)6PXYpF@wUJnjzlK^u$Quwf7P=^1SZy zIr|H4Xgr8O-DIKgVat&k0ET$TF1E_~QmoWVRXx#wih4O2A2L-xJDl%bI zrdQUebuvL@Ama4U7^9DP$5lHBG0Qt_*bp``pF@r?9Rt_q2-F-9 zjSi)po*TmRzin}_icO`=!#-g`pr2rn=hl_zadVBJIgr7Coul!!Qb=jCT|$aK_j6MI ze4Gd@Q%nGwmt~=eCEz#5)A?%t5Oslu!7n?Q|3BAs1M(Q!hrBS0138GlR?X}VaQBU6 zaAU|DZ9TMdYHwnoxD=!v3nUGb-tS<|$ZYcGcKL#c- zIHdh=8Vex1K=|Ltt~9+uvKFBlQmA0=xil=nGu9^iPWKRFzk2-lc~-o&@tN=?l>UMc zTxo;w39aC>;^ag+!_P(ciDqK_W(q8=v!e~hg%>GJrvVw>zJc=}nH27K`#0Sf6UoJ5 zue5Q{M*A+FE1l5r%*84+kmfQfexjW2mUGY_#lTbrWz#Udjr_U$^nZv1VFhcuaAB*rW5I6Za zdM6WwDGHxZd50F)^MFZkuWtTR26CSwjW)U`0uHtQl}bSGoqBxxI5v|hZqU|jf?mDw zU=6WY@9NU)5bw`fkH(9I@a+J9TM4eTV!tTwK#%hXD2e3?8!h}2Li1W0A__7M>VEdD zDfM^b%DL0JL>f3Vq#K`(om3REtrZvo_%{a7+ja_~g$QK)-1i&Che+Iv2dsiyQCZhF zk5v`A-7N_`GO*9x_3q7$eMSrki3RJ*sdkm&MaE82#P82Hgs?s_0G9n%x;ycb*-1V= z04~u1GhGdO5be#NsaNl9iEIwKAd6d2s7Dkuyuxc3>?6nKa|9;nw8)@}l#5y~R35`R z{yjn!P3bT{&Z?<~IcEN7_Fg5Q??c*Ly?>syu#H@vX9W})uxlN+GZtWD&~BS*I^BMy zaVE<9PXOkmLe(D>M2g$vFo8A}hj;Rtt`+pnd}OHbFW6bo7^j4=*pb{{3$LH!9eU;qTE=Ye$)(5{*g25} zNYO{snucuY4|&2L|N7*Ada-I@RLN?*IREnn&fUqWR10-}6Tw&rG+B^sGXrH3Aj(7O zI)^1Ac^^z2GI<}y+a-Twcx3Y=en(D5%I3v(pK0gohl8_nd~$`>9zu71aH2Va*+I2~ z{z7C&_b5kc!TLt5Ldt{Jv`XLn#xl!Jo-rn_Uw(N?Roi zf878b-_~t+x|60%F=M5WjrwSUat$T(;~DaYvz{u;Ep$G86YQHcv#Psf0>m79;fpYj z;=6TCM(9n0q=lrSacrIqlMVr4eZs{E+8O>UZJnzD8YeHAIJuHRLz2%;co^ZjCp8Kh ze`paQ3C^p9s+;tX-BbG^;ZZy=M%JoY{Q!V8=a@2=!65HS8ocZE1>os-X9|O#mhD~6 zgHQ^Se#xB<8eg^jDUcl&w}bYPKX8bD zULJu4!B$TLM}bjtscTtv3OCXW(6aFSSFW+lRJz@&N0*~gejXtzfU#YV0v~(b47OI> z=CIG`?X^ZICVX1bcLF52%*%TBsZAuqGZtXI^31AfVL0pT025G#$4QOaXTFeCe6P2; zDuSBLP1vYPE>R<74r^QdORNwuf)#>gsU+37eeh%6!ZSjqfY$SPr_I zzxHd}7xC9(CC=0H%2cGVQMP$!562KbsS~!yoKM4T62g5Az*G_q5ue_v?<|4uj#!OdvnLrK(vM5X4aLNx-ft z%*<5PbGSoKM#B-Eb(gT@(83FGAq+>6`4+p=sYMc5^Vh zJ~#QcK#le2ooQUi=N_O>xD(Ma=DT|#4Ac{C46uwQtb}?gI-B~foPxc*$Pn*? z{dA)y9_Z-;ASWM;1U-ZTuCtc+lta6(#dp1|;T#Uh{25mGVmVB-SMNZy=Q1SSQ-`EvbgI6%?# z#YQ#`GHrsUgswu70A+fcsfW4C&`{;kzzcXHkY%JJ=%i-YrIBpbxQZuRTKRb#=h<%z zJC9DK?y~QD+#$gDUGRKU|M97TR{^ESlNH*Sn-?N)llg~ua_pMy!<{b1U8wiJGQ;lz zNwvIP36U<45)p%9%C<)-MWjB1LFm!43iZ%- zUD!bw_Cm6Gj)jC3fJ6~Fu9->*mja86EIe!D*!`!bhWte5&bci+`_nl9Y;`CrbqKKh+6mBr9vDw~EuK_0qP z@LQlbD!si{lqhc8&IWh!S0h=WO0x>iEeD&ZQCfK zGkm)X7RPSPMdZOXB%I+eI7pBtB)fwMof)&dzrp;$|7)LPL^w12;q^#Xa@EYsMDz|z zq;vrhoPe@~FPexLpR(|nL@fTt)GQ|4^)sP9q(;;1-W!0E7K)#n<0qhBlUGa>>Z%fc zx+F1n4AsybA9Y{8$4AEu!?byvM_(g;Q|RDjR$VIn@~qJd8ij2`J;00@pJB{kbFxikU_@!_qn z*j?=?@_HlAcB&Upayc$K>Q#}BY9RLCX;>j5ncfL1Q32Oo!;F`KF97dJYL?{I z2=jU~dS1${`wBf>NXdtR+B(XQFesfq`OKLyAd4ax+V^Kh}P zzO>I5n^(r1_hAs`-*6{eNaF$--DUvhj12_!0N8>{z{dwR|2znRqFTfSs~B&YiA+do z0ZGHVYF@AN&n%%;E2Vq-QX0>#>=zB~C#8Hr4qvyHFu9S>{5)M)4+GL=<^4SUJ1?f%Srme2^5%-)=H?E4(@j+9<_fVe z{LJ^@_uS%xP7Y0Afh+Yn=hRq$GlBbivAJik$0YCZFC=!PyJl7rvnHdP3>LZZU{rpi zEyel{U&57x6y$?;wi?y{#CtC6Q;H$vL!&6Q_i1pL{ivuaE!pN9CO{%anJx4o53<07WzWrQImNzAkk?6+ z@M`6iE|{WZZ9(Z@e5EqMqnfg8ir>G_S~1-qL6x)}%9Gm4TCJp{ugeL{Zo|sd12;7U z#i)%P^ZYq&4$4CDAM01_2@)$dAuNCvC?D`LZ330!`cVPh;P1zj==t(3733Q#EMKoo zs32(D3qjD;m~LERhV5V0qIg$-qrkgB*YuFTO4mdFEJc4nWt#$YVnJ ze&*z|*|@f0tW>cGByDrU-$d!bsAFVMYgZlG^mwOPL?)G&jZ;W5z#;@m%Nmbw5jN@m zQb@grC!0nrZ{e=_-HeA(+=HZR#vyCF;$^`7AIeU7Ce=;-gBx*pVXX4`ZaKw3VT3Hf zqs(+%jC^LF3xYh?T&DYf01H9%zRbq=_zI!@vw77p^%D4m`HI7j6e$G6&I~VV&j1Yy8QmSlXni@hsK}wDs1*u{{5BUM-Q1Xh!RUfdN#sPrI zXj5DH;@yUpL3Nrh=WvLtarlxpf;@NS7VgFj#o?N-@V+tH8QSB43grqO^aE1T#3Kte%*Xhj7fP??X!KIWfSx5xJOn3TI*A(DR;dQ#N2)`+ zfhnmHhbr0<-7qgdS0R2MB!CmChjR1k zrKurYp}FoErRDk@6{m^=JxC+h2fQ>TIJA;4jzw6FhBGWFM({BjsgFiJLTf_bIGl5@ zYCRWoNMcRqlrdELuwkxvF7oC9BCGXWmxM_MiI z502Fc8@LRRcaeS26NefvK=glX!jZ)F-Y_wbR-gyLd)QN$=+ol%0q`Wq4qw8!v{`Ij z5}Tuu&kaCHx=~A)v#39Y^UhIyP%J>t5kO;P9A~7zcQiyWX#xmvq(>`TjfT_zirt>T zQ7t0!^jFU~pciK&p}8Z`y3c62er?tpmK)r4KJMpFjl1FAf$Iu_6c!e=_xt2UjftqD zL-Krrd8+L;V4HQLK*NaDDo%jws6J>!36t|upF~U0SR!eq4q%x{$3E6j+ z`os0z-Q6uqmoAmordG+ALwwVwO|oIb2K}zJwN>7D;|*EAe!WbXFhO?g*b%Ak;JEL) z<1Tsawb#OrJB-SnzI!EnV#$FR`?d*U<4Rf?rEkXE9kK7Q>&otjCtvHrLR42 zUZ>nhl_oPUl!q%xQ4=P|wPx-45a)h~!o#ENhbVnVO=?`u`B26_F1rL;Uh0>jvNGm( z-Cf;s(@i(YC6`gix&^?yHu$dyBW;22ma52a>MmE41JYP!xt=bQUpi>lyAH3Ho5Tp3+3W-FP2HS zO_J@Kw(EDDot-+~GtWFzF1X+VnKy5q2dZJX~x!MHlOL^p%(TWa!=d zrDFQ}`ef3iNpj(Z7s^E!U8HMa^XARNOU^}ISEb6(1j^^kdTf?F_`riY4(5;NyzjpI z3XeO_yYK4ik}X@d$iTqB@X|baYRv9K!FOMZ!3F#7h}gHUWI}U!yJukSJ7E)#_pMk#?7EDIN=@8FuPbl*|dY}CCr zk~JHahllOE$l0?GMcEI*ad(9QdiDi{8Hm*Y`7d+t-o5gn4}C~J|M}0$F~=Mu|M-vp zD4+b~CuQf(o!<5S3(Aox z_uF6pR(5RIAs_yy56g!?{9#$MW{rZGFMa7tvS7gi1$sB%e6yT*!ih3@;$#_UH4$J1v!~ghUIqsLo>34vyKmF4`m7o9o z=lWcK_Gf=4GiT0}%wR^YyZSo$!23TSKRfDY@}2K|NB;J2|5l$ZdwcVa?0d@e!+7|#-$3FHk`RPx8YM5V_j+g88-3J+GpwH}Q1O9bkm~sFtpM2uU z^4;%#SHUcOo_5-4^5rjodHCi1nc;O3GcpX!KKtym^3|_?Rrc)JGpz62b(If@Gw$rV z3TO_3{SW(Hlrbul)M%`;6_-yuC zJMOUjDs0~(LkD=&zQe4msC`FSS5f;8zWXS9Eo$Fk)>YVjEHbpN!e~*0eaDPx!ujYi zd0~A31|>V$0KLEayT6lr?zu;$wT&A$D%bPhZ#y7qp|M4IHA)orxr}VnlUw>Wx`@jEN zzVL-F$Pa(`L+NPk2&b|Z8LIOaf*8*iKK})o_0%l+&;R^S`J2D_8+quVhvX|?`HDWr z!i5Xv5C8BF<=fx>wgR+&_=kUxSLeSfcieG@{PREmvy2%tMgb6j4-FRp=vTk`m7Hf3xQ>-V} z;XB^(4*AGOKBAzHXZXVBzMx}ATlw_UPs=Ah@d+I_K$$iE#1l`*$3OmYeV0G@{tsmP z=It_h@?>3`0Ok*T-~)2XDW~XI{_3y(N^ZI3mZ5R8ccQG>9L9!OE6(KQ)FCE?66LL) zT;Hons>#Eb7RUTJ8wuCjas-p2G_ddcDf%vbK_e6e_-vAWx3sh<4}_1vQ{aW)``-74 zgn2szE6@biY*5I#_10VEzyl9d-Y|^%eSs+qMd0DK?>No}C9Vx?c8vOd`eW>SAVS}g zqQ0Z-2itepcOSLyGVxNJea9M%0nq#VzyEu=_uhN;Zw_w28K7p-qD87b!jv{+#teD? z``@ns4)6m|!$0l%>#x`A03t9Ge#-#~GdTO~vsF9DZ+`HDAIQ;1A1yDx{IVX(NQU^z z4KoE)kY0T8MFl8;BA(?(Kl+h^h`;!YzfkiaK<}^r`mbgF{Q1(*&>;W%um37fKKZ0x z2WUI>)KgXS2iW8D4}S22s_8oR*kiR{eh1S7=;03t82RQmzbRwKj`cK45y=8Qm@#1V zfBxrx)f|eM8(=qa;zaqAKlu~Y6drlxk@Djo|5#?tnk6s2^pb*F ze#3K5ojO(i{LlYf-)mSp`Q*YtkNIRCSZ61lbdt^upbb!tive?j_Vn6ouT?M$$mLM` z#V>xLbN2AV533L6K?fbApFQ{7a|#9lZOjF0o-y-o`7I!yXF(ufjkDgl4#3G;s1#8Y z9Y7Kn*dggLwP(poNwhRUE`ZA~29nC6Q6!yAZggU|J%QFOF;o53zd{QxQY(( zIQ}~tPV5QRJ%T9v;rZvE*EK(W{CNGIJ;k0z=w-jdi|}P;Uw!RsU(>y?cJ10M&|}ZB zZ{dsVTX;Xh5qosqx^>D=fBW0tDxW#)th2PQv=D-_)kvbqfd8SrhxhO-xc4ATW_`EI zAOvuP=7KIXjvVEosscU!1{iSQ0`OoE>a%4C%?7{@KydNJ7Z2-)&He{}@CWjq_q<1z zELoy}5yruR3&?|Eu=xQcfQl6>R>b*O3RM2+kN!v*+Ff_uCHLQdzx?H2{-ridxBxxt zqsOKM6rtq-%pG#bA*vaI=>ZA>ssIUsH!zu^{bVy+poazxZ6%D8>zJdcWPu()bKJOb zI!D|arU~!_*g!BOKr)(C0!-fe*0<_)mUuRp6+jQo7tH4S-~Yaxc;bo5)OaWO`dP9X zJ-#PEh38}5Fw>ynf`QY|d*AzBohz6-z=^qI9Dt|&_upT^8rm|nx@g(L5`Y>&$2fR4 z*2rOp9j4#$Ie$Yu<$% zA-_Qb`PgHRsaAvc{l53TPk}2y4~-rNBfyn40pYvKny4g|Qyn90qcQ}(LWldgB*`gx zOdzF;EmlvZjWLV6v~$s2dI3uab&eq>ya$bv%t=}wqQ}gpBaG$ z;C9tjSE-ypX!kfEIY=?7p}9dyeEjjp73cv}jymcn`TEztu2K=q15FYVB!??~0`$q(J8&0EHg zh7ce}-bkvX&@bf(fBa;dmQbT_YSup8=tUn=`YulMG2`9Q>9i=hln>}x0gnC7-oYIQ z>k8lwO&n}3txeE2Z0`E4cEi3a!uuq90jQ= z8a==reo5A}#UV*!v$JW@<^kL|NZAyC9)8DRh-Ab8%0@?Z&jHMV518Yi<~nOi1CYQ> zssZ%aq|>KQ*XLl<0f1mWFf_m$V20=CJHP^wn`~Tu$7V%JwOS%JHUJJrVKr8mEsjSY$c=rX4e>kjbF zxB;)sCrlmz2S5!-2S}s&#TS$L<4{Dq2O-Qbu1XTAA5M;`6dH9ur}?s-r@bc*11Npt)*j z00bMolpg}$vw7^H>!^If9L~GQC71`_VXCY&@$O*uyhr=4xexaX5}%a=a4pfFm7FaB z^Z=Xm9eg&Pmuoe}j8BY>J_<2Xz&%1raJ@2Ko7N=>e;TT&d@9D;%p_|?vo>#Qf40Uh zrdfdBQBQfL=P=v0^=0Iq6+Qa^y`P$Ew*No&-ZMy&7Bj%^zPg3 zE?05|SMlxH-SSZ_sF$ExYPBGjP!teDLJ00=?oftI7EweITj zSHG-|ndq2^$ndPpuIip}SQw_ev;G;C>F)6l4-b#Yr9|(+cjn~1i^oiT>9+AAn#VG* zeP0MAq>fWmIOqAL#rEqr<{CST`s3G+7T+<;o`S6~VS=m|`3#d>lcPu8Fq1-vA|wzJ37O$KRwN*Lkg1|{)qn|pgh?sig+4N| z<~u?5h+-lTJyw1YCdI6nF!^U<$V8XV68vCN3E^WR%&HFmW;MbPJtoUMPgc2D4Ovo+ zAxjoV`cCw+Wa)>HC&Mn})hck(V;-KYeL0iO7}V;6=&@vb#D=LNvUlhM6LS1-rV4V# zIoCw=IR1^lo$%OHLBgizyJv>-w*&5(C?bzG(PLAGiOR7gOoWeIzrR~N34vTZasVls z`^MOUe7QpgA(NcW@adbz_SnQxM$fSTk_DF?cHG$8OuSkjulTy;04AJ9RKoD7Ffe5o4+|=g7EGu6!(aW+| z3K6(oqJ%3!$d&tI&1c{K>gCxYGWX!7Il1AL?h-1wYn&zg(d$Nw+&NAy;2h(PLoL}p z)s~NRe$R#rB5(BR(&uM(o&CE9(OZnlLF~u_WGVRi&i^4>OpO3`6uFy`**U zd-94|+9qO0wC=s{eQ&WrkKACBkIoV||0W_xPBBZ}EbZo%tt=raCwit1PZKp~n#2~- z)iPQTUEQ84b&^u0$vR2%qI*A@x;;(S4Qq+Mj#a8&(dU$cl~u5{{npg>O3>NocD8oy ze66GX^A#g<^dnPpZ-!yP?RQJNqdS~P z#O_;`tPyI+nvE+g$#QDY%+!oLzTt7%_tX0po8#D(OzH?^j~b-p`>`C(<_q$<_x;qq za`u^L7n{8H*=L_3-;wBO@bn~&UTNQb)7XQcv&&%*sYjqy#7;jMLsN}8wPL##ds=~Q zsz|3Cp<=L0Dpa%af;_gVu_>7wnM*s0#Hvod?VWAqb)W1C;wjjsI(gky)q$ICr(@gI z`ZZP6H7Bkl_FH|Li>EqyFtJ%%`P@DkqrDr~i$Ay6mlSNz$r#=)bgtX5X-?i>GZBJt z5q0w|mr_5EawopO{mtUR^qPCU=dzLFb9<1n&hP%d^S8R|=+XcE?i`n$)9zVUqSvb` z_E7fjHQ0#8&uUNI&|+)G2dxiRoanLZ_^A{>TlLh9)OWv#-I{F4%=F9>-@w0F+TNAt z%aQM$v1fjCzWeXFxo{*;d+Nq=`S2!Ait(I46vVd2hr0DjV-JZwyfU`oOU20;v4?0M z(UI~H?K9_`^Y5r9MEQy(9kH>?zNm{G`=VNG`^>ojHYATw`}_Xoee%Bl{XY5H7r!Qt z-uGzv*?JcCKmGkbEh#AM?YDj2X<3P=mcQRTYm+l$YTxaFz30A*B{DubEp6r?=4-;2+Xq-v7E z_c(>bHu@5K*!aRm*>K;6ZeQ+sxHvBF#_Mk^cHprqnPQd)*b{C>{#u?6}G1Kv-WwXWrJ1I*tQ*)`Ec#nV`G=S z9~V333za^6$@q}sXEi#j#n$MRZEJPwtQOnWtFm|Bqz`w;9wnzKkLb-W-XLWrW7zVP z?BNJ07)hSN5;06XWwv3kJDr{!oh(YNM7NV`un`kY2{>?ORn&%gItS)h@TPL`-zi!S==ZKLwq^RLOme0(ZHvhsib zzyG`Z-QWJ5{N-Q#Wl@@dXB!lI=Ck+=iMp~2j`BHsh;bAphQ@9=%0T@6-~GM3_aEOY z*Iac?@$T7yN3uC3WvDZ@M9ecuwKa5mN|KhJ+8yjII~QdCyC!zky~}NB`#)EW6vdjy z=K>Gk_=psHFav(d>>JU(d&kyFu{A#2V5cl=T7H(Dw&wiqAhtqh)#C%#rA$f@GjOIv zjI6OIDS~PS{M7fO#V+yTOGKly9v@yCb`_mX@Uy$H&AV?BJ5^_^`0$i>ujMqBUZriu z&{l`=Tu;$Uau*Ql;!zWh{DYHDI7uG+&0_^QA&SDzAqH9^9@H!&pMeMq#OC_zu9t6o z?Hk1oBM1<`gD`RaD1-t+v`0TQiPVwrX^5UF^hr`I#dvXSlnG#) zJ=NVIZIF(`4m+&acF%TuYU@D=C^NuyJP&r0tvh91fyedK3Z#}Eg@oB%1$m>K0R^H% z{U#@b-CB@4ifyuciyd8jhvA`NIp*kNif2nLKT}$S=oQb9#9nrD6-4j%eor3%&ErLl zK)x^6Qr>`V{xpau{XO~QlZ(QjKl;IsWb5YLg*)j3&x_A-4J8BknfDA~-S6A`73BmF z2r_y>KlvSmkI!9p*=0qNGWjb<{N#vYnSwqraWJIG7V1(_d+L>!UMUD3B?vh73~~)2 zr`{BJ)Tr9^-Jg42zJJj7i`{PQlruz+?*vh&mLJ~}JihnA2OhlZ^cD0JtV0etq|ikp z+>?pT8?V11Z@=|+LF&OHuZ9VLA$ojIh(6zk=l}e(&!_8bJFc^PNaxzonRc;(;e)?w z?wGWd)>!&w(+atOrM2=j&$}(P`5!N~^4&Lz-R|a}p~p>NC&{2;YtGSas^8}NR2e|M z%GeIJMi#GMwq3V2(KEG?7}%)4#CCK@4mF4%FhtC_mMZE*MHomaLdh0%2o&4PA%G0F zU~w7)12BVg6ZPH@L-eTUM1+jKno|}il*|@+26jjogE|E=IrRWC%HP=z4{@WYE~E}( z#UKyify6<)_#4aH+y~+S$p8mpLnM);TnI7*3NjZG{sxATb?ep@&zpM^WurhZgwvcO zOC*u+Wr`oO+Y8bH(Sv+JV0r#TQ7M2*-yr6^2Tle7o9_)tvuofPq6f+1dvHCUqkuBc z5K_qzVGu?L9rr!rh$D8LEz5C96kp|U5F`H2voJNaz~;mc`<@Uzh_zkNm?GNd8B&mx zas^^;i$tCCz&xJt>;te6B50FAgBRkt5XVe4Z)DXx#gd37iO)PYQXHIctBM?2l zKRf0i)a>%*9dmq|9npj2QG$W*!~OYv)4PH3E$mt)diAmE_g=zBuHaX0A1?|(&*eie zdKUE8oZHNa4HPv-_tA4U5wQ6H-_Gg;D<1eo?1LSt*ek!s@9;Z{#Zx+j2^OVS_$-aI zl+{)knD3K!%w}m)`a<;B3Qkmu$O->uz-5pm@jxF8XzBRttZOFwR{#rOcV=(M1(CQF45!pfk(88CEaVUy|y5r zJYS9#f@nfwsAEMxDGR`kFV4D!TtlR}p6>%OgV1sh2ow$-Vg^39;Fj(q6aSL<=WpTy8Kn6P&R~mbho`eSDcRv>7#BOyI>(fP1L39N3`y57B_8B zx`kcClzaKfhRI_0FB>ja7j5XD*hG(Wsj)+R0H?~}H#va^e?nv&U&O=@--&&)YQQ9y zi5qredN%>*->}oIf zl%;>tH=+mmz+f5lF%Ae0wS*Ypi8gT*6;T}wpXeRN#GuMDDMcl501Vm?Dl=1rh%|M` zwYzj{1ad_5#}HEp!c$K@RV>Zo^dPQ~IYUs1Xz_cZLXca?$NKf_i-De{UWgNagD60N zDJV*W5GP7BitkF)4aXP~o9MA5iW8xks`Fq#gecre->At1DWTtdPY4#o!;uAl6jT|NY~vlpXU$J zBI3tj#ovhLabKPt(FO<_&k+4ZC(&0|cz?WW`-Bab=?s5xJEo$K1 z|IS=dFORY%ls8$)jpNxU(tO+Nvqg!Pr?=0`bS{k7h}c9AU&SO9o5HVi#21q}{5rOT zPe9-CarjS4iV)q#w($`}*r`QF>Irs>{j(VkTQSEN)+U=biyU;2h`l*VA^3JyIvC%W z)Zt560WsnueN2kY#28=7acL&M+r7^BJDw$}AU?b-SzH-NqQ~+b%bP5X5^Z5NhrweE zkO3k}B+5fFm?`2^h)i+ae8pK=nK1Z5Fv%~o1w!$oAN{E47kOwbKeEKgU{2Hs$H#IX z!ZwNGwq=h#CZk88FLwM16>I8b=CAc`4$Q_&kwALsWRi?7)S@ zvFr-zf(R1bBcjFcnJE)B;~8=&Im8DC3#s9E2X!1F&l}PNVWn?GF(E+^D-*r6MMLx$ z6o``X9f|T0H8Vt>=K~R>RurG%eN%a!elZ}}N4G)rI82=H&iCfN=nA=?3>^H-_v0S? z9_PxtGv6J3;#o8J@SS)k=q=03Tm$ii+!1BqdsQKNL`!*woQ2EaW-94(e@N}1R{hVC zB_=M>gPbu*Wul00#IE=^{)`C|lO0ws@F}FZu#$lNVGB$^ndCyEm<(gr_+G{amU3$q za%&GfP{dauAVKIOeuYRS0SWS|NyT8*hj9si$M^^7W%U7{&k76A;)WY;D3-1n+whG{ zzWJVf7Qe@{Va0&&%t`}341dA6NDV&x3qb~cMTyQ7QtcW2-M z58?`W=l=AOnKS?9v;58I8vjO^fIy0U-<=#KyKgMf@ZETS*aP?EdGH*~_c2F5Wy!MA z#3g!=oeb8tN3xQV_f4qG6s^W!r$9{gN_fS+d9qIsy$NU=~DFjU_iCP)#k<_ER8EkXrIlh=>sl#6k8X z5QmPV=&-JOI=M{3ESM-SGgk%>qFuG;=VZx}r50gAZdN?lfeV3QGR3AQND31>{>@~E z2^3L$qFYRAA$O1=mT5do6Z_ zcaLu~{tdfkS(0T>qFtmz5E(1VHMP6fmZs%Y?RN^%i(uPJx4Zmx=h_dv{{uxD4c~`I z8__!|NsyMr>IN%VkTs%ptWZJVNDbj{EL}6vCB29IKOUa&m-pWppYx#Z$YiZKx~ zNko+8TL>emKYOHptmKkFE74yKAa*&?GX(&fC|Wrv1u+p*T(C*(l=MMUXjNMfGlmV( zJLVXXOD=7;Af_q)*hJAvO}`V18W&>TWtD=MWm2`@sRc1L#b-?sS8cJ)K`1_J3J=#% z_!Xa%9B@f{6nIX{GX*>mSkCOz2&A`tetENnudI>P_>fBr{N44w^qtZ)z|WD_8mEN!z~zDueUOimqp2E~W>;%8H_Q;RV- z?Zc}SOm1n9Kr4GN_E99-<3h?h?_!r76=NS4QZ@j&$DGuOtv%w#Jw7KDn-&_}4AHyr z(sXS52$dMN5%*}G*t>U+&na_4nrGr3aT9YC?(;6wSuM7EG>_IEV$!Rv#l*IUi4yEV zwl&Q$Whu5+^$4^STdR5mnse0T9@5KkQYrRe>q*(5oZ!P*@+3#LHQTCw1X`J1x%TjQ zhv*#`A$lcxMWm6u!6KSxVb2cD%3CkKRcyk5eDQyilg-jK`Npm3mduaL%jo7&X^*#y zBO4)aJOfs($dTr={Ga9ReLl30JpJ&~a{N)p7p0g;>)~3KxXCGAlFsD%@G`y9*xI1@ za1s63Q`Ltz>1VarWm#*E504W)*I|_n_O?NkDT<4oa*nR~qAA$+3o6659c{`vi8gl1 znR8XK%M`^{+SshXNA${wwXIkwvt+m5W!T2>Q?PBNO*uEz#xB!YEg3U9n}S`{9#UrD zwiB=0)@iirA?-YtCm*eLos(^iOLKO=4^8L5tmlJ;);NO2yXd zY$~?q-D_=4^X|2_ruE@mo2s+s{b;dMmTt8^oNF75))($AK77$0(l%qHlAkKqH;Jv4LBX#3nb<_H-RHh!?2KLI`i$M%^%*;S zZR)PuLF;!@*EfkhDBp80!(K7vRkHLTHqpzHB}D2_QhD>6JRvT0M-Nxb^%V78ZE7CH1#ku%Qde_u51wbw-6 zdP`*MRuPW%p=MOw=UisVl4b9fO!Ts>aw#Wz+FChtqOTdJt-++h*3_IStED#60o=Gz z)#Oh#3xop`}oJZt>68q+CIIn$oGFBa=`^68#agx4Rr~(PfWp0O&z_| z`dbFOsoIa4x?#&vldNC0A6@L!W3aUTs!8lBb;GpSsXE(q-LNL>Gd5jkHHGL^v9;9q zqZ!vkbnjkkYfaYCYqIuZ({&}a?_OhTTAkHmFKAB2NUf?~wTiT+LbbN?d9PK~IaY>q z3=cnCAQNR z!7l5!&(FrNUA@v`YjigDOpIQQcRu*$4v~kS=-T2HSBR`%FLK^_OWWC|jDK6I^%eO3wfxz4peJznHXUlKXxl-{x3exJ2?ztHvPBx0X`e&@MfC355K zo#*^pk#~mbwKbp4)@2VaH>exC7e5=bwO+BOl-PA~8V`2)(ye*uWo#C)XD2C376vC8z0}dch20J=<=xvlTNXvL zXVhA~N?CrgvCC$fwlQn$A!Qb86UmfiO*5lTnQ6M%WlI)jW}1p^-hGqUF|uUD=vBY5 z5sl8;*dd)|0=#Woca`Ievqbj$uE=LTBl77_cUL=@fc4uaXnkY9`;gLjt~_6!^JhON z^1b~z^ynCawDPkOj z20Jy!$k>BMXXhl{9-78Z%^fk{Q)9;&yLW7j5BKRT1dqu1efNoc|NGq(ihkRCZX#d! zg2*9*=be6QRhBF(TUe_7`OjBZ8jH_2_PY;tH#QGmd~uHK zWho>RJtM#Q&FUq2#+j`~hZbu`9+_vgS+Z0WioyT*$E$y-b~XFO(@yK=oM+jqB@;bl zWTaaouir-5v@=`H4$art33&J2c?ma57OhZq0FtoUN#1I2L}Dq;GMBoWAj@i$O!SZ& zZdl#XyuG=7?|c5z16i_U3Cm@dWuLfO8oQ(KxFb(^_hPBPyb9MfwS`)PEs|DFg7a#> zv4V~=%T3paNZfW?TnEsp)bc9k`X;vKYq7N@P@2SUNqXs)DrFfo*qU+$Rr;-Y_f7S? zNk99?QtQ#)(@vQ>>sXn-{^HJOJdVi4u9MSfY^{#t)f9eqO_Ukh2jiB# zO!wuNy-W?ZD6w6o4Jiu8_)vx;WEkK1j>ze!`y07my&4`4m1NnNW2NHx$tTx)6q`A! zDD`@_=~IN$JgfiskM7S`Ua9-8kVE@-oKyS43*ECZo6HB|-sEBWbk;VuvRRu?XG7u| zTN$>Q@m94p4R*|N+B4o1Y}bj$u*HKNBfqYrotF4a)^)To^6S2zvRSh0XzRxAMX&1e z;nd4JTlH8hW#~tU-)pKo4YY#CycKvKaw$|P{CX=TfEyJJuTbaIQy`SjyVrykb zQ!Xc8Qu^@nrCal0QkFtY=TnwK5Yzdx!NJ8&385OY7sGz}<#;a2S!aduFSwvLgCjwf z!>S=m9AOi>jwD*P$N%65^%y#*e%x}4$bS2!e+H67sf8c@u=_J4m!B!hnTo-)WCyHG zF!$eI?!|_q*L0BaMIaeP~1iUwpBg-G5^yb>^Af&p!Qh zm-tZMX!~}NJMZ*6FPG>+bXa2H+{xEo>;8>8fGj5)vV$RWW-s^U|F_@X{ry!}bt~QD z)OYUeF28>5Yh4ob?6ci|&`%oW6-*yeh~C*}ccXLMb9A)(9Ox_GiThKym?Z%h(YAQ4iPBG7L!IZS*+T)50mRuqIT`I-RDHw3X|h|?&-yOrCR`41fIHU6MyDi|FlzvUd|bmJE9# zdL*|(S~zM8!Uu7Id_nw(+~JInOD+-l*0)4XJyqnJ-|T*t=-w-@bTNrg5urk8 z-RH~C9A5{~jlDx6j`Nz@JXx~rMZ)9}8%ZS#*yFE$)%6Wb))4HNpGlL@VA<`Wi@KBF zLj$>jmtWrfJHDzHvSaRp-)@@daZa$Cegl~$qQ@Ar+(Zx3xe98Fwujkxaf}S@^JlwB zUM6~8*}I9}FMrt^(St}4se+u`dTTfL4dchCAuaqJ!UPe!_uei6GNF3@4@qQJY-6Sp zJwuLI!X%;vkuum|@)^k9x#xDB6TgRa-E>pe$nDuXzlSt&rX_iFe3o(~=I<#)k0okm zr);dCFOV^Nvj&k(qHp$0-z9qVf#=EnOuulFIAoSe_#MQKh@=?^SjL7xUU*^r9WwB6 z|14Ru>?v=)sV5991Jdwq2>y!q*tz93y&sXM7jFlkdvs&H2DYAep!_8Rhp}!=xXQ_s~PTC%xPozsKaC#`j{0 z+7PqHAMdW35DDbFFwteRU=^ZAWRbqFU|AR$lF8G4EW;oDi=`wl6Fsl&-9!(k(F@VT zU@>5p8i{7nAUEt%H9K2zEEp$_g@_VFs}7=vL*i#z#vfgDOMiHbA}9I?@Urj zt#Kn>F42P|;t#kNd$GlUf1#&hDCuyo6W72?JHxQ6eIuf%T~zsMw)@5nO) zgXhN2*I!@#ozbTiD%8lEJnsY<{@A5))ZBx}9*)saU{74PV4+2Km9* zFa812huuST@RR0qM6xtXxA+yr_(zBt1dWsyB4JEm`EE=U?f#KY<1XDo_DEf!(SQEV zDoq*DJ_pEdrrO2fyl zKw-Id;*`UR4HsULmx-QN(uiKuyA1nT-WU`7W~!6`s2n4$7BIV>0! z1j}BQWSJAEM6{0?o!J4~3(>=wfk%IswbD0cn8txHbEY564*5N#3#Ul5jaeS#lL#QB z=;oWdWRLti$P|Q@d_EfY!*N5fcn*9HvdCdpyPHUyalp**A#V^wm*^QsjuXR) znq_eN+|8;)4`LnKjM22tYIjNXYZtmLO+FKIeX3M>h8pZ9cSWz1enXh*BzjC95qu)P z6JLZ+Aj*%=B5H;YViL#SNWs7-Rwa6-3IfZ+_!;s9@u&D$$Q}*<#ozJGF45!O_*j;4 zO)3n2#%$P&5k2r&isdtAg9>uYF=<2(pNzk?OLlQT{3|5S5Ivra`8&RqepY>F`1p`s z4U*1UeJLV&XB{KMAOEW`$)o-2pUTV)m&7;U4T>*ZChT&er>*U!siS8Kxu#;9x;-h_ zrY6vI1RGM4Vib@P@<+%kvCFC$qs2)P_Q#;PjtCcj!vWxsASw_PoQ%E8i|dH^Vf1{? zm%z;DxyIycFzbZWFbm{ooDQF*nbIvp2yq(RlcfrxV>UTucFjF0r-0MtcQ`8g&!z^h z=bl6+!RI?uj)i3hX5Yps;>_74Yi6`KA{;qOy!4NL8bStPBsYe85OD+(taHxkMhZ>; zxF6pcZ0<+o(XPFR(<2|xl#C%#$#Qd9ok9K{(krdbrq+&<#p_aQM`>)$#@5(_2D?sM zGh*9uN`Td_?UmARQ!_3FyDj=!cN*+z1-7Y?l~T8`Dt1g~DZ5lB(Zl~B_!E9lV>#9M zM*JBmAov+b7&&P8M$%p&J)un!A);p{f;Q3PXC~$>;qrS(Co3pSRLy;iAH@$c9&ioh z3m?eDHHGNmZy~MZBjS(n#fTw#_*y2{W>cI?^vn^B+{5@fupoy-2o2G*C$nY(U-g~& zB6_CQ-E@t5Wkjp9j-Oo^9hRx}C(6)A{=7rx{xD4PKKO?+cEG;UdNUHS)cEkK{Z93> zGqNl`Jbp5Ud%{GWm7aUWF00m`auNVWZwOSc4dV@+HWB-qAzyX$!G{~FFXy{wtRKGb z;NqJk?6N+kKF>OjVuB3%^lDn6v)an%c6IVHW7gV(d%{E=C&l=%CrYqWZ7tMqtsSSH zjG;YsLvwmX8Mdoe+LJLf*xHjZLdBkm$XB&3AJHRP5BVXA2I*shM>L=OIF@c9R7BO7 z^bzT!TojW*CYMBFsBy~V*)8C#A$s(I+&w0|kS|ja0rJOv$kAg%1ots%BBa*vSx6T+ zL?a<{kSv7z^LbV~AaDH4#FkVR^8JX;u~dvuHi}gimVv?IIq@tYnl{m64C3BI>4-ow zS!R`j=pvK)&{>gyj8^jQ`-vGXK(Z;b`6> zc61Ufb?aN?0K738E^0fOU%R1val(NCf zJ##LG?S4t~MML5aRH4C&90;?UGq=^-n1P!C!PQw;PhxuI+Cz*4`E)k67es??PNL|= z)0!kf0E@doJZmr;kR&2`L=cHs@i#~ZgvZn#h2VfkT8CXsokk=Ml4DXr$XnxD zL-bg!fOMH0WKv%sP~3+IoLM1o?*l1>;Bl?lkU>fb_kxV_cb*ZXln5U8hq!V*WEA4Z z_aSYDKC*;M$`02O9VF+DK0t7Z(m^h{)&yTn87MZ7_rCHxbFL*~W|ZY-WvSl{gQN)bcU>luH#kTFC%+_psC|k0y z9fj7`>c+MmT-lO^iyfOGYq8yTUxsb#Rm!{9_`+UvJbiaOTaO!cw=Pr_MNy;Fu3Z$h zH$_o2_7>DiN{DZ(_THDBDw`~d zVA(y{vs#5ii~{<4+n3PGXfaw4=j zIneGsR_pRKD8P0WuN`r$v~=k+505$<^&w6bMo0ARRfO zhIfwENX2GGURg! z%q-JWr>|-d5$&!I>bzF9Wi5fqw@s$sP%2`n+wqj9E}iJ)W0-#?Ah4V=q(0ltXl3?f zIJ2M@$2$yrNqk^seYu7FD(AeAPZZQ!f@wZWUSsUN*IQG3Dcm}};lKhYPQ-v2!*a92 zf93r0H3+BR~e6nJK1TO(|k2eTp}viI(noUZvmhl^J`*{VEjUJ z4Wd`UGNIP6r-)YL)6cPwlcF#RZAyW0M(*N!cGb3T-~nW0z9DA zMHv0jD|KGoJMAh@HlONy)g`gHhF}6tm4YJ%wcI$TkZe?WuPdAB@?_&@vQ^jc?>GO& z6eV(!6_+SbKi{}Pk`yH%;@OYnzu1E&D(+t$=nQ);dq(?@BG#=$cGkQcFu3lZ#pdr7 zvv7p$z5LCZV}4abPYPFZos6ye9OnUHT#ZiEBYpOssFXlw3%5^#ij#-9w{9as8=tjQ ztiV}Q!iS?<2RaYI2nn^&l6n;#Y>$iiH{*TowL900!PN*)6u6%$p>RJ4A<5kpKjHCrz~;{FX>(=fo_p zfQa#UjehIz@QkrA(gF)jQg3$SHAip9@`yCi42Mqm?ubjtGcBhy z(iyET#{2?({S*ok{$gJypRfU*{0j`u^4?tLnME&ZbkdIMdHEG*z|oz%?x(GVh5ZS1 zEjF9+Lz9z}PU+M6SLh#04XW+%!+56$@q?@nsEl-yFs<}cu>$;VGx7WvZNBWn&SBoC zCYFTs)C(^(03${d?pGxB*Y2d0Uzwg9AZbQ=>?F=PVSeDcbVl5r z5oY4!3wFgzTBAkKU}&ct_y(;gxDH0onX+i{K7Exfe8e`?%pHZR#*5 zc=+vJ>vl;loYu){ru}b=mgI{B4TJj@?vf1;*G<>FS3Wj`n4Pmep-DrSlV)P7BhVV+ z5Tpg#dLVDJogms0wJ3-soCk|)FrXDmyUT>&mq7nazK8L<&{XnRMN%vbtJdU0^dlaTi{(@ge+ea?(`qK2+E5 z+_jmlvl+4$_J46iXMkP!N%iiJH#-p9fqZ5~*=j7NY@l71=-r+042&-?E2kq?YC(YeeW55KPO2 z#8S(>ZGd6V^fTF%3c?e&zY2v@DfeJZWVn+eJ7wQvc2!106I-dB@>e!g;;-b}O%s=I z*l#t_?-C1(yRg4Y7qKl4Ysb2uE;B8Xiy5Kje3JX8&IOF%``qZG)pWfGOUhO|ES z)iWHZA8c}7_YjVU-q9zY;&(d^=f7A!?&=@xdcgpzQoG*gGH~T72?gboPVB$x7)Wq# ze{=hTJ#o`rWz7}255Gq(`|m1C6`?pFPn}kqZPKY~mi3|^@#39syxkIvj@9f(^rM~9 zI;m}fe!@yR2Dg zRiej6*(i0h19~6K7uk+0fKPob$137`ewZ&GAy$}b;BML^q4#OCpqugh^*d5>k*2g)c&P_g282(|jv>59|E2X59dguL zlH3WraQWcwbW}Mxx$Oq>kMBlV8n}EfWv+!D^f3|9C%GjO<&rgJW3O+Mx{rLi_mL9f z6py?uNzSTC7b9|(rrCKh5}BvILK{ao`K<=3)(DW?UmfaPY<(d0x`fWXOAeSR0l3cE zkJumEm^xbNZq?dLyQQ!UckRT#;UsS-*Pc|ZZ}M?!{Ns)z~PJ3gX-1PgX{NI5>G&` z$|B*fs?Koh`Jta7235bMu72u9-jt{sj~~aC_H?)_~?p05uBCC61KyyA% zm0M|d!;cJ+pk@Ngd>nW-YsYMICdGffFmkzV_mO|dXsg^Rv{RbMDl75d$lo9VG=&o2 zzlwDx$~Fh!qDRRMn*rbY+KjOnd44bus7Q7UdQ-2?NE1b?<~O5f+OtrZ zlJ?(07A`F=WX7_Q81j3LXQ+rA7Y~4yJ~~+Kn?|vew;<$oO%>QF(3-k=)iZ26pp~IX zo1rbE;xM&gz_1Btd^7z*f>*QLY(USYfYuC6ej^t-;ArbK(AU)?^FaGIDbT@HAm!FE z{CnyqTQ0u$&cNy(1HJRT#@ij)U5Az^G%E!%7BZ6}rZ@6Hj!geXSUQ@g zNFOoUr*nJIhO;ls7;^oM=J6@n!v6k&uBCOU_3c99r7CVP97Q9%kpBLo@Tm(@#{&YE z&f|Gk^wK@^_v|6>06BG6 zvvI`lp?jq+g2KGFuZb0oSR=19E2_fvs{#j4o(yyPlbVndd(^7XTZ~Iu1@k!^XLiV> z@jwhdcC?zZHZ}yBjS&6HV%AXeSmD?fs^GxfBZ9E52&Ch`G7|miwxhwoY&%|H(O?a zT@auZ8(1X~F~mSlGg}{{n{4b;O@=@mEwuE2xrYL)jB&49GQ2d){_gfV>L*$x0(!H{ zV*iHSaZ2j*S&Vd+2;}do*aVnXiNP4io%CwmG>r{BKVzg!#WKoCoW(Ly63xqW_OC0j z);Cl@oIty@xvSu!Qx-k>6fCYd(5~Srbx-^iZ(Dz+T9Ysd-z%ct{w5_)R+_Z2C8#a3 z63Cu9TTP}8_)K=A)R@EixIBE*W2ehIo+-ZMh^Dfu-Fz9guuSJiC- z+=bX3NeUxWk-c-1)4nHZ41$;jAYwd>18_&wIwfqM#H zg62p_PVMj%T5j(VS+1GfmfN}Q%i^Z_Zghvo3wW0?9&&OfDwAmmcVOin@RnThYKJtj z1*!vKPZ}>?EsoDvsj06a6n zX*Jy|XAxJICp32{V+?C-?)ksH$cdYUQ3ij{Eb?|Ow$LtZXX2Lf z=8Kk7qE(l>=R+?Xe~+Mf(R86wfhDLb_nry03#kkl8s-P4$MMTqt+-qR%gFA5pwn2PJN4>l4RC@#S`oP+CfSjX z@_2FjaXE-KgYVp3H~=B>bZ{$ld|XhG&A$vpWGq}g=24$QD(?O`f$)}n?p*5yn{JQ- zkp4VQc55TvA2cu|1|6-nBnD~Ph-MrHlXTGndKuiYnz`5}Dv&ku{m2WV0*Tr_KZ)y6 z=C%jVjm-}W8o949ascxeR)%Xq@xyzin_~GCF#9(FfMqHji?Ml5!?5vJaF%&chNP2- zKDCP=cG6lV8!;Y8r#l|^QkKBZbw1A7*WiA|e^R8^*uMx`p0M)w`;aQP$}vSq%q zkhA~<(LhGlXcl?j+CMZ#l0pOSGpO=-((s|tXGbz%i}t0=C4u;_Zkf*x|LD$#Q6)db z5lRwvpP1lb8khz0IQfG3mnAJCfeT^DMHxL@4+}^5mkF&35V@m|#*6r0h%pdu`@SA& zto_9gVax=WTqyE&>?3Dz0&?fdXz6|hFPFqE1lW6REReHoLQb|3?Wbz6TIKu!{dr!} zof~41G$L#*nM$*;ZCbTrwBLK^yj)Dj)-|7cyd#e6avXrHz$P-9s;i1!wL1cD!>xGm7Ht4)igd? z4s`~0b_>_pcaWUA{fFj?nXPTMTatXCV95db(OBzq; z4|WH`o@%uPCYl-TfhDL z(EQlxo_}POvxtWTyT||q5WkGYrmj6xX^@jZfbb+5s1=by=!BI2ijfwu+gc&d6=zw{ z)&dIl=5<4pAAxBKTX=?$CGQcJ?jzdrz2;s4*O|^`S3*SWGL}2Ad+ME*Q*rdL>r%oF z)w*2b<1|iEjcIOi!+vG*gDezLxN$DFrTM!WLaN}k!~zI&ISm8Au}5QNjs*aV-BVGT z#faZyXq~@eAmgrT5zs%F5uqyIc`L8CjC2>-Rvp@xI6pOFUqtZL*q>xI|99rtT9Yf% zIa}-4(J7v0;Ea3S`EtEj;au>fRwa}{^6-`yKZ=L+?|aPMJsJ;~cSnqj~r zh^0;z`-r-EA;qzCYLc%l9x;bw&PN^UBcvzUE`ZLw~@Dc zN%V|?A$~jo+Wqb9)uTuJuz^1Q!%V2Zh`INo>~Oj|h~^W#OHQ*^m4r*=u;;bG!q*Cc z+c5Ku=qw508tLulbp^6NBT6ofZ5*Wv{)il(^)1QnZ}vB=$?{e^_cw3|Y^|recsb@f zOOZLuQM0XTmj^UNM;xJY|!q^8`ttawRX9FRsxZc36EX6+V=?QT{n43`msW366eZr9q|e{zGS)o&1bM|i_6YFqMjpW{bwGRZx(c_E-OyNuNxstuAX1_;WfY_ zv>pBmMlaUyo`(qx-8}-dp&*bHt`>blcim`(H}tgJm#*=_D~Q53=j$Xj7j{64Rgf#f z`)@9z2@KB~ua^hU`YT27wcEQS^Vz$5vUK~@~Pyl9igA%v6#D-dCNh_gmx{}w&Y5Xb2Lv9*;R?(amo&Z zFUmG$4S<`I-Ywp@)6_hwtI|@&d8mG2v6_egB17$YKYm|19Q!@3mbTYaahUw2ej=&K zAoRAN+|K$sn^^05;9aB_{H&lK?^y_-vd-cqYrHw3n~dgMnvw#SmeHY2B|4TP)3~-` zM;nK_-pbX7<*TzjPa4iUcH&TCtz_TPj_}ZF@vF`6rs>s3LFRQ=gj2-+La&?rHj|bV zQ)q|Bnf&Ar#6jw^|GG_RT8T)QvF_h;T*+8EuM#Ed(k9;*cdCJs2aF%*-B=#*P6$ZY zZAO=SK-^M{`+}W_m?!e4Zr36z1A$5q-F_rAIYo~Zn%a9hgvl^ao|BeP!n(y^{0ui+ zRxL>z4A(B89ySZ;pQ6=KEUfW()?A47kL`(~#yj&E5Jjx= zZhHi2oBrbBxkUfqiKNkr$mtxc?z=I&J7hZ(X1T`fOU6~%JZD|f_-P6?(swo~hxbRM zT3!s6-hn=*8mi~L;7tZ__Zf!avq`J{`8_c&2%;d)^*&@Pq5RuO8_#AvsEQ2$0`7#E zl6NtQjXN&_f_W>l4Grmfz-r~$oruQ#rxHxxqxced*eKgW%?GyexF-$Baa(C@fT8#! z8A!`o{N3d2`M*IV!=;HfCa+z0UOG$7!Oi!+6o5MBGw_0i`8A#GD|AP+Xw{V)GF9ak)^KrHgs%7dDzst*S z@j$32Q4Z?4rnsZ33aph-7r23g8AbzkDf?I9Zmn^7>~%64Z>MBEdF9%(s|jkXuH2QE z%hi~M$RUnv&3_wJLt!1I7~ykQt+2FnN#V*&epXCeJmvnc#F69p)3yU>I%75>T4Juj zk<`j^05R}M*lu%87j|A9#;`Z@rNr2!w)NbSkXa{Ieb9F@DaU|$QvqTfc*jwD(_*b< zCngwR6>Sv+ZwKD{Z{#a7|D{(Z(PGg{dbej7mFdj>^TLh}v7Mp>x}w7LAfL&>GYl;~ zK>uNKg+|P1zbzjc|6&$(ArZd@LMlC;@KBw-R#|Ol23nrDUB6(}#5Z4#D_U-UBa&;UEIe&~p08Xc zlwg+Mf0+yr4NI9X@lnIP*FD?y%{Pzd9lkT{igF&v_|WaqNeGesA+YNP)&E0b_&UnC zS_J{|QjgzjGIfjgqlMmswt;-^rxK6_R|#L6$Bf61p%H?a+ z!1C;_jCyHc;Px@?hqcct2xI^MAvTo>IY(I@(HAus`lyb{0O;@D*+vQzCcAh1al))et%8Z zu&gN02k=?@*Q3Ohp4zcSs=fPgLRVtLOdGz*i# zg&98PEWY`+`iwz|UNZgnQUXaZi`0vsaIVdTfpw!-4G$+%cpLhgR_d_@D2>MxW7$5t zk(NuL*Tal3x;cq=I(-B7Z^N6Ms;tb;6TUCqeZ$bwm6a{YX1>u&zrdpsr;enB|lSuhaOgBF8)Gd`#V5 zRvCSR0RkeEn5!c-JAdJ3aEEz}Dj>@rkkOrdk#EG2J9>hbGBLU=Z{#8$-g#!VUE&`0 ztPakowJ9d&TznwF`7~e+xnLSJ?@yQ2aqlTy((xSG7M-A`QNRskH?A3(`un%SDgqwK zoEAm*JOpc~G)sMVX&z^wS|plCpE*swPd5>hE)%yiO_xt87cvl46c*VUDEn?NG_Lad zNm|uGg*nQw@fL~Nt`TeDs)CyZ019v(_hR*Dn4SoQkt6TojU`9iEBe8>u;a`=%m#MPk#9$)L_+ZM3aJ~get4*T&ps4 z`hBdT%o4HU#KuKO7X>p-Wk1xF~L#Oy8#GsS`2d$dqii!c*G1{%JC9bZVqtfaASj4y=`@Ea9bAfa7`d zNASVpp8f03QbqwlpO^wS!j6oL$WJLXUSu(PEs@8v%51-o3#afe$xvnXTI$+^!WBto zY28Y9hXg101Y#YGKJQ1s()qhhBO_32!S`Jdsk4znKsY z$|53b9gux|F0qo-9#97|_cjCinWJt3%FWTPVJ{@id&|$I{P;>L4&bGPtNn!ksF?L^ zcxho=VDAtrSuY{Vh&rBO%ANxX9Vpc_HTb^mYOQ~ta~FNTYL6Y>Ha~&a&ih2IyToWq z<9&(hOr=E@aRK%bMVSQYodwq^w8goTWnQ$=Em84)CYdPlEGTO*6-oup=wT$B_;S$o0ydBp#2Gu!U9+2>sv= z#TL{x_3{kHfvVIk211<_cT`%1z2ZX})><+$;I*Y}Gx+`?SmhcKJcyXOv=_{E(ZwDr zw}b3wiEnh1Awq8h#M*$S&8H0rtt=bYLtAh9ETS6m%1+pLm5K~!e*5QZwOpyTqk54(x*tttxssl0c@lb^ zFIe8ezk_Yc0H(qvF$4lP-OrjC)jUaj99)xE3FfZ0A|lC6o?j9_KX763VEr?T=iIE~ zO2%~A>LsAGJ=K=SHAnN~SE^^7EavjOCvprB^AZK%}NcontZ8r@au174P3 z@9L_R*{DVI3m*N)CLeMt4gsr~UC07D<5_FCS57hbgHGIQ1{pYm>SS@*f5ckmGCizh zk}ZXIUzK#uW%~jgGdH@N!n#@{`V*sB3(+NhLV)#d;EQHVCqArq+P&uSHEymg+cuQN z;bd_qVUNLA$J(i({4GLe<=u}`wV;O@8l4x;3<+Hs4BX5n*MApy{<_A9?B`x{yOB=Q zL~xOm;p63;-OX}#mYA!S9ePjx#~}f8txZIH7y+ze{9YjCRD#)<>~a#K_-{4AY_<{K zKLV8C`*#vYDQVcb2Q;O0*83bc-9hZQ^iSN2d z#_bGAluOQBhk~S_r}Nxlv4jXG3i_F?B?IQ{Dc2`=LO4a4cWf>dID`)LH(vbY!cTK- zb?rGdEt9ZT^9wLR z%iV5c!Un+UA8ssf36Yx%|_g7BBx3K+tb zV0l$iW5@RAEbnZS%j*ywk@iT5UqQp_2q~?+ekoOX5I;Uq*hxB;H$;~KTK@vJ= z1=m=~fPYkIJa*n=YGWspf>GNZtixCyV zI^IQd8E<+@fzx)X{vFz}Wy!}y!cN(XsdR`_-MmiEMhLCYs59~rP~5SXg#)7solCq* zd%C_UuVARp+*;|mQ&kPOriI^3$wJrV=p>}7wQH#$uxA(JTN<=IHr?5Aj+g3M8i1@|vN13AK^UYJsAEzVc;x5-#oyw;Z zsXjA^f zn(wrNcCb3cF>LZw^3XP&XS9*b0Ru@M)baG|t-T?8v~_xLdmsSHKNX^3z;q^#-*NuS zSwU0xt#sF>_;1!doPL?0@RzfP2*Ymq7{^9(Q+-!ImeLvTKPAH)ezR|zyEwTOHM@ht zf%zjzzYQrLxXQF(eB9jV5CnVO0(s=yUN-YRmrrq_%d*Ymcxq??v3^nxLEg%LNa*E=am|oaM1$# zB+tf5wD1jYcD2J4{8!Lzqc&+2Y<;3SYDu^6YTngIKJW7Zu)_j= zufbKzpr`B%7mGZ0s@#41O;Rxc{1YFxb#0I=<_vO4cYt;| z4npx6?zm5x5`4PjG$&Q|yG&y=()ISU)pwZJoP&MxOOF-0?|xADFXlF|MmAsYW>Vv8 zxTMbn`-^u}C3jQr%>vM0b&=eEk!#2>)vntmcNy?-sg4B$5)kJ6onnS@P39>;zS5FF z^xNYZ(OmeLJPs^U@Ihi!8@SJ7$qHM-JYn8(5g$rt!~rFBTtQQR(tN8&yZkyFlC*JV?&|210P_Qk+Nyyn3ntAHNSMUgZY*S zY|fFt5}u~^!Z#@F`lOB@juo-O50+96NnJ@{2&w$=QK;2Ij;!UzcMpEpF=BY?B%}iB z?(}ASz17{w#=*lSh4nNBx{g-sm31~32%yBd8^>blpT7~s1TZCB3iF!)?O9f86b}u{ zBSo2p*AJb57J#nfww62j0(5h&Qhr|JAtWZSb22JQL=xJ8Rp%d_(t5UQDe$mo;v;nR zH$BNiHtLC=X^+enUo(DbTK(W6>DIB391W-g0J(XyVrct1pS4y#&LGCI3c3^GI6U4Rlte~uJ9uV5Y_f1RIV$FbxMO;LFC|8R z28>FpV+BV51cT^P8o9`9D5Rp6=*!4UuAe%pqa^!xGwWa%=!MVnA@2J%xOS(tC}e7A zt&-ervLHs1)B_q^T4D>y$9?iXq-j(G3i9*Q69FZfyNa4P_~$@u__L+$jcC=S`m}tC zv6%vX-vu-?;icDK>3hE7N1yn_m)2O&o2em(m-hKk4ABoXq+vMj+22~$E$L7M`?uj| z=o*YNIK0uma8B3TEEXGLv%fOxkQO|}=yU83se>P?I7833Y}CX7Y%cA=ftpr7@NL(U zn26>~*cf{`+46EXB2ToBe>bWGA7@EHFb~9=f0~`uy$wOtA74BQU}zXGy;~ghv^$n zswzW!Dyzal`cWbzhmc_Uh=eQ58{jm4CcS37vnk@!JHMG8nj9(F6O$YAri*!a#Mz|! zM-{+g)>eHP6AgPNPRxhqo z8uO0i(4fh#9uh+)$kHZt)-iS|pqcEM4^2(hORq%Ij7FlNMbuIgk_#~HalVMil2$rD zddygS$Op{Lz3iY@bxuqBm~)vr>a5iR&WVT%Z3r6O!y7nG#S->vl*%TZGeJi*1;14z z^6+W<(n);(((|XCtJ@nV(i$oYy`R0=*tt#`>cp;My98tBh}gDgg8d*C?V}BRsK3jsl#4#nJ=D!;f)Q+ii2jbBH!Y#Z9oY)l2&`hTx0xx)}Bd?^H0{9Y2OCz^Tlp;95CmT+57~UV;eFd_c7UXSAzg% zB;3~k%1Ix5sZnhEH@oZP0^vTkplV01#PR61W^DAc?uzw=sD zF80+-goY3eXh<1=xd3n_x49#|0txxtMcuh)!gkRAzJp6g@hslpkBvTx6kr^V;pBxbsHtk%=GnHI^^`hs7 ze6qO=T#8_PZ~E!!mIgyL+wq1XLMCW;%R)p6W+t83^J}Q(ZrhQ%Iqik?pKF#huA8X+CY3vI(wGh#Wf#U;y9*Y%h&Tq+=SQqEhk$@IN_lCoD=;*eS2D?_*3A43 zL{N5tn$2st=wAEcs|kQ`p}zNOG909F*z1%W2V%5V1Wk^E>&QQ+mY?^}E@wAsbhSBG zEe{P5S#9OrK6COG%(CuPG0;QffL4B^muZ0eMdwiH{B@{Uqs97-{kGLFtZ(^V;DE8u zvz$QUXa9QQFTx$X+aI#;JWP5k4G)N$5d)x}ZV|c2a2jy?*Dnk7H7-kqpk@6pK>%)~ zOrKO;6vRqn-;>xnMLHeIV3Xo&ePs)Bx_k;|8gAjbFu??1s33D9H9!Z6h3cb>!iCl zL%C;$ca>Lq^|TF7=*XomXzX67t?gNHb;$fBsSKirM`r98{Cq+lzId?x<2e(NDE~3b z!=UNmy)K@iI)^>fbmFq9Yk-~pV-WV(M%lvqlXhukAtLu|k^`Mkh%z)PGAH%GA(cEZ zabl8OXS+f}{dFG2<|4aegb=g3N{a~kPjC*&K z-1AF%o~1a;m#e2{5lbWLKA?WBhaPa|X0qifO-EUPkkaA0!TL7FT&&r08=pK)V?qXg z%N#0*W1@3EF$L$P+$8@p?C^;a?!7V3WC%Ikz1udIRDtqKhDE7j5zbR{HeEk5tTsT} zZR6UTW(0FmT`>0;&;rz<^#Zo`BR=BAM8m}iYBGm1z&^1du~AQxvGXUBk8}eFW_4*i zus1Z|R+_JdT~oVMbY#n(=_HgVI%o5ujl@IC9GoyeVcauoxY&jXw~8gx}P6ye%tNPJ*v> z7tYaFVZhj}ATZ0gslF!-baecR8$ove23$)$9wG|UABwH<;H{|qdSRcAb?8 z%t5Z*dotSqp{uazX8~8c=&4&;@0vL3H93gMB(#;*h_vLiEo8R8y6(kCZe{9&>B zN=tmo0C)dMxlo40Xf8^(48%}E%^>)bRajE(PMMBRHKq8U#EsB3JErGA-j<#3{BS3m z2Rslu$5(~uw4=>Yr>WU;S|a8XU^TJUPY>Ri>99`8d|hF!N6}0&=?7_F`Dd3mp!Ir7 z+8+^4Y0qTAi2o2LP5$8bBO`LU2l8(OhoV1Kd_cKA4K^)fym?FT^{LlXJO9@FILShx z<)bV`Ps*#lfX56ZwBvY-!RnRWn{R2t;qMbV46_^7!E|U!n#Rf@8Sb4yxx)&$aBJem z?!1I64Jg9c;Cm)3n{sTn{#~QkY#Y+|M{1w14Rua^#M=Eg zDTcOc9cf_3-&Ka~t3nP;C%ZL&Ux#gVP$~ZjB>fOxFosR~R-V&5+;dmFKTbTrIYAxe zOd+osJKJEbue(uVL@b;&>EXa+X^4-bGismA+s39iJi%cNIS64nY58^*`P*Sa*c7+} zWF~Lhw78u7%^1~qP~TD_9l|dPH4%x1cdP?r^^Btih7^TlYT<8XxVNV>B4(uO8^!2a z=~&77hX6a=i5nBAr>Lp3D*sg6%)+5$!q`YaIKnAMh|75Zqs2mylsW(u_gexZnoD{{ zu=3ZNWiBg|S+<<<%QjTjDPytHg_m#d|0A0_98<&E%wzKvf>{&T&($qm4@6kI@34Gw zHHnFxSgbQ);#9JMHIILmdX2qjvfuR_AXox}{_kZsyTSHrA_ZNJb{4OGyq^8wpx8LZ z(sSegdEdq4#*``hk$b-l36t|x33)t>w1esRO>50X(sl0iHs~&WwC?&27~TDkNbg1I zYE!_j=ot;Lxp*|fe;szJ%oK=sI&S4%hFVQ#I7?-|e&##ZN+;j&-n9#5>5>amO-o8vImHXW%1X$(1}}ny+Cm`0ryKs995BS1xl_*m_mG`16}Id|2Hcf)C(= zSip#E%pkU6>JFh^aAJo8m~yK60DC(GQZ=*z#_bKrhJYa9SChurB=D!Su_@%eI?4w7 zozpq*{Jx4%3pUkj2VP_G#4lT}rkb2c8}d>S?4w{TN)?%%g|s->PJO|keWc<*N@Id$ zApp*YLPNAzT$WCMLq!!;BJodv+Pu1z@&QQLJsuSJq=l(}f2$}8Nh?3X&AO)X-0mjx}(8j=g+vrrMtdj5xDTI&^3{ET5Hw5G8 zwabd83@7WHd$a)uM%j@5DF8T6TWA5{#XJCZFHiuqjh}r1UgjaZ48U;m?p{`jZ;EjL z7@XS3_lqrCXFom8Cs~n1V}Y8|hcanUhq*Y>hbDZ@A67vYuQ%&S#Xm}^gl=)VKNomt zve)q(ZM61=AmbzdOjhGJ2|kMN{Na3idT?o{(|ugNJ|Eb`e}C{V0MVESk|FP)8| zk)kbM%xe!!;svzhVr8;BilK<3dEl;`eBnm72cDO09sO-6G6ZlQi6Cp2Cokmj&uJz+6U>gi?ik`{ z9JUybl1IPMiRbmUk?2B6*NX{XE3rr^^~sc#`xRnko8?5nAsWm(zwZ5{__H?zE5k>U@Sw z9b^wOZM3b{$E!ZZhk)`>RtldfaQP^tcVQlw`v(G9nMCK1pzlL=$PZI$BUuLn-UFqD zTz+=$fJxZstBg;^+Og~R)bj|o7vNYd6P!O&y>Te#&ggQB&|(Up;YgXvKAQJ1FMY~j zjG@l%`hi_mK_g(Yc!;a=m781 z+{t3#8ceCP==yx^ww5@bnLwa!Z?yFE6eZC<9)`?61Iy_oWZL0J_vy-mQh{p-c5!|P zGd{F36ZDEVER-oiS>t@kvASnzXYhM%Duu%P0Xnmh1`~ymjxfCLu) z{GnHxG799|DR_l5J?Sk0owUL z200K@U-fVRH1hxb^p8}oSCB&{G5$m6fQXXChnU)qy$lCPrzhqsu?M#U(o(J`SRksy zjW)6Wf}PtHG?wsdT?FeEvMF@w#EB&8ix9dr4#qwrwh*!E0I(1puQ3*3^hl1e-Fd^X zyI#Ugqs10|CUh=pS#AJttE?<1^q`HsPDT#0BNiMl{l@(1XB`MFqxFPxw-YlgQ2!x% zX6G3gWu$=Hd3N^=mOXe9=r*dNxy&_G44DeU)AqOfNJ>BA+3%t!=K<{>VLK=8IJ*fA zZLm88Bt$$t(J?=Y#|$ihM#a!5m8^j-ACE^la_7zg0U9ey0Y)Hl@fZQ0A*`QchsU`= z-^qu&IQ(<lnr$TuEjsDS6jC@rG~k5iQ=Pz@d$ucYWJKQZ z&FGpHa@%AkJxQzj$k`lAxUJlV-t27s*9xq3`cyWUW1VKwpQCX*{NO6IMsM`_24U2H zYkVu1+8@O9ivxn6sl)R59Z;M_{9BkKe8X<52@#oBS&4m_S!t2cpC{QOw$*eD5aN+H zmHfDcOgr$>77iFF!@)cafTI@=L|9-A8A^sGjeWjSqZMp?j@DB4=lNvx0yDyoj5cj_ zwxr{*PH8Rt;JG@@%D`uMWACqNi+I z=*U7_BcHho;WM5eHi%6r(pLvG^1u}=!XgnU8rXZlr7(d%&BGC) zW&<(`_0gOF1Xr;nkYrM*BR5c+N08FsAxl%n9_X$;v&N!V z17frTsnw2R5sC+rCRu+IQ<0ZopbHWZHmUeP`(Utqt~Sew1}|m}&a_!D(k|o_dzzwa zXYB_lHz!R&C~TCm9W$>XOv#6p&uBz$Mi47$L(xJq=^_Q@e&*r8FP0Td`9EdDROctU zA+oKINLDfJjzYB&EXJWoE)!HB&4xT%Ay;zoB9upP_wjn@`5xnDSb=Oa)lE9Q6Y z+@Cb0JN3mJleZ9-_k@#op7jiEj?t%dLsMR_16nx;w;1iY2GY8M7u(P9^!sTaEj00$ zwvGsW2IB+=TxbS&52vH6_h9|`^5MMIsc+9(OAmA=1thM%RhaVZvZQbn6ktW#+CGl| zT~uqKT35tj#rDgSm0f&8u+C`kd7@iV*S+;NTqcw8TL(>>boC95~s4Ie$JNHxhp?Bw61DssifcF27L3B{4h%+~NsO*vUJRBl;U zoS95hw8dN|6)Mv#Q%j9VNfMXTP+KNZL2E`U%DvojPp!xm0U;-)t|D%^rXYymn7aWk z>4(c$_c-@n{`i3N1AgD{@O{sD-uJxE^Gf_UM}B}}Ca)bb2R6*+E1J6-D}4wEeo{`9 zvP=g!5Tb8eEJ_IUvL%szRhdny{!p|#TkyPqZ^PB6`~O~**-Dv61@^K4Z2t?f|7W0J zh~c;oSpP z>6B(jMebzQt#1umWAwGH79%uM?XsTizXk|t>Unb^aK<>3W_ae+!!t#FKGeDkv3ZQn z>pRU@AR$xm=W?EZyudMaxb?XL`3~t@Aad%$G zPGD5*2_#+Tc!DKSDXK2?7#7UeibrAvdTu!Trb*c6_(VyX4k2IplPLQXsCW~oQx6k! zV@%v60=H%gFZ`YUKxFv)u=3C2e+b37zCwjy?9xOuNW~P_YkIsfdE<1`OJ*9&d~Hwl z7K@ACZ*z$aNdSAMCfA=uDh-9`#nRyB$MF?CWu~#e5uWolTON7!BABAYQzy}A@-97@ zX&wtG1<@eYu~^#vxR#wUuP7Thsm;a?*nSGY6u}NMM{rR!0tbNEFNb#Pf;N#lx}`}- ze=BiyMOMJm7{DxWO%#Bzu^fG2-BoNH2>O6qI z*(^p2O$|m7MY~LE-hlm0srds_2Uith;Kf}=Mx{JxDtH|nQF(mfx{-T7$bhJ~&f*Cn z9Z3AYPftpKiFg?%%zIVJ5eRJUOrK*4|8QT&=t5Os6nrf@qNQu4aU#HXO~I!S3eI?0 z0UA2SR*?&P%V0EcuAqwdBnWHQ)hckAxwMmz)U^eReKeUma=<{b4 z%K^o!A|IVM^lSV%SiU2W9zNqkNU8zh>U4Pp#=omE`q;qU0yBpV8Ti_yI>pFl_r=n< ze@v)bSkQKBN2hrCkH;{#k)^R$TiAWbDp0H84|>EY?16Z)s4?`(B(KUV&-rH(C#A(Ix`sdqTbbqC zF0=usOrRva?#Az1I!}d#)8FS8jz?YXhXcNqb%8JEdST1%Pu{nE{ImZSljVC2xo^)u z*R)oL`i<`|*$#%8Y^B%^4)_mSRYl_`w*%E+a|VXYgS6@O&{0+SeCf-fLZuq^&Eiyg z7u;tC$Gp9#K~T5a{p4H=+zePk^L+>zsUR8PU(z<=2Q;3d*sDj+#G32?-pe%Ksf(%l zu9+~H2iiFWXbLs@S-?9WUaP*`%BKH8Rb^WM6YWf}mgEGB3G6EV?`zwWLdd7<6+q=8H_)iezR8K;w(PrunHzRaZ@Kn?f-(G~Xw0lchz55uJT1zw!uwX6*6r(0i~uq%hWKBp zUW2O#cN_`YS?g7J&>2q{>Tqn#_?8>$M$2ZfPBg&NCPHR&YBYn~0#wE%mhu4QX4#3z zOkn9xqXjlEe_#DS9t_exM*nrkUk7PMxf}4Yzo+V<=HhWO19+qLQ#)3|9YY&#c~i%c zEk4KGl8^Ry=dcz*t=^sLHJ3l7-qZ*26Lw$k0M`YCH+9;0&86dPk554!WR@oYAifNoO?)zss+zDxJx^jnW*QBDQ$Ik= zQv2W?Z!AG(%-`8Ybo`~1Gje#7coMB4>jO)`LdY>SAT9D1L(lk#ABaH2I|;%jc4vnC zv|amZNsLY}Vl|Q~+rDShhQxr)Su*vi1a&#Sf~6wv%9u*$ zxHH$+dFNsb)H(Jhx~2&P-SnBM0neOD_Z*;6@YtWr>%|3&Nj0j zptPMpcngXS)j)Qq${XKb0w`-14h^D(;PrBfdO_L6R+bv0Zz@w1D}S2P=mMgRs0fJ_ zHZ1CN4|&Fi%|^wZge2^jMB5s)qe?ZWyFQb#Z)nHDC_Ga$)K-=Azw# zk7K3(JI*1(4xLpKE-}C$tYfnz>zv2v*w^bb!QrE)@%yc2zSd>=SzamkRP`Jcj>Fp) zE*ShYcI8v!#VWN7@s& z?zIrz?-W8|d^SZ{-v!AR>7yhE3!P#$`bnQIFLb~GYgP$;;hrWuDBhUNG91A3^cV2c~ z9y;C68|0tSWh1 ze(w3@KH(#iv1(~cex6`YV$q7;GykrY8-A&3*xRz!M<(eKUso6O4oGOgtlMqS=@iIG ztkt^!^OJ2M@1s2wlrDOoJ5=gR%l)pJ^r{U}HZt8yvW|vS$^9kR>EYXVUI_-k4`0?N zMO33<7~yDj6@TL+GL@3*{yMyyd!!oj_|t)Apy(vyiIVz-gMMX7Jr-N}<4X;TKMfv9 z_q&djJQU7$x} zf686%j^z17@`%)Tb1uG-)JwR>9O2M}S|Bx#I1u#D;cj5BCMntEco-RS=zTq)E4TLk zY9mXjs9d;f7X2xc@y>E>=JKPQh2hE?>zv6G@)`L1BzlzDPNig_3K06)eDpECppSD z`YV6Iv|Zf!jG0bK`Dd7YrCs@wk6NhV&rNNrRwXB3@yZRJ`vRJM0?h-^7Kyc=PVfg* z!Fe22pASTko&~@7i`=)HAM2Bk3_uf;vHWZ|C+Tk8Ro7-ds@Ce*e%~S1sc{v4KneUI zCAmQEK7Xys$%$90bTC;rM-ni*kH;=?mQ>-_~^#w+zqjSGV-=`*8XMT zi$(gWrSQ2#2j=XR_#LU@ZaG6DAhR2=E~UN|ju*XgBGJ>8Li2YjBO zJd`KG_?~E7q-U8Q_FT#Qjq8fmk8h`k(Vt@{hV=rNbwx63@~>XK-@xu}jZHqVZ6QXf zdDf%ZPHQu%o@^`bNU}n{Io^vsP5PxXp(sx7e7wh>_4sM=*#pSK4mTY}PKxwsMQ81U z2Bks=(k%SW`s+@T%!z;-M0@Tf&FVkXsEE8f5hv)Yixawb?qpj++T!;f*_eCINSof+ zX8lNXebRi~wZw>s(PQ~toi>*j%K{r{^RueNG>mjmZL!c2%7Xs_dD-Mn7XF(%H24=2 zTNpAc{qeYFouu`BOqZREUVP6Bk1c*mANqOqN()>q94dKwb3@!t3!g631Y>1Ob+B8! zkXaMbc{O;oq|`Xn8oF1ppez*>wMP7H$=Dkk@c?d&ZS_b;jvMt_~3r2WQ;<$#t zTERZjGk9e?%t$;Q%z{r&SYnX5jS^1|CE2qKnx&sBjV2o8EXjVb8N4!SIHb2v|AhW1 zVk;->OgC@W;Vr8RC!K8ZG#3;_ks^>=0($!KP_3&Qr#WvrtR&*N1gj=-TrNGtSY+udCx%|V(Ico^Q8iOz zD%%XikP^3?67n_hTPKkeioBXH)wIM1=-bV=iBVl2A>3W?xBiwd|D5qsaJk5au8O?O@_U6!A0t2EyJI@lD_u4N4^9^cxC5RE=- z_Ogkx2Z)&tzjHrt5&xX>3M@H>IT1C@l{N`@Q99*txxfg<*}+c5EH4`QQV|8BX`LfE z2_ds>H;3uIeR~x%9YbCKv97G=^ZL>v{O!CHz*n2yy1Qi}Bmt`*#4w6?eLa3T*`Zry3n?P4vj?)~TRrTeAHLLYjuZN?Dm)j@tjJR_^C~^O z1^KYcnH(YzIXZ9hw`}>c9A6Q&GS)+?c+~dgLv?oCcYmBUu1CNn0aw zb+9y!+vn1|PtLY_G=wHj;r$Tn2+<-$n1>@|C`d2h3@-XX@DmII{L@A`fgwC@`pOG| zz$U8s@9v+-JZ{k7^wRc<3Q|oQZtlhtrgb$G*cX6CmRIp3)Pc3Ic#!-R^W_#IQVTKao*;V!uI_=jz%$E$vl_ z%$R0uoug+=&cHxM6m4+#YrghJ_|g~^@b9rb8}Z2_%p(CMg44K;gu(Y^BH_%30Sy>6 zGM#_H6?u8?hX0*Qiyl_W_NHc1MAO?+iZ+?g)zDFc=`KF2!bD%}nFAmGe3GBt#2C`u z%Gn=5*v?FvQ@m;wN|B~J#I+9ko~KF88B7&%lQF-Zuduh)hFiCZP7|)=4xv2LFm^CA8j-QL z!i&$P{x10`hg3slCCJCnqxbEaHQ?~6!UpaUcE5qEE{XI||8FB$vZmVl@Ng+5AfEHk vx$ck;CgRtg-HCew<^R8e)-R)D%r%wqxh&srjKBNx4S1Zfcd@Iq^^W-ucUlh0 diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_install.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_install.png deleted file mode 100644 index 8e655a3ce9e7cffa569e442635180aa8a77f96e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56629 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 diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png deleted file mode 100644 index 7ed4568d6d962ed41f551ca271274237399e29c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451563 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

EhjlerDe59CjU) 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%0AGzoIzD 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 z

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%0A1h*T)atZyHL2-hM!yc{!L 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ìn%p7>C}b1OTV*2Q~O-i9y}k6_+<+) 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≫ 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 KTYASn^#1@rcx(y) diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png deleted file mode 100644 index 66d0b970402772e46bcd567125ac3108305af901..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160414 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�QO&t@!ZI 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 z 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 E05ArWNB{r; diff --git a/docs/how-to/deep-learning-rocm.rst b/docs/how-to/deep-learning-rocm.rst index 5493be62e..49c0b5d99 100644 --- a/docs/how-to/deep-learning-rocm.rst +++ b/docs/how-to/deep-learning-rocm.rst @@ -56,14 +56,10 @@ The following chart steps through typical installation workflows for installing Find information on version compatibility and framework release notes in :doc:`Third-party support matrix `. -.. Learn how to take advantage of your ROCm-aware deep learning environment using the following tutorials. -.. -.. * :doc:`How to use ROCm for AI ` -.. -.. * :doc:`How to fine-tune LLMs with ROCm ` -.. - .. note:: For guidance on installing ROCm itself, refer to :doc:`ROCm installation for Linux `. +Learn how to use your ROCm deep learning environment for training, fine-tuning, and inference through the following guides. + +* :doc:`rocm-for-ai/index` From 3e833c73669fafeced18219904568c0a63272b50 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Thu, 30 May 2024 17:20:31 -0700 Subject: [PATCH 065/175] Remove unused images and add link to usage in Deep Learning install guide (#3196) (#3201) --- docs/data/how-to/magma005.png | Bin 89647 -> 0 bytes .../rocm-for-ai/pytorch_docker_install.png | Bin 56629 -> 0 bytes .../pytorch_docker_install_output.png | Bin 451563 -> 0 bytes .../pytorch_docker_test_model_accuracy.png | Bin 28433 -> 0 bytes .../pytorch_docker_test_model_compile.png | Bin 160414 -> 0 bytes docs/how-to/deep-learning-rocm.rst | 10 +++------- 6 files changed, 3 insertions(+), 7 deletions(-) delete mode 100644 docs/data/how-to/magma005.png delete mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_install.png delete mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png delete mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_accuracy.png delete mode 100644 docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png diff --git a/docs/data/how-to/magma005.png b/docs/data/how-to/magma005.png deleted file mode 100644 index 3bc2d8be6d4f60a21a194b608c3d344cbbb5927c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89647 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 diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_install.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_install.png deleted file mode 100644 index 8e655a3ce9e7cffa569e442635180aa8a77f96e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56629 zcmYhiWmr^E_da}vffMYh^o@?!OuY2A5-d{D;l*w-~+yVfA{JF~0Hvm9j|L@z081iq0 z!Q}4$dx4zZC_e#82AJ0W1%ws~uM_~FERq!ef#_dMVy~j(1OODR|9L>2b_J#YFw^t= zslr=#gYEj$Ml-E=lvTnnC)YVBk?^g@Fk%8N!V08{z-m#5j$l>*39V)dN5HqT{wY`A z*sGIEgZaz3=~>Uqxf_f5)$<)u*V2kl8H!r3k#{zO_b0vjMO%|hA|yNAfp0KYwfFgH+e43usFtMPuZ>tvL-8T8uVhg;z`GP5cC|@hmQk zUyG%K_tzPEzMAd=Y!}PDsFfb3YuT6o6%`Kk<1Y0Yrl5P1-+5?QUnml@TUYxr>HN}4 z?`A^!koVf75hS-pI^golVd*I z-i78<+|ACXybI2lHanY+nCC;a6k1qTB?o-K*7CkmmpLBQRCoI{1zEU0Z@fM< zp3l9!+gb>+SLbSRfPun%$ihi_BxFMD5qHQKL34ba8fbURQLz=g9}#2?o(_5%@TEvT zNu6H*aN(xOo2A7M(bd=M7#6rl4-cCcH1&R-`GbAR#-;G9wC}o+VCzRUx$fQkMVxm_ zA;o6FS&baTO)lu94nPLC_?f_qt+emriVybFTmmuv-mfPXH9_|CT-%>3S1e>+_~yBc z^HkzJ^yT|_$p30p2z^r24_Nj zXn>>Df-OT`)W|{{SbdR>e&ls9@GA}fGQlqCf{pdS4xPuM1In4xA&HUma1$M@UYQ(~ z!zE2T@45*@+M3pYfcM31HMOJ<3=v*7lq1i>ZMzZ=?h23qnpKwGrFeaIExP`Zi|^VV z7c8>YfuFTzA95G=tSBaf5_iE(^(>MxN>}>rHrTh@u@+zPVg(a~lIn&pr8eK1y`!9d z&4R-?e-58l@bZavl`MPIT4nA0(9<|+zklBT;AJ&lTq=`C3G>6JQAyU~uxRHee>>v; zpRrEAOV&^y3_+8R{jRa6sFH>!SJ3s)Q(LmtwHjD9rSbjwem`?!dFBvSHtFpzv&bWm))CTy7_x}sLA@?R`DoK%BRWA)e8(ff^O^}&(;qqMDqUr5mEa|3naEs2?m@=lb)=s5eMf#2jU z9i=&a;_^AKT{n!KcZ&CTyYhX(2P}=Br3_Wj2phhYMn;~M`TN&i#9WPlIM8?2W5zOq zij8zJZxKWz(FTO9Jx2`JhELqV0i&zyP-0X#KPOp~Y@VE|oQ3z2FQIQ5(?hOHs0%_Y z8UIw7eS?iE%{$fmAqOx}OJLl|&qXGaL2yfXZ9qPGsL@=NZAC8MhB%`k*?wvkzs)to z-qKlV+4GcDSzW|C8FBVHBSRgH;RrR1#&n)V@~SIbP`GzW=4{=?`c z5;a4msnVuhvpDjQ@4j(x(1X0Rrj+uRX}t6C&3s6jzcS(Fb|g*7!G-UUDaD2wd@kR8 zS<2yv-iEH5!iT$)FMacnLZBIy>$us&1!^i$Df-Fn>{q@ok|)UT>dGx&8SdS5VhD55{s;_A-(R)2)+!W-d3NsbM|wCm&vMtQkRl| zq%Y}*J>IDFU!fTa=>%yA-sa&WW-N4J{^G$oJjP8`Oz&$Nz@j|*0s9m{O8PQ7o-wu< zQpf>q>lO>p!TQDV)$E6t(hXLorA6$=Zci9dpj1o3*;c1BALeyiq#ICQn5DTiV4E|r zZqnxR<fg~QY)o;Uu^6bBz za(ijj4wH#l`d3v5swrc4857Sb)f6CfipWlS`L1GDmj~QFhD)beqq_|5^4cBhy6@*` zzWT}F=qWS#GgE-UATGY;nt)_ac&f#81IQkfo$&I?T=n4$AG1tK6$oDQ815l{4t#%e zH|}COeIsEVa1AIMT262vlnJ*vy~Nw@U!GJ<5$A`&G*s`@fR z63<~NfCTFIoQlp$Y1YWYPsF+GK|_a6U|Zobr#fLfZXHY2u^AOfOkVh8P6mL;$8&Fbd6B&m%$ok#RUKvbAKBi;N=I2-W zxV>y~pArl$eqH|{D&|7!^g^XT!>P?KhEqPbm@IDDbE~uK)D&D zS59z_Hv68V$Tz~uwi=s&ul~My-Zf-N{?3!JoO+>E@ho@7T9c;Xl`_$ro~-kb=1B5B zWj2=Ng6#CfA}60Jli2*&&yQ;Fq!ag^i=5pFdnFezH}mvwYXUyJgl%gX%N=5al~JNw zo#({sV{<9$?|8iDJ7#v@Ir`EoqL!yO`$vu(V>8t$?3yqQuKsUt$qu3*v`+*rln^!P z{}zD@a>9E2Z}eqaLaL=!CHemStbMGw$wS*9;A2GwA9+TT<%LR z6S)DM!!zJ~hAR~w;$)aZ;>P4^+w*D$T%!A*FOUD$M3?h%mKbX8)MJcyeRd&9b#(EW zebDrpBwLxJJ(*ByHm8HzJx;kefg)7FO>&As5o%V+R; zLYO;bcP8S%NV3C^hD~xL$=Ex7g!p$9?`S@c2a{}!BdDmtjk@GD-9w)Q@2C`uPNhVe z257mOVScKzW`>mT9~zQ{sAYU7)`=ZgJ7zV-bwGh!>X{g=FdoG3o)hVj+?#pRcd~0o z?8LZze+i7#b2+q9M;vvOE=(Re5m5Lm*XfyYA`h9^jJSXS`?KS|v?lwd1e67K=DiD! zI&yd_7YE%O$sMOQU^aBdTG%;vfNellO*Wm;g@`(R z_4A~!$whDKwXh>@$Tvt97XrHA>Jn{O5Z5iBJIoL}MrRn();-?-^r1@C#sa}GBsl#D zndrOXp=g#C`Ji@t`ahsCI+7Ms1+KmUA?xhtjSrt8*)X0T2!rT8h!}iRa1@nSBo0aO zfq~bQ$zV(DO2fRGjTb2mbS9vWLwjUhGo`F1JXekwn-YYvz23TgdsBR5r2NF*&Fv+t zN^(CBnjK{_WPrE7#bhMgmQ;(tQz$YmTqZQ!WQQcF&Q6;iuDRNyG9c!m)(@VSrsqRE zU?KA>xhDqQms!O=eo^w_cf+1Adj`y5$u0^ZTUC8GolWlPpb;fNIxcskj*~mEkLO~e z{w?+TE&+RE6d}@DHtq&!&0^)78QusnLZS(cg%8X0cB`%CywZDGH)s&Jk|2Z}3{+rt zJVMDL3l$Bv8}Ll`R3@&D z65gr8eU>84(OXYBb09t53nXveg9%`(=85e$Z*AXtD(Y=|dqJ$)20Zw+C=5K<{d56U zx$6P2BKR16IlSbw?WgI01X}5)u{O$oJdKE|MAlgTv;%{y_tddjD0Mjj-!;oG;^!c< zmvD5MbV@4mPE(OUYDFc)Yx-XOR#9)#gdE5jcV=yx_HW1U8TM z*+oR^r`O&`I*}fmlU+R;?R9#U@cQj)X`iknsdsVc2OwN)vXk1D@zy=;Y~&-ns2+VO z_q6w@|59Dc6~Cdu2L*b9+{)tJxJY<1DzjJWR!*O?q)s|!Z{yM$0gfm))A7(Ou~>k+ zC36cE#gysPnA6o`=R{vv3?uVm6k0LxXEo}kElka##T+#PPiUNMoi)U7!7XI z?;OQ4Uc4yoacRx6QN91jDL&G%oF%~fxK#kPlsjx=RuE<_zC2AymK~<$H6~U(I?7$k zXLv9dmmy|f*D(C{>c8~=pRzLI5A0Y2GxeuDVkf|YhzdiXP)`hoL9W}Le4SLV9Hxn| zMBg@9Kzw1KeBNp~)4^79u&<9>zR|rkp^=P`w&r@At$k{Cj^;B+2}7KtM&A1PObq0o z?dx}URtEi=qR zm0?-?;adBz+HuT_yf^KZouwC*9w#-X^ZnTcONle8BLm9iVYYY|yh@&E5ms;UjdX^X z;eQnlnc1J~@&JkwKtTbNLsUtn2(09;NFlQhQ9*o#%f21|u>GI#)3mg>eEC&E-@3wQ zZm#9F`WnL;&ONlH39>bx){{$%dPof3@BdGu+E_1<-vp&{+n*9PF>e*=w{Cum+OOj# z34W2_<`vlZe)2bkjl5CyhjhF5&^v@7s0YZ8hh{p*Xuh4a=+PA2n0YB?ku;khdbPU| zcXT=!CB(?zm_gt@ju?b`epC`)sVW)KC)tnh>70$ zuCFG`H~Pj+K&;PX4Xr%$dTYmC7$)|SQf>Jd8Dy2!k|A^+SFFI_9US=iQ}=Wu!n;H; z`Qt9l(?Io@k@XHLj+6SacZ7R zRECo4x$$3-6%Z>Z(co`kLyFt}-2d%&NF__tEHmJC3vxgMgyf3=YREyoyBk+pQUa%~ zU;1f0uA3a=KVI`T({=26pgEk#=gNwt>S!kee_oM443DAs;DTEx2Gj?OCNZbAnY{eBm;8`f6>wGXwk;~oW5U* z==#J8kzu)~=Whj;;I|uFeUK>xMC{GfyFBW_2L8G&hIJr7^&57{zQYN(nw>AOD+Ge0x0s*5DVz}V)6w-67_a>gJGB=Kc`Fk zb~8*ot-+7_f_V2>)m~~JMB=~}p>T3?-VGH-|P2k6J!L{g;oF1KaV!U23bRhQWj#k(_vLydTGY`ZMo( zy+O6?M5(~^ zh2h}u^`~~fT75TuT!#Y*HK+Y!>MiCOfk#IQ9yJ2Vt|QRGYwcq|5cIUy5A6qM^th&7 zx18^u{+eAUf)Nv9Pui4Gu)FOUF5fuZfUM^=EsoS`{+TXC7%~)EHS_@IH3l5hn7os|3f~> zi6iM6nr_|V51|wo!hCf1g?adrN`h_U<1Lz$)PIBnj8gurgGxc2kzCvCekGsD`8oM# zC1k?)Fw}N0CiU6wA!*)$_KtF>_eh)QWn!h^iB;G4);j`oF`8HNZ^Y#;qF52)9E_%B zwScD&`iHc`r&23n?CLioJ@_LpK)>omv@Y`JK2Xvs2;ah20Z&el=m&svI?U_<3zcKDlm*OT$U)6pSsj;=$Pdf?n5t z`K3BvlS)Vi+8p{SW?K(Mv#1^=_5D65AW*Vpt8 z?!KL|(D4I}ua%KUc5&fJ-r9sh9)B1JuA&o$E%*VG!xE%sUU!n%M3oZ-y)1z1)zd@GDD)_hLU#)rZVDjvGi~q-N(szIo{s18N>jVQ> z4H#?@Q_ki)pT_LvAm>6Y7zE?mq%^%9G;wNE5o`pthTwpMU#=E)In3{x!*T(DFB*szh#} zG&;f)OI5GyII64;2+!3NuQi`%o%^=eYN%r%wYm7GE&LB;*xD)r(gj1k^+={jLhd3J z(|c@)76`x0vtdTw%Lljxa>X|4R$^rw|MYJwplCCclPfd4&4?nZsDYhZ3wZk{%4ZFU za!qfv`(}RlNP7V0&VNhzwKfGH_v?B#CIwM;!TDl1_W2=M_u7Q&lBSxeN66{-J;Q}M z_rP5??rAd?p(ppQ>qLtp-}bm&&Qw;7#a%p|SIr-IE$;8>yi@jh2tpu)p|6d%t6hhx zjHH&O=qsoGN_0`;3c>{X9piCr3g*5dOFfyf$Ra}0g^%+;x$R|;oBt)E>zL0~V2M&{ zkKu;)72#8!yb0Sjst$jA#aDP+L5+|jZ_w-f;}TzVfnWiU!?e&CbSlMv$^jwEMRFLr zidiZl*$?UA{uY=v&_})G(0$rC%RY6^KH3L}!YNikVgq8vjNY5Hu#YB5I8DXWu?C@W zg3Ms*l4ZNYlhhe2!Er90-Xp+w*B$n?rOsAw9CEJ3iccLFT}NZ9R_8tQbgY^t}&~ zf26#cu1vE)79Ecx!zV48!7m-!Ha%>6bM?)&)4O^PO^@dc9~Np(8xxij z(QvJ*XBC7uM1z4TUTyz$0-{kk}B*C+9h!4dml++in&g z(meLsbXW2ff&y%$zIwB{kX+4ObNXM^cXWhV1zOUSR$*6mS}lVt4abd95zvrXKj@+t zE7b+qu)d-gYs*oQ4%l(^sE}`kOaeD^Um#lBft$5CDrm-iW!KC9)(4MMjcZaW(dq`8 zzGS=B-iXhj0T)=FWpHmcx0P)_iSbOtF^YsVDR!eC-5cyEz(keItM_o9JG_y>tyN~i zjG5@y0qH`>$gw(z6ZqECIaZ#`tvGJRB@gU&lS-D#2YWDZ+HF^lhn`0NL?gWZ%JwKU zVB5uL++A>QM*03(0t})Occu~+r(F-y7KXiTOr~GT@?snpgmD+vDO4-Ucg}xkvYC5= zQgsWuT8mXTqr?zg1;Ium{0bIb0>{yGBRUZ`6YET7d9y`cAld0R2EWu|96!$WDsE`I z@G}c-^LGCq(AZkM_k*Y*-k;j)S&nT)k`O`|;6DX73j0KyJFGer!%W`M4}aTq61RPg z8+m2oF0-qoKR5N(1Hp7y=t)1vH?en%TS#x}k?&Zi#m&5x(>ZQM9P$q}#OMwg&vqwD zOE~Epdks@m=OZ*dE~X>6{%mSk;{QZkYa6uBtBvwj6zH$+c=f*Hg5IEdp++ReM9zh9 z6&e7l()%q@cP>xCw)G`oJFj4n@zg+#p%$G8=c&80)ql6Ifw4KzN7){*ja{Y<|4;7! zm-v4p?@X3N#qN4ScYH-KSVb*R4cACFck9+Ts4P3V$gZNiir4zHs@|-VXqD*`rq=QY zo36i%HcB{4|2tErdrtXNFgICx*D0N;#GKD*d(?e%R4&SS$BJ;nd%pP<|I5W;`fYiM z$mY_PQo@It&AI0`4fy(cP)ugu$!|SBtM7=@7wPSMUdK^jdQTmt zo#+;GDfMZyr@69OZT}^goqAe@_qopL&d1EwArf4Po-O6MTess4)5RNgnc41tVu0H} zePYM!uGelu*~Nv!SohVjcQmwB=FlZay7AoOy1PPkb8enN$PV+e=DXAHz#7W}zXo%y zyA)FCfkHBYW-VD{>Dwak(iTdDQr;mMeR+i3gz}#C6XaTSz(Lxmlao2i+R&oHZA#! zHs@Uy^>q(q1eh;&T-~$@aAWviK9pjSO2OLuh0NS&UX-@`My~a=$E!u0X;-`+CjPsj zWj@0`U^VlKB*)F-xui#t2HlB+tcge({VMgxWYJS<@9w_ z_F|-TgB(9LZoc6d(PAdEa-Y}ETYU9yzv6K=^Zaiyl|$yMmeTcXnsg%3z6-7Iw#@k5 zzeY1shc%ksF0XyD6&uqDY5UVIQR2(J7P?&DtRqi8d2wXec&LPj#bTNRhFwgrSN_Gb zQ{huC0#~&XsHZmcIw;Y9r?QmdH|d@M6!?%u{J+NCxurvfneAdWr7zMFqGkQUm@XcY zh}1Lt5M0pr)-&UQbji10E#Jp~+j4CM#ro|4UL8h)!}yx zbH0P)29dPk%K-`6#xubNGZEZ7ztV${#RIB(IACBhim{qIA2T0|cQ&Yt*;HiGm|m?{ zwMu{*{(FhW9`?^@P@ zvuw`a&iRGnZ-z_7zUB*}u4B$o9)FlNs5y2L%P8>Uq40{anheL|RQ9IF=f%CsLSb&% zy^zrL%Y}XgW|O67jf3ZQ`9_~_%yFomy&m2xk-iXr2a}t=}|bxWqH*-{c$@8BvH=RMo&I{N>)t1v_H;#u5^J?2m1xC6eaA6Aj6_@YlbOM~m* zdP*2>EbMiE_NyO~+`Tx=rr$8reH7}gV$9M*oa~-I|ALi_KRr{`_9%~C;z)ml@*a44 z9A2QgqXu`<@tx|d4oK(RT_Zd$DEvs6LU2+U&Nkvn8*SmNHv9O>vIQaa)?o~K@%3We zCkj*^UUG)>>UlQTtw>*hYNs?YI(mP;Co46vmt6H0^6IL?PAR=s=qcCIV|9C@jDvf& zBWo0;oEEojwx#(cG0YJJV#^5n2#XWDR&0fHTzQM!6{fTvA%(b7tq-2>D(?u$Yj}i; zzWOZq&MnknC^j;*uh;6!H|1WJnFlvoKHM2GR&^O#*JBV`L=C~6kpV2NuC~Lbk2ve} z#Af!W)$x#^gTD6-!eG1VRHxiP$@jfgBIAM?~FRc6)(;4OmZhB&wgI z`tlS%kvVhGW~9hjHN@QCK~nq#-CEz+2y6?MtLJhz3o(2@;HRRqyLhh9Rf5F=?}QDy z1)yM4S{;dZj6qpLnH|Yj&w6`pgmnwgC^8>NPZI?$<#y{f;^^#UZs550l-Lrh^5(Lr zZR7KU7UcFbR4gTb>6_=*6c;_sp3;iivJ?d!h!X-jh}W$1y77zF6&@j>AN4EqU(hVi z^erLPSa61=?qS&g1L=7%O7F9`=>8)Md{BRT*$vQ0@ZxCTa^;6yhq5_Hw3hOcc)uUx zHadTaj~ElBUl{0(Q^s&^agV2Xv(*Q7DZ9VTAfjx{qNvR0n|b4Qh}w?#TL&*1u-*pX z*O6i{;}93dM9Mb}ikE=(FkfB;^Oy@cB3qGxKt}$)Eb!5hWN}5^L(^sRpU0+lU&n|nw^y{$gn4;mc7iQM$XYf^L zRkS!Fn|IR$>qd|18a+wM!qkfN_7ppekzUMTnfI;_5=t}>ySj0m)s}}bW}Cbjqw0Qb z24k9z6}H!r1NAYr3>Y`8%)R+FN}=KHDHV-uH9!N`ew|-LfW(rN*PF{h+1{L}*ngBg zqTS7(xuD&4WZx$w-dkr5${tC?6OmEbO21mrN%ru=jnD6qQYK{eHm!ZNU9i2++u=7R z9+iTaW4iP@%Z6`e!O7L93l-ZrK3s^5kLdxYq$J7|HBRM2S(RKJda_QX>^7n|oP-+V z$J1wD_sHeH`vwVgGJL#9H`AR87JgpgOKD|l8-zlOg3yyTACr;lrtd-PxWL*6BXV5&^TTlKOVD2*m3j-dL4ee(yy@ZAD9{pu^ z+J6l00G4yzz`L@&2!GexwC{5LxE3ce<2;!Lzg9DMgSL*z?$4DyO9Jab6b@L{fi(1y z!um-Xv*i!)siV0%-sZGvUv^-bS#=v}^_Zrd!zfG%*(VV>L66rNCDIV_%w_(jmRbYiDM9A*7cQv@@$m;4vOX@haIjIv`-<5Fd|$zkTj~=q06dDPNc9fw~-cps8(`M zjx569?o9bt-;YthsXt}76{do2vf6sw@eU5q5|<#PzHz94^F-;fPxQ( z-~B!5m$5IAFkNW8bFazj7HMX7Eq$N@}6g@AUeQL#CYP}Va15UjA$+z>a=~* zQ9YvW7vtk^uA`Y9$8|f%z`Rkc@NalOMQIX=sGo&KHNn)(Z+s2*&>jRr-Xx|{?y6pv ze~H!*Ei^PBgj^?viwr61&bI!~-O%W9@7#o~b1e$~Q@r+_W=HZ?&DGW~ky=)PlMhQq zP1}hjXEkrQn#$*Y(NwtY7fn!+^Wp3U6P?S%JtWO6MYdns-Q#Og@nITJDa2pIC7DaM+=~8{7vWaSOqQTQ2iK99`2-}UzYI4PFiKsSeG2j!Ti^-&8Hya(f zua;&sET~u&0W}cXx%xiz+Ig6?r()w4+nv4Ijq1k}`*}l~|ES7hMUEmyDKe96s{bsY zo%XlujAKz|TI*_i8}wt%6g|IKm)T!rM_aJ?>`p)P4KXSM$jizp+2?S?*<@Wuu9~6DDkH;nc@$xUm?*p>q(FHzS#;6KvgGw z*8;D^=(44=xDBT^LOox2+k{`&#`|>e9APAWCQAL_=~9;)PuOgmq1AG+$VAaQbKC67 zBt;OlX{|0LcRhcwKAc}L@mZEVQ*1YS&HyF{PKX{7lOESphblk`suRV4h=>@9Kx547 zj(v~&M)m`lN80GozOSt@gPD{!3~DbmuBBg^oFr@cGpaz1#!Cyhqde&bd;QZXnSKXz(NNqt znR}I>*QI#q_V00Qirw(;KhJIs(XF7zyG>sk z9GSg&r7J#eP}MghIc34CVdec?+*+&w>PO9nrEDY_1~NaI?`E!%KN);e;SAM7Md*Rt zrS^yBktLM3)tesucFuhh>r;GBk3(pK_Xphh9v>+Tn`2s zhuFsDMW5OuTW zo!v5bD^FKNzj;YprXd(~OA4Fd8g_YQX#%=+?Ak)dIuKB3 z?%h)#+E!slJi4rqH$>7&)X98^(jVqL@$w^Dfc-s)w`z>EGj#5YH&UoHX+@HxBnGF< zz3d|L9tuWj@}X6e1c+rTq}p;6+`MY=DOIkwm$W1$12?MwS@5n#f2$|K&B-|Z5WPhe zQtX4Sw66@C0&aJb@Iz6yt(`5Tv02p*@7r;GIf*}_?@-{sL-(1~;OL$(p*Lv}(f6Lt zhE#{bjyD}tt&SfgY5wfBdMTiMhP2wPg~9TpE($N5)r@`)OlH8i->izixw~!Y_0+YB z5(``T^%h7KqAIut=AUyF^?V^?+US=+>|JyZUQM?G)UD=)CU9PW2btV(mSf z-enTHCc*V`TLUFoC@~i+R!}NMXi%YZ{3qSmh`E}OF*Is6#IwY76`Q@^U8KsqsubaL zapn3TZNJY!<*Hu-t1Wtwdbak}(XFp6oNQvbFXE&qKixHJ7Q__jRMiiIchK!^v0*aB zu0Y@1?%uM5K5Z8Dw&jr0P~EampD;#_N>mpofRG?ZT%Q5Q4}Pts@U-qOvcNCroyjuH zv;KlF(15}_0MSb5Q4&?XjZ0X;7p|x?KyRNrhBl3{ovW^L z$z(bgSaF+8wjJK|B+Cee8>)LGMDEhuRBL;i-PZsz&EmsB4~4A|^dd#Jq|}C!QW|vu z*qizsjCDNd!TBN2+20GI1Gi&MsurXuhx*}u(Oa|zn>cibDbwPFk)zn5Cc+R@HEpto zmCPy&;^zK}p5WqMpY`o4((z3ygEo(a7#%rn9ze-O7Qh9vBnvL21!$pLf<~r& z6_EEDIKSnmc_r7?MCbqf*PnjXX88vb?r$uu_^`|W2zs{1$lU(W?kdJn;QeH}@wgm# z=6k8>G$})zgZ9?wdSi}ibCJ>Ndhdlf>7B`SPb)yKb5VTIsq%<{-`dQqH}arvXRK>F-!;OI?Ki1vm%f7 zOgSRB!+9tDPhZw2tS})DVUwk*KCM7HH}oVopVy2jjRqibPJR0kUV4w*^CO-d)p0Z$ zK&{)JZ`&hMxJJj88$Xxo?-UJcO-s1y(|%Dt+fJhhh6=Jgi}jFqNRk&Bq$V8nq>zKA}Z1bI-DAbd9-N^6!%(jH8#EbAoiBhQ%GCVOY_TM^-R2d*sr~REWg21} z3h6DjS8dgMU%EP{7Tk+vIu&4bG1S>HJjm+r*{D=z0lq|RU#z9OL$uS%XO!ks;TEXQ z{Wmg7!P`(ta8HG9?ngwbI2E`KP(0P|ytY^Z|JJ*jya+E}W)6%odM$6xl5LRG;yYrsr~iyr#FVWAHmT%blNVvo%^&nmp0S5F|CB0UJ0ABE9J%j8^vLJ$*+zj$CzrdjM|W^_ zy5O6P^5L}#ZV`f*ywqk6l3-(bm);;2n=9V)!IKhqYY*E4pB!nA$z73joidjtbLK_v zP6ifIe)uW}kAlGB_~d~N7-7`f*fCn=maD@ysme0?rPwd0NS!*P`-3yZ^4881SB5S{ z4wk_jJY0L}@l-FQmn5ck>k}7E``&X_>M*HCWDAS@9DyS6haA`#)XWp$))uX6I!Dg3KI)i>vc*Q>@iq5rPz&5{~Tz6&!52=Jl9 z^wxMS-8 zNTR~uW(ZbqR1$% z9{V~YZQKn@_CD~2)ZK$`(U!b7Wsaf?1K!sRi{^G)RA++?hKC)SeDYQ2n6F3>awL7* z^Eigp8F1BqMZVzr1q#mk&?|Y*p99_pZ(KzL11~5mSFMTRYtk-#nPQjhmU2%e!E36Z)U^TiUO*a2tTV$U^kZdE`KMcNvxD+4sT(HA zZUnxl8NJz1af%HyMla5x?)J|O^~b2Te0|aH0i2s=`m>PUo`*Jaxps9i>q#-iXjGJ( zw{24*chuyH74}i7e`+VcajL4O$=hOv_|R8t6w9`K-ck3R{PW0%h&6 zE{?*Gu3q7QaUGBFMX!hkrQkS9xWprSmxnZ3=~ry`J2~Mji!gS(qd;nt(&Z=Go`gB0 z!V9rwt=VKHdJ*)6+u}|L6dz`b%v+9q4qmT*%C@}`bab2_UgXb~%~f$D`AAvD)IB%WsXj6yFIR6)Frhwl8TGIRJB;zg zbvRB3fMfweWGWB{rO&Uw6MGcx6Y`Q#o;$qL%B}(mDHb#{b3^hBC<1FzF?GY~DuK^Y5NPf;}gFfwTbf}Q|l{(*S1f}XW zqA=>2Kz?3Drx!Z5Q#MjWeC0M0@oNz!mUJ_p24*x--^oe6qf-puS_&NSP$jS)pm>R@ ztIAw3{(cBi`a8^273KaEpWU!OdCGai;Y&R8_FEV-PPl(msErcbX&ZQ z`2R=LU-&f@zyJUEXi-8%q+383FhXeuh=S5RkQQ*Fba#k?NSA=Ll9GasW`uMM7$G&f z1_L&7FxZ#Z>-GNpet*EZ-FBY0vvXbNx*m`F!#r~HjKoI#a?*n&nsvRxAT!Ft6PR)` z>GvEp!Bd_-@TJA#awv+u7=)jp0^EZ+c24SdQlYbti$bA~QPlASyTTvHqsJGPD+>5h zm@jF^UmF|ZQcmpvk7rN*L;|+o_$fraoc=)@u1++K1EbKnRec_I`9XruJaX!mT*LR( zKZ@lZajIO*xlI#t9nX7itjLqFU;HUvW#{(Y{ZavZyO!p$rI~3ek1AD#-SUppV%Z^= z)1g6brm;C^Vuvan@aiKcMO&6gI<)tB3}No%g! zwcli6hHBTlqfenq?Jwb84*hL~^UR>S$x0V2IKQu!2NLw78J#`%4^~IG!RpLFQe#(~ z;%U#C6M@JyA3$d-4^xN1{t_1Zi9IfbZAW!mSpgmYk|%?DgD!$+?sX-_IOowrvQ5vI z)8%g}YcBw_lga{?pQRklHdK6pT*X5_00+H0lhZU_m{XeSDiv4qZkCTq%rVS#`^Z+! z?Wb`N?4QPoD1Kjh0JftD24DV3vYc)Hzj7OTeyJonGV5!SJ>!~NgXOaBeeo~@K^I{5 ziS(`P;BTqTL7jSLjs})6#b&916%RM$8MELfTx3G!pSAq6@PtX5b#A2B835Q3MwT{! zQNZb{yJRdT#U_ls|EAj8I-e>U>7Ky@8 zWPIIO>UXtQy)=mTA8cMXhjf@@w*wt^Voe%(5otj$QlP6@Q{thOxA27=73P!A{hOZh z?Bnbju$or`<28}$Lhck)7{YpqeXpxR2+D9V4E>IYO6K_KjL=2n;G5eu7 zn9K_;K;LEvMkjk4xC{&heLJh75#U+{s;*w>)b8QzuBLSH2kcj(UC^%exfY;h(ta>B zOU@Kxj;}($av!G3e4e{enXL(KiD94c+47^Pq^PQnOp8qQKbPxB*_oK%4O*tDIN_i8O8%1`+4z*T-W!5=P#QBa}DtnY3eD9(wV>n*oY7m4+$NzHZ!ZLg#}N%@6uqJL{!lk2a~6NHNG}9 z7@~@?t%R(EeJ3UVUoDZutr(1%NS05z9i||_d6Eri<5E=&hu3x{mmF-yYI&`)yWhN0#&s&Z8&=tn0b*z8_wx`O+#H% zFtuQv*~PTq!ty~d+M?ERy2GO~3oAM;p35L$JypIe74YmT$@0$=e5nF3N8Gwg8~NW= zC18F(lz7o?2F>~N&$GHGGg!!#|G@0INUf@ro&ukT`5PYwn-TtVh~!{p$8fy;JnN(3 zlI@4oGKc}VxlS_y{mePU=lhqrVQZ@g3N`KoYdni?E=~C(oGYiZ_{n+l?YSRNyMZReO}jr|Ifrjg~E0UiNIa9ZqlFtgdmn!UPzBEvpY7nN?_h zZ+ucy5Nr@rR-#(y4A_If&nH)6rA9u3CcKlTlW%TmovaOKhxb3G{7_$o`#<50|_Gd+HbVi_={lQH1foV7eUcLTpX~6;3~Qc{wm!q)IVJcRxRsl@~f9x zpYNh3KsZC`)OujQgX76TxlruxiyWcZxcGb>zmRU#iAKy~opL>6Vq@it85w9CZ@Ra; zOSIx$n^&RJtx6WjGKgb8pKTkQG&tyt#{k@Sp!KiGZ)fYp_OtDyCg1;hfz|Jc+`Pzv3+)&q9J7 zg2K}xT7Zuo-d;Lyt|}asH8AdluKwwoy0cHA5fZtVu52ZkgcB_>`TXEoZ}qRt0?A@! z-%^}y{7)2X&$-4XBW%UD!gK14Pu23_UG;HrVC}lxZ=?kYk-dSX{UI^0#beTTanH@_yUD!Ae$ z7KK;8+G7Hd)iKt#mX>CM%>yMkbTN;M1w%0PRl;*0#%lAbWlK()!$CRtv%)-Dax)Bd zI=ovqZM)hr7<&B}<|ZQ;M_j9V@RI(4Gr#?_U>tD2%HO@?0$j|0?Vjy*9*%UbKy!i! zO3pou^eMiB4?~*PVfYH@05*BP!0Pp^{K9{quzTaufYaVk{OW6B$_Yq1w^{HsrCT4% zL>V&{Lh}PCLcfN8qx>22;EXYutcpcKZ{wDDyK;LjS-EuqN0jaPeQfLc{8>oZ>TZS# zn7fB0r$fQo@LkZi4n=Fj^G`|sZ0fjHYbK1erVM99!zo8M<78-f2rWG%WzmY#8?I67 zng!??qC> zmoY&W;YlTuK0AFu->N0}=;5z%Kyiqh)_aaMWQ`?G|76`uY40_GbSR)d#aX$zs;v{} zugwYc*cta|y;_e0$X?!fS14qCsVC?mFfI;ndGk~xe=3?BEFc2S@(>InaK9w0Ejr+A{`cljI@&z^`0$B%4nYX$(CbRr2uN67O)P5} z@FjaYzF$#|*r={Lvuc&D3i?`6E^6+5I6!}F?*?}Wbbim~F9GV(aEbI+$~-R$9h5jW z0N?eFt{Q{?FrSL~-8i`0yY=1WQ)-Sps?V_Td6dRgq03i&Ku)31HiLs7#on>1LmiW@-8~`B0mNCE0aU{|%ZS92d?pNcA9Vw^I zT!RG3N=`ZMfE6>vDHkkmobcAEP(?)!4*Xpb?nw|_2hiJWSRnh$-` zb`SJ@#JgZ~HYhcLdmFZeQ^xjJhff_DOr)W3adw@%}q^)uIeJIY6dVv8`HC%Rc zySSx#@15~ph50rrl)_Z(%blJ_^oh%K>OS>aY9Fb#SSGD$i zZVC~SbgRX^w-?q$32t(j{*F_u*jrnHJ5t!9*rY@5;IEh3SdypitH-7T&0oalV%s?L ziR81!#I`=$*Tldl%O3>1V_*j#3@?zvT6i;hl5DX|ayRY8QQ9=$;C|gb@n`B3pJBa( z{n75GTUzzOAC!C9(F}M)oq^jE1^Z0~n%96Js7lExUuS(TV4^ElCQfI!6#hS4)$42V z{uKx?FLeTO!P9z7ly+g#M`N2GD1nWO$P`-8?~r2;803xJBKSGt_6$(3AP z>2tMEgA!d)+Mi5QJ+!gq46HxJK)5mBwH8Ci0`Ufa<76LE5CwmwU%ZC zwak0oOw=aqERkeZ1R25xjp<iH3?|>q?L7$KSDn#`IEj#^S9?Pm+E5e$8p+10F<`X<75S z(qzzzkb~M4G_gJxLY}svYAFEd#i4lqO&EE{(syERH9!Lhg$c=$tp(hvP05vDh@2lmWZYdWr2m-lwh)BwU%qTH zEGgT0mH1!dqSw9A6VZv#i|Z0MbHNlCzsNvzZo-egwV%9od+kg1-cy0FKNasB|8ZnX zBsTW5soqvy4+~jbhkez_IHt-t3(*7AcmhVc;iR&ZUg4ANDqLh`Bx9zsiO}+X0!J9d zmuv1tfVU=DZO@%t6TrwM#kh{dUenL9oeye{f?85f|1v4Bzj0|VuJc3iIsWy&T%$#= z*6V|E7VS)Xn7tt(7MRcPnQ7+NNO3||&4e3IAB})|4s25AB}cyWl6|dp;~!1yb&_~b z-n`8p9@BOX2qJNt(5)#{5RI$A6n1<8>9@y*379+JCWdcWk+Zw^#SPVsYh3ZQ|8lOX zSiPkOxHUSNw@7l#YfaL)_qLWoC$|YS$RayC-gHAbwG21GuWjl|hdr zA1CcYQe?viCY|p8@#mBL#7_4`IKfDO4&r)-_cvVs!P4o^~q#===j~~1_uM^~GQ#$v8m>GtgP~qnB zyUo7kGk_6^MI0ohj!`fsQ;w#^u)PfRUAeJTRTMH|2WY?du)(81t9QRx3?f}yx9eh+ z`ef9#6llEW$a*+EbAFVv7FU6k&gCb+jk&P|(C}1_-%Qe~w(f7>3B2v!m8A@p$3DqD z{`9W3Pq6%(i!;+GiP7KCB6HvBC@U&Z9~fHx=nCV(kNfOuxIj^mhj;6c&w0wZ^;0aA zv_>b4DmaRC>8Mq<`K$PP0hn5u!06|N`}!4VM^L{X4Grl9ISAxyTp^1%Z-kM%=_rye z4b27cP?1!&i@F4j9%C<(^vRYeOOiQT2l29JwVc*E zNm2%Sd_30W0r6)*K-8|cX4>_J_vNhv)&|j+@KJRKv_swl`e0PgV(I2^g*jV${||p8 zXBh(c3P5*|=6sU;1LF{)^?7%?>&ajUr&40x2daA8;}kp@?&%wni=&;2&rNajeIty2 zE9lVR0ntT>zOJR)4CjG>HK$-r!d%HJi22Dq8(oXCI=ZRq|NnEe`1BG^Y>?f|+!Ud# zesGYI|x8ob+_R=kFu9ryi{PjQTq=vPbR$=aacz39-Boi z@ct5U`y=%d!0Cr(|LVKJVv)G*7>O6I;anWDN^#;jQc`oi7lW9JihDMX9&=Y6ytR+g z<%E0rhh!>E%wHn8-20ECx&Bb+o9&473VK(@b zwNDmxpU(X|C1NEu76rLTMs+;yzIYNVA4EZRtgmxf z_pgR4=LPhAC!fQbD%hoOG+81oF(jKi4B2s7-_Iq!tMLa~v^+(7<123tVp=-EW?pbQ>GZe-Ni9!Y_z60Prh33I{M3|*s5u^54GFr5XX{4fKARY6^k}pS#kC`S2fSlrukU&I_Oy!x?x@dFx9@8>gk^>n-xSk+!;j!sgiKI+=O zU(SsqIf$rODUp;X0nrP#d8me*=MSli0F*8pDbKV&6D82vPdsQMB>1@UcBfGPYtIa3 z+eoRx=7_&9V}_abZ1YilBwOtE(8%nLToQ$-W)kHOP1!Hq+bKotkN=83kNsw@#`5T8 zit1jKjejDma%%NbABYYaU0rvPWL`mf4`9U}xRc1dDn0J@81J{I9yO7xIv_moZJ;8y zny@9(l>I93Yr;$;6LUj3T`DLnLk{41b7`WZEgsYB zf+2n8HI+lQ($~ot&3u#AHeJv`EqFB>Z+DxUS7(aEjx=3X>~xj7vnO{`sJ%uYuVM<% z6A2wA*Jd8S6DeU{$~k{Bs^IU?t)^F#m3_we@t@dKS6V}#7!@|%R(_XG@9hd#VicBy z)r{XCi1n7pqR@OJH>aG#@HP@pFQRXS=2N%ehG1Fdud^nINu2sQ%%Iv37k}-HIW0m`nVwI%)v35O!19 zculKC7U!~-nWnFt1nnn`{xyDu(2ciRlG^7~Q-mL!l+RJVrD~UR1Y{r-clY&4Avvj8 zwHf0hVFZ?Ajf;VFN73HNzJ#Z)B~|GA`%Vc(ig^0`{&(q{TqNgI*)xT)M@knzYY#Pb zW>INUN@x9Ml1HFp_d!UF+If+u$4cXuw;3&oCUQ3@5A{hgYmnU&Vl2Z!p0tbC2+s1C z=i|rNu`;dMwcZddj^d+1fWiPfsrX?5t-I$@J7c?Ay$4MfwjWC=-e4E{KlX15(g$#= z4#+-jciuB|0(;rv`SU3&oL@X+8Xn5}vXKg(QOi!$k~7XqJbk!w0~)HNL`n(Ea()EzMvTl*41X zcE*ywRUv+(v!2gg5T?+>daJd@ukQl)$R9PY^JOwQI!E-)5!TcbR~iKdOJT3ltt7$wb)=t`rA07rW(MZY zd7CGUGfm`?4-Fkk=pNyjK`qyGu40$+M>~CIU+3aWstlM8bs9Hz0ta3F6d%@VPj}0N z&KaVDt?_)i2;_4gbhbnK$V|_$>pA82lNdSA@(I6znCp6FMRI_DWV5aUNEv|p=cQRg zzC0;;Vf_H`-ag$&N(=Bn_WepB=Z0&JW>pap zJQ#%$GbZW@isrT4-K+D@sNZI7O%O8)>e3>s9*bV-l}vqq%y+1_sA>HIdTz|x#fJJX z0w-QT{&qWts(m|p8O*j59u`qZRvuX)ahF=E3emG)yxns>x+M6Z6w-EF6@oZ2O+pHV zr@bO&dS1^}JH{FwAE%#LX)oU&CIp7bD7|W5+PEdRm{m0(uALqwZ3e@x6^$D;7FQlb zl$ocQw>19|2urEI)^UpCU!&bsri&1)YpZ=Rk0K{8Zi391eQIh= z1uq7!U5q6S3S%x<-<3MiW{n-!^~rPEEymyV!g1ru^uOZYcp=%ucl<7W zK^qx7{lA&lSipbDLRm@^&7_VuEGlJ5!j4S)nlTp95BYGLPjRa^6Ut4h)Ci5(X=K1% z`y0x$wy+$a4$R@t4>+2KA&T9hw8p3De=f;AkKYPmo)@+`1#--imD^hIy~`wC=<2Y4 z_Md&<@87!j-_XRZYM}^4C&KN^$=kz+Zif<<*JECPb?loUIKT+JgR17kxBh9-*x;)S z^o8=z!RDYpEen5Cw*B}0{Dk8^hHmN6{a&fVQ<~udR*UhCmYBI`>Yb+5e1|#uk>z%| zMe?SrZ{!gY9gAp1M3bNTw{IS`$tyDjT|y9>U5zts}pF+SdU0Jf;tw^A_K=%^Hl+Usl*Jx9~rJ$QhX`EMGX}Qv& z&REYp(f zz4SmWC^&atvg$O#pNZ8u8}w0h?i5yn*-HOrTt)cli8Cv&fFT{Xiqg3PC2Fn3UPY1C zI$!<&PV+z84X)5*WVd62lHD)&PSkw=I)~PI){sMKn0SZ5oc z3ZD#XN~-S(^krPTe1|$Mj^W#9JPfIumpPX2Bw<03-G?q6tX;ZXZ?j-d9m(rtdd1d- z^TB=3zyKiW%LR6S#|oxjH=D@)SD6mrW^soja;}G5R&=1hF;adGo53E?J5enwCxaJj zHxd^0RTwbevn{a$MWqLf>gXy9(yNvPpzoituO!pIW6}YF^UVuYycRYO_EVD-wi0z= zxwmYvz!zDU`6O;=GE60CLUtSCBd@@u%#L&n>y zOqcXJN*@a-Q?&r5?nCio>;Vguk)Z^OKJ%lz&pb@+{_dh-Z*Z*R!8ZXbaze4qOpD(V z((~gbW;cG^Ii;(>yZSS!qpnFjkiXa-KS+PmQ1i+W_dp2mcI)KAKiXooNYmfPoR!M8z(o^#%s-l+vklzJaDCz)9s0rrUu@1ie}Q<#w%6| zt+2;A(Y?_M-qX!pfCFA;q*TX|)IkWDBL&m`QVt;gym4KIYJ!gIMI)(6Zv7R*HtHo9 z#M>rAxJJ08e?zC&nrR;vIzI_W2<+}QB{npve@K{ba#aBQ zBmWKr2-c`VR)(%#hqU6YOYi{O@Ma7n^aP*@@*5ryQufEa=|pLw&d~&BEXkj$wzwPh zLs;ZlHPPUV#+0&V1WZekd|z`>KT!qmEpW*K z2=fK=heU4nign58{v9QK8=274fWF763X&a|5uybX1*iSMH^;Y>0$A?rVYPARgu52n z@DD0P9z3TeOOx98<1r`d+ZI@Ng=!P;+MFpXTN05%_OSl7w7*hB5`Vz=p14H=NSXlP zgZrTMcObOs)-FI3 zD8Wv8#jJ#KcYi^flMhBp8tx7?v-!7{EGng9TUxM6@q?k1q4jG+R=w+6kZX>+5%fez z7jgSQ*mOkrJ)c5-@o~nlCR4K|Q^o(nudi9A`a0K|pwO#hS0-rNHQM(NZ5VRA0jha$ z$&9GOdoyArGyyVxG?b@VgqusBS2K&54O9%s9vnr;Q?v}T0vNlRKe9s&;p<{0h3 z@9?!YM#&QLNGVrgRJU)t@o)oL8k<(WSmtcs{CvBegj68!2O<5@x}gxs$QfaSWr?BW zMAw>BtDdLsT=49!>0^M)6*bPMS+C}`JmgcAz#>ExNnx~|ZJ8HKDywYcCn2_mHV7(4 zmm~#fTQ35b?fGh06+b*W|Kl}hCU@gr9%*$S^w34Kea*iLAd6#b%n9UQlNM1HJ3d~G zk$OpH%BpjNjD|%9uot12;+lK>i`wR97!q3UQbyi3e6d{im-sMf&m0WNa?VvoeZW!O z=JHRlrcxrUCUpy|cXFNu7d<;z^Kl|nk3?&Re2}Rxg>J)0VCMs79!2|QJ!Nn&qc!%GVu~x8sPttB+%RcEwpgrrIN@<%hpi$ z!Fg*;Kb7?TRfy9yQ;<%TVAUQ5GGQpub+yAPSDVk)hZdg$fJgL5qvKDjB8`T_l$z6q3)(olaXNiC<> z@uvgaT??YfJxPI9S_n@IEr%5~wpr#;w31#~ZjlVq8sCn7ht}(0#8gjD{m3B&y-3yEVMatR2n}%x2}NxFR9`QNB4h12QJ`5c#P*s zUfsXI^IYb$ibTt3cdussgC%vckTi6Gd&g&>2`MMy0san|qt}DVU$oqTEXtjArpznL z4uvFuzbYr#za&eks%Su4^Wl!aNUSf7I|*I?Bv<_mc>=-|ET{{}8kt*tfKt8O*uTH{ z>n|Tswwub2R$|X=n}l6UvFr4V|KUqiYDxk#pd6d?78Q9*8gPH`y^&v@sNy)@Y6;7`$Ui);{@}+9uS$0OM|;X-$4P~>x;0jj&)@3! z_-EUuWqT(6wxG4ZRHpFi4WpkG($wGw*N8~CBpAPWlNwS0U~EMH$Wh9FVDoI0e95io zp?TaedQ3PJpEi9mm2cnr5ES$+0r0a-6F_6@FNnZR2H`Uoc{?G#Bh<;POALU``|mvW zU*YN%4@U`pp?USRl0qy6(28=6oOBmzkf0< zd%$(D73zNyW3w|oP;&NSW@Fu$-xzjogW4F=p@PdTnqY_L%$>q!*kR5frPf=PS35ZBJ6{(N0jI-$fHIVj2u%Fni`{@sU7q?LS zSaN_E;EKZ3HY1X;d2r6f^gVGfFvd zpDb+7{Q4sb;I_GMy&F85+r4oguxG=Hk~Nu?(r)UJr^c~Qa+tjwj1=6jh*{Lb&y;n{ z+FL3zZ9wvNM&dAP8~gqukP(-C#1~>6zyptZ_^o z`h@R#>f?h3MoQiG;~0pvW>VnJEQu_5BF^|$1`Lm;=WofePVf7%QiYRg8E_hVm-qlh zf{j@Mp7O(XkO$2ghCvY1Pxam_BU)2A(g{_8J-_XjtD9T`eUaCJS9@kBW3n&;i-C*m zKPo&)_NMQcGh#zcQ1Nhnk1I;GSSh!Kz^!HO`TlSxIe5%{P-?6>PPh3^kpB;5T!ZK_ z9qI$y)X|^pA5$TVtax#&$`O;p?AqV93yQ(8k%Yn=gc;1+9Wz@}Swb z%~v8s7O>X^Xb8Q4UtQ1tYcFG#si==!q^W|b&U~I%#zyAHhTBkgtc^n!Y+B=p2(m|+ zYPi-Hu&e~)9R7D#T(hB{f)mFbM8ri?9`35X(wb()c;lP~-^q92|$z7s$GC$8Xu4F3gdAKl=m)5m1A^r9;KZCT8@vdf5 z7yVm*H%sm0c4V?oI2CdF!P2x@u7nsyi+NJ5^+;zZ4rJ5p!$H2206>hFYQp_V!)%96j+DNzyn{kq_cqYP=A z4#`T;b<^qiu$)pHj-tzpJPaIVC{itWmlc`dyu9Nzi_?T?yutV!2Ny{ocvqSB30&Fo zrb8|Bb30D2+<6ft43Sn3xR8%7xgAAI%GGyD2P}HCY`YWonWLgMk^66Z73UBxLZQfS zQ4{eyM3=_rUl%aCj4t1N{1k{koA)ar{XasA0_v+on~ktBaE+ZhVv(4V!TMrV7Mvd; zT#v&xX3@J}YFL3D9dcoJCiO!^HqLbB5N%H{^5(amr8x!+zD);WdP-IYZm}p;@e+Nw z6z>)ihKNG3=F^EvtBC8st2Eu!G$)$s-#DJoyGst}bu{Ql8)j88t*RWD2A}xa7} zf??}@pZ{8hspGP>n}Wa6$z0ZLk@A7cri`{T=k@wH!Mys!!;(HC%Ua`0Gn83?^zw$? z{1;s~D>(XekyB*jTEkqe=HtEk^qTC!_o;KRW6E8omh-E%zcGiakn18}O2>}OeREe% z5cud9sarbP5{fG9FkS*KR#AOZd*a@MZ<9F&G`Hdu14tMHbv&0vZJRn+pE$_%$^Cnu zk*q7B5n^SL74%5&Q=}->7l}jkE!ynmWQXW{UvrlCD`;BV;_~tYTzNS^TRFNWK1fjM zk%^*sP`~Pzr z5&u>VrbUD@77gavFJyC^{Sm%~#(z=__&RbR*+h3^VB{=r$bbqeyHPFDjNgA2w>u1d zc%w0ch;z(2J5F9GdJjTlhI$g7Y1N5UckvAJz|%%%t_J8{ZJPvlXc8vUI|OQ(L|CkH zf;ncyriOzEqlGJw#tA67TaJ7p*;1{%!xcRr;px#%9YB`q1ti}oMp}ZK2B3+`l%2ll zlVMJ@dPY#ceL`!$!6@9L8lRGoU+ub{Q}q|T@RxX>IJO@2a(>dLv5A9nF?`ghSe?@styYHvuFXr7YJ4{R>EIVA;tpx6Wmox;8vfyXW16RsQaFIGQ zaL?++xWci^*_0%*V4o8Q+!a3@ki!g97dsAN%d3xE5^^Rxh^3hTzO=#w79r{U&|W|0 zwl%jj&&lwGmRZJ9P*hnpQTu%Zkg=y;>zJgKHCrXPWxTXUX+@6j^zK0>Q}|pu$9z8@ z-u!ET9e!jytCl{01qlWcx6=0r-`~ea;GlS%-Fz|qCY{dy%V$a+X*$Qp-VXmLiw)_v zI^V4~u)u3c^;gX_i}8{z=PCF{%jFAD2VqrO>@6FD zcvIa&J*$nyJ*ka|3O-+?fz?@U<&gOkJ+-fvm){3YTk#6fW%3NUCkG)K4klRkE`srW zoTyUE;4$Q=tL)Tdyu{PG)SI7vUurT%XCTdY$CU8MdPUHpmfc%5WM~mOhm?P%w6Y^G z8nctY90pui33bYZ1eQr{nVIxeR?8Oztx@?ui_%PAQV3R^`DfDi=7_zoS$-HEZ8!T5 z?C>tA%b99WH0PllGs?xfEShb_zi=~OMx4&rT0o1#qqdYbfdSBKIqqOl0)Dw8CI8h6 zY@X|Eo3qw09)8NdMs&f+1U*w4f1fz*ngm7LTIUb_zMT8&n@2hL$eAl7u^%@pjFUG2 z=!6W{d$sn12%{!ce_c}?$9`ZpW$q&n)neW+LI8Vr0rQUokq4;EjbKanu&USG>qCkxCdT-GO}wd_C{uzsDTSt z-;YH4qTK-DC!Wx6WD?lceG%WOB*f>SacVuaeQ*{x@QIk#qFP3zA^#q(Y+mo(z6)~a zxxFtVc3T9MB=}axY+^Fp_K3WbMQ=s>X*HdErA#Q*qz_dS|GRtqr$fQ)wOam0c*pnq z(7C&}gM9Exr&pP8EUlt6U@Tf#ee77s>L_ zk1ly4k=T9};-87dHkEH%7pv`Ega;GiS4Pl9B2VgspUTe6C!WkLMFOxn@Bp&y4W zE8n13wkmvcF}-i`;--X4WMH_jSfP(YEVxp$b!dM2m~7{HF0PX9Wux$CiHAS|v{s&dLGniWZ1Xj<6s50GNG=3jqmp&Q}czYb@7Hq1^ zVMm>3ORqMoF_+OY5z&XSEWGnf?oG0^*n?%I6yD2Nrm$VudO`B~E15H$E9>WwOqxjR zS@7!DRsMT;y{Z@vv8iXi!D?+N2Uai#lQ-9P2C#k9WfX3AQRR&8F-^fn8zAs! zmwpC<{kXoJ9kOT4keX#9-spTD?cq1xb3gR%m209>52#n(tNnfZZaPCvq)(vNo!U_T z?NaOU@2=PpyNgE-TR$wQ$dZUOnSoRX3A8HSemvc>dw0o))=Va?2d)67;0 z`6jn-L3et#Z*S8ulhO{87Y$GKH$IG_?1*`FXOu8)(&k?rvEwqRGN#5hxAgG6JlV}9 zZsvMJ)OS#yWGJf`<<{fKqzy--k7q8^a#FD}RIE;i8LfcFIKMOgm?)*o^KLR7MJ6(D z8P?6hZodF_GG4%uCXJs`IFmwU#E1^Z$Ahu%gE$EeDQ*Sk?T;aTiY>P6t3#aNmfJET zyOzVM4eoCc`D?YiH|#2ukRrd>xK?GlmlCKUj*-w5xJyyuC#KnV+;y)gwiQD*xcyih zjpBX9XirIkX60B4iMib?NoX&hpUeOBBe?ZQvC^Z z93YN7Zm@D+$3yu7PBed)s8KkW!#w>h>$HUT37jn4M!B6c6h?ECguQQ(sHeDK5HJ%c9Nw2wlZ`ZVcWYMZzf8;0WbIbUN{{5{^8q4cQypXUx zX1=h&)GOvu8iae@so6Mp9vRv}fpkdpePnLaF}rogk%8Sq*iVa>uY*irF7&Tp<$p<9V|7}uEvj#gK=$(~ZrweNQ+f^v^RhWyu>oJ6-^NVTj z>NTW77l-I36*pQx2JH-OBJXwMVEuX&W1RQ_hg!r-VwA4IV zZD#72i%O$!68F9P*H66Lq{+{=A%zk$p-yUZ!3}$AgF)+fz49kHTUmc$`76(NZoEz9 zvVJ>pHEQ|f+L_e!oRx|9=&PN1TpD$gSQzp?b<>176Xdsg)eDFEFY@*t+xmAprLZc+ zIzC5qg+sL(>N#WqHyEQB)s zPc3k_K->GVN3r7WVl#>CxXzM;-%QWz-_&8v#en%DKm$F7_V8TMThHs0DD@VBfyVsJ zMO^qOGAzEwS&_;ZTE{?X1bHg`@a;2I+4q?t{$*Nb-Uf{vUc;(SM_Kvw>&4QN;hJs2 zMNgBN!)lK-1^>xzaKTJXbc1B0=uG;5OQ~W|CbRt zbdV;VPFZ+{g!D8s{s*_f`M=*5v6n`PIMdGTZHcVt_VsGa5Xx9xzt&N&MPyR)V2DWf z$)KYWzRkUpHB(pTLvu*jKbz#X6?yHpwbtYLhi}uus7*RAS&f_@fxh8>*SgDxGp->) zeq8SIZI|1e&{8^yq|MRQAZ#=ztvs0}s0lCQaWa%3WdZ>RxS9$FrB329%C<}wRfNhV zVDw)yr6@}7B485@zK3GGc^!Pq;UoE)(h7efyZ}u=mXV{JJI$4DH4O8rt_5y)uDVe&`~ST%@}6Y@xq z%X&ckcq(7KuiKJUN=pImfl`bnFdN10FUj~b{Qao13e0D07s}&F$(e{#>FtlEHSYtc5;neG%7P~0dFWJOe%RIn|TmCFk$-&2P6XfNa_Hu7dP-Ps2KdY3X^MgWIH zUtWP!>Ch2mY|cCR%_=C?(Xk(iBq<`05*V#1od~Hc%^&lUk=G@^RpU8!A8oZG5;KEa zd>TB8tF2T>&n3O?qcuw8OJo@9f0k9BayR8vjK%2lXg$f?F+il0$d_*ZLc{&*JyUB+12cu@maQ%j`2Ha=MGFx?ns<}bN?Jf#ti5ZqF*g{QuLH=raphba04R2&Fb$vHnSZA`hmB|y)OxMQ)>^*&a)ti%P~r9g`9HTwL-RLRWHL7;DkC51HTiI@Q61_I;m+~vdy@R^={PA6Si5}X$-avs+v5y~1a&W%vK{Src zp3+>cz7kEYhm7w4^A3Q9>l}75$8U{v8^$ievIQx!&Cv#PFU55-$C^9}mY;q0`AN<3 zujroyykG?{*i`=po=(<%DdcSy*%x`L z7yfJL<_%i5=aO76f1@@G4M;fS*>n8c&4qH-H+MP6RD)7+yI&%tkbnkPtbzd8!_%!F zSG(PW*X-j1zH;Fhe>u@0@wGRd`%N8AiR7)rMZ#G`N}9s8^2g?{ z2|ec)oUWFbWQ+5b(i^9N@X z_;bAv#fUTYn_mo6p@Ld}|33iHKrX*``!wg-Zh$a6TmL{>`nI|n8M=L3{nd70K+CqH zt9K2*slz(mm26|;>f+8e5PYZqI2a+nw7ojVU>?9=UqxRu=Gp2}{(u};Pcj)&*7haF z7AG=-r5FSHad?qO<>0EMK8BlB6Agq$U7lQ3pHgPx%DeijPHS9j8z)QlHQyWVN{>E! z3&6>v;gsR(j}wOg4=0+YLATwKTNy5OjxoU*z2j^0IG(zFbt%WuOKB4Z_O$)Ul&>x` z*7!VTyjcM_+n{OR14#MvUeKS_SyvgHz`EMvION!1|5kQP(ucG`d_FsVxXPkYZsd`b z4h&)dpu9HaYK$G<((c61aTg})g0(RQK3i#5@yjGtQ0MAhR*8qpG;TKrz%kb7|9Z6o zM_XiN)0H2Mrjtj@6Z8~-b0XFB-2gZMc>o-Ij+peV_@^8JTqfGo(Q@^OlNBjJh52AW z)scLFCvYa+hV}qJWO!?=sOb@?Uwb+xQO05ff@4q5Nr1i%d% z0QblL`%lY{7_I@pU9gNeVqncI#{VRke-{QAd_C)=VHLpH_@1TFxX*qLxxC5@(^-+m zz)tC)qOt8$0)%2EcV{_ z?u(5*_g?JXyRjG__n5_Gc3jTDIe-XM^aXB5(X6M`TpgaS3zHBl+gT7naZUd_mnH}$@*eLS0{Ot%Doo=|DkamyG-ALKW z4*l>8KqmpwCs&M+xqu|AD&#dG%oPvy$3Z;>{U6zqT{ zsMG*Nr+IeujlSUklK2eTt8M#kn<3)>I9CtpclMvut2%zu24iNhwFTn)oC$Kp&ogj< zqpSeaKLx~|6B3*Xt~AiI&k&!%Rh@I|(Cx1=M#_&E0&qMo;a0EPdJK{QWIMIJZR}v* zZi8z3Zrdme+RTC3RXFpX{{lIAMvZzn^UU^?+d=4@GjzuYfys5irIBCZ>+9g2#EHRfHq>{ zYMot?9}-6wfUbaK3(g%2WZ{;eTXmxsAqNcM=n~>MiN+Qe1 z-x0irA9T*MeopA;e@lFiU`gu1GN+J4p|K6L`@M857V&7ZRLgMxKs;_RA+2k22JsW&)^uw2c#2kZ9i#V}|;X z$%Km<$Ua|y)1LWqc|?3BfZ9ac#})7y{l6wM2ehSqgYviOkp0_m+J0NOpbL3AQShUp zY^9=)S+Qii96GsRY!uA6rR^%II&HrZV9)=C_ly-;y;6tV(s#>{w(=~R$A6s654Blf zfSet3JP<%LDam~f5zp2L1hMD8@jjzup1UYwr{)B;71Jm$OGFFoBr^n z9>hk{X6_(HrnbF#)9*Z=9^2|<8IYd-y{`Z5MC;nJ+MKdIw<}*0#=D&7GyiTLl04lX z9$amuL(lg6t#=9C66*>XeE@W5jTIz}G!t_n@6!QK2lq zx)km}gZFXx4)_VW_X|85%h`ixlw3~ay^0b68t$yo{OxqEJUAHoj?U=JXzdrJ z8+$Rv_k!-5a&yiMV=NHUFgg3#QP>KK26pBYK0(H=24v-l`g%?%4&TjZKXR~a@=D!Y zE*8Yu*=dZ-C|yDHzvn5OQ8L?;f5DCXTVI!92R5jyktorQ2cFwxV>1g#e35&_Z|dcl zpYZ7+Zh+dzugRQsBlj2?W$WPVwqP0ggCXmy9Bda4ExR4$fKG=kMRUfS1JfFFjqEMe zver=K%#88X zIk(g?Ac=2V7_W(I8E(rsn3Z0x>Q;K;AnSIWZ3T~6VP$}-Ykr)?E4v&-=iO>>vHsM3 zi2MhDa<`S-Zqz`<@R6UhZ4WXlJKH7$>Q1sg6p}Y&@xyg$3NfEX0FPt#v#wTIlfwFK|FF!IOAEZ3b|Uc8s}U! zaQucG53(IDP{WW22DB57&*qgC7(tImP5=xVCqD*rmD?5ajDOb6vAx}Ae3nnfsvMGc z#RyL+!sk1aBeVy~jF)KP%xEea)T+co`8 znc0@eC=(^+_EAWHr`|X=S!eoq*~$PN$`CweyWKQ3ZZ&%1>SR`7TuGvy0XnvEwc+8C zZSVMm4azp~s~~hay24oF+1T(yJLhUG+d!F{1{t}UANi9{Rtp(hQ(r#-K_Asy(`0Mb ze3YsE(mtU60;Z!|=u33PaAn$V-y(R*mN4?laUA(qpS4r2q@jndEIRJi@rmJ64gZgK zLw8n6U$7Aq`c&|OZHA6Ijyh?}>YMpHu8_Yg(XpY*gg%vzh2+zBw0*|QnlRfpXxEg< zxUUYWFUd&CE&-nRM3GSaWx?3rP8RZQ1Y=6EX(|5+&p0{ zhS%`6pyb2!{@;n3_(K}P#+I)%M&+@NELXl&bmKJ&nQ+RJm(^Dx%EUM-j>Zi`m-vRs zukp;&xW4zfsh3KddO3&~-!cG4`R($wj*O>_m1R5JvUnF+nzwS6m&#w6Nw$mcc9TVy z8a~s$)HQA6uk|ud-`ke9vvP7axh|i>rAC=ox?-748#vQV`&uXJ?TVUbTReXl{*-~~ zcdM`Z2G427u8s=isy@ojaP^w@j;5}D|);y}rE>)ZRUpbI2`TA_W>bOVT_=wfPsJzyqYKte`N@;< zj|3I3wy}9vn;5Q4Y#YlJXp}q+mv6?Kv`^Is9f(Yg>$5U3zH+Jm?Q%<(OV`cI@_i={ z%1l|9pM8UTa@MVmRT!t8XP4wtd78I6p?s-pu2XPDMm?7|4PB*Ck7?`F&G$R$oTNOI zk31GXhBcJF5E1CFC-kNsKSYmj)Pul;?U$QRdDVay35BY-A6|Ym8 zerb8eSElCICExR#dYX^pnDX$~GOF&?cjQxY{96yh&7)KeFG@4NRuGBJ@AZD*o# zN`_ORAa7SeK&P42)nR7yP;n}5J0IUwKIXYD|8{ugRebG6#zEMt!Ruhs7|;B7s&BXK z;>ULtzrx!8s}8%x_t)oJqTS*bpXMzYr{cHc6hDVb=4t*#RR^ic>4qOEs=7&4cYl4h zT+8G)0M0We7omTyA{`7bUEbSi43{jw9q#{jc=5E3+WGt2jcfXLn{?wt!;=Tu=FJyU zKWyk{n>o{xgWl}{uuD7T-+o`z=51ZP;;F*?Z&*>cZnu`&?cT0~RAu|yF1OOO!>cZm z@2yM4t^aMRx)zzP-kDduch$v%@tzy}ECA(}X3uS^Jp7dp4AAIhjH9mLyCShJpGxDq zTaxuoaZ5gu|0}#?R6N~Mc;(a1zv?2@f48#SUh^!PM>#a6x5T?t`I}GWWjgI(YsW3> z*1@onLpM!3uP*T}fLP$P!~0d<{;#}tDp#sHS9&KM1ytMdB;!?GOxMn<%B*Lp%B^?Z z_eX-vv(48|B+zqGAmE0dZ2<1Z8*f|!I0DxuUPl%PnhjdFQAGZ`q3_#^6m~UePj?xL z{y9^+qxJ7dk@awP`Eck_5FjDsf44MhHKM26pKKcqMRNu+gYe<%T{HV%t&Scoq&!^Z zs8z9baeBJzQQ7C)YMiz&3iNKP{O?FA084+`2H88c0j|afr3jk+?b&1zep-0n5 zhaxoN*9wA+na`2z=dy8xPsL+>gDj8K9Ec)AkEd1ed+-2QL4wjen?Q zK5nIY82CtmLS&Nte-A4{QIsQ zzrv-GU0a^r{M+%56uB}0-($aMeQP5(!;7Edzv|SMm%Q@q;578p{jU#VQ0rpZRlKT0 zrIjjwe=BS^vK)BL-D2-;wXf;@;_Hcn67-MAF?YxczRlO{?X^R{{_qq_zcNX|DuJ0w| zw|~2NcB$l6`B(?bxd>hPBEMcEQTZ6hxJB*!>s{ru6Imw=xL?ZqHEq72bwR{*`I zm#-HS$1f~*0}Pg5)NY%4XPEVCrzx4X`M2yM!+hT^lRjzR@ypQFJ%$yp$~C^}+dNdB z=$YeTT{jZFtNe{`9&P@8XZ}?O^Qb&4-;y;tF!XAjYa8Cyop1KJ@_=V2Mt-Tj^^cp2 zxgXF7{w&A$mRyZ) z8UXhUgy4#pGsIRUox#TOw=-M?0NTzM8m@L2=Bk8W57|&E0jR$2en~~DQAz7zJpKMT zh&dziv-Di!;F$@*k$E&E*mHJ}gTk)pR6ZEVoUiE4qU3o_CwUtN;RVY9D0R`O`rf$C zIONMR%%{#3RYQ3u#j@yNd8cBcOaX8L1C>HU4zJ;%sh?+*;tbr`Naf>y$_oGfw|vWm zuiS`jd}l5yiaaViI(=lVJPk81WcOxdr#x(H`FADB0Y^S~ z4mgqz>*B1(4%W1Z;Mq^px9L#BudA-BI$N&wR#%uct-jVYzU3+lc_==LUwK6q-u0*J zuo!IPz=!h5g`xs&+t_gU4*&A(v+bg6t3BjP{_9yDh&%Rn?iVia8e8c+dXh^mKTH0u z@XC++udYybzLGMoWl*NqE?D-eUPpq|3FWE0)j7|`S+@0+4|URa7>xY44UA7)MTeBX z`N*gJR=G5@#;k-Z2m7MNN7<>1woSVYx}+ZPoA$NOD2J*u?IUmU=^cF&uWm4Y={oYs zP3Y)d!rJ*3xf&{O*4?!7XB*lkrE^Ri5>|bqX>0qL05SKjwZlv2Dn9kI&ci@DhD-71HqPR}wPJ>SDEl`YFHiR)owPM+4yAL>+0*tQ=deZQu04 zw2Na`qYDYQ{2Ev6-{fx`FBkQ$L$4E&*Hzi=Ivp;VkFutm$lCFhIt0Kmz6z|O&&oxe zYxFSf?|4odC(UmBAQ$7u2H8K2Yh6j})eVBEb{>&2aU*ACS80^L`X!(8u~Q!~F1+bl z(z`{ylg)cbbAh_N==s2V3BSDz&xP;m>bh}(yu!16NWHLa)Ct?m`0$;!gy*!sWjF2Y zIA$G+|K#I%U1Ni3>_et$^e@+sxPT&PwvNhJ*=e)n$3A8{#|58BmvO~*;CFl#_0q2? zfHiupT;<2|9iOzVjV`B7>JoWne3C!o`o8*K*}ejBjPnUIZ+S3&$%?X)M?G7wWdl>Fvb1 z>&m-Q08GyQbUbZi3jlIg6!|ECRpk+;mzH`lrbQNZzgc>X$hc}LPGDc8GmY)}}D zyB7xD+`r_-i8h7}O`iGk@F_ftcB^uBI0j}{--cV1!GP(VFKHCfHI&OK$yWh;Nu&1^ z%|62aXYti-YRMoGOkrV zxGXomXRoAf>n713<|dAKHm9EM-QLgqeYqkmu7&mlX>B4T)=o= z5C%8xNN4i4?%Xqn%(I1JhalXW(*=~yR-;2T@E}|76U-NGqh^4_7{sBrZ3#$-X9Wj8 zXJi^Sb&+yow5fxGR_+$Gy^Z6o^>%hUHTmU!9&d#|ZkfNv*Sq#2pHI_K(bsf#_|zjw z^qo3HMh&ge#j&D6AEC-+uPYk4onQZx$)k7bPeQvQ08OVU4HDV46F`>xhG0pF+O=Z ze&p^x?|5V^&^dc9VMXWSFVVhnEd!{2U|scH2jDaq&BUUBRooN7tNkGUF703BldUmj zZT{+(E>C{sQdx9VhH=`l!qp?4 z!^iF4-sQOJ7!feCPQS?CJM_Ga+`AjomfpK2z^44Vk5IiZUVstr0$TKZM7S3i54AI1 zQR6rOEoDgmwvWiKpc$Ray=eoxJa?u#KFJR{odqbyCSBakbwuC=7w6ZQq-0CqGYae<>RGrBm8Y~sF0TEbS#L($t zoCQQK51#=!n?$+B4wfn)08PGK{?*NhE<5t6E{&SHdC4J-9w+I~CjEZGyo<$4L-nw5 zAxiJSPd#%RyO%^FBQO5d<;al1F*kT)c)b5cXSrTLDS&X`R6c^q+>-tz_=R_GowgHd zlAGh!sT^BG4U<9HVn6)~sA;k#l#5|YN z+Q%_$GX~ojYmAznGpv*SCOk1?b{xsA`07M}8Tr#LnN&5i`b<_Cj~txi=>dHYKMc-u zCjrD?8HO$qzD*A5rhTj%t^sNKhW>8#$*51{#1}+Smn|LWzX-yxXhyHFAzZG z7JbHyOrRWN?H9T!VvLTvF1P3CBXh=4ft~=}wAL}Mr1)>&PT%|%VHisdksd9&kqJh!dTxrtc&NsinJ)iL3DTc;i?g2t=kjE)O7bO!k6b;zsB6*9$<4 zt2lH;o1oVR4eW%8gznVzbmJs5V1A7*#?uPArH|d{qn>??YZ>TyJa6}eBvd6_gnTq#*TQsxS90WrA(+C=e&#>pf0cKZv4n1Q&;@*?i|9sxu1I47qvYe zG0@h;|2O4k@x+A$=OWhWxx;ati<@8XL%P+vue_rz^2|A<~1-=ct!@sh1_aH#k9dJRmRA+Gq8O6xrzo0XaT8pQJB z34!=gFmKwIFB=U-bhX9pTU~IdMCte#?bHK67`Gk*5Dc{MqD*wY(fP;%L$>vwh=&2q zprvxqcn+q5hTItL%+9)8P8k>tl`~t#&Kwz}t%Iu)S$P61&A&t5fQZaMb&gHlEjI%p z9ZhczTfZf)Mu-{f{O9~4+wk3K*wsKn2X>~RDT-8l>3|A^q)9{}D5&fHVeFXFs{X5dIuw1lX?1W;U$+1)vx`JB|4VlnB%` z&|kK*@eBX@?3*(X>U>?dKsomz;B+h2b6M(^Izyc_=62AUbYxb`EI9n@%-%tR*<@yL zU*@+l^zrG~q%*E(z64Oa0yyXC1<|@IIa@wO#mL_zKua-jEtRy z##y&3Ndh?Po3miZetARAp^?YM>7 z^zV_Yoba5LHRSKu69cSH(9d1%5PU@k=)1OiZeHiv{w0`m9E(x=3VEn=Oxot?oRbap zP){aFj}D~%52lP7UphPuj)Q0AqWddX?Cb*?IND(BDv~Qb)}663AWmK#@4R$cKfgZH z?zza9G0AfEJY##7eqfHDE!NFT3^G5W96b&%t%MnA>} z{Z8A{hxC)1tv$x2xQP2CZ9-cGq{)-|C3vLoWb4Rs*U3OqN1=>$t`s`1l*bwP9wJv) zPLz>jpZ#Qmbb7t9kLkfDlLw8iAVi>Z0=&VihEia@bWBb-W3`h!ePmjG|x%UG>W+qWW< zt~`{3Z39TweVF5zx|Q+3KHzHpL*Y+P2lUmg-%!3b%5kBSPxyEBj&WBxZcvusd+4Ht z{&SI2bOk%(E`h*14*Z>4cfNXAh!DBSQkqE(4#RQ;tntH_{yDZdO1E|1#i@uTJi zzbK-EYF1AWc#yn`X62}O`Jl^yqA;IAdW|mwurm*xb!W-i1}%Zua14BdM-s0+iy=P; z3GX?ST5@%UMMM9Bu5jx2tB7 zU?!knP-c60UXIQi&?R_Khnz**S*?$4%ODZ(gxr%q07f9Mkq^j4*Uc|+Z8LvqH|s9Y zaAh|2Hot18HW`lGUAc-;cEtsNleUx}SEe!MI&^k2;e^IXh67%XFF0$Z-=ux%H(vA` zzpKhw8NrYJO8_Gu8}~%sfL4M1(EcqLW-#BNyosQY!7BhxFn!EY&YmfC(qMiLx*kiA zr}6U$qaP@1L6L*Mt2Ykz6Z*frCx6=1a_w`13G;ArmvKRzbEWqx__Gbx$q0F7rJKpZ zSe^5XqiK~LJh=@M0OzEEI@&gK_{n)c4bvM)gPgLG{8ieI!ChBbk_J&DVw<{s9Nl!B z`#Qf)#@4l)ZG&D2>eFV*QV?w0Gv;Ik*?#8gmH1<{et!g5T`A&0w;iL;tv3xIRZf40^mG%s17>L+23mQ8oiCX zKgO&WJSW!bmk#Y2Co?for+3m_30XLyaCh8*m?HzEz#BB^{pJo?^Uw4AE5y;T7UqBE?=jM;m&i0yemZwHfv&$mbw+_k} zo-)a&%|b^t zJg=+F{g8!zkR6P!zLReN9DFz_h%2Q*!-E9C|^0e=d33GBH z;AfoB4VWud6DNV#Gl8Y@UY+lWDmg2F{6>M?3&X0&m@rt*`)-r5w9y$&^4bcBNw$DDM?TPKvHmMtsiyrYm zD~3?7<#~fTkY)woj9YviVcG`Z{`dd<-;4d1b)4BV@B~QFi19P&*$mIPP;rrU_N!f9 zW#F5*t>_9IMj^|$beb4&I%t;d0Y!Fb_lgBEBWI*4B}x(i=bp4%stQxTXMmXOqq{Qn zL-KMt7XdnRAKaIC3ixz*()lfec@(KSA%pb9FdGu3bhalL&5Q?S7}FWI{)&cG>6tm? zpecidfXo#QJ4seI0DSoxO2t-a@R^SoTzPRB+}Sm=HD@6j4;5cUciV4HClmP(1$;KJ z3c$dogL%W95xG3>mY0K%j(Z)PvQkBdkJDp2n;q#`h=D|~EcjG8a=t-_-Mc9W3T``w zl#lXoP;G}p$wTAkQnm)?-SCqobnk2&%Z@}c7*2;N1ea`=Io?f#tgPD*^ij{JAm3Lof%~d$UNXN00qM= zz#Qv`&`zulQC|llw@d;a&`Ue0KrmaV&Qck~Qmzh??@dRg!^I7fTa2__27cmOs5lA`sWINMYtiZ87+31q(L;0(AaR9D&@VaU< z|5I-d!p}WVMjZkkkX!nI0M0>I(4c(G7k+Z?^k(7;lrgk(>JVe}aQFkLxRvQZIsY}` zXHhq|vwlE*0cg?Puk)Wa%ZexcZ^e(i+AhpQxBi;^btv!Fi`#@4Fy-JXfGZeoNxLoU z)<)*#>tOaV5`m&ckBPerQEdE5@suhIM_R&ubm;A$z z#zz3*IX_prT?KGL=@^!Ajxj6a9I_Q4I)OF+$Z#D`>PA}*>PrJ$wuRdc@b82r+tIFS z!sy+#CVlGmK}(6G6h;w0H|TK&!zH2JDyo(FUVLL=n_Jm(+PuXS>eTDqI@roz#e zRk%h@-tI@ajAd@&XX~5sX2iIXbBzG28h7)dn~MNfQWwTT&u3+IQX7H10%x|JhK^itofMI{lN|Fm1jJqCp8R=7c zosKFSbk40=b@HIY@xaeF93flytxtxcoR2hL*14P zfU{g}C^|iL0*GC8_eEZZ5274FCgc5bVgbMCbk3^FGqzfLpY!z1IH%3Zqy_Ba7Ouw$ zavXsP+178D&pPxEI0JZ!9kSBuHZy%+jFA4+Y@tr!J#7zQ9cgpzuV5V)MY6C$Ush+- zKikPVWW2{lXAE{c*lGN@6|@b&{p1HfS)Bf)(-(th6X;3=jWtA3NACF|JeVYZiYj_9EW9Qt2QD-&rvtP0lhk?UeV8}lMp~e&)ayu`pgU(_rK5|=q{L#q4Rfx1%>E+>)byl|+ zAT$D==Te{D9v0ZAz6}1^a;UP@6ZnfCLRY&zpQ=G?@^e56ujrw==$E!RfBJKD*Z9_% zK|0%FRmV0N#(?f%o%VG_3Q+87dSt;wChhAAGWzAmDfVqaZSadk82S#6tc{#AxL zXFs66acFJ*06NPLh#a2+DM@uIy~fmD6`XV^+uvcf}Un%y^(2 z9!mJS`W_BB4taLXV-RjX>wKMht3$3}2$oYWyk;d&eRuqGl4l)ACuq-ViSN37135dv z)X*p=`=npqTGwpT0+d$coMWbA4fS(!n*;0g?Su(P{d8R_2^w*#}(NLJnyI z>aFe=U!a&U$2#PlRYXBFZ6V-~UaNP_xV5d!7RjSJloc<=ZvnP#6j0-?g5$S5QID)x zts4&N4SB|o;Y{lIX_5J0Ib9_h(q1!I;gNFyfOuKc;` z$_*GV-t7C$iec=5Bpcd^t5(};DHm6HJbq;l4cC}T?TmV6xd zZDYqwu*U5I;J$ssw-=|LcIsm9WN#`OMRA~T`P>8wnnuc(YQC3QJGvdnU(vYX#`jl2 z^6RWE=PDWllKppQ&gS2)l<6$b@XDtK5-4Ab2)G0St#ld8XvC!BdBkjThM<#26P91o z*@5f7{3_U{9)i(yChKYbrmr|nSt0AxN*f@n3`_$r4u}CW^34D_#4tL05Q!(9a*>Co zjLd2cw+>Y|<52&|+Pp2xG?s^=B-}KX(dO;ekmV|8fMwdjGHnCHl@aBoZpyHoj(Dp< z)VMxV|Fk=Kt>kKc%GURWsS}1({?vUXyLSF=Q+m~Yj?{2hpq zTk2Qknug!-U%Ez{xFTU^UDc_bzwKfkKAXSkY`fBlifg*24I>AEo`6HWYUg=4B%hS) z0OYoDR;r!2Fr#!}4d2y&y6LR1yg1+(&oF=O1NJd>P$E2AoUSCF$N*&aB7e=WRNt4%i;FS@co8HGW&C+d5}l z!);@A-Mo~8@wz-5E}6gjSvnz~)*YT!&g|_Mmg^W`8fB-9tb_gDcinv3q#R3@*2#LS zpXQ^Ste5q*Uh>oEN_aBdc!rt2+Ou@mvQ5)2?{LX{l)o}?T(>N#+m~!F%dL8;H@^4R zx>dX`nZJEromL+WD;cz8A9>XHM1Bc3tmI_6>h~q1-DKc9bevaPzzv|4?enr( zexoH@uw>itksbep%=FpDg)S{_XhwO09ZqdsktmHScctk)q1K zcqx9W&Q)%^4#qJ}Jxdk0sLiYK4J#RS({#hzWVoG^ju{7;g9MO9`|x9r2EraaFr`UP4X+<%w#O9ufn2&cJ;Z zP%&%<`GeuToxl0`T;XlGRk(S!<5u`?RC%?-OmDeGJ{#W6zrx#TeBZ8Hg}37#DXP4S zlq<%_?YrE&=orzhTh+n%wi$|dGZ{f=LDk7 zhX9U=pu0ClQwn|fEK2^7pQH8bTR=m`6mweZ*TQ|P{+dNmD z>e+ZDgQAMx=BJxaJ6$`x!u+kU%BLGwYUk7D>j=|<0Pawo*&hy-;MTo65_DVVe<)-_ zGHVQ=v@@)W)6=0*b&k7=4(&wBp}?jyn5H( z^>ka2W1M4MJIsFX>XTIc-Y_T5uJk*3uCR8xo^E%#?E#z$(nY5g?#xr_D$wDOWti8x zvhHY-C+mBADZDeL+Y)@V+l>D?2jQwgJB}USIQN3Ae+>lkwp$w+uVyvv@XG6OWoUZ& zUiVIZ%=@;K+2N3NmFL~~GLEt`90*sF((Pr-dfJt4TL5PxyT9DttClnd_uE{4UFa7nF5#9^XoNHv?Lpaafr4Kb ztuw;DXXcuNx}K3ZROK>020ULd2}atAE3X*Eyej~qVQYuC!HawvCa>)}G$3JB#x3zk zTJtde+B)w&08{m&mZ`;k#U-MtGv{wL#>zPdKSV%wcWHnqdUplE$&0jyG??L0u%z(b#V@s z(oHT-ue4g*uAA%P1GG7c*oK{}}y@~&Ranx)tYT*5x zT_c`BxgoEO5GV*9whh+uMmf2N)O)6yuYD57^8DWhWd1kIca;x$_(hXnHu{xQK&S7l z3w-&-k)JfD9s)$e0R?`+lh1_xvZh(B5G448t5<~Nte?ibk)L;rrHrTYEU2}N;j1as3k&&H{`ncfR|zf2sjG^udowexAq!SLd( z!Uc&QSQRJ=HvL+!on{^R-u%0DP|mbnu7LO?^7FijlZSTNF7ZB>gL=U!dKutvKK0)J zmR0}dU8*?pQnEALxX9gWB)nQ?^hjh=ax+e)DgL`*C8KV=%)1@GsN$QpEjQDzi*LB& zh}WmQy47y&I6d{$Q%^@RZ3A#OfA8kSX{VpI*qHBKe%Z-PJ~tRUFgo}$kUG0}1s@4P~xNU za{v)<==Z)Qz-8iku=oW_5MsD4rmVO3fq6lvcMy4?(>tfk%RIe@%zI~YK`-^rs*ZJh z4*7hciGK}oU4_z^VVDG`xt2pYAEq@g@kcS){+KY4;ddMe}HoC0uyLF93Fp28+!4k zd7F=V;{AUB(A5g70M1LFPe(4)NACxbLFI3L@RLhA&n18JhL5b&^6Z^>=CRT_bX4G- zIyU*FtU9aVimc&0#~0w$@TYFLvgN1X)?2+jo%iUZ_XMr@S60ed9jetpc{D%EMXz#2 zhZ7Ies1wfv*m~{Gv#G;X4T!3`b;)jQ=nHRFk#msL; zw$+Zc8ZB98bx7HnKl+x>;Z5JjD1Fzo)GK-m{{!!9@>0qZm;JE-YVwhP!Kyk`?Sf2` z5Ba5D{x^SlX!1^cCrRp@;mXf+=u}o-iI;H8qaNw6#y4KonLM2kZV7bZH%&V5Q6Q}0vqjubE4{U8Hqb2p5xkaEvUbN^C| zDxk#GH60<(yidkEQ~*614ndlqAm_qXfSZ2#ymu!4L!XSH{qph)m>6`J^!}e*5UeKv zuXb=C*LYwY{949x^^6b~9|BI&x%wmM^PP9eWQ79bkxMRhsO@F1-sBAbf;VrSj=?&a zd;nlE98ct(_sKm{u(<@BDfbDK2N-iDDInBv42Ym^{#DZ6oitu(`Wy1SnD`ju_@r!H zNF}~?z{ur3vyZ^1az-A47J-2A<7D{(fWg1!z4w`!2BRGJGhTM8VXVf~;8B+e0MgsB zy;wLmoGUL4BF}=UT+B8rL~j^B?^P0D*S_TrLGhPt>j4H)uW*08xLQ-gD=DK5kj7Be};% z2h-?Sz_^B;cJ{8f+}Y%%tpZBo3)FJM{JRPFLPl>Z2OPNKtIRe40`VU3%4L~x!2e$2 zexcz-KC4}>TFN1Pz`MzONBMCRCr{KNX=wZ5^QjL&-wQi)8Kjq6yD}?CsWxi2m1&fb zZLf|}@7#KB`|6^Ga4#g*y_#Qwt}eS=N9rUxCh*N|;P9V&#O$Byn!ua?hS_K0UP!rJ zM_Kf}d|=~hmMh}+d-|&K4hSZlcNmUzJ9gGmR=K|oe&WhWIeYJueN4a$pwpW|E@u7| z?|2^|t^TQV#I?S;C(6Un@@^X25;@1$A#LXIfhsS&qLh=%4zmq+NFTtI@$Ep zQ%^k|rL+yeef*;zUz~EzJ|_$ zH-qpe8EjqMarTY@ilGAt1lVDW;#j)5c{^@*ya*5DA+U*`L|x3dEh0d1U@Z1Sc%~d$ixul=JoyX0nm#JpwoyW*rooikmMHcn@J0p&Ned!ULZR|rq*d?xR8mf zCGmU#V2T06_Gg(Yej+89&Pvz$xznZ~{A5TF{HQF8ey+ISg`_kS*oXTy7gbr?mYLU?({9f=^e-;*o-KbNAp+i3ezO z!lJi{Ob`m_Dyt#@h`Q)RVe$rKp^kcE`Z44O-*LBd3FNA+eNRBM3xHF$u4>0c6kseK zDf9{ZRQN@obf*>HjNWceJ6o>#yDIEzaXe@M;Jok635eb&bTg%A3e(5uF>&HL&WV*} zA|u;YP@OWo@EP4y7o4=k8MSpm@9nc$wYD8g=WZs?=HgcG^oyG#j|^PI`_st_pe!KO zEtB9plPrLz@w4(vySdsO*GTJR+*40I^>mceHUM|SH*Q!w{;bC@hHu&%7cW^UVwNm$ z(buJ}AzV#~qgRc&1N*szf1iQ=K}!IpdnwQDJ)LJjlS%jX?}RQ8Kva5BTtSLdl@f{~ zO~9}s1|$?$5Ru*_Kp;^-MMOb?h*Vd^5(o%FAoLchL8ZwC5_**uY9J*4xX-@t$N6}l znKSpyHRoKv`Am|JT#k>?fF1_u(^EfBkd&>uOASh2mFYFN5<6D-cur3cy5GW$_8(UpvB+wYl-ygDH-I0rv*EzP)XY zh7+se?4$rIH_DOJtrL^Qs^G;_cvg)D5>f{mXDSe`Mn~_eBs7O@SvkCNvc|x#`)EO_ z4)vi|U?#4OlLvx|pnrr#J#9LAsejA)4B^xD$~%v_Q0~+u7NHPb9IK1If`Y5x9$X+Z zR6sb2J>K)?fLlP?d&cT6+F$}`6L=U7mUJkp3JFx9RrqIjI+=`~c`4Gf46Z(;9LF>` zq@w)~D7diSd+?6OTQ#3FNZFm*LSc|j2zIjjt>p*`5u&{;&^CBqZ|hjNeb6Nn3_3{n zxl(BO_qE-a0hYAvRb!%>PY3j{8|=JQR9f5}5O9b|R|TBtu)VuDhMy z`lmEEEj({FtVeuMPbElDN%exB#%d1Hsv+5N*#1X?S2cSI%QAH56jbXv{zr zbh7m)3%KyyK3k=^urzuRvp7flrj6mE?vTB3LHALYF^hJq&mrS}yk%$ejwrmw{{X)V zuRmL)-Wp(J{DQy02biq!Oi8+K()8!;%r5TB9-rm?$~@BDXC^(un^Bv*Hyf|ww<`x$ zxxQeD5dEsJhuPXayIuLTHw{mv;G4%6RB6n)wy+lde6YS;>(VvDIER?EA3-0U3hKOO6#g8&^qP-JxQLcvBXp{G`m(`cr&%V7uHOCsu1;{R3YfgYY%OeSiml+pvJIjuREg}-@@%+ zN|?CMEZ2BgtXD|X{cg(X4Atv?0L%TV7P;gjlgfUmh6cpPQZKo`yVN=C)F&HGJCSR6 zt9qtD4HTT`qniR;Dci4pXBY9g(2hsj&_VNC`gRHPk0m~{$BrSO97^Js@4XtW*cU5* z4D^>=#bDKf*OUENfgOIEJi&%l5(r!nvFKyh{XJpp9I(SFVn~HQ0pT_gR-3iAlwdeM z{9F&YI^=P^&fjYDTnEoLPDZFq^)p$A-AykTjx9T1sXdb^;C(S6aEAG2`CZcuGack5UdKg3ou-u)~l-rk9Xa`|x)EQiN8(zomaPyN^xK zpZoZmhsoDeUkM7f9KaA?Px-T=c^zX<>v(oF8DrK&#PL%RaKfl6N|Q?$P#ot{G72+V zh!Sd&eEkL>Yji4Hl;qC69W!s@0URnAy*$vRJHu~+Xctwyqvb;d3(t3t{H;N6Ly~H? zaVp|US{-I{K$Ye6eu6ed;$-{##rmY3D^HhT)@T!G&#=9uv`{*!r#$?OKMOzJS$k7D zHkb8`W_N?&2YU-K{I-)rRkMEEzbV7tYR0H6*gBm0taP?es=P~DGoG+w);So(06(D$v*%&%yBwjBY0Dr z5-Pnji*s#m3>7K^DUy!sD;~$a3N(+2TbF5jOLYpYI*h&$w>o8NC@rdi39B4NA*2Q( zgv=bv3RySsu1~_u5S(Izyyd^>hlNOD(5)0%N`&v?)bLQn>fxPwTh`Rvs^pL3=DA6= z2mUNq)3>9!LP61`Q(aDYqn-#jU<}x~J;K8AWiIc^V$O9Be6lSY#gIvn?;I z|7@)<4Kn83mCvLf{dB-BC(os>YXdfm>3Z)y-#bz@x_6YZ`x&(LBY*CaXNr3v`frL$ zSH&nHbtM$p4{BUK=^S@{^_38bQ0$qLHC4xYTZE~|R`RNhg3I7AC$a3rPqY1*&@ z$dgobQ}N!`ZRBxwsh30KQ6XUBJ`#Q@bl%-_X1j=QD1u%r&f!!JYZpJt8JlE^GUl0C z<+olLr$Q7($J^f&^X7#{NXjX%OIs6&dX^ZB{zsB0KcKfban#{O>%Ji+R(c)a|7fIp zfD&52KwbDHtK?Q-*_u%T>){kdS>G846(q6ch5o6Llx=krh?y-%^gCP5Of8bT4GxmA zTRQf#?n~d`T-VoS@+M_}n(vzUHH}9edVHOivQj7xT_f+o++kGwwj>S8Egg74iLXzQ zN3o?5m!6lU%6h?#2Ot7Bno`VXFXCL^2iDf4WM>$( z@Oa@f50!C`8K@2GL+`n287ddVk#rhx4mFFUidbcFzE}twr~w?kRZZ=Vg_5tzaGvR{fS%QOr#V!dV!98B}>OixL* zb@s>2Zr8gG&R-8Fhj#Vd5^(v`{EEx*KWMVr1#UT`Ufu+fOv~2l>(aQlVZzl_`Kog- ztbUVJ`rRH^aaEgw$G1651gT{ge>)&Jz+Bb$5<)C&c4_?Mgw8WA*3;l-am(oJ&%X6N zgF?z$lC`Rn5`oaUT+30th7QracL?A$@1y&sA)7&q+b)TMmc5kt{++qua&^kCH}q@A z#wKN(oK(a*Q2|AM&bPHxDk*;OhI_)^(ijUeO&+TanctUq( zI@Dlocd9@q(hako*X`ki&Q1@YkK+9^9{Hktq$w7y_%}sgmGLd^L){(?T|K1_0<124 zz`e40&n)Iz#x8qNXmxf<>?%LUpa|vFbS&H6hc%t0wbcxrt_a6{PwIR}*QTky-5k)0 z((cv4`Fnrs^s&-OiRL^py!4g|jH^mnUa4SIQrFc)6gC{73`e$ynW6D0^>s`I}1KegqXQY zGz2=7L<)bCa_; z?o!zSCX|UK`bRdYq>O_qSkXuep_G4Eo9v_g+u*qd#*FDunAZ%JBTe9LYA81s6GH2O zhxgI^43VwiL3N;KBX#Mzqix_=`Qn&io@&Yj*tjVS@HTS)-;#dHDRgGDVC*mYOT`t( zVmOgGcMk|AWXgt1p(+lw`Wsb*-)|;X8_UUN9Ir1Cdd+ycd|>6A@iOKuS$aBj5Oq{Vf%F;5CV;Zo!W(Wg=JN7SwtKFY zLR{qB31^h3&5aE@VZ*Ohg&xuLYtZKkeZb9JQTu6@vZEfoXpRY~x-?@U>iCuQd~#T> zvYLr4dDdLIv1+r&snow~I8wu<5aPzLC1nM%9_j9%kt{KEs-X{MJYW546^H5z;@}&e zZb!4|fu#wAo>G)*Z(VXn_j_azmO?f!AH6HXhF7l>8G@>5l?6Xa3wT~p7Qg?_I*yX} zuj-3t5=_r*=hvb?NAhyqmSshd!A`dEBa-kwe0$9oHK_Dotp_~mQ9D?lOz;pwYy+a> z=3CF_xux=3_oX7@k4pw8F1SM*MT3Ju3-z~_l;YcmRvA14?RQ=_!p(|vMjA7Mdn&*U zJ8Ctf;#LN3KHHMJ0P#l3VW0`Ch7NhHvD(%X0m+w{&eP8Q)*+Y>0&<}$&3S*KdY`ZV zi{U-SyK1R9!$?j*r_drbHo7IMh@nJ~j>#5zL}T|0nW~N5RZzrxFa@pwa_-_{9g~>z zjp|>Xj&5zo_B<@cdX@n~zDjdo3yXo6d7jVI+F5u>+)q!VJ#zKe4seLjGogU|(RgL# z^`i8Ar*mkxkd1DLndjm=E54@cfXq^!jQoWG0c5h3V2@+b14oL72@kvtRtcPLytjpj!9^KuK6ocm?m1eF?2z-0plaYia#vU=bqEr$QquOVv zvXfWlr-I!C-S@R^@zU_As1LW|#rgRp7q8nFK=%_orOKB-dLSO3e*PZ| z&+y5D8L%^bkldWTtzH#JOrtC+ueMt+N_Pm_nLaySFFh3tAsthap(QAb;y>?XvSOJM zZ5g^Ts|l(c*kn>MQB)Zif7c^uDniLJKDm}0nehG$TVcGHb+j%<+S@dKE%dfXb;wyQ z$U?;PlOJB9R}K2-)D+dpzxp03BcJNVG>gM%i8E+lq zhz=u5JM^%GD5=lx{M;8G^y;bzV(z$@w{W;c2|x1S_H@H!wkgmnq#Ir8=|VT^xTV?kOwk2g1k7dCUaMnEMajnd~z!zy%dT}OvoOL#sQLV*42$3AIf z{VRF@MrU5;16RKX#@#EDb@w|oQuYB%)lgRbTo=M7+Ky{{6k;stvmF!&(ua?`Uyv4= z@JlsTIC~0F7HRQP0w~HE$+j#j|C(itQRa11RQ#!^;C7^)Gio2yC0rmFRPd#fI8aG) zK$9FNRQ~R%?@)+!fqAi~V7tlQhV{89PMkp}iJm|B3Ki6mEDiE6&PBBE21&ugVsH2b zwZeN%OcU5kR0otl#3-VcdRaDwe+DLW9M``IO2_NRJq}Hq;LqY|I?Hr+ukz}OJfXr# zB#y-r=$^vKXSjPn>34DDFi?#NHLDFQ*&NGqsBMbbiB<_Qww+&mADVzTNb&gEr&ODt#?ss!jAGV~_b-QCK-)I|3to?2 zT)0!X1>iX#-&-qI!kmmdE%Xt0#-k1S*RHYW%CSYJZbB__%OKCVPUHjs?k?aPe!Fzt zSYe8C?>1U)fir;f3ZZjGxNc1LQbU>2gM&rlj8!YZup-ixTxvq#=h|#{*~XpT$)0v1 z|AHN-eod&))yHJ)whm+&7ufr3Pbs&&RS=jjr06<7IMw}RBfzY?(4csA(UG$;=IaIh zQ9`K%OyK*Y*Y8#OF>g%H_fo^W4G#^c?SygO!&$9+;SDpE{5Cnq5lo{$*Guxo zy*(;tCjq>wl7PPK!k;Gsx0<87%{_Z%6RQ;`Xv=YSH?Cs&P|&@o(B>dAMXbG za9tg{O|D`%wKaOV>_|n3$#x{w;&MAXwq_KHD-dYK0`nq(hwlnwN0RqjB1UW|RVHGeh!jbBlID zt#?uX!j3e#!o!Ss_{3vTRDD*Y;T-94DQ61wxmCo0roxcv+){@mY>6F^icwY&=R|Dd zb{r~LgOSeps;Tfhc=2dVBB0^{y^6=d#N`r~pe&shK*m5+lbvVIg(6+3p+wU^+=>M} zs)Vc(YUui>6y(r7f-`f{Vj%GJWkgQ@(loUqgv19#WokfbX*``HA|JG5F)yMW@xGHn zbzN5P7r^d}ff00<-o$`yRPiK5KCWHR`8D84|FtNCBEGKVn8N_SSUpfE9P6arLxt&= zOM;7HpK(PurO)--od=uo7!Ko!$IE|m4I!^s9i>lyQYhbs zzh5*^_RY2R_jM=@wZR;gVYu zD3HTDov~lXJez_Gz?4`21nY74B7-JiryFz?8u7&$Qmx78 zsn?IzdE{nGTUU9Jry6I^*X@&iHtt|9BG=Vl*JYzO;xgbyCacNpwd+h#<*f{5hW|U8 zY6koj)Q0YlU<;Cf%(zQeJ;L#mHhI}$YAzQWaQAdgr;jm?tdc%!Jnbj922a=Bb)De} znuy;?i)ZM$4uLj@i8@wBu0;&&m2}x+_>3P?>18K5a@K8u!&+(5v4spZTIZ$sA^%%> zV?4iaAXK=?XXJpALe0;ZUg|RDjlFbqO2AHR;ywiu)YvciG7#CUIBZ)TJ$r1la|1!r zhD}KltXut&M#U|ZC>g6y!Du!7#L=PIib*)4RWWTBGXQTy*Vdgw9&cw6_#12umaL0Xb@3CT9C4DfhPQT#eX)%xxp~aP2vf u%t7JOFIU%p{C5tI6x$O4B9|xGe4n&o3R2P+IEMTHU}JIR68@s+gZ~4Eu|?qk diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_install_output.png deleted file mode 100644 index 7ed4568d6d962ed41f551ca271274237399e29c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451563 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

EhjlerDe59CjU) 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%0AGzoIzD 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 z

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%0A1h*T)atZyHL2-hM!yc{!L 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ìn%p7>C}b1OTV*2Q~O-i9y}k6_+<+) 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≫ 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 KTYASn^#1@rcx(y) diff --git a/docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png b/docs/data/how-to/rocm-for-ai/pytorch_docker_test_model_compile.png deleted file mode 100644 index 66d0b970402772e46bcd567125ac3108305af901..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160414 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�QO&t@!ZI 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 z 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 E05ArWNB{r; diff --git a/docs/how-to/deep-learning-rocm.rst b/docs/how-to/deep-learning-rocm.rst index 5493be62e..49c0b5d99 100644 --- a/docs/how-to/deep-learning-rocm.rst +++ b/docs/how-to/deep-learning-rocm.rst @@ -56,14 +56,10 @@ The following chart steps through typical installation workflows for installing Find information on version compatibility and framework release notes in :doc:`Third-party support matrix `. -.. Learn how to take advantage of your ROCm-aware deep learning environment using the following tutorials. -.. -.. * :doc:`How to use ROCm for AI ` -.. -.. * :doc:`How to fine-tune LLMs with ROCm ` -.. - .. note:: For guidance on installing ROCm itself, refer to :doc:`ROCm installation for Linux `. +Learn how to use your ROCm deep learning environment for training, fine-tuning, and inference through the following guides. + +* :doc:`rocm-for-ai/index` From 32334fd826d5bfc20197913360d1a1f21cc23fb9 Mon Sep 17 00:00:00 2001 From: abhimeda <138710508+abhimeda@users.noreply.github.com> Date: Thu, 30 May 2024 21:12:54 -0400 Subject: [PATCH 066/175] Removing docker from hipBLASLt (#3202) --- .azuredevops/components/hipBLASLt.yml | 49 +++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/.azuredevops/components/hipBLASLt.yml b/.azuredevops/components/hipBLASLt.yml index 61d4a70e1..5c4db35f3 100644 --- a/.azuredevops/components/hipBLASLt.yml +++ b/.azuredevops/components/hipBLASLt.yml @@ -12,21 +12,45 @@ parameters: - ninja-build - python3-venv - libmsgpack-dev - - hipblas-dev - git + - python3-pip + - libdrm-dev + - name: pipModules type: object default: - joblib +- name: rocmDependencies + type: object + default: + - llvm-project + - ROCR-Runtime + - clr + - rocminfo + - rocprofiler-register + - hipBLAS + jobs: - job: hipBLASLt variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Build.BinariesDirectory)/rocm + - name: TENSILE_ROCM_ASSEMBLER_PATH + value: $(Agent.BuildDirectory)/rocm/llvm/bin/amdclang + - name: CMAKE_CXX_COMPILER + value: $(Agent.BuildDirectory)/rocm/bin/hipcc + - name: TENSILE_ROCM_OFFLOAD_BUNDLER_PATH + value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang-offload-bundler + - name: TENSILE_ROCM_PATH + value: $(Agent.BuildDirectory)/rocm/bin/hipcc + - name: PATH + value: $(Agent.BuildDirectory)/rocm/llvm/bin:$(Agent.BuildDirectory)/rocm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + + workspace: clean: all steps: @@ -38,17 +62,30 @@ 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 + - script: sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DAMDGPU_TARGETS=gfx90a -DTensile_LOGIC= -DTensile_CPU_THREADS= -DTensile_CODE_OBJECT_VERSION=default -DTensile_LIBRARY_FORMAT=msgpack - -DCMAKE_PREFIX_PATH="/opt/rocm" + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml \ No newline at end of file From ad9cdaa2a9b9c10ab62b22ddd35476f4b9681474 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Fri, 31 May 2024 11:02:01 -0400 Subject: [PATCH 067/175] Switch to staging branch --- .azuredevops/components/hipTensor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 7ca60781b..eb7ea98ba 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -4,7 +4,7 @@ parameters: default: 'self' - name: checkoutRef type: string - default: '' + default: 'develop' - name: aptPackages type: object default: From 14a3e80a1b826c60f2713df0738259f0521dcb23 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Fri, 31 May 2024 11:16:17 -0400 Subject: [PATCH 068/175] hipFFT External CI: Missing vmImage syntax for base pool (#3204) --- .azuredevops/components/hipFFT.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.azuredevops/components/hipFFT.yml b/.azuredevops/components/hipFFT.yml index 64c7fb5e2..4fd06e838 100644 --- a/.azuredevops/components/hipFFT.yml +++ b/.azuredevops/components/hipFFT.yml @@ -34,7 +34,8 @@ jobs: - template: /.azuredevops/variables-global.yml - name: HIP_ROCCLR_HOME value: $(Build.BinariesDirectory)/rocm - pool: ${{ variables.BASE_BUILD_POOL }} + pool: + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: From 04561cc60f303623cf2eb6160ca00821c8ff3d2b Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Fri, 31 May 2024 11:16:36 -0400 Subject: [PATCH 069/175] External CI: updated cmake dependencies (#3206) Template with bash commands to update cmake with snap. Use template for two components that want updated cmake with latest source on their default branches. --- .azuredevops/components/hipBLASLt.yml | 9 +++------ .azuredevops/components/hipSPARSELt.yml | 5 ++--- .../templates/steps/dependencies-cmake-latest.yml | 10 ++++++++++ 3 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 .azuredevops/templates/steps/dependencies-cmake-latest.yml diff --git a/.azuredevops/components/hipBLASLt.yml b/.azuredevops/components/hipBLASLt.yml index 5c4db35f3..9e61dae6e 100644 --- a/.azuredevops/components/hipBLASLt.yml +++ b/.azuredevops/components/hipBLASLt.yml @@ -8,14 +8,12 @@ parameters: - name: aptPackages type: object default: - - cmake - ninja-build - python3-venv - libmsgpack-dev - git - python3-pip - libdrm-dev - - name: pipModules type: object default: @@ -30,7 +28,6 @@ parameters: - rocprofiler-register - hipBLAS - jobs: - job: hipBLASLt variables: @@ -49,8 +46,6 @@ jobs: - name: PATH value: $(Agent.BuildDirectory)/rocm/llvm/bin:$(Agent.BuildDirectory)/rocm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin pool: ${{ variables.MEDIUM_BUILD_POOL }} - - workspace: clean: all steps: @@ -58,6 +53,7 @@ jobs: parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-latest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: @@ -73,8 +69,9 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmDependencies }} - dependencySource: tag-builds + dependencySource: tag-builds - script: sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm + displayName: ROCm symbolic link - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- diff --git a/.azuredevops/components/hipSPARSELt.yml b/.azuredevops/components/hipSPARSELt.yml index e2576c571..084f79f90 100644 --- a/.azuredevops/components/hipSPARSELt.yml +++ b/.azuredevops/components/hipSPARSELt.yml @@ -8,7 +8,6 @@ parameters: - name: aptPackages type: object default: - - cmake - ninja-build - python3-venv - libmsgpack-dev @@ -53,6 +52,7 @@ jobs: parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-latest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: @@ -68,8 +68,7 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmDependencies }} - dependencySource: tag-builds - - script: pwd + dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- diff --git a/.azuredevops/templates/steps/dependencies-cmake-latest.yml b/.azuredevops/templates/steps/dependencies-cmake-latest.yml new file mode 100644 index 000000000..a203eed33 --- /dev/null +++ b/.azuredevops/templates/steps/dependencies-cmake-latest.yml @@ -0,0 +1,10 @@ +# replace cmake from apt install with newest version using snap install +steps: +- task: Bash@3 + displayName: update cmake + inputs: + targetType: inline + script: | + sudo apt purge cmake + sudo snap install cmake --classic + hash -r From 9d2786395427cd9bae6c56e37b05b3cbbf4d4871 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Fri, 31 May 2024 11:23:46 -0400 Subject: [PATCH 070/175] MIOpen External CI: Add rocprofiler-register dependency for latest source (#3203) --- .azuredevops/components/MIOpen.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/components/MIOpen.yml b/.azuredevops/components/MIOpen.yml index a784e9d07..359f33b6c 100644 --- a/.azuredevops/components/MIOpen.yml +++ b/.azuredevops/components/MIOpen.yml @@ -27,6 +27,7 @@ parameters: - rocm-cmake - llvm-project - ROCR-Runtime + - rocprofiler-register - clr - rocminfo From 9dd6e42122b6752ae030b4bc7856852e363d4a88 Mon Sep 17 00:00:00 2001 From: danielsu-amd Date: Fri, 31 May 2024 13:27:47 -0400 Subject: [PATCH 071/175] External CI: Dockerless + latest source for rocprofiler and rocm_bandwidth_test (#3209) --- .../components/rocm_bandwidth_test.yml | 32 ++++++- .azuredevops/components/rocprofiler.yml | 83 +++++++++++++++++-- 2 files changed, 106 insertions(+), 9 deletions(-) diff --git a/.azuredevops/components/rocm_bandwidth_test.yml b/.azuredevops/components/rocm_bandwidth_test.yml index 047a47517..5b4fc30ce 100644 --- a/.azuredevops/components/rocm_bandwidth_test.yml +++ b/.azuredevops/components/rocm_bandwidth_test.yml @@ -10,21 +10,33 @@ parameters: default: - cmake - ninja-build + - python3-pip - name: pipModules type: object default: - CppHeaderParser - argparse +- name: rocmDependencies + type: object + default: + - clr + - llvm-project + - rocminfo + - rocprofiler-register + - ROCR-Runtime + - ROCT-Thunk-Interface jobs: - job: rocm_bandwidth_test variables: - group: common - template: /.azuredevops/variables-global.yml + - name: ROCR_INC_DIR + value: $(Agent.BuildDirectory)/rocm + - name: ROCR_LIB_DIR + value: $(Agent.BuildDirectory)/rocm pool: vmImage: ${{ variables.BASE_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -36,11 +48,23 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=release - -DCMAKE_MODULE_PATH="$(Build.SourcesDirectory)/cmake_modules" - -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_MODULE_PATH=$(Build.SourcesDirectory)/cmake_modules + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/include;$(Agent.BuildDirectory)/rocm/include/hsa -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocprofiler.yml b/.azuredevops/components/rocprofiler.yml index f7d41fb4b..fdacca24a 100644 --- a/.azuredevops/components/rocprofiler.yml +++ b/.azuredevops/components/rocprofiler.yml @@ -10,12 +10,13 @@ parameters: default: - cmake - libgtest-dev + - libdrm-dev - libdw-dev - libsystemd-dev - libelf-dev - libnuma-dev - libpciaccess-dev - - rocm-llvm-dev + - python3-pip - name: pipModules type: object default: @@ -26,15 +27,30 @@ parameters: - lxml - barectf - pandas +- name: rocmDependencies + type: object + default: + - clr + - llvm-project + - ROCdbgapi + - rocm-cmake + - rocm-smi-lib + - rocminfo + - ROCR-Runtime + - rocprofiler-register + - ROCT-Thunk-Interface + - roctracer jobs: - job: rocprofiler variables: - group: common - template: /.azuredevops/variables-global.yml + - name: HIP_ROCCLR_HOME + value: $(Agent.BuildDirectory)/rocm + - name: ROCM_PATH + value: $(Agent.BuildDirectory)/rocm pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -46,11 +62,68 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} +# Manually download rocm-core and aqlprofile, hard-coded 6.1.0 versions + - task: Bash@3 + displayName: 'Download rocm-core' + inputs: + targetType: inline + script: wget -nv https://repo.radeon.com/rocm/apt/6.1/pool/main/r/rocm-core/rocm-core_6.1.0.60100-82~22.04_amd64.deb + workingDirectory: '$(Pipeline.Workspace)' + - task: Bash@3 + displayName: 'Extract rocm-core' + inputs: + targetType: inline + script: | + mkdir rocm-core + dpkg-deb -R rocm-core_6.1.0.60100-82~22.04_amd64.deb rocm-core + workingDirectory: '$(Pipeline.Workspace)' + - task: Bash@3 + displayName: 'Move rocm-core' + inputs: + targetType: inline + script: | + mkdir -p $(Agent.BuildDirectory)/rocm + cp -R rocm-core/opt/rocm-6.1.0/* $(Agent.BuildDirectory)/rocm + workingDirectory: '$(Pipeline.Workspace)' + - task: Bash@3 + displayName: 'Download aqlprofile' + inputs: + targetType: inline + script: wget -nv https://repo.radeon.com/rocm/apt/6.1/pool/main/h/hsa-amd-aqlprofile/hsa-amd-aqlprofile_1.0.0.60100.60100-82~22.04_amd64.deb + workingDirectory: '$(Pipeline.Workspace)' + - task: Bash@3 + displayName: 'Extract aqlprofile' + inputs: + targetType: inline + script: | + mkdir hsa-amd-aqlprofile + dpkg-deb -R hsa-amd-aqlprofile_1.0.0.60100.60100-82~22.04_amd64.deb hsa-amd-aqlprofile + workingDirectory: '$(Pipeline.Workspace)' + - task: Bash@3 + displayName: 'Move aqlprofile' + inputs: + targetType: inline + script: | + mkdir -p $(Agent.BuildDirectory)/rocm + cp -R hsa-amd-aqlprofile/opt/rocm-6.1.0/* $(Agent.BuildDirectory)/rocm + workingDirectory: '$(Pipeline.Workspace)' +# 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/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_MODULE_PATH="$(Build.SourcesDirectory)/cmake_modules;/opt/rocm/lib/cmake" - -DCMAKE_PREFIX_PATH="/opt/rocm" + -DCMAKE_MODULE_PATH=$(Build.SourcesDirectory)/cmake_modules;$(Agent.BuildDirectory)/rocm/lib/cmake;$(Agent.BuildDirectory)/rocm/lib/cmake/hip + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DENABLE_LDCONFIG=OFF -DUSE_PROF_API=1 -DGPU_TARGETS=gfx1030;gfx1100 From 52f8a0ad362122c8d0bf107da996978f65f25a05 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Fri, 31 May 2024 13:46:19 -0400 Subject: [PATCH 072/175] change default branch to develop --- .azuredevops/components/rdc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/components/rdc.yml b/.azuredevops/components/rdc.yml index 41a445b18..2852f0570 100644 --- a/.azuredevops/components/rdc.yml +++ b/.azuredevops/components/rdc.yml @@ -4,7 +4,7 @@ parameters: default: 'self' - name: checkoutRef type: string - default: '' + default: 'develop' - name: aptPackages type: object default: From b69b997d69025f3efe936310f49fd3e69dac9756 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Fri, 31 May 2024 14:12:57 -0400 Subject: [PATCH 073/175] Change pool to LOW --- .azuredevops/components/hipTensor.yml | 2 +- .azuredevops/components/rdc.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index eb7ea98ba..ba9acfb31 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -27,7 +27,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.MEDIUM_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: diff --git a/.azuredevops/components/rdc.yml b/.azuredevops/components/rdc.yml index 2852f0570..d1925ffc2 100644 --- a/.azuredevops/components/rdc.yml +++ b/.azuredevops/components/rdc.yml @@ -34,7 +34,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.MEDIUM_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: From 1975889da1c7e60ee56452a71442ffdd75b626c2 Mon Sep 17 00:00:00 2001 From: danielsu-amd Date: Fri, 31 May 2024 14:25:09 -0400 Subject: [PATCH 074/175] External CI: Remove redundant rocm_smi_lib pipeline ID (#3211) --- .azuredevops/components/rccl.yml | 2 +- .azuredevops/components/rdc.yml | 2 +- .azuredevops/components/rocBLAS.yml | 2 +- .azuredevops/components/rocWMMA.yml | 2 +- .azuredevops/components/rocprofiler.yml | 2 +- .azuredevops/templates/steps/dependencies-rocm.yml | 2 -- 6 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.azuredevops/components/rccl.yml b/.azuredevops/components/rccl.yml index 5b97477a1..f1ef3e669 100644 --- a/.azuredevops/components/rccl.yml +++ b/.azuredevops/components/rccl.yml @@ -24,7 +24,7 @@ parameters: - ROCR-Runtime - clr - rocminfo - - rocm-smi-lib + - rocm_smi_lib - rocprofiler-register - rocm-core - HIPIFY diff --git a/.azuredevops/components/rdc.yml b/.azuredevops/components/rdc.yml index 41a445b18..9cb48f741 100644 --- a/.azuredevops/components/rdc.yml +++ b/.azuredevops/components/rdc.yml @@ -26,7 +26,7 @@ parameters: - ROCR-Runtime - clr - rocminfo - - rocm-smi-lib + - rocm_smi_lib - amdsmi jobs: diff --git a/.azuredevops/components/rocBLAS.yml b/.azuredevops/components/rocBLAS.yml index b8cfd33d2..a67c1d112 100644 --- a/.azuredevops/components/rocBLAS.yml +++ b/.azuredevops/components/rocBLAS.yml @@ -33,7 +33,7 @@ parameters: - clr - rocminfo - rocprofiler-register - - rocm-smi-lib + - rocm_smi_lib - rocm-core - aomp - aomp-extras diff --git a/.azuredevops/components/rocWMMA.yml b/.azuredevops/components/rocWMMA.yml index e1179419e..922d80baf 100644 --- a/.azuredevops/components/rocWMMA.yml +++ b/.azuredevops/components/rocWMMA.yml @@ -27,7 +27,7 @@ parameters: - rocminfo - rocBLAS - aomp - - rocm-smi-lib + - rocm_smi_lib jobs: - job: rocWMMA diff --git a/.azuredevops/components/rocprofiler.yml b/.azuredevops/components/rocprofiler.yml index fdacca24a..716dbda6b 100644 --- a/.azuredevops/components/rocprofiler.yml +++ b/.azuredevops/components/rocprofiler.yml @@ -34,7 +34,7 @@ parameters: - llvm-project - ROCdbgapi - rocm-cmake - - rocm-smi-lib + - rocm_smi_lib - rocminfo - ROCR-Runtime - rocprofiler-register diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index e89046a63..f0d078450 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -45,7 +45,6 @@ parameters: rocm_smi_lib: $(rocm-smi-lib-pipeline-id) rocminfo: $(rocminfo-pipeline-id) rocMLIR: $(rocmlir-pipeline-id) - rocm-smi-lib: $(rocm-smi-lib-pipeline-id) rocPRIM: $(rocprim-pipeline-id) rocprofiler-register: $(rocprofiler-register-pipeline-id) ROCR-Runtime: $(rocr-runtime-pipeline-id) @@ -80,7 +79,6 @@ parameters: rocm_smi_lib: $(rocm-smi-lib-tagged-pipeline-id) rocminfo: $(rocminfo-tagged-pipeline-id) rocMLIR: $(rocmlir-tagged-pipeline-id) - rocm-smi-lib: $(rocm-smi-lib-tagged-pipeline-id) rocPRIM: $(rocprim-tagged-pipeline-id) rocprofiler-register: $(rocprofiler-register-tagged-pipeline-id) ROCR-Runtime: $(rocr-runtime-tagged-pipeline-id) From a65db6b47dd4a325b8c94a961046d648f8f3fcec Mon Sep 17 00:00:00 2001 From: amd-jmacaran Date: Fri, 31 May 2024 15:25:42 -0400 Subject: [PATCH 075/175] temp change for testing experimental --- .azuredevops/components/hipTensor.yml | 4 ++-- .azuredevops/components/rdc.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index ba9acfb31..796dafb04 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -39,13 +39,13 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - - ${{ if eq(parameters.checkoutRef, '') }}: + - ${{ if eq(parameters.checkoutRef, 'develop') }}: - 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, '') }}: + - ${{ if ne(parameters.checkoutRef, 'develop') }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmDependencies }} diff --git a/.azuredevops/components/rdc.yml b/.azuredevops/components/rdc.yml index d1925ffc2..b274bebfb 100644 --- a/.azuredevops/components/rdc.yml +++ b/.azuredevops/components/rdc.yml @@ -46,13 +46,13 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - - ${{ if eq(parameters.checkoutRef, '') }}: + - ${{ if eq(parameters.checkoutRef, 'develop') }}: - 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, '') }}: + - ${{ if ne(parameters.checkoutRef, 'develop') }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmDependencies }} From 5fec2e1ca4544d469ec32fd30a99c97b28661f8b Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Fri, 31 May 2024 13:49:14 -0600 Subject: [PATCH 076/175] Update documentation requirements --- .readthedocs.yaml | 16 +++--- docs/sphinx/requirements.in | 3 +- docs/sphinx/requirements.txt | 100 ++++++++++------------------------- 3 files changed, 39 insertions(+), 80 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 4b227351a..b7dab1e99 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,16 +3,20 @@ version: 2 -build: - os: ubuntu-22.04 - tools: - python: "3.10" - sphinx: configuration: docs/conf.py +formats: [htmlzip, pdf, epub] + python: install: - requirements: docs/sphinx/requirements.txt -formats: [htmlzip] +build: + os: ubuntu-22.04 + tools: + python: "3.10" + apt_packages: + - "doxygen" + - "gfortran" # For pre-processing fortran sources + - "graphviz" # For dot graphs in doxygen diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index cdee26699..d9bae715b 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1,2 +1 @@ -rocm-docs-core==1.1.1 -sphinx-reredirects==0.1.3 +rocm-docs-core[api_reference]==1.2.0 diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 84c0d167d..a25b13c0e 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -4,22 +4,16 @@ # # pip-compile requirements.in # ---extra-index-url https://test.pypi.org/simple/ - -accessible-pygments==0.0.4 +accessible-pygments==0.0.5 # via pydata-sphinx-theme alabaster==0.7.16 # via sphinx -autodoc==0.5.0 - # via -r requirements.in -babel==2.14.0 +babel==2.15.0 # via # pydata-sphinx-theme # sphinx beautifulsoup4==4.12.3 - # via - # pydata-sphinx-theme - # webtest + # via pydata-sphinx-theme breathe==4.35.0 # via rocm-docs-core certifi==2024.2.2 @@ -37,24 +31,17 @@ click==8.1.7 # sphinx-external-toc click-log==0.4.0 # via doxysphinx -cryptography==42.0.5 +cryptography==42.0.7 # via pyjwt -decorator==5.1.1 - # via autodoc -defusedxml==0.7.1 - # via sphinxcontrib-datatemplates deprecated==1.2.14 # via pygithub docutils==0.21.2 # via # breathe # myst-parser - # pybtex-docutils # pydata-sphinx-theme # sphinx - # sphinx-substitution-extensions - # sphinxcontrib-bibtex -doxysphinx==3.3.7 +doxysphinx==3.3.8 # via rocm-docs-core fastjsonschema==2.19.1 # via rocm-docs-core @@ -62,12 +49,6 @@ gitdb==4.0.11 # via gitpython gitpython==3.1.43 # via rocm-docs-core -hip-python==6.1.0.470.16 - # via - # -r requirements.in - # hip-python-as-cuda -hip-python-as-cuda==6.1.0.470.16 - # via -r requirements.in idna==3.7 # via requests imagesize==1.4.1 @@ -76,8 +57,6 @@ jinja2==3.1.4 # via # myst-parser # sphinx -latexcodec==3.0.0 - # via pybtex libsass==0.22.0 # via doxysphinx lxml==4.9.4 @@ -88,35 +67,29 @@ markdown-it-py==3.0.0 # myst-parser markupsafe==2.1.5 # via jinja2 -mdit-py-plugins==0.4.0 +mdit-py-plugins==0.4.1 # via myst-parser mdurl==0.1.2 # via markdown-it-py -mpire==2.10.1 +mpire==2.10.2 # via doxysphinx -myst-parser==3.0.0 +myst-parser==3.0.1 # via rocm-docs-core numpy==1.26.4 - # via -r requirements.in + # via doxysphinx packaging==24.0 # via # pydata-sphinx-theme # sphinx -pybtex==0.24.0 - # via - # pybtex-docutils - # sphinxcontrib-bibtex -pybtex-docutils==1.0.3 - # via sphinxcontrib-bibtex pycparser==2.22 # via cffi -pydata-sphinx-theme==0.15.2 +pydata-sphinx-theme==0.15.3 # via # rocm-docs-core # sphinx-book-theme pygithub==2.3.0 # via rocm-docs-core -pygments==2.17.2 +pygments==2.18.0 # via # accessible-pygments # mpire @@ -133,18 +106,14 @@ pyparsing==3.1.2 pyyaml==6.0.1 # via # myst-parser - # pybtex # rocm-docs-core # sphinx-external-toc - # sphinxcontrib-datatemplates -requests==2.31.0 +requests==2.32.3 # via # pygithub # sphinx -rocm-docs-core==1.1.1 +rocm-docs-core[api-reference]==1.2.0 # via -r requirements.in -six==1.16.0 - # via pybtex smmap==5.0.1 # via gitdb snowballstemmer==2.2.0 @@ -158,56 +127,43 @@ sphinx==7.3.7 # pydata-sphinx-theme # rocm-docs-core # sphinx-book-theme - # sphinx-collapse # sphinx-copybutton # sphinx-design # sphinx-external-toc # sphinx-notfound-page - # sphinx-reredirects - # sphinx-substitution-extensions - # sphinxcontrib-bibtex - # sphinxcontrib-datatemplates - # sphinxcontrib-moderncmakedomain - # sphinxcontrib-runcmd sphinx-book-theme==1.1.2 # via rocm-docs-core -sphinx-collapse==0.1.3 - # via -r requirements.in sphinx-copybutton==0.5.2 # via rocm-docs-core -sphinx-design==0.5.0 +sphinx-design==0.6.0 # via rocm-docs-core sphinx-external-toc==1.0.1 # via rocm-docs-core -sphinx-notfound-page==1.0.0 +sphinx-notfound-page==1.0.2 # via rocm-docs-core -sphinx-reredirects==0.1.3 - # via -r requirements.in -sphinx-substitution-extensions==2022.2.16 - # via -r requirements.in sphinxcontrib-applehelp==1.0.8 # via sphinx -sphinxcontrib-bibtex==2.6.2 - # via -r requirements.in -sphinxcontrib-datatemplates==0.11.0 - # via -r requirements.in sphinxcontrib-devhelp==1.0.6 # via sphinx sphinxcontrib-htmlhelp==2.0.5 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-moderncmakedomain==3.27.0 - # via -r requirements.in sphinxcontrib-qthelp==1.0.7 # via sphinx -sphinxcontrib-runcmd==0.2.0 - # via sphinxcontrib-datatemplates sphinxcontrib-serializinghtml==1.1.10 # via sphinx -typing-extensions==4.5.0 - # via pydata-sphinx-theme -urllib3==1.26.18 - # via requests -wrapt==1.14.1 +tomli==2.0.1 + # via sphinx +tqdm==4.66.4 + # via mpire +typing-extensions==4.12.0 + # via + # pydata-sphinx-theme + # pygithub +urllib3==2.2.1 + # via + # pygithub + # requests +wrapt==1.16.0 # via deprecated From bf19dd1dc8f6566c55fc9f099a4c60e93a7ed495 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Fri, 31 May 2024 15:18:53 -0600 Subject: [PATCH 077/175] Update RTD config --- .readthedocs.yaml | 2 +- docs/sphinx/requirements.in | 3 ++- docs/sphinx/requirements.txt | 29 +++++------------------------ 3 files changed, 8 insertions(+), 26 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index b7dab1e99..bf7d46943 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -6,7 +6,7 @@ version: 2 sphinx: configuration: docs/conf.py -formats: [htmlzip, pdf, epub] +formats: [htmlzip] python: install: diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index d9bae715b..31468d1a5 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1 +1,2 @@ -rocm-docs-core[api_reference]==1.2.0 +rocm-docs-core==1.2.0 +sphinx-reredirects diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index a25b13c0e..2e18ab9d2 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -25,12 +25,7 @@ cffi==1.16.0 charset-normalizer==3.3.2 # via requests click==8.1.7 - # via - # click-log - # doxysphinx - # sphinx-external-toc -click-log==0.4.0 - # via doxysphinx + # via sphinx-external-toc cryptography==42.0.7 # via pyjwt deprecated==1.2.14 @@ -41,8 +36,6 @@ docutils==0.21.2 # myst-parser # pydata-sphinx-theme # sphinx -doxysphinx==3.3.8 - # via rocm-docs-core fastjsonschema==2.19.1 # via rocm-docs-core gitdb==4.0.11 @@ -57,10 +50,6 @@ jinja2==3.1.4 # via # myst-parser # sphinx -libsass==0.22.0 - # via doxysphinx -lxml==4.9.4 - # via doxysphinx markdown-it-py==3.0.0 # via # mdit-py-plugins @@ -71,12 +60,8 @@ mdit-py-plugins==0.4.1 # via myst-parser mdurl==0.1.2 # via markdown-it-py -mpire==2.10.2 - # via doxysphinx myst-parser==3.0.1 # via rocm-docs-core -numpy==1.26.4 - # via doxysphinx packaging==24.0 # via # pydata-sphinx-theme @@ -92,17 +77,12 @@ pygithub==2.3.0 pygments==2.18.0 # via # accessible-pygments - # mpire # pydata-sphinx-theme # sphinx -pyjson5==1.6.6 - # via doxysphinx pyjwt[crypto]==2.8.0 # via pygithub pynacl==1.5.0 # via pygithub -pyparsing==3.1.2 - # via doxysphinx pyyaml==6.0.1 # via # myst-parser @@ -112,7 +92,7 @@ requests==2.32.3 # via # pygithub # sphinx -rocm-docs-core[api-reference]==1.2.0 +rocm-docs-core==1.2.0 # via -r requirements.in smmap==5.0.1 # via gitdb @@ -131,6 +111,7 @@ sphinx==7.3.7 # sphinx-design # sphinx-external-toc # sphinx-notfound-page + # sphinx-reredirects sphinx-book-theme==1.1.2 # via rocm-docs-core sphinx-copybutton==0.5.2 @@ -141,6 +122,8 @@ sphinx-external-toc==1.0.1 # via rocm-docs-core sphinx-notfound-page==1.0.2 # via rocm-docs-core +sphinx-reredirects==0.1.3 + # via -r requirements.in sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -155,8 +138,6 @@ sphinxcontrib-serializinghtml==1.1.10 # via sphinx tomli==2.0.1 # via sphinx -tqdm==4.66.4 - # via mpire typing-extensions==4.12.0 # via # pydata-sphinx-theme From 35c17fcce540386bac1da69bb0e419eb5c43c7a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 May 2024 22:07:13 +0000 Subject: [PATCH 078/175] Bump rocm-docs-core from 1.1.1 to 1.2.0 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/RadeonOpenCompute/rocm-docs-core) from 1.1.1 to 1.2.0. - [Release notes](https://github.com/RadeonOpenCompute/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/RadeonOpenCompute/rocm-docs-core/compare/v1.1.1...v1.2.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- docs/sphinx/requirements.in | 2 +- docs/sphinx/requirements.txt | 85 +++++------------------------------- 2 files changed, 12 insertions(+), 75 deletions(-) diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index cdee26699..84fbdfb56 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1,2 +1,2 @@ -rocm-docs-core==1.1.1 +rocm-docs-core==1.2.0 sphinx-reredirects==0.1.3 diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 84c0d167d..4c2c3678f 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -4,22 +4,16 @@ # # pip-compile requirements.in # ---extra-index-url https://test.pypi.org/simple/ - accessible-pygments==0.0.4 # via pydata-sphinx-theme alabaster==0.7.16 # via sphinx -autodoc==0.5.0 - # via -r requirements.in babel==2.14.0 # via # pydata-sphinx-theme # sphinx beautifulsoup4==4.12.3 - # via - # pydata-sphinx-theme - # webtest + # via pydata-sphinx-theme breathe==4.35.0 # via rocm-docs-core certifi==2024.2.2 @@ -31,43 +25,23 @@ cffi==1.16.0 charset-normalizer==3.3.2 # via requests click==8.1.7 - # via - # click-log - # doxysphinx - # sphinx-external-toc -click-log==0.4.0 - # via doxysphinx + # via sphinx-external-toc cryptography==42.0.5 # via pyjwt -decorator==5.1.1 - # via autodoc -defusedxml==0.7.1 - # via sphinxcontrib-datatemplates deprecated==1.2.14 # via pygithub docutils==0.21.2 # via # breathe # myst-parser - # pybtex-docutils # pydata-sphinx-theme # sphinx - # sphinx-substitution-extensions - # sphinxcontrib-bibtex -doxysphinx==3.3.7 - # via rocm-docs-core fastjsonschema==2.19.1 # via rocm-docs-core gitdb==4.0.11 # via gitpython gitpython==3.1.43 # via rocm-docs-core -hip-python==6.1.0.470.16 - # via - # -r requirements.in - # hip-python-as-cuda -hip-python-as-cuda==6.1.0.470.16 - # via -r requirements.in idna==3.7 # via requests imagesize==1.4.1 @@ -76,12 +50,6 @@ jinja2==3.1.4 # via # myst-parser # sphinx -latexcodec==3.0.0 - # via pybtex -libsass==0.22.0 - # via doxysphinx -lxml==4.9.4 - # via doxysphinx markdown-it-py==3.0.0 # via # mdit-py-plugins @@ -92,22 +60,12 @@ mdit-py-plugins==0.4.0 # via myst-parser mdurl==0.1.2 # via markdown-it-py -mpire==2.10.1 - # via doxysphinx myst-parser==3.0.0 # via rocm-docs-core -numpy==1.26.4 - # via -r requirements.in packaging==24.0 # via # pydata-sphinx-theme # sphinx -pybtex==0.24.0 - # via - # pybtex-docutils - # sphinxcontrib-bibtex -pybtex-docutils==1.0.3 - # via sphinxcontrib-bibtex pycparser==2.22 # via cffi pydata-sphinx-theme==0.15.2 @@ -119,32 +77,23 @@ pygithub==2.3.0 pygments==2.17.2 # via # accessible-pygments - # mpire # pydata-sphinx-theme # sphinx -pyjson5==1.6.6 - # via doxysphinx pyjwt[crypto]==2.8.0 # via pygithub pynacl==1.5.0 # via pygithub -pyparsing==3.1.2 - # via doxysphinx pyyaml==6.0.1 # via # myst-parser - # pybtex # rocm-docs-core # sphinx-external-toc - # sphinxcontrib-datatemplates requests==2.31.0 # via # pygithub # sphinx -rocm-docs-core==1.1.1 +rocm-docs-core==1.2.0 # via -r requirements.in -six==1.16.0 - # via pybtex smmap==5.0.1 # via gitdb snowballstemmer==2.2.0 @@ -158,21 +107,13 @@ sphinx==7.3.7 # pydata-sphinx-theme # rocm-docs-core # sphinx-book-theme - # sphinx-collapse # sphinx-copybutton # sphinx-design # sphinx-external-toc # sphinx-notfound-page # sphinx-reredirects - # sphinx-substitution-extensions - # sphinxcontrib-bibtex - # sphinxcontrib-datatemplates - # sphinxcontrib-moderncmakedomain - # sphinxcontrib-runcmd sphinx-book-theme==1.1.2 # via rocm-docs-core -sphinx-collapse==0.1.3 - # via -r requirements.in sphinx-copybutton==0.5.2 # via rocm-docs-core sphinx-design==0.5.0 @@ -183,31 +124,27 @@ sphinx-notfound-page==1.0.0 # via rocm-docs-core sphinx-reredirects==0.1.3 # via -r requirements.in -sphinx-substitution-extensions==2022.2.16 - # via -r requirements.in sphinxcontrib-applehelp==1.0.8 # via sphinx -sphinxcontrib-bibtex==2.6.2 - # via -r requirements.in -sphinxcontrib-datatemplates==0.11.0 - # via -r requirements.in sphinxcontrib-devhelp==1.0.6 # via sphinx sphinxcontrib-htmlhelp==2.0.5 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-moderncmakedomain==3.27.0 - # via -r requirements.in sphinxcontrib-qthelp==1.0.7 # via sphinx -sphinxcontrib-runcmd==0.2.0 - # via sphinxcontrib-datatemplates sphinxcontrib-serializinghtml==1.1.10 # via sphinx +tomli==2.0.1 + # via sphinx typing-extensions==4.5.0 - # via pydata-sphinx-theme + # via + # pydata-sphinx-theme + # pygithub urllib3==1.26.18 - # via requests + # via + # pygithub + # requests wrapt==1.14.1 # via deprecated From 16fca72626386e465437c75c2b03a45ca953ad81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 May 2024 23:02:26 +0000 Subject: [PATCH 079/175] Bump requests from 2.31.0 to 2.32.2 in /docs/sphinx Bumps [requests](https://github.com/psf/requests) from 2.31.0 to 2.32.2. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.31.0...v2.32.2) --- updated-dependencies: - dependency-name: requests dependency-type: indirect ... Signed-off-by: dependabot[bot] --- docs/sphinx/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 4c2c3678f..46954c981 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -88,7 +88,7 @@ pyyaml==6.0.1 # myst-parser # rocm-docs-core # sphinx-external-toc -requests==2.31.0 +requests==2.32.2 # via # pygithub # sphinx From 5025a03f794f638f4aa2db528f101ddcf565bac4 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 3 Jun 2024 10:39:36 -0400 Subject: [PATCH 080/175] change hipTensor compiler to hipcc --- .azuredevops/components/hipTensor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 796dafb04..167d13c83 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -54,7 +54,8 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/llvm - -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc -DROCM_PATH="$(Agent.BuildDirectory)/rocm" -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON From 205790159d91c9a282bc9086c67884c676ac2b17 Mon Sep 17 00:00:00 2001 From: danielsu-amd Date: Mon, 3 Jun 2024 10:52:56 -0400 Subject: [PATCH 081/175] External CI: use pipelined rocm-core for rocprofiler (#3215) --- .azuredevops/components/rocprofiler.yml | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/.azuredevops/components/rocprofiler.yml b/.azuredevops/components/rocprofiler.yml index 716dbda6b..c255c5227 100644 --- a/.azuredevops/components/rocprofiler.yml +++ b/.azuredevops/components/rocprofiler.yml @@ -34,6 +34,7 @@ parameters: - llvm-project - ROCdbgapi - rocm-cmake + - rocm-core - rocm_smi_lib - rocminfo - ROCR-Runtime @@ -62,29 +63,7 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} -# Manually download rocm-core and aqlprofile, hard-coded 6.1.0 versions - - task: Bash@3 - displayName: 'Download rocm-core' - inputs: - targetType: inline - script: wget -nv https://repo.radeon.com/rocm/apt/6.1/pool/main/r/rocm-core/rocm-core_6.1.0.60100-82~22.04_amd64.deb - workingDirectory: '$(Pipeline.Workspace)' - - task: Bash@3 - displayName: 'Extract rocm-core' - inputs: - targetType: inline - script: | - mkdir rocm-core - dpkg-deb -R rocm-core_6.1.0.60100-82~22.04_amd64.deb rocm-core - workingDirectory: '$(Pipeline.Workspace)' - - task: Bash@3 - displayName: 'Move rocm-core' - inputs: - targetType: inline - script: | - mkdir -p $(Agent.BuildDirectory)/rocm - cp -R rocm-core/opt/rocm-6.1.0/* $(Agent.BuildDirectory)/rocm - workingDirectory: '$(Pipeline.Workspace)' +# Manually download aqlprofile, hard-coded 6.1.0 version - task: Bash@3 displayName: 'Download aqlprofile' inputs: From f52bc2bc6835e476ea43b3e6de2a0eec8cc3c3fe Mon Sep 17 00:00:00 2001 From: danielsu-amd Date: Mon, 3 Jun 2024 13:41:30 -0400 Subject: [PATCH 082/175] External CI: Add rocBLAS dependency to rocSPARSE (#3216) --- .azuredevops/components/rocSPARSE.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/components/rocSPARSE.yml b/.azuredevops/components/rocSPARSE.yml index e0dcc1e16..726776446 100644 --- a/.azuredevops/components/rocSPARSE.yml +++ b/.azuredevops/components/rocSPARSE.yml @@ -25,6 +25,7 @@ parameters: - llvm-project - ROCR-Runtime - clr + - rocBLAS - rocminfo - rocPRIM - rocprofiler-register From fed33835a0d6d7585072a61d0ff3f56805975b24 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Mon, 3 Jun 2024 11:04:33 -0700 Subject: [PATCH 083/175] Add "Fine Tuning LLMs" how to guide (#3124) * Add Fine Tuning LLMs how to guide * Reorg and refactor Fine-tuning LLMs with ROCm Update index and headings Fix formatting and update toc Split out content from index to overview.rst Add metadata Clean up overview Add inference sections, fix rst errors, clean up single-gpu-fine-tuning Combine fine-tuning and inference guides Fix some links and formatting Update toc and add formatting fixes Add ck kernel fusion content Update toc Clean up model quantization and acceleration Add CK images Clean up profiling Update triton kernel performance optimization Update llm inference frameworks guide Disable automatic number of figures and tables in Sphinx conf Change tabs to spaces Change heading to end with -ing Add link fixes and heading updates Add rocprof/Omniperf/Omnitrace section Update profiling and debugging guide Add formatting fixes Satisfy spellcheck Fix words Delete unused file Finish overview Clean up first 4 sections Multi-gpu fine-tuning guide: slight fixes Update toc Remove tabs Formatting fixes * Minor wording updates * Add some clean-up * Update profiling and debugging gudie * Fix Omnitrace link * Update ck kernel fusion with latest * Update CK formatting * Fix perfetto link syntax * Fix typos and add blurbs * Add fixes to Triton optimization doc * Tabify saving adapters / models section * Fix linting errors - spellcheck Fix spelling and grammar Satisfy linter Update wording in profiling guide Add fixes to satisfy linter More fixes for linting in Triton guide More linting fixes Spellcheck in CK guide * Improve triton guide Fix linting errors and optics * Add occupancy / vgpr table Change some wording * Re-add tunableop * Add missing indent in _toc.yml * Remove ckProfiler references * Add links to resources * Add refs in CK optimization guide * Rename files and fix internal links * Organize tuning guides Reorg triton * Add compute unit diagram * Remove AutoAWQ * Add higher res image for Perfetto trace example * Update link text * Update fig nums * Update some formatting * Update "Inductor" * Change "Inductor" to TorchInductor * Add link to official TorchInductor docs --- .../fine-tuning-llms/attention-module.png | Bin 0 -> 44574 bytes .../fine-tuning-llms/ck-comparisons.jpg | Bin 0 -> 114864 bytes .../fine-tuning-llms/ck-compilation.jpg | Bin 0 -> 192896 bytes .../fine-tuning-llms/ck-inference_flow.jpg | Bin 0 -> 141380 bytes .../fine-tuning-llms/ck-kernel_launch.jpg | Bin 0 -> 62929 bytes .../fine-tuning-llms/ck-operation_flow.jpg | Bin 0 -> 27502 bytes .../fine-tuning-llms/ck-root_instance.jpg | Bin 0 -> 87998 bytes .../ck-template_parameters.jpg | Bin 0 -> 50050 bytes .../how-to/fine-tuning-llms/compute-unit.png | Bin 0 -> 45716 bytes .../fine-tuning-llms/occupancy-vgpr.png | Bin 0 -> 295160 bytes .../fine-tuning-llms/omniperf-analysis.png | Bin 0 -> 156553 bytes .../fine-tuning-llms/omnitrace-timeline.png | Bin 0 -> 224582 bytes .../fine-tuning-llms/perfetto-trace.svg | 14 + .../profiling-perfetto-ui.png | Bin 0 -> 75184 bytes .../how-to/fine-tuning-llms/tunableop.png | Bin 0 -> 29108 bytes .../fine-tuning-llms/vllm-single-gpu-log.png | Bin 0 -> 44310 bytes .../how-to/fine-tuning-llms/weight-update.png | Bin 0 -> 25668 bytes docs/how-to/deep-learning-rocm.rst | 5 +- .../fine-tuning-and-inference.rst | 20 + docs/how-to/fine-tuning-llms/index.rst | 37 ++ .../llm-inference-frameworks.rst | 218 ++++++++ .../model-acceleration-libraries.rst | 249 +++++++++ .../fine-tuning-llms/model-quantization.rst | 257 +++++++++ .../multi-gpu-fine-tuning-and-inference.rst | 236 ++++++++ .../optimizing-triton-kernel.rst | 388 +++++++++++++ .../optimizing-with-composable-kernel.md | 484 +++++++++++++++++ docs/how-to/fine-tuning-llms/overview.rst | 104 ++++ .../profiling-and-debugging.rst | 217 ++++++++ .../single-gpu-fine-tuning-and-inference.rst | 509 ++++++++++++++++++ docs/how-to/rocm-for-ai/train-a-model.rst | 5 +- docs/index.md | 1 + docs/sphinx/_toc.yml.in | 21 + 32 files changed, 2763 insertions(+), 2 deletions(-) create mode 100644 docs/data/how-to/fine-tuning-llms/attention-module.png create mode 100644 docs/data/how-to/fine-tuning-llms/ck-comparisons.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-compilation.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-inference_flow.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-kernel_launch.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-operation_flow.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-root_instance.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-template_parameters.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/compute-unit.png create mode 100644 docs/data/how-to/fine-tuning-llms/occupancy-vgpr.png create mode 100644 docs/data/how-to/fine-tuning-llms/omniperf-analysis.png create mode 100644 docs/data/how-to/fine-tuning-llms/omnitrace-timeline.png create mode 100644 docs/data/how-to/fine-tuning-llms/perfetto-trace.svg create mode 100644 docs/data/how-to/fine-tuning-llms/profiling-perfetto-ui.png create mode 100644 docs/data/how-to/fine-tuning-llms/tunableop.png create mode 100644 docs/data/how-to/fine-tuning-llms/vllm-single-gpu-log.png create mode 100644 docs/data/how-to/fine-tuning-llms/weight-update.png create mode 100644 docs/how-to/fine-tuning-llms/fine-tuning-and-inference.rst create mode 100644 docs/how-to/fine-tuning-llms/index.rst create mode 100644 docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst create mode 100644 docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst create mode 100644 docs/how-to/fine-tuning-llms/model-quantization.rst create mode 100644 docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst create mode 100644 docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst create mode 100644 docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md create mode 100644 docs/how-to/fine-tuning-llms/overview.rst create mode 100644 docs/how-to/fine-tuning-llms/profiling-and-debugging.rst create mode 100644 docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst diff --git a/docs/data/how-to/fine-tuning-llms/attention-module.png b/docs/data/how-to/fine-tuning-llms/attention-module.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd983456696e486ac758d8bafb159a2cc1e23c5 GIT binary patch literal 44574 zcmaI8by!qi)b}mYNOyN5Dc#M`jR?{p9WrzyDBU65t(3HsfHVv+fOJXD0Fr_*0`KAH z{XX~m&-0$^nhOpWXPd8Le)0tO`{M^GgA14H$&=b9 zRYf@iKl9@?)OK&B8{t!A=vpy7CqsD=J$WR%<4ivE9X-Q4dJbcD5Ef^2$zsX7Sn|;C zLv?t_1{ylpM+NQ=KeogsUY#6W6kPAD?@zp52tMxq@g3f=ALIX~C{0i4@fdtQ_#n>y z#^AqW0?mN&a}{u8%~vTJ>jDS=C*7Ea65y~lDkZe~?}E?DEd8;uv1eBIH~ZSpc-k#5 zLVIrZsBSHEXW0I`ir>ej_wLH^qnVGYcHr_XR2p%V=CkI#&^$ zEMeszwGQih?~~`+{+^FlUQEgKjyAbIEIZe){jIM$csqg1=n{Igrc+}oU;WFr#0!@t z9j?Wywm*$ierqFFeSB8pmDgA@7lK*-)kdlMPFQ%&YgXCpCcRR!yl+N@E?;=bHjS0n z-9E$6NELC?8yfKYlSRJydFsb98sAlZ?&fKEP1;esrM@4g?rWfsl(rdVs`6Pa32yF& zZ%-$$e#Y?@kiN1_*?VwEw$K(yhZ`DbJORu=nl23;RfJIwML_wN+2?bs+08N9rr7)P8evvOdYc7=8y;5zl7NAMn!=2c9k91>it;z=1V7;)TL$ zzn_jAk<|MQ@)o6!QZ6TU4a?l0!Qh|jwLaB-h3l*j(A}S2URKI zNVG{5W0g95HO09%iF4BuAE~z%8;dD>LTCk3Apf6G(GXGFUjj_*nhwv~f3&!Rt| zR7+fVBF(Z?=`LYk+$Gb2yBylgbou3~9<7+jzs8<#57@O$x8|jMwHxq$+j21Sv>2$E z28r7Kta3H2&dZ+r-}Q7~wp$LfZo}AD^k{|Pqilt%e=UN4&(FRnyqRb|D2WqZDYx;g z>)3qvEEZ}VGI3V2=A$%-QcP%N*}Th2c?_oEQgiiHsD2C+;FVf{yY+Xa=W{!3j1#K; z7Om~t6RLNdD=ZJ<+duKH4_r&$K`)a?6qpKJzo6XDQs?a!bZwdx)-;D@b?IEM2cCHS z>ev^?6)c+`IrMR3*?DZ*9JrsQ5B`>eu6WX@GEDLfrP{(8U_mi8?~148U<$ynj}HL6 zVOg_tT}MUsf%#YzS@(ew%#Js3sUeu_bA$ZX^D(a6oA9K-)omz+eO`+BE%YPqZd;Ob z0IF$;*n5L2NhKBWdbg34;}3e>k3M^l7*ChZ0>WS@Ru9n~2JJ`$x;fyTg@3O5jit8# zm;g>b=-mPTB)n)D;dR`yKq@5}{`C^*e(Hfojl&IhBPX@)!OqJ*E3Ub%nz0L7qL6s6 zi8K0T8qD$l5)z^?wMZMlDYHOA`TuQx;&A)MaZG_DbUQ&r%RS^Gm&$!QNXDBZ!)XG& z3?4K{QrhH+q3cu_F{uJG9B>+;4!}z8}ugVb(_n%^PUs7&RTz0-U)yER3#XlkK}8b4 znhucZ`ds^zn{a3+H#(sTMqE;iH$8g&_e7K^Qtg(*w8?pHohkIrRyd zhI4#-F7hXv<4*4dhjrLnsoc97vyBKE757Ob^_`DqVri8g2(|#{EKG!+_s+>>UTLCI z*PG5IoPBGl>-_a~P?9DtC=q9MjqW0An0VY9IZ5U>=!wKh7kHbMu8cEjpMK#_rS$LW zfnUzDV&)&<5xD71O3n2|Em%lV*vE&j{mG>F#ilsan96O^r|U$rJs^8CDWBE$SD)ci zuiTNacjjN0u}L|y!{h8Zh8(^>3BD|)lQKx0oCX6)x;tmTeLdh%2+=*e&hI_Q$*q|~ zhl6dorl9M5eiuEDm_EKc(*in6!DJwOZS>H{Km$MEBZhi@A>LvaE1hj;JicBu!^Zx0 z6R-4N$@)mqtJQ`dCeAnsS;*3!bq5zv+~z3;dTo?Y8d-B5_)_QyLzG~CHm=U_?w>hh z-3qD_8fb+b*sXo*gV#=qitrg5(^xcu;$r%HY5exS4y2o;W2gHh*c~h#&7Zh^pQfy_ zOnM-;_X*}jV4MC7$Ud~qD<>aP;EYdpJhtAG3FERiZb*ql@w6hBw=O#@P+*qdhO=** zk;fEayNM2BbOnDWP!UAnGaFVv_?wC;FUy$h{O)oGaXLvZQ%Om*byTZev{ucb7(?pODd2wR5Fz+Zv}FF0;Y%~a zyrvJA%lXZ?$3+piIX00N;zNGPZBm3^=YM~mEPc_ApZNTz_d5t;;>8s8GH&{^Q>mFf z5W(m>fgwFni?o;(vVTG}vh1HRt1fT2`7+K(qn|hg;z!bJ?iTrvTq9%77$jfa1F1&w zp-S0X9{av)Sxa;)QtUjzt2R0R`MRieW^ zLouosR{tAavpqx~{HY}B04dS&uEWAiu|>$uu7Z<{+l6?U8+?%v|BG(mglgP&at^l6 zyM_y}>|Wy9x(ub_&5UJPfWJ9rK})!jNa z-OnIXVOWoqi!hVw)m+SPwa!a33pkYp6>d|Erd6EZA-Ph#iW+kklx^M514E`;w=)ew znEHM@G4=Zo{!ZIepo~Wl`fCUMB#I(XJt}mF#Cl;7%#gSn;xEjyQW)$KQGxTl$tdYk zK2_-3Igf*dKjLDZvg=dFMXWE!)YO*bSIr>b^^|?;uBIFM31W;BZI>hzyCAB!5dHA0 zGqVU7#Z4RA)ZNYq5#k%-1*KuA(xB)JonlpKv@Wk_>92UaXL5QtW^V^cG%F!j#j`On zeU*8hYTNAiG{uQwg8eY%Tyb01#^G1alNc+*Dx8c~A1I@8G8CRN{)`#siP%ZzQ=J!U zW@BR_8MbCC-J3%~63Vq1d`le>%-xpnVc_`5BqMZXWnFk;lp*StRp#T7`&!sHY#y(= zvb@v)CqdDxMH?z_SC>vLEmBuUzJgqPub(k&xCvJ_4~p-WPdlc9-7cslOY^c84Wx+l zU_FRm66gdScxbN++U#ivMGf;2-;E~g#-yF_l~9jprVD(>_+7!cNQilxw8^A_zR|!6 z8eFFJgmyB>Lg)6K(${62DAJpeoJbK95_@Ver>?m4IcXy+Zxl6HGwFJ`ZPDoArGduN z+XxJA=B>fK?Ga?u!$^F^iMTJd`YHv=+2U2?lU&+PF^S(pXp#tewBAe#Ex2IJhu(;* z_|WIK+)Ar4SG~|*Xl$=ydPV2CK6*3th64IQ>t$4|M+zq)eXY3mP1!^jSQf7B*H84J zHJlm5y<7{HOI?^1 z%MZR<8Yp|7PlBiX{XK{vDdnrHUgq)YePvgon!UZL7@c#KMm}CH%@>95Gf2zz$P?Yz z-u>d*bZuZZ$H-6Z+l~vv?xvM;{Z60QGe*nnguU{fa_<-TvM5$6Qp)8q%frp|ssgEK z4!gpFho2~|!1tl_iuUBg%8bCodO10r6oFjO7U=xM;2i>kf7(F-At@!LumZw-+rEHd zY)@^66ZW~6EFv|`e#5++rmEm#e=~TxRamNRQM>=eW{hios8-~!K=T6I=+!&6@FB#u z40m+kE{&J_kxEe+wB7g2d2`R~T-vXf4Vk)h4{eyYdI{&vic{zb9u6+_`u-1OyYo|3 zmhGi90pl}hCLXHjxW})N`PbseHPcuqzoQ8($sgkF(HNv|9LxhcZKQSv~=B)|7koent_NR%ekg)?(`& z!<8O(>$fx+)9hQkZ~|14@gjHjFe^WZ-AzvVi%DrqdP7C+<$Q z0pw+eWI}bg5~14XJ)Dt|1EJOwdsRko-s;(aiWYoiTvSEzsCP!7#nG$CzzHNUc6*?T zB}VWLH(!l!gNz=PvBhmYj75}=#>GW~XLS2{-S|FTkQkk z)s?szO`0W1av!cg+UPrwVPntnqAFSDx(z>|5Ek2$oalyx22!xZOmAWm1ni*^t<61< zkfepJv&xtDw|1)!k1{YT!>LjIu9i-=F;!7w-Zx>A`pKH}T2=ih-SAD$|EpG^N zvWfVjE&U~q<0(YbY}i1n^7BQRrx2yEQ=*NIy)M;II*MX;QglW_%+O4V6H}d(xCoO= z>+=WIw-{_kuazHCL`)8{R`j2M_?SBh`{L(DQ(3DGRi#+)Mh?nKaa!dfBHV=Kug9K5 ztYKTVS;?eJ@=FmxgLWvG+l}-x`>;p3WD2gM(g|0JY>aq7tee?fNh8f!9n#0Rzp8GX0w} zHR0wFUuq_+9m-T5>v(~;$Kta2m0An_j-uEFPEb)u&iBp@y(cZ;vr{b%+ zp^3KwiCBXLX0ZaFHS&8SNPLxM4T{yJO9|lZW@?ps2F*o4LZa9S3a{0rGkpERoE8vv zeEZp{mQwb+Rci{dg5Nw7OMg?+;53&8BU6?UC#t%Bx8#XJ!b%-KvFmi@JB>SxxvL8g z&aLg0`UBu0+e=mg_~$DAr6o^$)O>snS@gPDSub%?A3_>RA%m)&S0uwE48w~wF@bo=*?NvgJBq?C zd@?3i#?;X3X*7G6DVSXKQ+-$BdP^r88m>6W0$u*I76BnoPzMsT_B+9+3uloA5qwJm zYZg#-uk%gX#gq0%yr0J6UONiVn7cK4x|FEy&jx5a38=q>e!jhTnJ|dkGK1eQ`_K`j z;>r}*g=ioXOtD<46dW?w2G-pm_Fg%1!2{ctuk27ZJBH3gXZG5;&PvyPJst?kG1dCZ+KdsNnp%jP2N)BV{ zVIN3Fpp;TW9RlsdD_g~f&%D3;vz7PQIEf_U)Tygb=wT%rsiwG^Qi=M0kL#*dh&b>r z=g^jBd0ifd$~6cmy6vA!xx z_Odm>L(n0VzC4Nbs^xm$|M-q5Aq7&5vJ291b*#ft9DxjTe0TTadrQr9ME@%#QAW>P zwvxJxl6^idm}O)EmJ;&roBHlo1{sJV!?KS#vo*7-9z@CnoDPS$N^FRj?;JDeUJD3f zZll7QatBDNlY^xtZ7!U-ip}Wc1D@}qs=3Nly8u2Y@{MV@WB{k-(>BK|h|Lk*|+=oP=Rd@~)rScu)bv)~q;G*^;ea2(F)-dduET-`R6iTI3F>@ojja8`EEjRN*BijAe#5eJ{K?&e z%%tG&pHjJXx5tVW( zJlEE->}F2js#n`M^M1J{c(sGU9bAHc%ovD_ejW5V|F=UjU7#EL{8Vwg?>8x&;at6r z4mqhSkk7cN4;30#gz>!zP-af5BmpzDyZ^|{lxd3ym~88Q+7nZjMyhl98ThtA40AtpPl<~akAoPU?7(V zJTg{cwSC=x?tE;9r2GoND8MWEO0v^1sZ?wIV|F5Ie8CYWiw~kIw1XA+@Avr;uvKca zWd{p{pN>;+iS^UzjhdO6e|Q#XW>PV|F8B)o$f{*wuOE@szeo|G&0=%9cWS2Toy%nI z#$YAb6r&PWxEhv>q&~6rQN4n7X;Iz$_WF;p5&v^8fQjBPsx3$_vF8sP6nXJHvfqCW zr{Y@7S$Z;PhSMKsgRv7fcYa=RY@8Bd;E)S9uq|F49Tku9pAI8DKLl(7Ff@+u6Kwr@ zD*#|FEH$vNDDk>`1m_y4YWo5JIOF~2!^U^^)ner(LNVkv7Ssv`c|Km0`U2;&I~83! z>L4WR1hMyP{|65<+~#7a|9(V%*&68(tH-zfAEsq(oBnItkD(^+Pg5gzPC`eOtG15S z&Up*r`@Fa?90FaHZ|*gENL2WCiUB!C&cK*pX~0PROl=>kTy6f3TWSJMnE}pti@hNK z`^LGPS=jC!OehYf%~?KS-h7R;XM@7$J5p+%1`9iW{679^CNes&=iC@zoSXsF{}JVm z|LLs%!>k{Pp*nm1g|UuPCjg#-Zj;N2LHP~F@~)Dp6T|zX0x^SPWzchq_XjAP_U^=k zBVX(qKT~)z6I?-Cj11xln<6mOA2HkihWzlm|7iRgMau=5;LimEVgz-L zJtcm6-x%ACG(P?M80+}+rU`2Qw8;N%r;oRD{XwLQ;qE|1My>Z|(j6Lnz4lT1b|y)9 zR{Y$P^)B?fb3@YtvAjSTbdkH^5;7T14A-P!zP`WimC1iQL@@yG2N31Qp38FH$;PkB zgI$jkbG6>TyS%g4y$^SLuYv*LMHA3BWM;X{&tk21*KdEcRrKB+yTcMCet|4*#$Hmc zf~TY=n}p|;DI&5vPkK5T=DK+3mw~HK^lv6O35*O3G`J&O5NAoDdG{L+h)`Iv0tn03?0%arl;*$W4`^?LI#%XqW|{}U-p~m&`872^+#^H~*jo6j^DiydKqo(^ zZp{Dz2MR3UGuCe)zQVhb7om5D7K88em89fz)|mgQ%Kj(gRY$1)v3R&$m?i5ueXl&9 zy|4TJ4tQh@GIKwxrn_hrNya;vb|_^lwZZ0IuDe#@{bgnD1L$(&;r_ZIs}d=7{876R zyLuT<%ZPEe%Nwe?UlsMZBpo88+IR8+0DpD z1eXw5cv5KlC^;UGef}~g8}N5K>SV=ZAiVi!EVAS8d2}cm753D4(}_iwao-j;NdBUO96jJ2SP@I-^t>8pxd+%mh5!484U0DD7%g+3rQl4C#P z&@egng^o+Z4Agzf0Mgt93%d)2saq^p8LjBiA-3y7et%-Ht|h0cDt?R`9MyMBTVhlG zTDON556hA3&#fRuFbrFVPF!mXJi7VvnfXOdxYx}to-1$j zv@9Tkph1mHU&)2gOI>#ijHB-r7NQ6x7u;WZN=sg3Bf~^`DL@MrGRfzCR zixRSKcB#{E$gsCbfv-#NU%R%EmzQ|UVj~7PHye$!E(Rw4{ zPRJh^!s*h9YQ=aYV4o>}3M!X#&_)GNP6-@`A5qzaErCwE~?m z{Icd{$FFcN#IZ6wBJy?%56`Pi@Q?&IGjLx59g4{&Y2eOG|F!V%4jU}TxsGC)%~)iG zJ_?J5Cl%ZAY|=dhY!eDx6uKCe09)w2_r6`f?)m7m?!RAwZFs01dOKUulmNU{0^|G0 z$+wd2f2_w}W?T$mP4&MBUg$)FYKo+Ep`DzCqvMvnm8Mks(@WL3e@CZ7EDlpv(}Z&>=v`AE#|a}xUrdGG zgH7x*4EIKI6(_V9yDp*Xxpf&?#hE_=0 z26-JrX5waeB=jx4{KmQ4u$Rb`L*Tzr&07)&xhAfpaOvLnOg2?*f;*;vt_PI2Si@q%z+Ka5AI^)#ap#A8! z+K}9r&%cbwRw~eeBz}q77dZP)fqWZlyB^eeU^(ayX`9Q}FdI6m1CUmPKN|POpP?eP z+xBg=a!)(ZvhSMEGy`o!Z(nQg>HBaQ z-9wbfupg#$@FFA*MnTT$q##@R;Oou^yQ7zo9_}{kzvWoL+f?Y{--VLvzQ*337yIm? zGSwHSW^E%F>c0e`nlZ#QCFbae1 zq-oQ(hGOw`Mo&llh4}W&PN)YURyNlC%5?o(#&x@O=D!P{2-8t1EfZ`S+W^-V$f+9wm94T`L+d{0qL?%GSA-qAC=9^A&L5~@Kv1zH8Dgm#O`@&Sd z@6($gObG%e8bwYwn(mY!nOlO&!ahmGDoGMy$2?~E$DHLbR<^n7C$1!>+{cqfrmpj# zqp6_17f}WafJ~#M4>2I0HF0QKcHN=ZNWPs=xy;L8J6ow>Wi!i!YcjqeBcOfzonSIz zCGe!1>O=?zjNP|7Jp>6iywb9zqqEvTO$B{Qh3(Vo8MVdcE@EaPTIap)(`W&A*5wPi zg1}!LFp4QZWd)yy>(GaVgQ4J~V(T^EjbI7hYqp##iZa)g&_$~#q5R;ga8QD|D7c<_ zsw$^WIuTWzNbi}dk(plnp{yuV3d-7@Gcfzw+pP!@FfP&)Kl@IU8>Ckq9zNQvym%7_ zr%aN$|FefG%)cDnt9UTSaN;*Ckptde{D$pt!~C~5QfSbjDcv$_xxPZ@$*(DZ*-G>7DCbWS ziPWF?r(hKR`7T#)n%aWU&|9_pDA&ng*m_&QAaRUJhK;Ls?o)v!=@-0WP;ZGOY zS2m>w>xOq%(?pM3J%ZraS7y`_8G#Gj|zHeR4jTVZ) zXZ>ncvo>sgCxII)M+)+Z_HN0M4JE;ZbjV+KR+os=D{+0y_!~Ujv5C*|RLcl3DVBXU zRx3~S6#7#W4NRr=M!U&ln!VbAvK4pzAK>EDG;Hb#ix)*_b)a8OHhWsM`k0)P*WK>z zW)At@X!9Rk{0uV0^?_BGR=N}cN9tl-w@<^1c?i`yU)B1=ip7uH?keZjQI3-7MOHdY3aA(c$|wfh3`1b2S;$7unCz~ zuNrUOt|SWN#eqEUJ5T0HU23NMAw^yZ#Qrcn$JB}y;a58c(nG>gm4y#Mr~Z`95k^9aMJWD`AmiC;F`#NjN$o4AYW-YW<5rdMDgrk;?ne-U_`g znjwRyF6CjL)ot`gEF#)Lias!lmiHfaF`6Sie3Y6yPH=B%ERzF5L9O{uphs@u>{XgGdP zgr;MqXQvmQqfk}K;;l39+IvS|e73h^NuW>FY{OG5K7;EK$#DGM3wp)rop%aC1?W|! z`lUowj2KPh8G{J)`l3Lj>XtbL5Z{ZiD3>~Vqhp)@rdMK%bKISTMzpSUY3_=4HQeQU zjuolpN_{jj?Ab3$AnUU9prW`xc8|c-^p_wZ`miJyNlgm^b)*!iB{eJl939uofF*-P z{5h$idM?k9n9t64YLzEr589E{iYL;v@gX{i_=5|R3zDki;i2t+i)PA}B;rOE?lOhzOjNW^UOwLX+oC{BwR+ z7a3SCrX(%{$u^ z?II;N*x<(=m@>?xfS+#^ov-M5C!I=;!;5Q>p*9u6Tj#j4o2+3;g9>YTeu?Ph@AM3G zHRL|BPCRfKr|+*>6qctuhFc*YcSwE>lu_R>m3!<~EEDVVUklo;vc-JwV)IdsLHMP| zB<6{eRjV<78^L?+Im(hywo9%0Tu;#rqXDccHo9B1VZVVrRsY0VS(bTokqo7O-ElqH zfYG>BFotIO&aDl3i=9YU0klWhqMk0N@yjC84y%&!dhCTwB{_#TxLLN2dF6FZl*5bY zQ~#+z^I5Gx`q^~1H zlewH$$n{w!pr}$+bz7?lMhV~3!;^OiggnJu2o|h_daF~roC};5;{{iBB>f7ICHZyppqwHhD<>}z9NJ)^>wca`=-Sr`$t|O-(Sf{xq-<+8Bjs6?=@6L% z%e;hTzBU^M3PPl_GMCtt{Wbj)dT z?s2;FS*-}^<1tOLBOgT(dNv&wG_`$jHN;At*ve5uj(T!pmiorDe0bQ#$d_Z4)@kohKo)wmJ0D~5`yyYUacHWjQDVa4nC0d3bDg>YlPuA8D4~ zt?||G?xT9k&J>=mijHOE4Pv+cmJ8x>iOT-4X?b6aIfH0qT-^>cX$FL=$QX4R@*WKL9;#c{A zV-nPK##~((xWV|bU%Otg5PnABa}*wFwP?tv|1?jzFKdWP{epwbY`01TQLQ6c8jND! zCA1X%34${?jecX3o*+zqyE>dTz$_Nk{w9Ljky-xO8)NVa{_^9+S2qeH}6k8nNkIZk)mIy9wE~_{cSDXLLUW*hPNEgIO5We3b!q| zcI;**P?Ej^>btV>oO-KF@=5clJ*T(_@|BQp^2DYw5cS~?n657YWufepy7aim_l zrJJ=}0Q3@zXpq=)Zv`N&Z>Ti7LN~+ZUk#Ey?;x~MsS9G{Nr zt6c4|hwwy%;}d;-TD%`%CLzxeXXir+4G_W%;d z#8abZHB+^oTo|192}Fg#U5GXi6F(QOA*S1?y$|<8aaJQvLylp3YIE?t`m}0|fWgpp zuKEBsQiYP(Yvr$FjkfHYvbT!ldl49^eFlnSWC}|~io}&V3gFL7IOlk>4U8&-jai~u zGFc&v>AS@Lo=Y|cg^h4qH;qv?zm&O3$<2A=qR&w@j}yO8E44dWDsS#%AgNyWC|(qI zjb_+U)uIyWrRlxNt`K`sI5vBixY#GA;pq8rw=X+# zKio6I5PO?*obs_b*xwoP&b}d4FS=;)1}ufSReC9Z=`Y3h8rgeTR#C8H6|_i1oj-SHY~k~ z;POj9XMOfG*L1I%=1Fjk)wETBVxTzT3Xgo8|E%PK)PkOMSxO#LSLMN()wrn7*RS=SX7sjK4VAD{SDW1PWsNP; z3d<=Qx_H+s*4FASY>)5!cm`}^Vfrhg9qYT3=Na4yHYPM2ySHh9OqVEG<7)wP$9v1}a$EIXk5oUi8!+o0;z zJVR~TeYK*^SIT-_&hweiY~ta-u7fn$mhXoCWurSsoaWY65Vad5Fy0dSp0L2|jp&=U z_5zYL^ux8gJrOYByzKx~4$LI)!(??;)dBJ-69~t}FLZ_Tf%VI;p3dUy7J5|>m{kj^ z2)V@P@qvoFNRk(23eURwu@T zwGSnlR>+1Mc#a{$iwSr5n*5_wCYVjxlPDK^P4QwP)YGrvAyKuF8e9>NIpy@I~bvoaE-YTH0nG@Fd_5+QI)S85VbGcG$ zUK#t=>wD{k2SDvFXUDHC#Tzz4cENcX$z!Vn&#0*` zWk}QJq6<~dIy}+6u2Yi|Dd??Pj0TK(97RncwzOhwJciIZhV3HgGX=T$U6|@vnfAKH(UU#5-5ZiwWZOTVEO6Kw-9uO8r!t#! zB+@%?_O^Zl8p#qHW~)`B4blYNRfFfft!2k<(CltkET+oi)2|y5-UV^cS)-!Y?U(<3 zA`xf%lsl%O`)S0D>FYdyM5F45;g^G#5jmFtR*N3t>HPe>1XG1XE;qdeeCjeI3> z28KPBpXu2&)u<8KA@-0-)Y>;QN+f~Trt9ph`Eo_J;mKm`#-2))wHI=Ob5AHf*!umR z-xXMEK>UjMU8S%;$X`)Xk_5afYglemR*1!)elq3e`N6yb$!S+AYFE)-jJI|xk@n0~ zHn?P4kd~~oqhUD^7GrA zTvc+0XnEi@pXjczIKwl}kx6kO`>!&-#SE3%Y6-Pg>uP%ZmN6=q`5DbbsjYYMp?zro zH&+0<#1Y>Kgp|3TNc;JI0_nx1Na(V4oY1T^LQ)!7hlo4w=hJ2TEZO~roRrSe27WHQ zS`Qp(UNG0k8-8yub$I5OZAa^Qcw+y#`^ppcfhzMD+n7upKyGnK&)U{n{caCb$kbJ6 zT6~uMwkyjfMK*$z<^D(`|LG6@tSCx^|7kg?8H0bH9G9nGJ%PDzaK~;d$)yQB2ZcK* zL&r#-AsgGZCz+V*=H(@;22vJT;H<+>(;TYIDLiMJQI>seK)SP@w0!{dj$MeUr!6|~ z;pP$`f0)y+1)lW7+Ir1w$KC=(KV>p^j$4=Ckhv<^q~DJ1*Jxt-tiBzD1P2=j96O^! z#rClQb%qNf2`;(_&Q<9012)SULe;oxS0|?OI2NtrxWA$jRs)Y~2_w|vI?m_l*Gzzf_TFns zYJhBl29KvVXgZ=jec=Qj=@a1=HfnBB%rUhw$X>iMY#K!GiTpH8F@9?NTb%i2N%526 zA4uEmOrDXh1dNe#0=x1fpGE6@sKI6I!Xz(cS2cZ?d`~m-L;IU#Ip7=VmwL=VUrI| z({V4Srw6(pUsc5f%@G#$EKTQDh?Ui5wQ0YAQHBnTp0-jX!&54xLzP2zYL1KIe ztNiT1^TWs8S{0AAyqdDftC?nxMFV&Y{k`8%Mc%NYA2+t;9ob+zUcT`pa=0nZD zpuJ@OL7|%u+j5KZCTG^cy_hPJnboH2lopC z-I$J*r11c;Fm2($h=$|5G+zt;0pcCR3KSps`j&mu%n<-2Z#iH`s^JH?1_??_fu`b! zt`>9kfA3Z0(OT*v?X5ms03WTl_+n~TI6^2fJ5>(@}W$L z0m{qp`Qh@24Y1wvY4aLXx$;EXZV~uxHnV<7$}D6!(Q#YTek}4 z(gXR*h?Dm>_A>gTMV^uPb%~(I&Zy&Nkqs1H|5dUU3~O=RoZg=O_Dl=5$)X=sYMzIt zB`PxMd)5gZJ9O8Pybe(iVcdykHusS3B}x>BS6ybdb=fWUP?xgw8ydYT&la$uoCov` zDV|mD1v408;~`|W;NYdCbczkEeeJYLMT!&HKQ?#j?tU}_rCLAzU}g88;?HoKfq|ZR z;MHT_BaHLB&HC#-R2|wEcszf!VKvSTrDzl&zT`)sGs0&TNRK33N7eFBAs_6?aaRne)CloF1C{q&!+f;A)UyEwVe{v^z@xqYpE1#xa$^KmYjmUOPnAM>uj;;K!}Y(K4O zKK~GLRTiQm!YCLj`V%XcZX#qzcj(3Dpz}Td)3L*EUW*vjN~+<$t8Z0I0CW^*HxwH* z7}G=FAI05cYvT9b5THD)Mz4jq8+N*C{iYWb{l+?An4KpX_a~W2LWf3JKN9idb}I>+ zA~8~)32m8f-2P~uH!>B{5-><^B&`OPtpfGP`kIl^NhUzYeDE^?2E;f!RxBy)$O|c# z@XOPEnk?Gj19d1IL7Pk4vGEL8)Z!;OO4K^F)_vyM98H(+|P%J#_ zzW!%OMEJWI=ZlmBf5yDfEhVT^Aawz$1-M&qj z#UwMmii->gT!Mn@MBj2#>A%IwIF$;dFs88v-WD3M3Y4a34CJ%>_KhR^pKk#jx1LAM zQeP?Zhaky zH09tv%MpP%G4Al^NTlp!X)u;i;EP;W0;4=pMZLirfyaIR);av2qCL)7pijwOXBn-A z913m-Jo6s0Pht3cyEs3Kq(YZ-CH?oCV1w8G*DqbF!(X0NhI`XyXSN@lztW6kvicIO zBS_V14W?Q!wn?zg9{ul|0vv~q82fRzUN<^Zwg=@3di1?<+)TB{{#jBx`|VYdI`7|0 z7RN)pyeu@HpmPO({qVTL0<`spV3VI_QDqq-ejvSL`%7d3lP{Cs5s$T5j%R~pyqVcp zKy@3FqP^eaUO3D8?klIg9YtE+$_QNXs#oy__gy?31LZgE+llH%VN=)oufD(aTXGD1 zxVzSldk&?Td9&*oeOJZpx`${1>RJ$jpXOwIuzuja4m@tjwK;AarXBoCxEMe8miMEH zlZWmCVHKE^sIjc2aI3ewp6t;^qo}jr4h!-MuFmgfVeUcRl*WPCf~SkS;=SsXm68uj zupjP0!nMsy%QUc~zB~Q*-kF-nrjnA}XIJ|b86r6p_ZZz;kw;;V6=hWWd3yH-C4^h# zR^h`Sd0<=Aiqxj$WZV|n(koQ+v5&Z0Gj{7q#)+-mub3VS-r$s;AT~$F8s@J-1@`Mk zKyeIWY2cg{*}lO44fy%te8&08qQ?ME?(Zu`*RQaOK~G8SjjPtSa-oHwgF8OCEOkGW zKRWWz-x96j5A{!!B#pyD@mqv)9(HGEv`mX>2*mzEZ zCHUFqc6DERVMq1h&#=sgTDY`G^z1cIGuBw$349%dAfn*9Yrj17{-W@47Bi+Jw)HN) zOffMj*fqNG8py{zj-R+=mNJ3u*&Em?hqm&cWk$bxmH!ofewhOd^7~@obpIbs1wzBY z1QY{8rpUY>p@9@li5R@=oV5+RHnZF!>yl*&r$L%|1wZVsP6uZR7bdA0SAAA?B`hF8 zFq#v5zkt7h*m$NM+5G=7^_5Xkec#^-0z)$(APqwaA|c&1bV;b7G}7G-5&|RA9YeQB zi!_2DA)tiP-Q6G{@SO4c`>*x9m{+=nx#ymH&)%Qff=hl|o}DTU;0lwO`Hd zQ)(5^;*b0~M5I<6lLTtaw63P?&v}bvt^A#mw+dzQ2lXy>eKzGeGncng6G#D|tg-W~ ziw^huA$j|kg%|_D@dN9dBfFY;X2>>qqs+T!c?xLm70-qO|1Q%BY919v_&}YEBn}Z8 zeBOJ6zqm?yg14Tu?1Rm&*27-E0L+NfGaBE2WcqBCs`(y2kxEk?5P`MqP*@v(EF4kW zZ>+|yw7Bh&IICXs&&vO+V;TlsT&8RH3IFokUMD?bC*AfN!6{d(&aIBbZ>yaB20&$G zNK~`Ju+34o_o=qBgdy?(C38GU?ZFEWOFsXJKpA8Qm1p+@&YLr?J2B!63!WY`D1@@5 zHJcfgh_!M9QIdZC|-E&=&xAHWPgvn2pg;o=_)1S!bGRR0LEp}{Fsvwa z4kic%nsmvJ>>fMsCi5fAngmSZj+lHfp4@=_Fjpd$Z->3}p;zyT6?fzFepdZj@|VY) z8hgI_+6DhKg~(Wi^p%toT5MsBl$4jzdJ3T_lDzn0rX6ml+m%+&#c~c0vidA3jWx28 zx6@7F4QuJ!ZgczI#~P^|UPa&x`*QJJ<_d5gjcZ#Xt$d)h7B2kF?};b_^N#)4j@~genER zOyz*o=5~hqJJ+w=vjTeKXhCA^l&PfG54kJdP%d%v^6kQkKe2XsLuxX9W8Dzmh*|&P zZ*R#BC+t*YtOpXu#H1%E8OIPDCD8tbvhG?VX=of?e z-yimE!Nq>*(%5{1PGDuasHBroz>mGDH?Bg=tATtf7ayHRLsNqiKC~bzO!)p5a`~4| zdZJwH<}#P?9G+oPY(@DO^^NqkDVnmE%&YX8jNI6b44+V2VsIa&ma>rCj8Vf!urVIW zL><>g6uSL-_JV)9|Kq3MFQec}ovQ23Fm3>lR z8ZA(aTN@8~VI(B(JliAqW1;_1C3XKe!=VN3bIUUDn0HF&e_ij$X-t%){9~BEpTPkj zAcfR2<3?gc*D_ zfKrrh$%i@E3@PRsuKr?=OI+4x=ta)P;xr;x8`K&nuhtKYN407luRtqS~pf5CwYXqhzyQtQ|3r{52yWJMNjf3^!O@`V(_9VkrAhLNnEnOGun}sO0+bLdDBHPE;iYtvlNS=yIRqC z4M&OT3A?d6_fSey^lbDXA%pOEoR-8O;|qqKwg-t%7r#jmH{3rblo{bqVpMb!L7lz; zzxk3O3ilcw9sOcWgMHm_I{Jl8Llxc9E(=qAmI>)L+PzsiPW!8Gx}bKyPdj{6)N7T@ zdYEu8?YWP>r>m@_NmE3u<5&K1{ZXr|BX@j%+hd$l)2*b}clMfp2_6cjmYjoDNleC) zV>8qat5i|vO+m$SjAYy7*^`H6_er$y6VZxx%WTy z4WoHKrf4puEZ5&J+U6pyzXqKef`+<-vPE!u3^^2a&3$gg9Q86??kX6jqEmTP!r)!6 zRT%~+FI$WyS_D>n>$A9*gQt<(?~bF$CtKq)sXjT~d$gcx;%~&7?eCwMlV% zi1b=Q3`*=KI28JEuA^k%JGe>vZe{||MKoNlL;=4=b?d|Y>_p77SAzIE?S_;>Imc>l zH(V!wqeebR_^7=+tRi6BZ9ZGLDGffJ2%N23MEp>X3D_Bk;NUfYTP<)<@C7cQ(^+B8 zm|>{B^vX;j#uA?Qh+WeKP#i6^zU@&(L*68dupCa`MhM+s<61SBnnCkhpe27%8-pH6 zAVe)xkSgK~ura}DrYF-(&9Quw=y8@4EjvG04?pK7B$hlnzTWZ8v;(h0F3plxN*T%B z&SHHtoHpNL%ZVPvOjK3JMSrEWbg^UVIfcSa74YI6LfqII6%2blZkSW_M^;?Rs|K?u z&-cMg$xjxCX`kM{uAc0b5?$lh@j=qcJjz_a0Vq-N{zAyREYyX^KHkB>gPL1^D^P)ClG7>i2A&fuY7k14H}QF#kc^T%T{f z2y7P2I=<`f0YS#~nzAc>jqn{ajdCwnQ|5oW7W#s$*$ zVWCrDwoZ@5H0_%m>c3V+!IZC*f^);%X;I?A3=hfEQVsk`Jf)V35FZZ_`R~jF0IJWPTee#!Pih;72_);8E zmZTJ_RC03j9xDm54n3J?%5mB+Dq=K$n^F*sG{BpJcWZVr?QOKgs!pKAWreHs+p4HX zgegC>B)B+Kb|RQ^$=Zz`xey8K``EwgO)o=$E$|`^GxLMk`Iq`<6$Y|?s&~grd7Wu0 zzI)$;eqxx1dp<-GHjGb2EMv})uP1OVZJD!}hzhP38qSzGsb@u9El*Sjih$n5llxUf z>=e&9*@XmSR^@e_cHDaN_L;pphH5c`S67bT6O@O=H2vTI97V+b4qNNF&qz#0)f`mh z58Vm2W)N#1+>R0=+#^kJMUxYWU1|6lcUUSOT9A zP2Gemo(_;uL({QTWz7v8g^s*A2XH~cjjeW;hSb0)q4f8#TwrGcxP@t{taDq<%?l*c*7KJcro+% zY{{qz2S}}2uG;uYm-Mf-hMwKAK!>_;@=A->3+EgVoM(rZSQFkv?sav<^e48X*YFi{ zZP^1H0Uvtwh)C%}YZqm)WVCmJ^>oI=6EWz}c@@S;*^fCc@vRFk^_ZF4x7uO9L}|3G zZ|yql+HOkQ&iDx=cs|yzLpMz#qXXXVDTgM6OiG2$Q3*)jDh1gESBs@@8teq#WHixV z-lxi|zcOPp@XfR^O>bfxHEj-ZM+eJ*i-`x*FSoqr=a(#iB~(%8PD(cp2^S*1Hx zGe=(Vf*xAf>-w0hO@}A2$jsPeT;kJ@88u?A`%9|r|M6N=qJ{K)YaID zlk69i z8Pp+Ju8PrU4iN|UcdNK+=)#yb)5<=Gu~P0A-4C7K2D|2sX3R5uxWL2JA8vo>->-e6 z;`mHwq7Dmxa|r*Q4Vu|Z>H#+xUvY8)>qvsq(T*RKI8NVfza!J+tV@mW|qm@H3x|SNo?(y`w2}pws2DC9EJ?0 z`Zz;@qZg>}$E0F#!}Sy*gM=|WQM+kPbyUpD+*6d!mt*cEBg)2lpmb+ft1%6St2S0S zZUBotDFbmZoQ_A$M)qt^?%xk2gJmkl5?E^r&3bW_8YqSQwtbwm5B|wcx@t`<4sR;A z)#8ci^;gA~PI&&qB&0RBl90yOa^X|gRuIaS5CS}HA--XEBvCf4j>Aa`l~o_oBnWRT z#Pnmk*lEpc?l@z*$RvuR``_sXU(?^`T-asO^(p=91_0re9OA_tP>$oFBEUjs=MTD^ z3tljXAVSR%%6-bDyaw!R60{#q*8Ae0i6m+vQI&fi;NB(?%Ath8qE+T^o0zknx7NJu zc>P9@g5T-$>!>b=?-Hk?R%oWxOIkj_^)u`GqYbr*SfGm{G_V=3F#YeZzt+VohtfQN zMx<7_0zt{Ek?ZsMd9SFK=s%ha$npnMj?=6clppWJZ<9M9sxuC+4EB9qxL#NK@7iWC zXDYj2(QH>VJIIDQ@2)9mLYqC}1n`16wsp!x4L~C$oT>!>v*G?*$yUNLg|Dhlo3<;V zCrJG|N>D{b{7BP!mGp&O=9UFcm%4wycGk$fyANl2Cgnm4(CDn~7-gdwz0=b0n8wDhp%%2nqo|fBl|J$hv5l(M=95cy$mYYZ7$qkc|eO6bkOJ79MsI)KD z)Ga*QSG7g{896Dpv`YXvPvI08L*jWm_xF}}YN2Zj*RQp#*c=7!KwqkqCkl=_gG5BI zbx(2Fq3Q${#8A%mJ_~DUriPJz>rLhqYVu?~Q$*d*+@7Mh1VVX}0)uueCg9w!BsRgO zyXaLIxmeFO8pyzx3I*|JxRKtxG{IO#u7mvDEr#G8^>w_Dhls)(q!fs$bq^TSel%3g zn^+si+@w(nag_*ka{gJslAJi+s_qL_7a%O<%P^K0Lt%}khLvDbtQdcTE`F#`M2{SL zC3Rl0p%{YhORGDy?W$8b%(=i;BFnKli0QXuMyCR@SYGlt7KMb{mG{qnK-~fGLAy+a z#Ob$59puwpZ`6I~Y{nD51K1O^yXIHs*l~S#5Px=Re{il1y6GxJ^;of0zWBGaRER3^ z$7QzEBN8l~wL>D0T7d)6;YJeVP&$Y$eavwbm%n0%dIV*VX---)mh-bXIj}hv$^JY< zQ6v9%(RMHybr|N=B2zFu-kpy!!<^GOF^Hcym*LbdihxUeJn|Vp4RwHjAoyMhpTIDT zHS|nPRjrCM0Fjm5EolV#3dGL;_j@uToKQW{^VGxnlOR;br51Z#(ZP6`2x)a)!+Q06 zOR)VyZ7Seucm1I@q6+u2!^HH7G;B>=uRmjx=oN6yIk2z&@7|I?UmCyp{e7u17@?a{ zrQ-ncR}Sqo1CfS-_H8K|0Y?d_$j0=1Rpw4kBBfPuJ&rt%0$<*ZQb%O8q=doIWn`px z?cL(`le&|4dNzz=f2(9i-Ny}I4Q!MCd-JfsRw(vpYH-B!BJRxoi{=FT2gH0-!Xs9& z1*-kKNnh{@e4SA$;fio-1F@vXTn$d?fw=^K)$fuSxRlm)jeNg<%tB3Qn6k}ba4WSQ zG}yi%qwRAY>0S|d$kuxEwtrmGXnm54@6&kO2C+&ZbBbPls^FrN0nLEmZO-|W6{vY# zK!xE1npQQG`!fs@W1z2ZaN9k%q7$Fu__G+^J05f?SpQawMA94S{+nWI{0cs?N&nnu zjng^`T|@E1zN_j>|M}96ujeA{ADhXW6Yr>4A&G zSp1c!m&#-K!`_>9iSx$X^PXU|h`7;#`e}z(hPs}KaK${a#ZZ!T?_MtNJ{6XGdHOV< z2*JWNX&eBqe5ZRb@ba8 zfJUhPjcFZ4K*8BCaP+kzkm-LX3KRaPR#rg}+PZeBA$Hisa%Pb=Zk!0;m<#~ry92eh z10b@Tzv>hL$Hn?!ypuHFt0C7eHvty^iL z`cWOoVlw=TZj|Bx?|dzfo%u0mO~1|8vmbmMRe!XsPg`Ru;1lSnY66`OL}rsmaMu;J z1e?T@%hBwcI!)&_tr>WpV}w(+0@?e|ybzJAI3Ssxn3GJXn#ljXsT>+9u>>+u!FM&B z93??~@6{q9<1cMLvgE*>IT!he7?L(n51|`4s>qI6aZvvQ5I4~0u*`q~3s@azaj7gg z#uRu0%Mh{m{-8ik1oq4RY(*W|4iuPS;kpQ?OP&lwtSokMnwDV*8%*Z-TH+*^un-iN zAM|KTbu99D7$crqE?@)z?DLm>(jw-EkM%EofID=WUNYu*GrJUx&q#*v^ zx{Tuc-al;LFBSgX?9xU2?AiAAsmO9H#Vc=EdN+7&;<&+o^sl1bEgOdNV89#BrfiFW zMT{y+VOw$j7;Yv{w0OB)nSBF<_kxCUD7>Q@uLZml9Q#j9|CApRfil-26+pPReB%Nm zrx}Xur>4|{)x^0eFWm6hvLB6MCdHfps1R$;0 z0!4V9!}#WvF2NdR(VjQ-kbeJyYj_ZBap&nfUZGjkHKE?|EOC%?U_d?rs51`|AWMKs z`SzZ^bG&uWUCr_ja7Z=T_DJCnS*mxr)8+eJa$yaCY}{P}F4?Z*%L@v3FXWeCy9Cud)2FgcJx_^y=Rks?{R` z%X0W1;O;GH^icWWmT;o_#lW%kG(BbZwb50HL1v7-*N|)0sMvh`bc5|AfSQ2pWQTVr zZM7;i%5wi^1^VbslSnkPO}LA&^$XYz&43Wh4;=kD$23Vt>l9aRm_HN1N$kI=Ld9Sq zg0+#JSwPB5z80=5--Ci zLd9tcg@6&R6#+HUIX{he-Nyv-&s-YO`N!`CN>=JjqS}qFw_d2F^@fA(!3wbIBJoh& zeynlFuGI+>h3f%JiBbLA({ZEhf7W<4s`zbyA$O=xHXhHRkkY@#4mQb8hSL_ZspW11cu>vO~G^qrm>MWR0o|pf|nT1(GKH_MkWZ?+;Oy{ft7r2`1PD zT|M?apS3hgfp`xld#BCl`WJfUNfx``#Dsq@hSN#tgx%khXg^A-RF(X@NC<39W4+*@ z6$NEk!(SE+<>U67DZYaS)}kQy-*l|MRnS@6IPiD;oep))g4*Pa1B>v7?Uc=naKQ30 zH3HvU@uohne)1cSdxgoq7lXMKvbfq zxuSZ-ylG~Iw2K2O648}#>Czpt^|sD`9qB1BG875yT^7?2&H}@`cFeEqP(}omW<^E0 zfPibeG{xc5@Ye)p3^H`_+i{sMO7S+lnCWIfx$%2~ZVBn!y2R1sc_^X#MY~m7L;TaE zMugvjo1iWne{UJ)soS2m~b6;6IWWfD%4ZeRZigz=S5eg-Mu z1O~SWStkW+-9I;*0|=Cce*^k`BoTZ4e#kpD!P&aanWJq%uh<{?yd#sA+2UjB(bYr@ z?yicq-4hXnOYeDytomc8>|OgjX0`BWOFYb^7X8G(gS75;@5=hgwcHrVJu}sVXG5Q; zbm^J3DheK-qnU&;rZk<&y$VteZ4F6-heFnzH8xHVxbB#lm`G%soBqKb*=2?ITgT2X zFC}GS*^<(1PQ;;Gy-a1j4z9*-F7kB5;S^W*T#`5xDOQ0|t+)`-FM&}uxNM>Km2eiU zmAlQOWJY3{jKu31BmczTDK(NUd-v9VS(hQI`_KifhkHbPbV{8zyKHyyXrhdZ$i+%R z#_r$C$v;HxwgpuB zctgHg(pEr^HImU)kuUb-Ck5ps`Z`rT?WSYk)vJ71fguyNlC;Q{;@ErVa)EEkp$xfx zD~xn(Yv>66v7EKx$rnul^<0S2s9o0~;o`{~U|O8VyQ438T5RSMCmh`+&S;_ur30zV zvS;#T7Q3PNgJrjWRBRwK~CDh>H2RkRlY>$g!Bd z^QeM`!VpAs44&5V@3o%KsZoR!qq32sru6RxvSqoe>NV~)ZHGnw0xbAkhbm*Iu2~g% zPGye45i;?pm;|Uem}rpoUC+(333#N4PgF+Y6h#y@*P%!=iKNb6Lz#;DuNBD&c%|CN zr(bK%l@=e!#PgBM=LNV&FVe?}hS%|s!QA{&Wl=`GaP9=S+W3n5@mbf-*CNMOTq5@8 z9UhA6Ivtu}m#NA^nd-5z_jelt;+EngelY_1FQPvQ>DLs3En0&ttq?yt2Fy<)yIIx-L(X2@PKll{5m5*HH3af zm)RAI(?t~El6Ic#2*nSLTm1#u89wMXLP(;en&_m0(dRMb4EztSG(r!gbr-#yH*&)T zuDl2Vf7&`Ip-$8rUH7m%A{$3_BnYNHL=-=ivTj{6LnIrkfDPVNgwZ1EGHtut475EuP3n<~K3ResG>Z#ez-&`8EcL_R*oPh_9o z%pL|8Il!Xz%DI@xXJpZHt6l8Sjrge`I&#`9aZdxus)=0|{*y_|WZ;AAHKhAAybia; zc(zATQO(!+dTpL!Q)%d~@PkBpD)vc$n!mOVFf}$r#J)^6BUIwb+gd?xdIrShC!2N^dZK8TSRqd0j3yIAN}I8nv(5ty>dUz@?xvV!H! z{@)#@#)DfA;C)fR@fQ}{SQlPf&H7Ce)y5)2^B_i?T)O7FN&AI={~_mVDyH0t-)x&i z$A}+5bLOS3vA${+b-f_eLJU=ufQo#{Ph?j$nAUM>(fhO+;%T@3vm(We14RC^4kuO2 z-!uf!g}O%cEmh2K4BS}ZDt#zMck~tTxx0M1OzGNSIO5{xCPI8Ze=53WRS{^2cxr68 zKD|51sH{a*Dq1!eZ8CYZN+=t zs{Q=yn{op|00(=%fgJDWW%D568&ups3Aj!V7fwbs95K@+L1YbOZBoa%BKr60oJycP zHYp!^!i!;64IR1F0X1f21DnA>hsz7GuF<##eoq{r^3sxhL|{Nju_=xI!~Li za8t2$?V>(4lPrD>@3BW(>pGRLf@c#l5ivO;_c9$XRjWH>WM(`*%^b!<3{Cf8>Uv$W z69cL#209$q*B8QGpHuJO`|!C_%`lMfY4*k4)K}kdq=jII!wXfG{1g`94#)B9q}S4+ z&2%E7OdxZbi^Rl|zG^JYb*k8cn9O&~Y}AJ4N$)v7ykVcGRu;BHbQApjeHJz9)gTo9 zmaF4+5L2(PEfd!fLP`+Ev*gR_`o+!w0=xpYo_)Rlr+~=KIWJrQ4 zZ3}JM>cuh6XhLRXL;KFjvVCRf9BU^And*n#09{mzEYcoc{Oc^0vb^T|vFJTNT^`5I z;YLoTKfTw66K*%VzE%CTXG$>=JBgsVf0nV$wXP;4(xbP$K$3C$wW9Sn4nWm$+BZ8d zW=}7W9X(^>SHI3h>l?peBtI~5KOjT>^rBANMD&y#66T&-1RMc@rb0BK()~I-+SDAO zRHIax8Kew<1?@T3NNdmI2;|1{ByK=#(o7vGyWx*S&-y#mVuMP_Vmorl@siJ-aO^~@ z)%bj}AfStWp%y7=G0XPVG$z3ArOz(@Xr67k_CPjuc?y|f>5i$Y`SS{1Vcj}Lq#u2!hbNY;0~Hl15BX_aT>=5nTfghJ*-pz%d; zwI@GbSi$E~AknV4F#5qXpDyi}-lJKuX}8Zc;szMj%nRcBc7XfJxiE(@D&gDZJq`(k);vVE20|VHB&t+UHth zpGyMDAPg@jmgt!KRBkM?_wOexQ;exx@KWfnQ>?I>-i*EmVyG2k0is-MEa-jO62Xo@ zXo0Hl!F;?8lfr!HI*V86Lj%npGcTnd6TzDE7S7_Zk~w+L33J!3e4$AY+=$bYji0Qh zAkQl(SO1C4`-kkc7*N--jruXf$$tnYIy8OipzK9!*@ecl{w(rpr?GTOjqO$K+;vGCvML!-?Qwjq)-2w*h|jUvTLTc?uzG;#6Or zWlnn)=r-4o|3irYyM+Jrp_~be{q{Z)^=Xkc0SXyR2P04Pkjw>QDm4@j)<=+y$<@J; zO8cf`sG^JOma#|u>}6Z96Jl8zY5V^Au)`e1Zj zhTR!>`s;;YJnT5$lE&SK0)X$KJvyS@XtlgFB6kFWJeok_P~@s5vD-kk-}9`7$drB! z!Am6M>uTG$G3}x%i_9_F$6OnGHDo&*Nwq`C#P=e#RPBadSR@~hgjx544QO2fE!o zyL@JAFMezWHzG>(C^)@$MU$*%LP$gyR~9<_7bHtr>*p9qzUq7(DzJsI!L8r?30Em> zhe~kPO}my@vh$E?Ti^@_NQQ$_OuBM*_!DKqqDZMc4y3T!H;u2c&ZPxmIyawbN|pn& z1j)e932xIgTBI5Y^k7KJ0!IiZ{oSxVKY`$~ub~rKbE@HY?~EU40q{E;;Z$#2NFXsP zZOJ%0+<`+gVFZ)$HrkZZb03RpsWxRtRLujr6L+8(y7DPekV>kRp~x5oMB8;obj_nS zGo6pLw2(c?^CUCHYP1=27~90xjnSjN=V_ zVq2@@H5&AY^U*56#8Y-bTFZaX@fo4O_QE-ho4|-LP5DoT&V9ECr>|IugI|Pev-2Hm zG;dD|nAuZDNz#MROXrn}WJ7;>{k=p!i4^ zqqAU4dCFrIiY#~D-7XAD5MW!6!XS4{z^rGFmz$S`e=MVX{KYK@rN2)F>(5VZ8$T!z zA$S?>*^;07?>e#@Dnf>`Ph!BpDMF6V`p5GUkJ=LZV{oq+JFzowXNXKR{U^>#hMpK0 zpRWBQ0Q>+dn)PW&=C?s4X_GIY&#p)!-JNW)kWrX)`^JX^%H}=za4#2TkhV%}LLQMB z0GJ!HV+(ZE_eiz7pIxi)Us*T*w}kCp3Rp-<{E9%Q`2tYSmY}wZ7s1(Ox?2MF;j>bR z3gBrhv;EJ0UfQ+3Qx3hxHq1v#Zc5^EWsZOWMz@m$D&{>P{4pPNH=H?SQSOZvjEY^g zzvPvfXAEE0jf48?w#o<#X~2Aw|37@^~Rglp7M+@w5 zi4}%Oy8WC~bbMtNb@HouPdR3bXmOKpkN3yZG_6@4vwN_*mQB+DQ`VT&Y>4R}(luF-5gm>MxKYkt>Jz`IOC%l$w z_RjknXD&AWt>E!BCJsvVlK$2T2>Qn@<_&#!lL$n2s!UdWC^URV64Gs{*eHpD6Yf3b zTE&XZwsd?-e`;FN2<~o>oX8&?u!~Ms36eLA3xV-rHtnr0iKPyQmbt`aM;=YxGzAIx zt#?lblLX>s>d$8rt34V`Hq5AUg%^3aX1<&O+{qMx;Ge>dEb*YQ4wURft;f8;^`HYw zaNEotBwI$k(+2X&wqLc6%rr3m$yXokRo3*g%U+dNm@F8(Z~mM6(|=APHa>s7=Q;SM zIMH!sd+Kp1-^<-MIorU>ZU1Z_TOAbO{;6cnYN%gZOYnR9OF(Yxl=SD1>W7g8iLLb^ z*lAikXwXiST>}Nd3#1cDpRG5o+0c>XlDe5XRP}1^mYDE{LEd)7d-*2+j*gVGRKlqK zQDOzo#%wbLO~Dkw=dTmWG7}aV_U|IcY|ILip4;3+{&6U@-IAwq^R*`b_Nol~gV_2N zE6LC;(44C9>PGmZ=tWnJHoycDi~=rwEG}QuO!S>Nf4=XFm-%t&E=;7WukZ5cl673f2}$S8zff)gj)s;>Zy;mgtU;W)=axtvDhRXByq?Ls72 zWa7+(zFg2cg2m5m6X6D=L3slTIT|b}de!r0ro7JKVKP$ z$dX>kvT3XA!;t1&4+_Ki%tq1&8G&WSX`tD1{R;hyQh95r03T1FHJDFAT~F6{4WM3X zt!sKNSEgGKh|0gpSRE;kmGge+9S(DSw-NKR^`U!tzZt(re789;zOl~Q12L$=W5dhf zRGjPiOA|roqgYSa1O?iikXDhWpOJz;QgNY_C7Xn;3NhXTX6gQzCuijIAHYJ)uL7sT zrW<%P3%(Lc`bGbxkPdZgCvG-mlRN)}vRr2~*}(DQQ)fodW( zXj-L`>~}GAz4gj!XVXmOa@8n@XR2B#i)zgsY*eEp30D$HJI6 zzD4@|>nho6YX(i}--Ws%T0L(ba)G!@i;R;;pNhxmrP#)bD~w#)TOM_e0oQlC5=u?M zqJs`zw}GI!Q-8Q76Z(8f(CSxZw*-29#dcM6JOmqpIl#voz=~GqSEsS8N3Gwk#?5A3 zZE+8Ju_>5W%6vew5?1|Wwqi0$ zfgY~po%y8TpzEI2cNC@}T#(#{iFgJ>!hz&o%3j5Np=mlk&sQ#L>#}u4B5$U4Oo8dY z$Xzwk@*1wy+{MmC<`>sO?H+%Gx>&nsl;&KCQ(UI&(1?L4i9w=XAtbltD{Wi~k5mF) z+0pefXrOQ8Dv5IUC+={ul7ASGHFSXFGs)N}1W<-zp>=v40*LCP^*$I2>9FHx=D(iC z?Q$DI4Pbc@2SKG`{Th6Xh;L(Y!*SXvO1lKZ0@zP`9?)E&l;Zy=sZ!iA?0EmJs$3;| zG$+?mO%QSCdstZdoXW>p2myzY!nhH1a;RRfa&{} zaH28Gg{j$>Eiw!C(%=2ohRS9e^!{w$X4k5-Tr?3ogYQw`^_)rg#}IFwy+{=Nl*;~r z9;I%B!*pkj(jIApBM7hrX;*FMtroY^STuY(o-LrjY2P4)ade!2d9T$^^%xpImvu2< zS%ezMrB9#ubaX4<&oVR$7}r`i+d;Ao;bj(N_I|z47AwrH6t64d1`Nxytyja3ojSH~ z<3xoEr+a*z&0;Fmj)cCmXUcWe>Cu-%t^w9gsQj@yBehOmrZ-|Jq4f!u;N-y@B$mrD zY_eFERZg39MSzQm&HK=8>4JZ>G9ydoQu7S3T(&!AHyJMUG%mdivi55HnJJz@1&-5L zOsiY3&e4R|`miiw;r^6auBb;S!y^{y+2Lz4{f2!C=af66@@`tk1VC`7!|pA&1$6`; z_w%Epo@a26i5Uee5!3fodIOGwa>cXHB(XeX$U+vBL+xJvc+6#O|_f*=oNUZ7u%;+= zE~~c3K_n8I-m|1$@)PCnEUqR7$(3^xS-jEHBTkWj24*0ogQf9q*g!`_!9pa&_Beo7DWcHZ&F zgfM?%rb@kV-U;U^os)t=IO8`l>|urS1wL>NZDCdyrh|o5ik&pE^Tr=Y#`#bmk154| z&0H#fpPPO!!4kjafY{8*P{uek|AL*si}a*un&BuI!z6+Q%ov?$2OpZX^YndtBE$Y{ zj)4a-yjU%v&W)0i3sr67`~;a*3VQ69zMLYe^-?~YEqDh7Vkj5Qg#c5um%MDBWf8+RPVO4iN<%2f4Oi*!*$-f zWBHg5ie5j>Plk=^sB!|3lB?)F*80C zo^+_x6qR+>B0TsKUs}=dk3)jc6_lw0VodLj^n1lqidr}0@Nq84kCgpl`zO~C!gAaM zx0A)kPmY6`>-8Qz4)_Jyz_+099Dh$zxx4U;MroIagozZE-ZnCaedEc}K%s@LrFhA@#u_Jv&43JMPgCX(}k8Yr#dQ_T7Dd z2b%*mdX9C)?bl6OzFT)9CGZF4OV6vYr4}D72W?W?ZR827t?2*|7&U5{E^izW%Sf7`0e`sE@x8BC zxW}|AzXR|pmnK))v+{$r?G~y6!_R&3Tx!*))k{V6@G8gyZY`%&Z8-a z+DJ)199zweV#?>}sryS=s->h>NU9}|78o8SklCWNv3xfW|GbayGjJgOo9~SJqX$6Z zWfPp7;Xr&f(G?qX=YjX61HGJcRzzbClX6$OsJj}oDuUr-H`+W?GfI+@#+nK8)7ne* z&|E|BD?C}tRejY3KL(zFoWp3oY+)nr8Tz}z^~~yXy~mVa$)RWO1U8bL_7s&BKgfbu1BwhFL$h8_v7Q1m($~{yeJYi27Vf zkR-@^O1Y^tM#p2Olvltf{TnrBOt^@@l<_iFKrI1VOU@>bJ+3XUe4ksydFL4s}|g9q~2QmCWB+IsjI~PijW@5BD}sV_NxKBh4Qga6hx_W?GR@}ax+@y zI6^tpU_ti#vNDKzC-y-?Fdoq#R=Hmov43T;$f{JI<71J=0m0$t{6Xxhdc@^#?y-$A zum$t=_QCCpPTkAS(rD$(m2q4(x{6*K@k;)dfUo+>`{|^l<5;k_}8=OgNyTP)Vr1MUU?%*@A5}0!oQ6GkwIc%tl?vBM)6GW#c9lxZVRnlQQ zHde~6kINEJN<)*=?GW!5iGD*<9re)Q#q=@n8$W2)I=sn@gD5pIK&_aLtrr~8OvbAA0!qY>WLLjuTKtM5+xk*UM zi+(K?nzOuo@o=N{{zzst5?yhwI^mw2M@`8md)M!rjVtkM?ev&T>Lp=tT z&Xv1t3HY2MMj#|gU5nb6>Q&|eB9~S!S%x+Kx2b`0jzA&WAmcsk-Beclp=cd4So4R-f3Mv6I&DKd46jk(+L`s*6*NWnIMJ5DcqKARqZ}I)Z%~# zphZPA#9{(8&MU*4KfgvRDzq<5xGhMB7d(5hEAHH8dX|@haEcK>OEp8PAjPJskGP9p z&>#8DD&|OxTG!;t{gK$x_J-`d0NLEJYJ;b^k>qn3z3=WNYiv5dj|fr`DY$g|5js*! zwhD67yXD=fR{d|QISYpb&qV3$*9|iY^wU2Nz!Apr`|P!@_$6({rTFgHW_esE1yKHtc>dC51obQIC$SY{iYe8mHdo)&KV#$Ue&BimQv zN69a8@?Z*FB#XJ>bXhmo*|!BLnLaizn;G@QYeu1azvGDaTld>e>bHS%jrup+ak1oW z_y;i~NMp@9SqFbM5 z+VnFLE)-ad?&qNJM8xI#bhM48M&yD`Lx~*tfSRm+h>vbg+a;XsyV+rR7L+pzOwfx5 z&bp5VA#2um8_b#t7?Y4kb;bPd1g{)h-Mor#`jF9=f1;U|BuiW!ig#4Nv=ukEVpmCX zpa<7P&iDFOAJMR}^k41&3HLm*6HOK{niu|!3T$`fWVLJa)>fY#t)F>9Gs8e&PPm&H za&74bIns;qg1@X~M9j{{%{6sjue_H%RftmQmwD1lh&{{~$K-m&0E55jXN1vKdHV_z z5jl=lPjt(}WXihz@HI!JJAIS+sOFmHxR`jJIj5^sSv<_Ji8U%G=8Xeo7Z7v43y`WT zlPBLc-XuugF^(f3+cNGTAlm~_^bX-fw4eFzt1W3O%VDfrg~^AX;aJ|jnzVUsPlj3G zNDSJ)pFaBAOI`grlFF!vB*9;gIXm@0U)r!}#(`yKTt~lF{@73Uyg!>t8Ll|1^p1Ho z&d|Fee!*+&+g}N$Ue5JfZIKY{+=agi$<(Jqs8CFog#@7{@bUb_v zLJ7VxbdM2eOArY;>W|VU3UF6gJT{grI2*7Jrhd^C&P?G$ zE<6dRh2%M0h8p8s+!z9L&3|k8uYON}luEv>|87=agDrnTPQX{B_29xwj$)r0N-KalVdzEcry?qwh7#pE6X~lTd z8aVdhpW*L$hL~Lp&`GkeY|M1_oZ@_ghuW6&#MaNaEFEkp*uE%lxJb_sGH|k|wa9=7 z`o@C!W9%&C7rrkJ!SFrM17$#1DIswu=OCS^5TT;{$;JnBe@yGbuuF^tczJaxeCTHb zZ}T=Qnv+$*w55sM8~^ji>1{Ws-6Dbqr8L8TOVyY{Hqiu4;>ZZRZ%j5P$lFS=8?HN- z4HG@){bSbdrflh`(hj`Ht4NE`4d%s1?I7MLNRa*0a;+f&yKod5)-3;fQ*MA4*bz6R znwAOT#>w}^ewvS@+j5Fqlz^cRFbXk_k98yc`0qK3Nb;&GKi^z}4#qx{_WVy27&|1H z>sn#U|42Qh|Ai{87_P_r)IYEOcX9EM<5S{dG@aaP8#&3KGOsMe0T?@?*t{oVIj4K@ z-V)D^>8p#O90qnP@nYt`?Z6JJvrCYBt0by@cRa*PDYx*iVK+;L-N+0pj}Gp+^K00Q z@4oQy8|W|ngyAs8Dd!&L&{_(-Qv-R^sHj+9Pv%ZxuqOg}p24k@LxT!d-^ZHDQS8M8 zSbX~R{LyTWH)|&d!D`cE|9Yv%qDu=DfUb$wfL7kQcW&pJfbtuxAuqmw@g3p7@oM6U zf_793ZQMY1GsoI9yzs^tGp(q4MC{}6I5$-8lKcfFnPJZnt#>1kOASdxIC}w)NFkVL zR;^ctF^qKT#8xX|b(qqu_}_O8z%A1Put+x>fDj)wt*3x7M$AQ5Zy5Le*|EPp;Pw3% z@GrrHmVAUs>i*}mDWH)PuLD_XqNtq$KC~>MkdF`kf@wN!h?lV`%rx>GO%4FsxH69V z1Q|?}zVilV zsFPG87~kT>*|ei$=gvfZQBpT$chz#bGR9iU%0n8jg&hxZ^)pSg4I-xhcXJ0Z}ek!h#0#a#mz=c5XN1`nyd zzT0K`nhWK7SDSOqzM8Rkwn77DWL<-JDXW=h`GyFH5|(SEvQ!htZny_i{QoQMyW^q$ zLU#?o}y4B4P?`u7>;lG)8J&$lltA-$^sU@P6>euhf8Uzf|{;jB_ z3Ff{-47Tz2ZflVB4e0;B%umf5E|lwQx`?70v5svsJsBx=)%-UjPG;e6JlJeKNeWrw zN)Sokp9ccl?}2B(Mviv906v9IfUxbJX#0ef8O=|LxsC6G?2RBB9KGt4s_i=$tV6uK z42yP51Um;NZ=2PQ)T1V#F|nqLhpmT`z)w z$gB&48X2H9ILRufMCD&R$6B)tFw6TD*>QmSYsCA#HMv6fZKA$&x3&9z#>a`Hfnz9Y zhEWZug&G9sG_v}Xg>;9{gWKA?-0Y$XnH(67t_-OO(wt3>X|V4o%$5p7q$U{mn3+)sWzPFV)w4UeQ^ECkzoJ+dUVsP+@qX#&fy;T+3e%U zdY9M%58;RJ#{tC5i*Jn?0!o8lCCxYqsbMpnXT%#icFN6^0;8Tk)4 z1C-xiSCr`3=O%DnlN{fCoxr||*@Yt8WL)eJ91L11O5$V$AHqU?!Y&!xA_cGA0>f(C zFWm1QRJFW|y&K6Si-q8w>^>f+wS3qbG$rp|ofbeX2@KaGWoMH}25e-oWGYt+$pbMe zAV`gtzZv*A_H(Dd%eVrp_~jzBrnUc0YX2pbG3lnp(g`>2zVR@C*n*EcXQZiz{3{n#4BCK%*h(7ZKlr$kFWez+aU=Ss=| zVG7H63MCY0C^Oz`o%tP7rpA_&IJFadT763Gfxbl3Z=M4&j@3zJDnC)H0r~%e9PitB zU-#B}*b-2@Rlp9^TvkJjGz4~<=1&{$T`kx6z;o%FX~s{DLWNf)9)Jxbw@ueB21YX^ z_el~rd${Z}40y^-w#Yjv4E#HMgSzmWMq z1@rB-H7M~At+>zFl^nl=ekKQ5HKohW_zvGoHZZkWLO9`hd&)yVW{&&1M{?5DH(J_m z5skcH)37aw##U`|Ul%IOh>(8t<+$7^^d&jzHH48OOlcA?Q*NV6YPv{?T+b~Q#Q$o}2mB2LL6T2zgPAe=CCn5;^o$G#kxIn=abS zk9_P_%ejIL>+wVHTbCk}La=XWeCN@jCkavDK(uDAPBr;y`G8pL1oV7P=#yz~_Nyx% z=Ok8g$_25{YRhGIm?tG!VZ;I16h#ot^qBN0%d~V$RX2m0E6A)EC2ac2&5bixD~ua2 zFeKq5c7u;bJ==V{BA`jMiJ-jYWFv6jnT;=Xr*q1?se-%p4Cg;3P1FT4lvJSUtD?u->GA7A*F$A+oLEm3bh)neeUAwJ0w(*Grg|T9$UZ1!%aAi`^AWQY8h;;;r>5AVS z0@)0_8oybBq{>u|eh+i|Ft`CC#h`6>EG}&aOzCT$Yv8u(cy0B#ePid1h)zbq*s4c4 z`Ln+g1Ei56ersy{i7UBI$s^7MrKgW~tg&IxnJx{dS^x->{UW>R13$ zg%#4Rs!~g(TAynZR0vp_IA_k8uz&LP_@v@OYe z^n29)^g0_CqE=`&aSV-cJY3n5J2qD=6tolqP%zUgaIGQ9+vVzXXXBMndL(JOC!s!? z*r-vL_l0(bfBK#qGG_WvG6D-c<&r2mUAgnFcj3zlFOk~LguH{*#4lbq|Mmr(U%{$x z83oLeBek2#+lnm~@2hL+y!=a0J(-ZV#bld>pdD((HmZr7?3IY2gw)sG4VH<}aEb`F zVy~SOpo@E8?^tA&5W*}s^7I(V+p(OcDT1-+{QB!>Oc7HsQz=fa@dp!Aa&&LMz6fH> zA1j%kcL;FtIaavF4HgP7S;Va_)s&GG;+81pdb_X;C|G*%7y9ECuPs!huOe(Z$k@;v&c>1ASYbPTBJU#9?*RURw z^d82SPkFxH0&NHIc6PrnxPdHzGj~+a)mPenG?yK{qinEH6ej3}tlf4N@Y*r%-SE-Q zSNd+pU5-%dkKg&qro$td)=`wU$Q=1;jr3YO>);mDu*Fq^8g)fd08^$Zx)HNc8+@M^ zfy=Vvy={a4t2WuCXuGFr$}KD)A@>$e_IyeIwkOkP{1Po{Y`Pqu;J!;axhW`Ke>{Dq znhC!+WQwmwuVMl_V9RCnRc<8mcx4}&|0^T@#o^t)MKiNg*FB&G3i|iHyeFQ=WP(25 zpOytMXS>A@SQ7epFt%DZK6ylY-Uwtm>Nz#-@@B}6+qB&)j)^<7&6eFEpVHx~rKJVB zQa~IL)VLYC%RUSwVk_^7B`$aaSx&`5;Dx1H@?7+$NwOx2C-pJG@2Dd#4)Ef3A|%-W zSOZ=jRBYe#r;0S8ONoo)q#JI=6rP=VS*R%Xi=gteXAs!u-83-)i36;XdZ$7ppNf8L z3x6bi(cSNdiaA(7@X7=RiqKn3BwvBb{a^I5`9D-fORN3$KQB%2!T)FCGH_{?fz}Va zzBxm8;{Wl3v?F$V66F_SX<~RE+@FMGxO0Fh(>PJLn5bA1qr7hG1PTC{1$-BpH$9jf z&ij5?=K&fZeFm|2E${qGDS>-}>jOY!%en-{jbP!j&-b)|t}UfcelZ?0dn*Q#LYX(f zFQMIg#`BwG2fkG4r?AgD;F@d@#+$#K)yGq@C|%wFA&b4CJv)=0M!=YJy~1H;7-*{+ zDh8}10m=@ZGkVBOZkPq|+r7&qR7dqINHlc}Fm;Qb6k zQ?q-u_asLlF|1QID2$#NRZ0H|Yy(Mpt`D`^IRLa&X!l+o6gphOj$Od?qxKR;l_ixnk+;QbDf+7DT9QvhG9cRnV~m6 zPK4H^u-`?GWA%b4UiL#ol7ut0xdDJ>SPBuX#H+taC0IQB?*I5`QQZsAgCYVtNn03AP$i<5)^*Y^9rpro(l@W}&c5lSJyZt~l< zV?fXtK70rzD&v?w7d{>-=xG2#v0+GO``A?l_-e^GB*UGE=U)85pf^7(a#2^K7-nFIQ1A~+1JHPNxVpcpqu3SGC)UWCG&^&v_e_vrfh+pdy2M*&T1mP9Bw zljnd6%Jbv$a}s93cGt~5aDfDyPswH#X4xo>mt&xxL^=&>T@Zifwg|X>PBiqDP)Ij= z2H3u8PSMcdH#3^n9W)O_M7{#41v`5Y1(8{}3Ahx40M>%&^Uj^(t`T(W;HZAMb24t9 zWB{0PM%+U;fu+VUf<#-se`fWr4dc%vWZRYb4B4c5UKZ1_&m%Q;86&1am70?jY+!9loX57!48X zu)>g|UsVWXh(FcY_cv>-u|(m-y`!Qm^M9TUOl6lRX!n7f*Y<#o=Sj?d*#^WUN_bCD zEq_`Rf1)IijwEYYiWo#ygTMh9LvdRph7fRnT=7LAe4fULjW+-ZZre-!$TNI$a?pI@ zlH))+Jmn{lA~LZ@8T;%#QPt_$#$^)gJ``My@blybS-@t0yNtqySWl95c%MUDE7=sU zgIT8zHU7DdWgV{GeW$ivZ#@ezJsF0=(zSbYG9*1a-D=s{cfgnzTH)JS%pW#jT?fB_ z{i+N8T%y!SdO_Ub>W${f@xOtJN?kIBgn7FR%_ zF$f(Nv73XUzO~WIOJ@%Pmw0^#)HSEfKDtJdL&G8IJrkR^X`%Ts=z|pEGj)>zQ+4uv z;IjEQx_|pAQ<=2ik{O;Hwln<+Sl7y)fDLv3tD%nfE!${zu83(+Z)Y{uMrmgu5&Q;A z-NEN5w2mQ@1#L?4ULxQYw`DCZ5$rY>phx-Z?Q_YXO>fTDwEL#sgcXT*qNjWE#;3Yh z)&-krA&r+g_-yz@Y=XHVSqvU<*4=%|7ly*@u-ngpI%ym`QW*-i3U&b-t2!k^-KQ1V z`|f%Dw)gNsDeUY%fCd;BSO2Ixp`(Z#xS>StSdo3wnIhiv(CRtZ1Ln92e>lYXlInx- zB39|x)YW94r}a-74a?0ZzF%dzsB4LWqq?nhN4rJSkj(uiiGe^5@9*lH zos(Yzrp`VQHT&T5x>6h2d#S3EzgITGUt&_Em&c>&`0wu;j}ZIBBZ=nuh~G&Mk3^OK zs*@T(%N)}=X~tBm-qEv0?OqQChtsqB`A0G_YfQwNLOVw2G?$cvBlqfR4HzGJQQDqV zC(zkblEEf9I)3U%=MLSK8)Or1ZydcJFTE7cJ^7EgkDrMp)YoLwiWe~XiQF#@Ojo%9 zKTu)yz3l@U;rOg{kzHs$v{+C+gTs_#f_naLscdHnke4@>ZdP4eK5?%XXd=gn4w3Z5 zlFf-&pLe9Ho)RX-{U4VIzzV@BVf2O(IAwMQMi_?GNL~93;va0Td5kifuP~yl{6P5c zZ1ART|0eE}+rbUuh@X=G;Lv}`ad9TlNW6Wzr92Wd;{WwsuAD8`M?vBSJ&kusPHZ2KAIITymdvppF4qg?)=9o1%TIiD(TcGl;>IdozGpC)E|gu0-&>iZ2ul~$szm^U7PV>bcV3tI%# z6Q2+)B$3b|TWGgxbNxwxKfYD8Pf_B{G~(!vC0asl$T2t6|L=IiZ2EWLl=0p(_o}s| z|G#oC6HSNO{sY#GLBc#QURC1qu3a&61ki&^?qK=P9;YmMvshC?-2U4bN3A<+y>$g3Q}i{az#m= z`}Gs})9`7ZH7|gQyittWk6*%OnfVhDnrn@PIpy?|P5~t)EEnez3piQL4Q_7;JZHTx zX5+&BJd;&ophkChe!7?GTSf>POiZ#JvT(-h3?EAE@E`NsUCzddU3;l$0ayElg@$#~ zK7yyIx2*$fFWRRx`WPE}QfynpBVN7z^ilreWz}JHEZZG;j1#eUkngF^ zigQ!s!%$QiE?`@!1O z_f*NGtJ$$kUdh{0(ms|E_WF<~wehW2Dl6X-Ms&}sc~^3^EALNV`H$H^$UM&2-c40l zD1t{YA$xmv*2w!@%~xOQDf~7x?lf?eP?N!-n50Pp_^aPD^cbdi0c+BLcR^hF9L9+g z@6Wn1sFD4-|JHSlKhji)9gfqm%Ykvx@pFgEa&lh?3h%@tKGK;wr#=e#Y5B_Wd)WS+ z=DRH50wlXU8;1hhFN1r?1b54X!+K5;dF)T1fE~e2 zRK$9TAl0k5r?Uu<4$4r5^R-)zdt3z!N?6i$cq&sGVnwuv3rpo^f&C1rKD$BM)}O1|Y_~9%*+R8& zgmG)iDtPqLqe3c_$l9;yxM4juO8vSX1zJ-YU1m;x+>j0CrVPs1BI-t|&gaJUs-ES} zE8*~;H(w0Mmh(ySFEr*HU>8VpyRq8#HY15vi_g!TbMy;Nww@HZv(@+9F>eCfu7PiF zVo%xla?Z$gR$#vw_2zWWtGoGWTcuj8nM#z||D+BcK|Qx0r&ILjrA=8e47Nl`$LEVv z=cLLLEwA2ubcWH8^dPqXRJ&Tq`*n8q4bTORVaFieZ_#J}CN`mG_~jY1?}`$6FM}6h z-GZi#h#GF_M|$Y$c^bo-XeYWXX1 z^@4Jgu2R7>%}&%MzWPwqBd9%N($xh{Ed?v5eEmn9QDPWeY5;R?{LTQyGZJFKgP#Ru zZh`-xNdySm*M`s6QGn1o_(0X!n8oHD5Ms))Zq0vubsl#5IfQxtmu8 ztM?DZ0x)l~RDE(wf>)X@iZ9*`kG!hn(x0n5ln-2@XS6O@jwrDph^*KKl@Byu7L{~A zgV4-xe(7fI=T)CY9IBUYHRTs-8}>=`>!{HnXwFqgsLDmk@5nV}K&Fi`d$f!kZ1_FP zqDL74y~=o5IZwD&s#$yNZUVg*!SWmrg2ru=i7C?2OjPkZmb*0*j*X_)?}c~S4;&A1I7*YXM> z{Fx|?2*wyDZp03waC`1GYUtoHFpOcYMzsKrPbZk00Rov=Rv zA6Dd?s^$RaAp`64n(4#3cqZaISQADlb*hPS-585lH&&BEo&H*z99Xu8rNeg6u2BgE zX*KG>PjlpQJ0U4xA=tpqNX!L?$QF$UzL(H=&%o_p)!CS!{H)Z7SU*NI8}crUVwaVj zpEebTnSyiTZrV+Gi5o3h;2N2gcznGNQe2WfsFU({Yz9D=?54R;3Cnl)eb~UpQr>^0 zA%?!2C>Z9}AgAta)}LrFspYRx%Xt$w&3d1a5;R-`GKk8RZ@Pb1Q+RV&bfx+bHfk;A zoGGaX<=6T~acU$Eryq0SkEl%38T~c7{g1!HrRNb{NKRecb_h{$-b*BCc2;$NxFsS^ zvirk5j1wzAi|&L6+<{g5!McC%ypsIxpRHW~xyhH#cZ)3XdWveNMe`LTuA9~c#B^Wj zMml6Ab8sMnMXXCA-vz~p;~pc|Q)&3~8ur`6dm64P$7R;AZw-Uab|x*!pHaR^r?0ia z?qSqW_D_J^a?cmb4Y8263y2&$Qh0HE$~p7!G#wJ%6vmfY(&F?GYkKMlS`stgj7ICp zKE3!V(roTw%A+Jz*T;KLn>Zc(BJdI8vJbw~a}ZZU5(D){-dO3QYmd`YT`Qwtb-L^*YdD9Bn#d_Ll zDv{Df7o9lO_yvp|s~X9t zm&PNnJm5RLB-^P)nL(U7MdPA+$$XQqM6y8Dy%S`5^nWonp|lEvf0>#3G_v*+-?67& zow28ORORVpIZn}y^m5-rOK5*kDHzN8p<#m^UlQ_9J1_}Kg)eg zOf-)vZ0qcKr)XRtoV`Vxa=OO!>VU8G6@#JxC!)A|^R=W}q zYG2sT*7Uu_cq*`#_mwYgFNCd>>GRg2P%vNIP3BkTxOL6ZbmXwY^nkd?Bg%) ztl?KRWSD2KO~&WUv-wV66Qu2*3+5$%Vxu~{MbqF|W~{6lDLuA2&BS|{M2NSU+WJ6& zxq3jC?YI;zu7LO7Pe!fh`67>RJ%)}+Gy`V7t$1?Cgt%0mwv;+q=2@m_@0*1blAW(j zylHQDr3*vLvqvM+Zu}Hc$-y3(l=Gg$*&I1xe8F^|Q$~ljXn26Q?5|JwY}@)USDh7| z62Of1%zfY2red1lQsO>3sPHL~!V9tDp67#RfH8L|xXR-ZclEqw`EMi!2r3%ObxG;? zx})?q5cioGP3s2h9gB)246eidK3F5_Iq$6G2U(}I9C5ui4oVH-F>=(4KEG!%R2R@z zGsFY8kIY+XnSz@H3Yv{>itf6)Z#igw{}I5=5h$4W7P%LXJ4MWkN~Aj~oxN6a_pN{P zIG-{fb#das)7d~Rf%XDhJU6G`_tGvN^wYtgc4{54v zn+QBUhqSwmnr1tB&qF(hlmX2H$j)6)b*abb%9N)5qFBTD1%e;7zw`NA?S=}L7Z#W5 z_TP08>FjPh8tBZ zg_r%ZtWqRI7q@h>v){5h zor01F0TZmAvSau)98rNlVI1DuhiBHY*{u1iGQBU$ZStX0kg)e$oY}Sta>S*(oQXN_ zZ#;J=P0nWf2;nqUvU_n$Nq3yaqM%jH84u!Xx7&k9s{Q!Nx9#(zu;pn}TWPJYyz{a{ zxMDxd0dD|DrjT#w<2!zlX(8c1=q(}=4GEd4coxZk!~vpkk=T>ZWh!^Rmh&de?o>6N zSyaNNCmStvPsvz}x~Gj!i1HB%H&zDx9#=@B)YZNP#k^K7x|e$^zEOv2)g+RB_p_6b z8kc_)IW(7>)%AVGT=rSt*~z5j5aux+LzYd0X)3DJ@Q*>TpPDJO`!Uq8jbQiH_$ADb zLpIZ}-p#szF3Fv$nfVW{{hN_XUq!veNW=K2{@K%8rLx{NuUuSTr6^1AexqUf z#jJKGfOz!%G5PU8EnlDa{|7Jv5cU5nghkeV{^1Fq`^5$4%{9yRQ{bhmWr(TJu!;B| D-}D&V literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/ck-comparisons.jpg b/docs/data/how-to/fine-tuning-llms/ck-comparisons.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07db2eaba2b32a7e11169f1fbc6ae03e39b3a3c6 GIT binary patch literal 114864 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 z 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%0DC82 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

@ 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

KY5yp6QK0VTZ%m{04+z16 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 z zzloPYVAKomEymM{sN5ezSl;0=5SAQ4@)YZ=LKI?LLd&5c_1xhO0y%gUU{j@aC zF9p3EUiXGe7Vn;J=+g+wR?ePqI|J0D?LXEouAhANyPDg8{OL`0|4H){=mWV~lT3+O zsK3|2tAh!pUXB+FgI9Pnp%@ZwuY9KRrE6!7k1IcVbWduF@HWhmL|F05pLIml-UZVI z%RWY%b483nDHi+E<3(M9{N7{n&qdCihQThtV8zgA|HbD8SVS#Ha1-(IGnN;*!Z)1? zbY5d!7ZR>~sWRPs6(^%~?$Q&6r%i`l@c%T;|Ep{4Ug2_B&AtUblEbFWcfFbzCRl)x zEOOkS<m zk-jZvs=I$>cJRhmTEe%5Tj?Y;UrxLB;h2r+zjev~r)&P_e^sL%%SW!cxKLWozOUwb zG1{?+DXDsVK`a06_?wCo&RN{O2S1;eanol{Qci%as3V)Bp$p-2Z%zl0` zA3yZAzts8do%H0k3DfJ&OGGUU{|S`hKJEeZU1yil=BG*rocSW{VUcI93$$GR++P2* z2pkmDit$aSe%7pwXK^Cr-KC);BuQrn;Cv^3IH$OMQ9942pmQ-=3S%TV`r%KHDIB7d z_mP)NO(I=~)*Mg2qcVR@gr!hA$bmKlSK3S3^yFW$ni9eG$VL9c)EqBv8JS(dWLVZc zxme*(?GH=CYOKYV-6S#W*;7UITx;M8!nV{qaEa-@jE>fT10(2pXaM*S`ioCFktW+e zAR8fHx7$Foc6;gpXfq8z{1OcBbN+?SgY)7B^%hBQ4$#109ISqf8<2!rzxGyk1NQUa zD^v|R+IegsAV=_aX2k^h$T<5~P#y$0r9;Oq{}1-wGpfn9-4?}OKoMyILX@ghl`1WY z0s;aeB~qi(i6J5&EhLK41q1{Xgh&S|p?8RM6anc%fDjOn5=f|l6!!CeYmIZp_rC8L z<6CR&vDaQ_?;rfR2YJf<+~vCGHRrsN_F06_*Tl@nFc0pt?23edDs)38P^)0BKKvOf z)HEKv(^LBi36CR{+E4eLC-|e=YGvg2Szcb#-W&DQ78(c|XJ3$8zoU`r(=hrKo#G7i z*omDe#iQ-OQEt>nXIQboS8Jc8@t5DidXF+qYDTjfqxOKD_>zywYN!dl? z!Rj+&3bV;tQojhycjN2@)s$Y~z4r9)5|gG2>#FIY05@wAj$VkHl1*iwb19W)cXC>` zwmU<$B;r`Q`Z8VooiGZRWr>i<+XJ+Q_Y<8H@z$GWecToX3Ef8B+B-5Qqxs)KuUYN* z;~JNMpx84d_}@3Pe~M23+q9X(p_Uco?GK71#&Bg+YTa65K)8iUhEU=68;6!}@VH=w zall#ZCH=?%RnQ~zWOs0UxXw1mm=03WN0)eSv6~K@A z#+(JiPXFFkmFff&XVB$43|`|`7^;;kj_w~r^~J0(_F1$Crx%z!$%uUxq0FB{Ovui$ zs$6>annrX4rSEV4g()OK1Ec%BsMmp1XAU4<@66j)1Sc?>N%{LM*JyqA84aF)^FM&A zO*pfUuxYD#8clS~*=M0FX+#;%p`Ql0p}#k6{QQjtvJ-##m%l!=z3DD=LTDVbA=mJ~ z^sTUA$eRGrB+*ELS^87@5+q>W@q(SAam8hTSdoaV&1I9 zn*h4}zSbner+op+VMt5+ocEI{()xNAVrxa|pJ5~w1F4qbVE@{n3hBf;x2?Jj3%YU4 zOkp3VzM1Po!G-6WquSY+c-%Cq-1kOKqU1ToUk*=Pjbph%3;zbaEZXs6bw?7+P;>8VnxYRx$Ipk(0geNY4grw&01r_;Mhd=}NA7j8D z^}l`){MQccIsjv;#I|4~$3K;lF>QUJQ#s7du=v=2?RyEZpUHx3* zFCKFoH z{?Gw>6+Gg@moFN4pXF?n99;;Inat6E^X8Z{MVa|dED(J1(c*A>wTWF9MgCh{6!*C; z#}vev53wk_t^>zT=P^HeAdqJgPkH4f@1V5kv-;I7vvM%#@5tw&_)!fc z{uICnzT<#>@i)d-1VEcCaCB|ZUs`;)Ojd|LPlK3zNkkljbL}vCI${(Me`Wr;p?D@j z`z%n7tlXOek9S4m6x_?Z7TlD{q$g+YIMUp4 zG5`RS_1ys&mt8JPeh-+ZZZENGOIX(&jzL1Ov5(TB0w=w>`xl%NvW-vAo$5PS&v?lM zQPUG=+g)em_?PfElJ1XGE`Kd{)c7hT9Br&238MOdnlXEv==GvNAlfLv|Hh6a@<&*h zKs_kR2+uY!aRPl5{TtY2zE$r05yUVBJIT(>*93Y26ioq821p;F&1k)Ugqi%u7 ztKe7QP4Rt}IV&1KIfqpD>kcoXC22tmVSm1k?mypWn6wETN1)%DrfX;Zd>LRe{_}kT z0=WYJ_kG-ZI6#&4Dz@r3AgolGvsDb3?h4?btyca&Z&-gFGe+1BqxjG{t!EZO_>jgk za$HCriVpT@Y>^8fK*fuZH{)k6xs#mUu03c?AP7Cx&A)(M;YRVJn{^&^(gdh=+Pik* zrCyJQ+3`iY$4apib@YYEr(St8B9d+s-KI;=BsV^aolqMmgqdh_uRAyV0f}?(0-g#- z?lX$%@L5F6BKZ(;sxgmxt#|N_Eu^FAV(BHh+wv5IquV}y}tae8T79M1)9&WiWp1??ChBQmj;&c(k3n; zu=!sY+L!hk<>sJIZ7A&jJW29^SlWXQa0AnU9Yu1KK=*HKiqOOw>_R4Z)o=at1o`v) z!6GtZ3I>?wJ4gBeqT8P?6Z6ma0VZSS|IZ)R8cdbwYnePvboUArF#X|ud>6?7jI2Gb ziDZmi`-n2%!qCrFZ`V_*gHT}H7xu8^?aWy6WdsZ!{b&g!`h-u64x*{A$!Z`t$u6p56h2Vav-F_I1D{e;BPk5@TN z{FM<646lp`srC5PKXNChS+_G7pA`DWthfCs=r%*A6UCdrA>FkM`W3-?ByKVE#M$^S zvU6sfgWf2uWxInED5;`gRxTPPHd=|Fd@h&9K_wHvRweQ! z=D~jG=D;}@^mH7WN59lG>f*E0Dyr>aB9x;|&bK)}nX_Cv$8wqlTSsK$=8sKvEvQ&Q z_6FFwd1R#}*3N+cH17XqW#iuYx8+sS|No>l^KUxhf9ECszuDuOjbKW^K=903ZsTjB zu0363?aJY1CEMtC>bq{~k*r6}3)umNTxtA~79P;2;v;!`$CxK1{s?Mj(rRbrUV}Ih zcsok&3*iuEEA(oXuHAs+u1MT%yZDY-ST)7nChn%wzsEEw()NGEG_aE@mYS#ZSB~k3 zSXZ-PkdP&9ltCIX{g!~L*Kq9in60Z>Yre4sHx)+?U>YQmKmY?3(?;04mq5D-1=5Dc zaKCC%{eaHPk`6>H*(dC9$Iy)iKZt$6QVTNezmyTdxU~Bao2ID&n9r3@gU4?X7hYEw zpFyg{=uzX*c~*Fho!4u!vI_4iO5@fR9ELJ2yZsz}AC%Uss5I{hH9;78O=4Q;C+MJR zvaipK7!xxs2(gT}sV^mKmir;x$`?&?X|I{}lA}xI|wif^CYL$vk;^8p_?Cv4s89PF}ko<$YpvEF*fv4A4*ysjBHvkcy(`wm3Puh-iF<{w&b+?vTRJaFc`^@3xHh6LKWpsjS32S@;X$O_|E+ z+QXS_WH%AJ@`A3S?&payWj+Mx^8HCwxAOq}*!d%ycAAL~rx_u|$=UPe*{~7RrBVAD z*Ph(hioObFSHH?CO?9(czbv~t;+dqT`(104vxqs7rT{MQjA&B$IpNELZ%*SLUVS1; zZk)$F8*f;IBc;ccns}woE6Z~ zGrQi_0#fX(-;k0!L36WZNj|ZRcxeuNPtBCAnr$ZE1Ea#ygpJ(r;u11)G)W3)cpr+y z)#oaAEk#M9M)b#__d#^2Kyb^qL7Os3qfwe8qE1L|$){0Plm@37!XzxIF>*0pWvjo-$i^@B8paJ*F zaD`N(Zw8^}0Rg^K=<@FKYgPANAG;yoKGzq6^q@-3A|f*ZFul4TX_AR<@uP4yFWjjJ zHJ<#u=x>)QnY;bwhr0X4#{)e|Uw`bnoFOY&cq=2@Z}KknkI*Jj<7 zKK=sel!&ovW3qD0s=DpxDpIwhZe$7`l`h#ab-d_N(DC6^A9-o(iCNDQ zbJi|5O^#s<^Q3(ito82D=}=Is!1A#n?Q%w}thIT0?4xV558q~#AMU+#-{YmNe6G2+ zr!qyhcu_N&FtF;#ce5G>$LAs8R2=2lO-4G3AE`#}&759ljp6ydmy@2i2E_}aru#m*>xT@lu=ztYImskP~t)>F4^sOd9UHa)@D!GwE*o8cAp-cePB9>;~| z=k>&$#mqz!V^cXyeWupYgU%>UOoR|;M1xLD5aXD9qTuSus`me$eOto0VhcSr4Oq;Vx{Euj_E zn-q`^1rn0120cUFX^Zc(FL3=CV_K26ZCKpjRg-vGq~pX9OOGLQT@Jfvzk=(QotJj~KK4M7Qv{I{N`0gfI(JHzji81VXGb zyRkwZ$mwRXO5Jff8Szc2^eN;=Qil)p6pFtof3|z_qOA1s=zvt&akS)C^3C(Y0`~I; z3wOVVCH@{%yR*!%@CKp@A~KX{+qW3SO(M&XCjL=u69{Se%AkI54XKu4vy`jTP+mck zPAs>!(iL5b4j0HQL|IMeUwA83z{t_O;yVe@M+0op#Hq*`1GN-}-N5*|rGf+oGN_RI zQFMpw+RGMmE&cS{uN)|pZ;h0;>gv^xOUmDCE7pw-6&9UQjkL2lDR1n{tC|A6w^Y}T zpoW+yD5Q~ExNDx9g%4Apj6X5+QGrX+xZx&GmXZX|=)F$)_Vp`MVGt4E+qxN#8#kLE z)ybg|c*~BLv)u)(GAEZ;Joj004UuM6#XTv5eviIKqa z{WJ~vcC1yZlh3n4E!g7Wm$POwYvCwms&h-zu|fJR4SKbedvRCt)4{^rA=yd^N9Pj= zxO*=a6Uub;dE}7`T`YTdIs*oKKj5;SbuH<}xo6j;x|s)j zbKA$2N#PXEFII#o@4j=t>v%&eqVBhE!89}l!o+IhNRGQjGN0J8wBEDjo>Skj>0D7u z_YKu!WS~^2@z$?q1bY*TTGREim!>59(@PtNXM$L>oF2eG1?y)m7{Au3DU3LcG^qYTH~r+|uagq!F@5UUamU&S7$BQy{Is5c{QWh~Fz*m&Jfi@=80twI${{J{Rewv3^<{!sL(k;;kTLA3@k|o zwcW1lJ~p><&!hZ0Q`*BOh6HdQVK{&e1rXktLggj>tLjoSVzrpIQHa#Vx{_*|dDOeJ zE#^UaoP>*S>q>r}i>lWv#Dv+2po0OiMC(kEsTL)*FSNKxKs#F(ok_L6Kk|rnZ&>VI zOGodC=T&_v^PPwNBe1ie<5tXJT&2bP4VR`Xku0+~pM5R1w&A+yO+9?MT~FU&vU+hh_1G8Oc&9D39Pk|8Xf|Ek zyDh}g4{V2(zm+|taqz|~QwEQo55(b>So6fq#xq|ZlTZ&}AQ#B>)2W@!1iZCY*`NZ+ z4SjMEdNN+e)@jk|ribV0tfDH{mf(O;h@Y{Rf!cwuo&5=8LEhK-3mOSqi$7aAy1&;d zl>o5MPtR0Xy0Ic-zTEnI{$kFOao| zldj(WG99D|c_P$#>{zx9kXdDSQ1yM)2{2MU1;?1~unru6o(C&U@iO8X%>9!`BUY#6 zoeo2i+jh<3}3Bq{RS~Iv8dXC8TOv<;|R-rRdD}mxk-HE zcK@ybxO|7s75W9uuO2C*kEY(P{CWlFG$aagPNUxRaf4oQgO2YkAE5zhD1*TAnb8gH0uL_ zf+*z&{jzdGyWb-+9s2FGgjtk*2`Wocg`=9X+O+G)>!B9Z+F5ostt9@BO01v97C9H6 zU#(clKid`K@yuSJybcm;Z_*8CN#2m7N`{onR?p0=nNyE4JAH6Z&bzW0!F?0 zS%ux%?CC&hqDLQHl-L!>(u3rF2Qh}__ zk<%p<-A+Wf9cai4%2ymt^ivof;O_$ryTouF8rT%&@mXsp-j{&1PQ4OtBd$CO3Apk zXG^BO?jtQz1XCaYM%^hcI>Tz<_(1#D^LSuMa1MruSss*Pu6QMw=cXaC6n%*7o3TOm$ z+`6{f8MhNJXEoFq#K_FCq(=+4zU>~UK*^3T5h@|=Q6T6KFA&!Qsx^@iy0rj{g5Ihd zDE5xh+3sHHx3I}&1&ApbUd@esTtw$4Lb`H3K%VS!2sV|Ft2@iw>`n~XY z^afpUL+WO*j62)0<6jxwjx#oP?EX!Z<@F?HKzk_bOGI z^aW3%mK_ezHt4wJmuJ$s{S~b z+fqh?_R-OnM65yM-Nl-5^{?J^j%ZAkQhotyA{qR`3lBeyJ^*!vXgYmHwt9zJ z7JVYny{=t3S$@_mZa_$9LTIoRT9wp_=Ap(L3_hvEXEN%akMJ9%E5!sNvX(iE*Cxl^ z&T3U9vEe}vBP<9Nq)Dhc^9Qtq1aPRm`a%fo%=6katOYv#4bIt3)o784%GcF<_F<=n zTd?0!+B_~kd1U{FErG9}l08yDp>01Vv$sU?enBab7a|pwCr@kKUQ#{PlZGLB4aye% zN^@w6UDcvQl_p5mXnBbH<4BJna_s;QbaZXl|MCLNw@DBJ(S> z^1IJIOR3x|dH_Yl&QDPgwYS=G{pd#mY$%r&`2C)BvnvAhL3+yO){e(*o3ODkV$^*= z%7GYL-o{ZI3jmY8_9>B=ne(dBO#T$@{<((exgwHb`OluG1#?!9A3Lx=quf5ydi5!H zlyB%u%_GPgWCTFLqp2?MJhxLP6RGGz-v~L5n?#b56v{!>;*DYF5mkmURfI@9+q%1$)BY)HrCFT%-XIg+mCx<9F}%) zgbpkA?bQC!ppoU4C|6*)NS?SU^F0YB*W(IjaTMnI;;7QRkesq@L$-VAO5yBiQmv-& zw#S@ZPOgkfNX!ODHb{ww-Bn@+XkB>iI)Z|+U%R0%9hz{Ak8g&_MYpbu-= zXGxo2uHXDZu{i`A-$OP*eD05v*SRfb;iKct}!5b?F3X_?WZ64;=RWLGPx@EYfm``1k z+I=en0q!Ki*VG>FR&=X|3wQ&_)5g$c6fsPFfH|=YP_Qrn(EwnO74EaFn1$Kek zzrZr@?Ch3;zTwCc`z&3lJ-&UUcA6FpRIb}nB;V#Q%>yx2DnFG)woSjTQR<=b1c zIj$h~!_SU)X&~tGBd_*Zz)Y1t$V!$#<+abdqs)_VGODu`#G>%k>nqa4&&LCc$7d-g zGt={>Rzpxcm*-=B9N5m(*S+vlT>9nvM9d~o(i5Ju?P0OcG7uxD+V(jAq1#Z9UUnT| z?y;x$8w$KIoh#rAh@YOKMvI}|_6DLZhoS6)C#(n5qB-hW&WoIV$~D@I;YZKO5P&e6 z@eQ-*q`!#+D19daXQ2^709qU#L%+DEMy#69ZQ66(j*P;PuN`MDVtIy9LSslEV;vO3 z{DI;ewDa>?W5-kNrlt&{iadm?lIG(@K1VHhy*Y|n3N{J8ckJhnFOI%X2F3!d>(x5F zaHO?C$UJgR+TA&zafBQOlFFymv>`PKrY4J9<>qCu3Az>(o6 zo8g=F=f4=XZc$K;Ghj|vlwB%3 zlM1^xG+@E0qu)?PZZJ82&_hJlqg{TxqaHD?Je~B)kv#u$rbz!dO4#MB?f4YcjoCrG z5V0qo45EZpMQ(R@+c>BPskS+fUgCt2G# zQN6gTn05xV&Fa{j+#mG7qmhAGZmM!2m8aZ!l}3u-3fBT7_^c!>%pabYopV<;x!)Mj zK@!axeEz&zs@iUQxv}vWzt_qNHhZKA*0rRrO{s5ZYA|xuZ;?lvlS5zA<-xBNU@}(Q z8+HTkik6DTl@*^05Qia3^=B{g_Far!9~2I@&8n6m#^5_mD7hq(-Tt2+xzy=)tRi+W%xs$22KVdzRigmF89)pr|u zM4Ra1ML4#k$<{Bonq9MzXp$#0*_*;SSulSi93d46i3w0J>h#vm@Rgr&0A_JB`+2uC zjt1sWDs<+$_vHp<*dqi2;G4F9MIjbpN3zQbh1b>eGSKBM1#yKhx%XL~U!M}jRm2%? z(Q4xw>nx#3yVVM2`Rh4!oWy8x{r1nzJ`TX(T9wL6kp-WiPEbv4&>U2>>2SmK!bSck zdr!odS}sbD`0xzaObFRK#yVJrOqaX5g;sE+rljV<(FTcG`>f*p z99LD1sU&n}aYnze0oQWD)2 zQ@`urB;4!DJh+Us7wmWXn;dF-Rfr$|!Q*DNarbiPFVuyc-dZqkiGMztKrk*ZSjD3D zS@NttKFn6Y4g-_d=T^XW9kqZ0nGVS$)=wU?qaycoBh_uQsCMIn_sB)Rc9afoJHGzD zk(15;?Oq)Iw#l!D4)z`?fX7%lMR__jxaqtrWm)sc5Yl)SbKct5%~r2L(MK>iyJBSY z{+hLM^#^`!7vA`%2iQ<1BZbT<0Ml-GL|hAA%vwwi$=gG>t(_uF%4C=K!izE*EfSqi zp8nbI=d6C|SF9O$`jb*p7m96ZWLy(hFh=#9F%QYlKP949J1kLAX&|-b`bLTJ_2P}* z7jJVDO(raccQck0ram@8A=s@Sy$Q)duHL|I;N~kgI~v)*PSbyYl%qy82@J_1O>!od zrUXVe)m$s6auz?eWM#xFl3mBI$NRm#Q+}%{kmDaxLGJ=KQlCCx%yzsp&%Q1`g@*Sesbb6un91>3MCSqUG17_sL z1@woImp!uzsLzZKwK8IJ35)AG!sbIo3Z9%+CxnkU@%mmpW7$0UW<<6^oG57T+Y_U}cS?pf4fz)yB;83K zvHl=dl{htWUBWD>2XglC<=QK4=N&OZvWfUoqg=~s&#au+dI9tYCIvB6x@-D&b`wmczC4xYNtZLP{{qRL#NGR?F1=n z+e;<5Ax(a3r0R%bWLU#Z$}#pDHm zN(f04V`ORy)7=3}&&^3#%Q!SrQ%EkT;<{o0pI3L0(XRG#Uv~fYQc?{a~i!y?OpEWWTO{dhxT-5z@$Jjka;o=+mexbFd~N< zPH*QLumAabr!J}~Bu@4hY>Y&Vle%HLz@SNd4W%`VB()>Pt-oLntE*+egd~CCow+C^ zQfqCfv}Yj$_ZHFGxN!E85GXBJ=;na6lj^mw*yNivGxX=! z@^>vl7eK3b(`Ly9+o9y#4!E<$pqD|To}%rk#{mpAv;H-&NW8;4&hsIxH5p0v@Fyzw zv-0`6ipR?{$kFk~B63De4F=<_YpV<{S01Ul=`DTy`y!`7)ExJRu=`J0&mI%60FD@a z2sBzG+NOF(tCY!#{$`DHVy6K+*yi`GQX4`moJS5&+%%h^or+ZbWM_g%$os|HN%yUK z)4k$m9ZJi(LM0DKetBzYWFDsZ+#8WMJU`y?(}3n{9f1ALc#%BGH#8$&i- zMuegT)lG=T=YFp!^hjCMlvfQ^kS%AUL>-|@!YKEviKh6~WMIxv?{0YVrYTmNzWE+v- zGLyZUH?=ldRX?@x-9y&?{i96%2aapkt-7b0Qmi@w&SbNDlh|(%H*Pu_#O)0|?KWc7 z{yJ1w2;PuV1tO)eCxn_KoLFd(pkV~{QuPXZ9`iend>0yFCp}V0@%$VasC0CIbnS_y zRZ2?Z)Q+woFP$IQS3jL4JO?R^o>CA9|KW5}#)T2-8v zf*-soiA@pYtn@#LG^!>8^|Hp)eFBNl6H7a#eInMUo)|nqzMpbM=I2BojlF-^_57|u zrFr-+#2dK_U}{&Wv(s2MbW3T!x7;~jsPTvbA>58{*nLIT`+;z6Wx2tyPi>si!>=dv zL~9S+;1kbb6gZQyoroA{8Kb9RPa+bjh@L6ZTAB**%WNpCbMeA|5b^dF13f9dJdOFF zQSdcQ_FjRB4y0Prz)*H&8}ef{iu;mwC5!;oM&FvMFpdF=xG29sG(d8wqb*jU!J8cp z4I?s@k$z8P__Pww8Wr1X9lCt|QB>;?y{ zHEqOoYg3O$MfTy{f-4`ZyYkL+esTJYDc^j|PQBzq;>tTHU59wR@HF$lFQw5go4u-^ z{hp)8Ge2?nF*~8WNGWpY47eS07+409c|+*d1xTZzHLpntv!;mNHM5}I^Z-kl+1P}f zv+m>d2f7cc4(<&@E-4Kde$`NRtt1px(c4!ZzDr1XZoH=JT+AF15*^t>gD?lFa@rK3 z7;^8tp_*mwu)4liL1biC(ZKwJqQ};j!!4bnZbGgXk7{-AK>Tn;sGn8**w@VShSNPl z=(E(&nVyU#A)$d)XMTTOmy3Gybqy&`(r%lGe1eBdCB<@ctl!y{m~|?hW}s)-Nf(tP z8@$<@18)|Gq#-YFhrVKR(pY^(9D!Pu*_Q5cYXH_`q%;t=llk>>yy7y5{Go?jKO?cS zLox0^34{`NLS&H~p2SqA%a3UqNkOab+V4jC`|3f?;mJo|AWn)r4x7^}elYvFTC69V zUSYG{H10~DsuzDk{-Fn8y2mDQeRhQWar#Y0BLc`%dT|`_(_-?2g-32f zJi@Z$M2I@~+Q$)P5_q3QqLy|I{S(>--m|YQM2s)YD2Fz2Gbi_1%IC2&fj&Cq`FNhB znVP8`v&QJ&Nxt;Kp!_%;^TTN@eTv!ol@~rMD`(BrxnRWh{K`a*>$P86O<5jH>Fe4g zyu?%>31=I8W`L)OZ(SqG3Hj;?*E9`|kfD~g<9FAO%aUZD>kQs*0jD5M>NHJ~UKksa zX|tm*n`D-fsx-MNnAdc}fSjn&=X*w2M1V|Q??hK=J@+q;uJaMp-0cs*ZXSknD>9x1 zs&0ggqYCnV+ka8AJ28Njkr5SXCwlYAdUHA)9jS}#l4J4h9gE};sGbr8&OZfx?8rds z0y)#Nl)6aPwWudQHkM5QGMP7--NUkQu`=JOo{V_YcdMbKXb=z__rP$;X)4O}B6YJEVdrh4Kfcl!LP6bUjB*JDvd{omGcwVT|E6ZWh z%BdfQ_1k{M^;N4jvnmtvBgM!Y)KVhi^^{Pg1qBlB#eT}wRKG+w;PcX%G5lANgWrPm z_{>UAwz2&R)&yutEr11~CN~2BabR+9c7W6Nq(F=6A2pE-T#?{>YS6lxRN$@K26rqj z!6iNsz5m0gEXN8{k*UZcmg89YAUtN;L0<6r36K>Ji_Z zP)Jhh>^&|cD>Mvm$$TySR`s-bV)foexxWm2v8b4VvgO|Uz_7I&C!wLY7BMHN_4<^x zP&hzIG9BDX6=$e-!|<%{YN~5&0KuJ>dB{z^W0k&Xm9%HR0d|Z$<~b^Rv(RO-Tm-4X zT(&Uz_u$s0wc<@8%*iQI=x&y7o%Tay`*oI=LGpGdW(`?^?pVRnOqT7Amkx=NC4fr9 z@I0X8leQ=t&m$n6WK~mTKHkUuEqiLjNUZycw1CGdQkQ~lhVtUzn6VD_(CR8xLTCj$ zsq55sbi|%vissuX^JINY{YIj~#3N|3;^i9I&B@@q$hmHA$3m1(YQ=gP&X!*xnqQK% zjO(6k!l9>PvbNY`?2ZnggxjZSSU#!|zP&u*L4}@ofY*?Nbp1P-TJ)7UzjJoFiUA!U zF1kE<{YD+|F*apRMHP;IapQk&(S~oW?oC;EM5~xeNy%8ViH(J(5!fpT)H?vL5q*Y! z39v>>n%-$O=CE6~dPNOtZEF&Op*eK(_54R!^Q1T2-WINj|8@$QyEsL?Ri`@(I=9?BcRL%~vz5KZTag5M?uX1SC#AJCrZ>Zp$?2^bJL`jg#@Yy%|k? zwza8+EBL{=z`|f@X%Sg#zy%$kWqkMz1q@u-*^z3D4_oN)Cf?e9Bsyy`9&epLu;rUJ zMVzY-8GDg-RX8ZkedY>kRi#(AcoYB$@1ujK1gMW_yh!Vj&H785-572+f1Uiop6$@} zRS5&yxrTwlb`eb*SpCC$&wu^;HCjv8VC0|#=r*I#2|&~>bey7@Q>rlEr#A{mICJD5 zz&N<~RPfw0y4tl>{Mq|gL7lnPn5BO$a!>9SpQ+tfBh~_X68&tzKFhek7k+4)$MiDh zyssvqy+>F};ktKzVEgwvqK z;;D&y^4ykI(rd>boH_UA?C~Cy2Wl8xd1|d4FkS-0F^TALKnE`NESc1bZfU3>liEik z6skkbHbfh06V3BDqv|6z~lA8e&c410M3(!!z^@m_Zhk6wj$m%ouPIEl|BITJzqro z^O0xAi^Ty`Dn#bXt}cknhoFz1ub_N%C>7WQSWzuP0u-Kf1izb|BxMRiIW}``!u8qG z$aYm3@Tsg*?o5iNjenPUAE)5Rm`oA+z`X=5pKD423Y=5|809))*0}{N2(z%`OSw}& z(7^jRaeV?`*>+!aM}nra`2P0v=eZj~etZilA*xxQbxtca))l4Fno_;|Cq6v-^l1)2 zO+t6m`hY63&{K4c09SY(P%2(Ks+}=ZrPOZ&t18v#X}j-tzvbmeo>c!O!Vey^t^AUFanv$gblO`qeyXk{!Oc7NYoF=Y&D64IL`SrRxQ$z7-gl~o;|T6%39$3Oew47 zp3#8c5o3z1KUKf*Vx*hVsLu5jflNNxH_I-0q~grRYRgBlV&NU;{ja3hA4}>pRCcdq zL|kI|kN>q&*4i2m5ub-DWzPuOb?TMB^eLav=ZYPigEn-kvwVuzt4R1MR1IX#jrLjM zdl-e_)q4N{FYt{ah<%No4#6Dr?gk%5-k~;QUE_W)%!(JmJ+rJP8~}!e*OJb#Ur5j8&HdR_ij!Ckc)l{VrbexmJCsj=;p_C zWpFbNUqHmP7isZ5CdY&|C`!D*ZYgz+RV>GP?Ig}vNc=j>^Y*AZGE_rqg7~%L9QC@8 zod*xOcuM!Gw$gPAmtmkg*$NK5)y>O=EQhxLD~1O`Kvv)gAi|EnMoD7Sq8GgzQFEg+ za-{2@^k_HTgm|f!({=VR;Y}hip2RihC%5!m?YX{cv=4ox$7bjl&5j-uJcXKsEZ8`! z)NRgG>tPIADQ@yfhTwaE9A%b0`JD+KD#S`4LMz~2hYvrc(H@_DtPS02DEsHEg~v;n#25q%J=Z00>J zJQo&Z+rQVT%>|iVm0Lg9vy(+vL5p4S}l|TK9;4oVo@8! z_3U1`!hsvBMp7Hg(}?y-wOQxZKsB3^R3W_#^M)61#mZ|Aoz)iJvS4FBR&{(jg25WJ z0CK!9h}Z*N#%R-Ay0dW>-kT=cfu+QM*$%_cxf49Le4p`Yt6mWBV&%?2s#euk4ash@ z+RDVOStK7jt1H+(mii9w_c_}B4o7&@&3L|JL%$1`Or!3s_aT<|N}r}gHuwN%^ok3> z;>2<(BSo};?a6AhxsGM{mqSB8j$-MYo=nrrp8-ksxs-htGYCB_{n zFt%duZsa4X1Q9gO`ejszpHdy_h2e5hmMznB%)=M;pYSXGD>+fj&)V~NgLXmN3!3EQkwZTZ0Lw`0ORz)Co+x403kIeq zLG4X!K{jn@HQHF{@Flb`Etb+pSK-_S0-+2bHGa4| zU7!rswDFh-GhCTz%MWNi!~iMC>BEdT@b7r^T>l?QP20dI?SH$^&%pbk>vFXqVE+E| zRdxSzU+-;2u0T%?`r6u~Eqzc|(=VjwU#<)K)160u4w-Cy*WJK1{@?fcKj-_58k4ci ze+BVnqeq=K_9 zi1rpBUiP~GA-Da9JE)XzkByGovky29*jMFaJ){^o&9{(2#7LtZA$nh#(SoI^W5 z!o`AsqiXAm2H@A)o!bDY+|o+`Vz5hpb1~rUOc+IP0B*w@aCr%#E9MoN_{9$RdB!Xa zD0SfsP(Qogq5paCz;?XzFatU%p1*oHpnmecwt`J4FwpD*vUU z^>O4IatGaanaZfav$+%z>bFzHYOf-VLYgQUF{CHXbUNDiA6+TLO9S@C=IbafW?R`3 zZyMW=`J^`fsw1n71rwFbf~TJjl=q>`Rrt)tvtHa$;a+`bVq=tsG1&N}hI z9dqtl&&BTUi>s@8zg1bJ8Zt_X-e4`Q3R9G_gR}LfKHdjHv)ZVZKO*NQV@3vg`VHYI z+C?tRXG%6$-JHD9w)g4ijtSYWfDyOjeht|fW8da*{W|=Edsci;Adr#OuhhRkpR+=L zvvfaLyBi3G{v+!f1p1E^RX*kaYc2RcZfKH#l6toR*!QLVsiNg%&FCx#0elx}V{=N| zvyZaRVlZ@6K}N2vN!)YiG$!Xx33y-zA$w?RLj#s^?)x`b^0kEeP1^R=G|-`A-J)1L zcCvOI{Fm7si<^Ftc0^m0{)~}xYd7g1~Bn~jfYa^v+<~J zfe%9+(C_A7Qw2^pFr6c|Qmxxxe`F*sj-1j6Z0b2<=CRLWi)>wkY^~fyM?!z45{S7o zy2CC8R4){RcNRO1l*&do^UyhF!F)IEi7`>oijbmgyjm2*9L?7TfB5Bs_92AN0R^$NTRv$|XAhbp9w4c_|H^CJey4_>MYHHqF!`YJ*1M zi><@A*x+5$^x++It~A$3x86)zM;ZMZ?f3#vi{Ubv&QmLyr3b%C0W+c=FD?@snX1*^wm1u5OTPb~K!yG@NYekT-@v+rwZ3cRE$MyX zVp)=sxJTIz&T=MMjl{z%9CoW?bHMTse9#q;7t+>ese~4{&I~l{#sdb+laU{-7MNBZ z=G~455hm2Er0*+v#k@>@Nb`O637Ghf#G#evKD+?LhjSUik#U=T0Pl6wfRarl%~7Ey z+F+eHZsMg*|dQNTw%+a>%R&xSU82)?9;MehIj+LA%@P~c@9daq#O`JMSZo8jW7IlsD;$Eo@ zrZ?I~dBb3zm7nx*R#Ro!(ur7NGAUw zojMRjZjcW7ye9x?YS>1Fq#&|y2v=5zj9=^*ej^<7#SAFiJ<^Y+0z8pl z=zDW*8o!zr{s((+9uMXF_76{sv`IqNOhtr{B9&#@BuPRDF_p>|Q_0R;m5_C!qKHXI z*2y|qr;H^b`yONLyBW(EX6EWS^|`ov3*JwIb_#}~ z>ND~kXN@Ke$# zdjyx-I*Vj)MvWjX0&M{(v6dY^5=7!c+B1n{V zT|W^$VQt@0a|a&ynh=5w(dw`nZ$=8OlJt_KzH1c|U#?8w(GM?GNeDglvh=uZQa!MQ zV}Af{vhScs!z_09)#_=-M2i$SKmwNzLa+F2AdIBt?TmTw^L_9$v@H2+ftrX;k(Vet zG;Zj)hWF@&VsA9KPwKE`J>MV0SCy&ZLy-$(?;1F)AUlRi)S^%gs%7f?Q=m2+H@O-9N*d#1{e6 z8q|;Gr1msjJ;r&XA+o0~=Cr}&sPzv$JZrq3n_4(yM#yGskZf6RphdARgSv052aopL%aAQKZ zU4$O_>=IeD6758C*5+Mf>QeO#pR$#yW7Y4*8*!Ydkn0`hs7Q4BmI36MGAHxcsXbRw3wwXQ9`muKWL|)h-)RMv_=zQUZ zXeS5dU3q*z5yip+Xr6Ag*H47>&I)%ln1#bQAcQf@2NaiT>mAW>p~FYrpNO~F00$QE zlD3CcCetGI6OrYNUS4NaFW^EYMWTP{lhe_BY*5m+24Y8mVhCLi`GNw%R8+3o+<6o= zv1B)PCIOUM&e*$S*zZ(-H0fxGE$;)91DLFj-9rN0l@NH{prf3Mfq#Qe2b$Bs>%hZ) zn+S^{$#DsE8&IlB)i)u%ECocB4FRw&)DKi-#I~zC^I)n$FhvI_Fdm+_5>eJiFs?M` zkI>6ZB&{)qZ#=~VlwAFIosJv5BVYI~+(&H=oVXUvetLfZ^&09|0tV($4AV}5AAS_S zT2X-l6%j*TXePQ_hqG1#%<7YPu;Ww#vd3^A6tG!0L34X*(4dX++Eu=4uw4C@ljCEQ z!Z!k0d1849`CSx6^|h~lA2{gu6LG(i2H)EZNGJg(3Yb)I%0uy&KM`?IKZpyg)^8fCR7W>VRFBpf6yw*3Y0u z0;n_LtJPsEawzWQT1PP~eA}8)Qc#8HElQfFbHLgM8f4}pc9x72M{)96gqHg@ zpQIa9+~)vTse-}Eq;E1WX9GRG@Es0g08VAcf@$QvZVY2VkKiHC(+whA~*{;7hRXcQg3G&yl~@JwKS*C%M&g zz7(!8`BhW?9Qh~WWWIyJ^lT9S0~+aZf&^i}F&gzO8~Gi~(n z^9OVXe*nv@;x#l}{h8+NTQqSM8WLPpUa>IRhZoG2vl_Vd^yRFPV6A+o1Y|LL25CAg zvjo4DjS8)}TH7j6{8zGzw$a)MqNuySlXfq9*ZPZEd44Dmi z5KZ_e;+e1Mu3;e5dhG8=SdbJv@)Kc6=QlH0S!$jF_c|Rkj-nbmg3XrzdWPBip1|op zg$AP@!ueo5bjZ1(nOmW+TB!yNKvbfa->9)=dDS>j2>Tw2z}EKx(RNC{1sW89i=r1- z@L`IY_)4!xT#fBoz@54>jg53{G5D&Layr9!v11;*0bAro)Jm_`++^SA;)AqgMJ1ay9^V-zuZ z%q>t$m+YFHAR~mZQly%*tm?>Zp8l!J-Ak#o zGcY9CTh?mX0UmY%8<`1i;9}v@5Y0BA5fJO|t0L?M!oq*&Er8RW8!bD=Tkhm|`I;*V z$&5Gb6BEunaGkxm{MKqT6($JMTlHq4NaBD}hA#Uc^q37$V(W@BkUM;gX$^jl;12pu z|K$FDP8Pf$7~_u)W}Idn^SC$#Rg{A|fvXLM=@UeYU_5hc^YKSh2*FY+DIi{)=1iFi zTc_R3*eaWs9V`w}CJAaTwP1M*2RH1|#vAa5jVH)j< znsLtyc(X$Hb0A==0Vd6utWj zben`YJJIZcA}`%n+N)QqQslET^9=0K#CJHt4QOl&aZGey zRMVrOE0q%5{qG7Mb{~|r%ksQv*{nr2PqH#{jUG zbbD+c4Hu-!yV23BBg_X$&Ca-DX>qmpisb}Wrg>p9B}kDP^P`60o%;Co-n&VDdC&H* z`>~$@ymM+;*iqgAF_Eh+e*wX)D&r(#!>=_1|J_AHTbO zmg~v}G;e_QrlIZj>1adsp3{T4o+ZX}VC)4j+vGYgNYO?E-Mj3QFPggG`!1p=yKOix zEEZ8rX~50x#6J*Mf#)s3XeFenY@cbIRwRtDwnivgoZGtQi8Fa$z~Y?`k`LdSnNeq% zd;4Bf12*&w602k+Q@Zm|>wBRw3U9u<7Qlr*c4LN=Z{7BsrR#I6W#gEWhHC#&pl^Jb zcg^|+JrdU(D7|*DHR**}(adv$vSm~>8j+0Nh#oJ30^mK9utA($a zc)GmoD*8g(_AiC!f5Zd=g8tvd{_m0hJuUOV$o=oKt;jHC`ZJ@aI)Jew#q><@aIC=d z&ny@SuvO{4aB>Rs`G5pzz|lPGz@ovHeR;JzlRfW7=!#nR?zbzCl)0uWxaj`}oND!% z1ae{h4lF6cyMnKCEO`%<)Fckl`}1yIn#c4>MPseZBD9I>cd3fvY3U!M&vs!=uOAx5$;(ir_vZT+~D_ zrmpyDW48fD3JRkjq82J&zB1>M@57h)tc-lnb{@nj17oo50K$q!&3$bmF)KkN+3p%N zy245UzBE2=)o`UES2jXSMTi~5s?o;s0Hsrpa)eft@XI&tDC`?Jrf14D20)>}V;%?t zFsx8RPQoJ)oSK{gT5>OvF6N;FKSsh^R)53J8KV6l+PpzG1r8a7%|+D!&?XU!+|aS{OtCqXJ$~)LCGtRPF!m zQIOrj$Yr<;1Ptc@#E6gh1R4XM{e|Fnnc01UOmJ&n6;39I>X$*o5s45z7)2ey=aV=> z4eT5h46Llf2mq`$gd&Lj6#9D_{+@>adD0-q@B_-rl9TBp>joB2?1h-6C zfaDD)*p6cJtHYbsf${*1%OVr^>)%&X@w+^X9^}zC_%m?oUvFPcuF!vIvFR?$`*Fsm zqkz@yw~KUKem5}H&_e5s0ZDVh+4F{xMUJ;$FMxcc(Vc(9L|0WL8NYlUQ)R%~XT9zx zqJR}6ERMyda&w|43daK)34vcWc<1jx--G?NcM-`UhVgG zUc2%hDdzVqTk`c(+`a3SeMemG`Qy91l`d=(PWCEoZbkF_!0Z$34o*VMl?8qN@*_nZ zUE7}*$jTJSxNudOd&nFeD5kx3x^rqIpwCu9QtV>La1`My=g2#fGBgOzADbf03){6q zRjWFz3mQ4tlul%=YGZEzJ@xN@103p5purMz0IkmTL_^M_ zr!yqv94{bF{RR}%JnG^HLLHh}3$3Utv8zN?k@P5_rrprXp(+ljkIK6`2H}&OOoL@K z6}BC36I=$Kxd_n0Iv@u6ihMQ^K16}TYkwk?1HyC|8zhU^&{tG`>Q96`8&$_S{(nF6 z5AbJ@*}^SzGxAZxP~b8?<+9m`68jd3vnv|5;St6C(}+5S!zY31z8h{&VG{t}>F~lt zFuU?!AM0O7^>4F+>}~~_0~k4ijWa~QBK`A|{quZYyP-~~X8W-$@N*i+zt{gvZ?^ z^@?dj&03W)Grjk5YrfW;I1)eVe`n&R$19y!9k8ozy?pq*e%Jd_C)jq31Ga9K7|0}5 zV%t#+lRMDjMq0A>bZMPC2sB)btdtAXIr}3k<=M$yCkbmgV80$3AUPsgas{ZBCmu#6 zF3lhy^dDtp>%czGlow*Zt7QP8&oLRmaa64S&14b`feml5^q?*|x(*zpm`-s9Eux8@ zw;lxVe^Fdq(55XOsXNAn&HlFmM7_@`(iN|C04^WDWt!zEC|}n0x#mJ11ZlS zI3FK?;?HwZD<=t+$lD4oG3~T+qNhn)kj_n~8EOk4e*1S>LofY@orMa~w8#q1SGff+yCw1}g}cQ?lESst z)YOKrsk+E@6ZB|Jw59uf88pwyC4CH;KHRM#lr9`2yXWP*yFNr$*4MkI#oO+eSvv57zskFFljzJZ*)^jEl=moO+OF#^*~fQlq!0P&s1cvOV;DeSt$+$qEnigSQC1 zbbojFhrv!pSHRwbtka5jFUk|&8Q%M$eDrvytB|?nYw4G5Q_c4IMMd`M$q#1o0P;O) zc(c4rIrdmH`+iYS^GsQ*O6+o8Evfgory1XNDT7yA`y;-7)eK5BqkoT1@F1LPQp_sJ zG_dB+f1+hfjNfyqnf+Pt>IUu+$zy}6S93};Q=1mg!%fXYJ~c<$;+oG-_vBcV)mnu) zfIE$X+dcgAKP_O%J>Kll(g}UhE3rvA!*Wtp3Ltpj#Z#gbF18=-p_yOBs;webSvyV=*vdbuq+m2^m5FAp_t+=%Gt%qL4mFD<}6E&NC8`87U>Kb;Es$| zRW8X#_PLL|A88JM0zmf?R)qiY{#LE@Z4i({5fl(Z-c>O?{D&9@qJS8N;(-`)uZp2a zBljcdi&d7G5vKsU8Mo88*r2eCel}SO-51|s@F)Sp+~mfdG|dKH@@l=}GgQ|WcofAs z(%oL^Tcr<=Bk>~*ud99{N(_dVcY|`>)?=rBWnk;+fx($2ywuoU3x>jZN6U?MIn^oS z9islVYr56FA9yBV7>2?uvsm^{4pCzb>m;*m=`<~!`F-vu;zDs$`EnMUFLRvH?OSJ< zfx~E4)+gO1AJjQL{B@$*tKWxwa8zK~vNc&m^#RV}UGRw3KK4z3Mqbu9UbeRt%Eg7K zrbE2;r>ExX8R_HXyi4%3D<$!wDj^m z`Lbq0iJpdTvV)B_sV(|!+4GYv1franWtidhBM0lUCdH(lr^|mlyCz%?{q!e-$V+bU zC-LP&nv+IUSVvmzAS-O#_>b1?)l;LL zi$(I^vmgi3dSZFKP*sr?BXgi(tH+ap@}=^kZ3zR)YJD}b*Vli4C~)h>#M)1C=bYu0 z`cc!_{k+{b20A?s83<3f5#v1qFX6vfv<1XWugkkn=uuRVB>u<&u#UrSL$|6<3UD%% z9Mc1(GQA~owLM2tSSC#FbDVcmTKrcXC(2N*85@!@$su|HJe$lrZ{H0NykF4rG3?E; zE45rzJkEehRVIKfLRTv9<894H=6ZxwrF*QXrgRNM1zXOw>*3-qzq_MjJfAa)QoLwC zUrmaxyGqDzX)?D~rvnP3hR-VvPZx{v*>-)%Y`hWa(_EiHZVy>ZS91D<`N!bu&6|$) z^Bd6ILjdI~lBsjP<3R{6f83(&jT*yv*$El9{)1E)3_zkY=U0XY1q8~lbOAq3ue_ip} zT1}VgQ25OrcLol-I%*gYbb4Q5}Ezc`r&ubh=gn zjy5<3vbyhr>l**4`VK|_*BjmpJiPrmoMaNvHHkkF`a&kHaNqI84u9x+Luhy0ivY2D zwa-PpZ6$t8DSa(BW9D{wV8lPphQ1vj*<*ks4NrRB{cwSxuHeS=m?*g^`y*4~6Tzu(C!@+_8mIE*MSNHa zr`8t|pWCAksa^Wkxts5q&iZwx;~PP@Eh-=_+QzdQNt{@+D4OA4iH|MjNZT9%6J znj1Yqq-*wNM90e(MKwWz31TTj4t1NK%%Vn=U1n+`L_)rQJ0q-h~J1khj!^gRz@ zn`|i55Jf-S9Y0zTVLk31Wf2f0e(?2=hFdDS5Aa1?t-?8z-va855)G?gYxgwzL^?1u z<$~u>2>1tu2P^53ex@nY)yYwhL|5Ut_YSw+!}fCH-uBiz`<(Wb5d+i%d-fg-m$sGD zMOeAGti?I`W0@m?%hAF&-~ZQMrm?g$qH=4(F5YO#^j(vW=C{_+ zdLOB(^v*XCzrW>EaKHqw9OX|?a z-H*3z+?&yU7Qh7lD8tEG_r**Jfaktg{Y2bOb;3ohOyhzdOt$<)XkH7^pKpRTAyg?H z@nh(@sM#((cx0AySaijD2Z#y25n8hSiAXv};bGf(5$ag-18N}n)=vS!HwkE*^5x|( z+m$W`8^zKvaE%!bwJ_WNZDlP9~e zg|Sz&=#<+A~wMwOP0+%Jy;5+S;UUi?5vlvQz6Ho=r=zxos!4b;c4q z@IHkO1ua4nfOlP~@qKfNd+NBBP;Pd3GlgtXcl?sMqNJzwfUTP8+_{Tu_YNnbWxuQO zTSvIEw3wzW6U*0Av!h{(T-}{DX}x7JIRSmb=C830WHx!pgJ<4#B$G+*ZwM^8Hz4fl z4T#BnEjIGJEo;e_k2^9{1e^aE{m&+x$M@0JMhMJ*@1=C&{09N@OFPN4#$k2D6Lasj6eP?q|N=f5m zM#dh`tp}Qx0~BHl-q@7q7-+m1ny9R@>M84XouAi;d0nu>!^bE$bfPtMAd&0q z3(tkz*qkLsUgY@>+h}Y9yr#{d3Kc}5TQcAH23G9s^O#eaWxfI(uR#MwsL5k+n9~vc z8D6SKpD;BDWb-65Edf#Pl!8x4DVFLyJ2bzmWZ6_T^vI??*fWOyh$`=z)qEu~Qn3=1#!&#f7FY3^-qsm6HnzmT(*&2Tnv+^7f+q}HqjP4y{vi|Q!MsQqw^UKI}85fS&Q1YdIhYFwQ`oq?c3lB7PFFbP>x zXrng|ACM3_koqW>QLkX~=5pJ)+L%M3Q>B%)STp&8!ommE`mFtI>E`aGD&pD6igG9U z>f^y@{3^U2hCOi(jlYA%)&zb1adYccbK1(i`;m1#b|ceO!}bVi{qeZ)WY>GU+8R26@Sjs0zQE;qE!ZUZ zv_E3@^rx*yw5{p0WCfuCtI`+;M$WetP>OG#7vDGGs26K~(CmTBshYhvcWi4H;f^6> zV&~&$FaJacI*(rdl(n2#?QIeDMn-8^l2IQS6Sfdo^!$rPMlHm^bX5Rk~(X z#bQ$vJWZNvb)`a^Z&^Lub_H=(`B6wW`cYn~P-Rg;v6JKQMA6V)ZC})@(S|GQo(43# zWi?518V|?2Ji0WgO@3ZWA1Q?g!wbAmd5By`s>Hr;>$YgdB`aN5q{TShI1uDprs}XGKN)~7Mj%VA zZHImOzmul{>Y6QxhmE*dd!Qd6Q1ZUVqB8?x%A?pxybKUQECe=KZ5WI0A=uVN3bnOhJ`Acb7b6g0UfF#?=*V&A!tW$W_TPA{^`Cm1yM~mw_8_Htt_YQRzb%eTnCzg&dCSxXx zS-980`F{s(DN&`lFwQrtgehI6PgzTq(c!>*{kbj~R?L`{*$T+w71jY=h32=*(Z!5YUP4^?i1?Hn{5`kB zZ|zjEs7 z_g3R>1Y5T#_gH_jb#Kq0kAJ|89envY+_m_Oo1Dj5f_j5n;;u2BCxv1NjNz(hs--9F z_$lm^X@g`CBfMtso>o)x1%GhUVbVy}=t-t3m9&*@Lgx;f%A?3sz_NLH*=&hX`6a$jtcAXs8z{@T-fi&iBn{ns6IdXQw!+f z6Xs$}7hDi^Ic#n}*Vn6i*XiwTliT43siy_4D){qk1%XrdWfy4}S+?^h;v*#pwYa-A zeY|^sy^f{np+j~5QscAkt^IxbGJ)3^lZ?T#Pl{SyD!Eq$Uwyr0)NCNXR$Q=mZW>|Z zsuN{6+$Bv?nmgpG7`KFBH`E)5W1B<`o|f@@6f+)WHv^9Dfm(y$yB@PTg@Ip=H?<7Y z7_Xq5X4Le?X`Z*i`UkDfSJYinnT`||_nw{Brm2-_c4TtX z_?=lP==%0$3BAM0ZgoC8Zy)FaHS4PN%xH!x(|w>Jz?zp9))(dzWAJdjBssEs(u@%k z9yY8!l=9qHp!Pw^H}y^P*jv=xtCY)enev+Wdi63^thWb6Z;_R`B95H?!a6=?!&u9F zlvwFKn7W77@no^Mc88B`Mrm8c`{n_C;$g8wg(2^7jr6D}%}-XvCoH~j;x+i*W9yM0 zCGd20GH#H^-SQ*TN+MM-Aa!t;jY-RlmCD%6DQ$brx@X#jgC@pX9ZasIUBBYDfPSJS zI*#2!6UU1Bu?&owZNjg-cFi=JH2)MQb=%h5wm8x}ncI8oxoQ9M(EW(}(0bqyLhIp% z9Zs}2TGBb$JHxJTi*_9-HM`X8wEMPc7gtziT~y=4%UpAVMrr0|n=5wp^7`uU%P-Yb z`H7HJHSQhuZFr`&nN)?@>7&k6A0%w{a38En8RT&oJl9rYkTnS(ZkDEzo~lfe6lS|r zD%)-b_bJJp^}gq1FA$WY-1-S~A)n@)PM?Q2U#EMMk9UM??KWr1kgY{&!&9Og!Uojq z_X-ugK`XtH&W}7c`1$OQh_9)#HxF?u>kvCNHnDiXT`e;#tUPY>3Ni0@7?e7)tR(g5 zSw#DUo^#EwU-RpSPnjQ(K6?YaU!8km2k%)G_|Y86SP^FW0Iyh=eVGC1hi-3glV;6% zXUe*Kqzv<{%-lwFdOm6RGJkR8UFA0in{{Q~JJ2#i!7p!Rk}`b_zGK36M&t9i+1sm- zq8`;15=!kpx>VNtrqv+(Cc(uF_X0+|ENh3J=lUHNt}YM1su)~=3S}b`x|EyU;bWKz9BhqwbddFt(s$1`=P zJ+nQ=dd!xAh8-Z;UL7yes-XsuujMi8EqH@wA2^~nTiVyz1ehy04PD8SajUNgn3m?c zd1hVh8UuodCA?{o*7F6wgEwShp3bMCE7R5Py<8^A3?I;ICEll19*tanLYF^0AbVQo z`{yiSKL`-D%hSjM_)ym{7t_XkKKFq$L8@O>IFMn>9gP!vxs0dV-CBTMJQo+(5Vo{? zW7j2t^9jaL^$LB_vvXr8dohZ2;I}y+3{cY3CuwAcOmPVv6XYZG!N(|m+Q&dK@E$|D zZLgKYh_05&^5yfA2SO7cNNY##4S!lY4P_6*$^E1rrNJfggAO0Pbf#YUGY?0Trneog zA(=NuFGjAkk6nG&Yo)u7e5T%B?1`taq(CO}`uf!8~Atb8>X zUoy%l2g#*#%;cYl8v!6CoMdd4X!aKY#99!PbA!I2w739kqh=#&p$BsXolOE@pJ@;X zyk%Ow3ijD-I?LwIg$U zPhJ4~>(4;Xg(!7fg6KdnYN5&1l0-8^E$fU{8?a;mD>WSJEWhP1;)=z=x&>(;2%4<*S9krBK)s>x0GpYe(~aVQa$D&W$v_(2-xQ3ksO)xAOb{JBSS(y z$~%cvgY9k&7Z{B64MS)6RORM$-uW=)f`_=5eQWI`EIeX4_@` zvU~!1(wqMpuJ&wc%pd5Fjfl z3PQceHE?4`K{GR71C1?k!blxyhYz>kagvPcT_PWR+&6KwWazH29ua#&J%`Jcb0fN4 z(6QLH$+ss~?jxgQrDtXSr~wn?cY{iFsienRyy(qLycsPZGmU+cHuFkVQ}uI<@F*!< z?b}CLx$P8{`|@Y|oo?NdGUFP6gd9=X)zj#KUNLe^bqHHO;S0^un4ZwA0XlB>Vx~pk z<2`}|B5GWuBFQ63Q{fSUVFgvE)|PN~rDE%_yd7o8u`-c11=l#tc^V@VlXWG|4Be`_ z<-@GPDC^82)w-6FxjWC-ABa5E&sEj9vp^BNOy{M61uc!}3p+g0cy^+B_l?J2*s|$% zxcigJ;@V@8QcjibKA*mC;xeu@_D9`rYbR-DF8dU17QB)8jSbckQou(93e}Qh`qBcc z;GMu|uGZA6?5?khNMlA{?eMWls;7oQ7mMclmY?fe8J)`u;5UXbnWKHy}d)4Cx$wW~VC;lBOKFdVxLSaD9ztjSI)_pHyZE1LSG zyXLIiN#o#Vk8eh)^^O*d9N;kSY@h1rO>iy|CvdRPkk9iBY$I~Jj}yq|8`4rjAgWTw z0#4l8(aSliduoT2`xt*k&`r@(c&YH~C#1M#rO|hu+V*!Mod>^Pet;ytnI?@2qR_bTg9OF%#Y`74+oo`V+zO7nM4fsHLROv8aH1 z9=C-xcv7t2CpadNUGItCy%0@uK9!Nfy;)J~ZgIija8*N8F-n3Nwe$t%FKPvM;&p)K zN{C&<<6c*zvU_`-U5&G|-UsmI?Wp!iFMo6EW6JT)58vqTGTtPu+?l>L$3D(?JawE$ zk@ACaM4sBvom<%_$fUCzJc_@R$!62BDb$8_K3aveWl^Oks#bSTr#WW(9ag{6qd%PI zrfm5_(U8=PclK0WkYTG30O{lyMN0|luP&#s3$tpew&e!AY!$$+7!{V-kVIkj7$1l8 z6cytK>M3hw3i|bEY=nfpLVT5!gJEn?#yAfP3 zd-GDld4Ghv-oZqMG0{(M%pl{HGPX7A{r`j#fjF$-od(JpHV zRA~&Ri52gSzvwxyk$~zQT~mBJuWa2I8su(!FpPK%mq+>+Yh<1Qzx~<~O-wn_q9T&S z*cUG%p>Vc!?_jp+u~ErnZ_t?%EGQzGS75BWEgY9NVSx|mcXZm}3soGCDtoZM%jBy0 zmhq9D$uIe?ly84|De0N=1v>ZCX|U)kklWcO2i}&cHoGI;6)JQ6e*=W;fD}+8rRbgIL?dn0 zZ&mN?_l8!5Gna!?Z_91^zQzV;-2R@RPOq+r!%!9K1Huy62bqC`>B0wWdOq04#79m% z*=ZoB)9Na$DD`5!sjb`>qF-t3U4aJ}iAj_gwvAc}QPGu3>+QY#i!+Lns|u65Jw2)f zrCU^W6$f3q64!|j`+LGQJuwq~fH&IpyYofTkSB%Bp9r5NbnC&j(f}^^e)>>}x?yYC z9;o~z%M^qYB4Zj%XjUVos-&k%i>~4Fy<03;yE42I#|`rmFfsDiNW~?N`=68_jI4V! zImzpX&bED6hF})VThfX=s+w6wMN#mwbBSZ7!_JPSLsi+O6|}2XH3H2q&Pd#RT6aW| z_nY$R0d6)hI;dt9BoKNqY*o>`(T*1RfZl#G$s_i1^MOUmiv%^d_Gsmk>W8vT?fF91 z1xT4Ch~E-4HEw$!HU5C8x9oo0#7>sjaxpG*#0gt<$ioD9U$_9j&r3ob*zF-?Q$D+S z>#Uwsg~;`n4~0Lz!24>Onyt9mdlM9|hZnirf-C%G@|CXf80*)VUCD8AN%B0UNy;D2 z1gl&U1+0_ep}y<=jmlS%&#+|m8Ezl zTc>!8gb$qf9Nxw`)bSYMnqM`PNnT{zaIS(UK9$!~n_1l!we z4EjCik;wuLYWlWw9+hoJ`Ij63y*Jwv?_(CjZm`p>9hS6Dy%v9XFj4r7_{A| zWA@78&K`VXuidM?Z_;Lk^(05_`LMvDF1^<+!TL+S2CIk~-o$?g5duifpQ~A1e`VBZ zqadSBe-3=+hXCq5J9r#HLoyE-5&R)Xr7oSyj;v>PE7)AZn9KPoLDRuY+5Wq^aN>FT zi#X8*Mba~BMzSd9wXllImp$A!Kalr)^nSci3K=vC zTs?QV9liM{V!)D$41zZLcqV?Xiy~rGb4YouQ3v84pUvNvb5xiMclCBzqHNuV^5A5X zu0(S6b-CkNNrEkag+X0ZJ{Wvxa){6uOTay(c@9e+qD*`LM1(bg$^vf|*uWZ=ra<@t%AbYRbQtkM z%Z-TjHk2NB7$V)mus8&WUWB6JAScQ)%y~(gWt4&8E;>-Yes2#RApLgDzj{8F!4~$IR;J~$ zNO#j!v)?aCt0oo90~?`w&BR`l=hp=kCog{Dgp^%xxp4;dhJ^H+PRg(&za zxo%5LV(O6HFir^}UpsRe?%&>^7go4z_)sG0@#RtDBji&W-^}EW9-sFqDOl7>-~?+R z-D&e6lcD<-omD%{`^8HOfB#ce*NyA|HQ|-iEH#E2hzbUCGN7rn&Yy@0KI-|EwPnz6 zp}exaMkCLkYsJXF+@ClGlvL6`h(@?UVwPsAw5%OHtpM!V^h)H4T~Ssoql4y4sX%ph z4D>y^Ry>>Ez%?oAn=`1M993o4Xfsj%iSk#4JciK+UOY=Ge6BMrG^IIEixP&vqPIEU zxfO0VU4pW`zDI{A=gQtIH;u!e9FmZ4b2J_VE!Iv~No;2(XL{r^eCh2tsyv4ONBxJ1 zz8&;ku|Mnr=FVS~h0cEB-jDD|L0{c=tR z=O+TFiMD%CDsu)HXrF^t!X=kQ{;Q`UC$Q=zDBAA7Px^Zz{t%@9?@L6-8d~$7K{WG# z%;zogGP;TyLW#`hmaP$%3OuFtxGqU4SCMDorH%;&96!>X`rFqrz60nkl6C<^a!=98 zu)3-ZPu+i)z}ELwXRU|6Xf6;si3aViAspxuy`cgplp#~0CEdzrIHU2=?IcF{C&JLV zkh9$f|2tQJ|&j2f2J(AxkuhI#KNBDKsPec~?*GoImuaFjn*K!Gr7D($9yfS>)!K#`X9{Y8i(xtCgsAqLqU^ zxo*17lnBlyLv)=j`*5@$YK#YHdlx{a{Qx2#^EeDYq%5nUejJ!-#C&;e)*IViQc_2>1 z9AIibtOg_F{rk>;&-P!*=l?Gx%+>Zha~E}X8+u>g^PLHa6zw{9Q;V<)V;y*sdjS8( z8UxPQP&G11>uhhl1fiD~J_pC7gVpmpif<6m1)8x1)T+EjD_>*Rv(L6;*k;9gPN&N) zh6m-XmM=kBd7q$Cd9FPXJqk~*UEJ)?;%0pPWeYwhO{Gzw3BG}%h0^vHZ)bOA;Uieq zdT*#MR|Pe&+pe~bWRbGQR@1pjUXT94ScOKhkAa-*d-hF`D>UgxanzaL%N`Q&u=r2J zH)HG}P?$|a!f|ZdUu;gI&=-(NbVP}IoUV%B#8jY>E@60?4Fg+^Cq$#4mV6l2l4znX z?~9Uh&iz{LfTYTKt`9&*iNTvNwAc#eYPFC|4ZXoq8@nA7F{4jslZ#$w&nwHyg&Szf zcYe7!Uvawon7Qw0Y*3xau{mukLi92|>$2Gpntj}cfdzQsbs&x(6a5n*1;()L6$eim zI{^kck_Q)!3|^&_)h{MXJEfYM0|^S}grjO=cP4XWWaE92T& zZ9rD>9%VbbvK=*7m`q( zYnD8=!CHwKl<`Hi4^LG%qPMI-y_REjkh<5%gX>4yV=w0vfuUv70Vi#%xM`53MSh0( z;2t+V56U1gjxCl zWDrbOTLL72gqOSpI0c!=arg#cHly%5Bzy(ggINXy+yA9IBPUJGR@K`owfo#>xCg2M z2(iy7oBf1p6w?*+8NI@Xn#%|25c&%0_hDG%kX8T)cGWhF;%4;x(y1&FZ7kSn$mv*6 zuGkm^2xBsJej;!nJou+6SZRB?s>#_KQ0$MW0?Hf~MdR)KCQomGcUjVe;3o#`Oa~Mj zi~I91+A|1nJk+lYiVz=h3c!v?2P42%8KT1>+63hxX<;uk>7T~2m@W^Bu>rq0w0sS6BK_KWvR{}D;{WwsBL6&yOmj3x15Bz7 zU`bo|_pAM%^lFnJnjYp6!)Vi;l0B{|y)w#IdmM`%*KUD4b>BRMHZKClc5oH|Hf~_L zL%sm?IlvzIx`RUd%~)yuBY5g$n6>MtRt@Dem%WyG)AO~My^qs)dv7R*?&5qBpIjG~ zI%RkMYOg?~SwWG7QG4$c=CoSqNW#%>*j+38FMV1R`|K|pPHfeN8*BhJ+#z7Yon!n0 z?Ug~mvWbFfikL3&Hv$>Q(O-~TjTQcW6wwEc1)gt&KcmFsgcDQ9)4nfX^rwotR_`UP z#ftEdc-Sc1%7z|*L`f!4(9HdKcH;bC3g>w*xR^dskSRoKfOScMpd48YsH%5SC2xKr zINy;29NrO95}K98%Qj+%743glrUDypmfNLcNNiSFo|zd9Xm4*n5@Y}VZbW(Tp}IN` z1VUHlA(u-TH?#UJ`^=|v3tg%QTTU~c^2|JUzdPrri&P_L;U(38)ZesIx zyWMu#=gE84;q+RepqkWNAqJIqpD&&h$v;=7FkWyfaYNi<5ibtTHQI9T%4ti{HU&Q8~e_$vLyCxo%$ zfyu$3ghqj>qu616ONRD=m{gZw+8HZEt!A9n(~G;4TQc3HGDm4^K2}fd)P#felKJj1 z|9EuHO_fK75IP@R(2hRiuz%K}ObvN0nU^{aD5bDd7S7j$+YNNiYu$E9)KB@~CQqje zE6;#lYtEqhV(#PNw6_>{P3!>krZY|fl(J$sR8}2O1D!6KNt4AO;0zfitv@?oGOsgtMu~CNMui& z1EMP(G9iSo(bc)uYK0EI33vVA?_zqdW}z-etI{7oefgCtdrq5MY@C!r^jN&EqV)Ho zhaQV7qb6})4$C7J`N26&#W?GFlmp=9;f(N?EJDN>5YJ`gJ17KfRKhGUnqmeIc0w0t zxn6Tc`38lr`~TNZR9v2*gfS|66+^>|5XHNs!cTWhWzR- zaTqVRw)|GEayeY%d1U4MV=?_NjkS;MxEAwTbv)cgzdg+k^mQ|VjwvV9TkIMD9uSN( ze8}=)=#e@C((XH!k(gi14_NvhjFaT`Y+QMxv#%}*pB&M+oYHLaEow^fp>&Y`8oDYu z$X^*R4!xgdSf6D)bowYDF)78<&($$sHoos!i2M_d3Cr%NS6@z6c0kLE{M^uW%VyV} zuKEdvX33(QwX7$qH=Iy;N6X$ufU1W4rnkeFH@~33vcu;I^2~sXl5Rqh+(i?HY3?+G z(I>+)E1PBD-ZvPzBxsAGv8uqF`=D3J`j*Xr$6~=c#($!^0bAV|uW!j20(@^QJ)&Vv zD@JczAXD7yUP$Zu%D(V(cWI4h=SzDvuI$u=oVt3{CMx{sTd6tGW#bqQM(;RL<2^B9 zYb7C@{K!vNZgrbi)|BHE-qZ#$cc8H~D}{U6wQzYnvor6&$BGJ4{go0|yw1nxPx@Lf z=m+cw3cj+IJvn4K5Ji(lSl~J%@*T~`Yo9+UfJ>EdKworx%t)1seYtw(l|I*-`wXwn z-DeP`al=|(u3)0Z#*1C^uf+;hL5qqUYE7gq0j-s?y(!XuyTGxY8kzd_z{$_0zo0BFV}|{keO5K+>n7Dwvz2ko2(^Z^wa&;~!+E31 zFr$M%+25wy?&lGGnty*(rPo>S-8@E3Em1B!fvZFy!PRKt6lqZxwgq&NKF%xK(HP$^ zLdc>n-<&?h+&~0dFl>R={eptXkrQj+zjxpd01}qI7kEk4`kw%dfWRx_!G!E#_g_PF z0%$PWyc$pwuDC%OlmNSWoF-_^5SXzV`=|c55?VX<-{3872L3DnRDW-#R(h~fT?AF$ zW6LF;E2{j1u^nF39f3d;M_MuX=*pi}4;?q)TW$mUroLeDFq#bYZus@G9lD(V8D&QY zw5u_Cc;)?;fyt4sS&5OW)ma7vRH!WP(_zIt+c#RJ8_yCs?v#`~s-U~`*fpJHyu_cL zxPa}Dd>zO{RLSP8lBe+xzVOufurZdzmgMJ=*m_DJn7NBC&NVV#|3`hjZ(`3zpJx>` z4pB^6AluDlvDKt}hAUL3>#wS520WoC7V#ceY?FNd*vZHu?WAYcjXG&cyy(5DXD0d+ z9mKZQ9e?L!-1pIN@(*z?#M_ktxRg)QDHr|$E$!3kjQ35>bR<;#I@@-&h@tYFmX|`0 z=nq*iW*#>llTY3z?X;6>ydcad{*fjvPgmw4i=S3nJZ^#w-@mgunChN+hm)9ExYtQK zV@p;)(kDyKBf~t!FQ_$-U7o0V$KTL6EL(c+NNqIt&0S+5j@mD6(sxbSSw+~UPtU}L zTaR;AkF~{_e2r1fX#xXP_?r}ewh?5_07Y;Ds*kXy1xQZh0`aFktWg%KV_xxoOXf4IsyxGypkPhf3vaKOzt|GY1eHzqieJ$kZg z-Lkz`4B}|tBa*f2RN(s9k?&euO=BZRVLw(kreqnFg|>5xyvs-()Vdyj(!Lez!%>ol*7nN}!# zChgWP!VuJiBk3u7RC=HoU^McxPg&Ut(9tb2Q{Q`aHSMZs!-p0OSnPWeCc$qb*Vim*Sv zX!`h#)ae5KJG@}Z`Ku;rG)5u9hf0oHV-o^PuS;Nb5IWHzqz&@m77Eiv>nV+)W%IG2 z008;sII>3|@B(rgz)gDcW6RjTd0e1N9|rcr4$*ywkwSzk%V_>Tjqm#CSO0k%|NAt` z3}j2df<1CB4#}ZiZWwjN?c6Pej(7aTQ(rm%jg@5yLV%$U?!^Gp6oY`r#$so~OXSx1 zJy^;>1dW~w{^f(e9Cp0$%;y_)TyzFQ>Va(jrvEwuFzLWyWEH3bI|*%NBwlE@!vU;8 zka+bGU~VSNrake+eByvYBkb4)S0xp?lvan^MDM-G<&x3>FR<2*$X07huo%oh`km3N z3#SrW!?(dxjq{u3M>hg{RRoC5ubuK|RvVPYS=uhh3uLq&}^XMrpN%ezjbEAtBD^za+E-y`q1FZzDmpsjRb2I`hh4wII{6$64+1X-*u6`)!!Sr1-M# zs)h*hyY{TZ%lE^rrJ2hFVX0C*szo%xz{#w0fvl8=DvaZvQz-HS-M8lH3LIIVtXItw z7n-6(O5R&csR_i-e^00jGwm!iYb`qqDIP;hilTGDl^GkhzESM`{#VH@xPfTe@hYNx zu&m&i2Yfu1|AU%-x8o)or2=f0Dfh2Ox36@ z#Rj16gbVK#jO^-AA5PuTg8DllU7eWUPoC17MSfC3HnvgQ8XAOxiZ8n5A$7gHDE)$W z9VQ)p^VsKM)u0W2Bq3x9Cq59;8THxB|1NPn8P~m(=0Qvott)une?ntbp0;tOe7a6( z;Wj&DV}f{OO8tPg)wSvLJzJCJ{n_C#B;J9?{H=>%qu_XfgTs|8yqB)to<{ZEXwjm7 z#xoz9o^EjTuy?CmBt1>bQ`t9sTM}ak+#3XUym!kC=YyINyJ~VUzH_jevmpv||1pO= z^isCSD*OJoATh4TwHI6X8udk-ZyE$3abd0wLcsK{OVlbA1w`)L{#zyKe8i~ELe)|3SiP3(R}Ab zk)#$L2JEs@Q)g*XSL_uanFX~vrC<(ITePg{-l&T*sjKS&vg-a@ zI8-!{ou$NZ^bo=HP2~ofAQ>r6yX*ix4DZKna4%^z63Erj@;i3n7E@?BMsC&fFKwo- z4edD3Cy@P)?)oFh^|-CDSs`GYE>qchGnkAuCr}GQoIOOBC1umB6bPM$NB3beF9*a# z?$%d%us%-2Jd|8@n_ZouTEJ4*o_-CQT^jd*b_2@4T1YtB9>U?zP(!xx#3?iAkkPm( zXuCY8^_3xKS)Uht1M9i#tM9GNqgoadFGld$aP1#Lab;=vQc0kH!Ub0WPk6fA{$RO` zk-_NJ#hh?FkeacqnR8Ftx#6awAMIWonkZ1e8_=*hk-wZW@{(MuaOOHHc@Gi+xim+u zby8th$D@PQ^w5NiiHP9?3Mg*?XMhYAf8Zz5!D=H_+@n0plqFtKI6(7(T}Bu3wQ z`>K>y#rknEM-C)x#Z)Yxtor}aNX0~}%NI-$pz zhd19$_2RDb+RruMx5xt#Y$c4Ev<1+{%Pa61T-E`%{vP$B2TgW0rh&$f1X^%F>mLY5 zUIKb>7ym<_@b5B8cXu{{TJ__eYH&UlBxo-uEESigVFg zJAN=|<%ei@AhRVR^d31a&;F3FXkORvTe-t_=?c*#Og!Q6ML5#!N~Y=KxPSwUagy$9 zDO2a;UpvDw>^@KD;nSp-w`<1;)i;Jir84#_wW^)rGMKn!JbsJlE)Ghd@Dhdtq;c$9 zZCl)HNcMGh+lH#f>S2mpGKq6YM_OAbd{LA!jg|2P@Ag6XLdyyERY>*5ems!;6x!yM z#CK&(R@vfy5~fFymv8f^|Ha8;vs{zsvq(KlsX#=d+0**`{P7=v?zC>NoChjGUNv1! z*n2yp$u`ebUz6rI*wCoG@8;ytKf0hKj7RuCC*W-yoQhiq&C_h7k96w4B-FhN7|oQi z<)JRnUx-Z)G6PoxM)=?cCM#P^6oT{mgEz_&ncb(R?+xiN9qXz1LJxi_I{5kQ!(kn& z9R75fT}6_8s!ZM6D{(XLE-QqZ+-)nIE|I!T?`pcUjIVKCico5m%2pD*g^^Bw?zK6V zkbDnCRLNjm>r@dSw{^Vte>@71T>cI@WZ&6VMj1Q8co5&m!=|mqezW|fS^GH=V`H@g zozUt2*Rj9_(poTqUd|`a1N{gOB<)UF5Mdy{r_jqieWmNmy8M%8bJN=tm5E!-jH?qQ8vJayC{p zewmPznKAEO-!HtH_$&$jKCO$+&Nn?K;mzr}@HL2?3r|-O1u`fjyo+X8@oi50q{#UNc3Hl1tlnIN*7;q-l6G|e`#I=k~ycQBro}azV z50vGVTy(~s0We0L3;%GbbAnVxq!r6$x$^=cU7yqX$GTNo%l++eiohKfkhX3uG@*3+ zmot`{!JbCVy#-LrRjLwlbMwyFCil#n8QGLu<1!iMOevHA{LDkHGE#9qt8{xoTatRf=8Fi8@~|s+8U=~SlZ6w52OPZ zH*pJ5#7@Cl2L`b4>?hYCtASSZDVV=189aa1kJVxJGC7ZZ?3b>5uV4b}-6!RdvEL`@ z!lD(Vn?;+*$%K4R_!mvPqSe#}`-0;;+O_t%wWA3)oGRs$Y^T1RG*D-j;yQo7Eb}xg zhAmpgbUy0t=fZD~Zqc1Bh^1CymF5iA4w33fsLviJ-O{8-d%uxxnEdm4AlI!CQZ^lNsP%OicZbl>H^3$@&3 zy0OF;1(bU7zIL7H2>E35fR3-tMW4-NtG2)COY&QAB_uq(v3lv{{AHf-y)z0%H1JIgu${7_;hcnTCj@@xy=q_Zfv2&0r^J9j*_q5amPVgADDi3dDltR z#pA18TRhghG&k%;yBq(5?R=@%4|O}phOn8CdpADJiID3>u^ zU%OrtFtR)hU#cQQ%7ArhinG(%4S z#y?YlP$9Zjr2(5}v^9|0LOG-}s}NXg_VNE%>d#MLELBD}3{gN*CZqBllDy5M^9srG z(CVtH>frp$RlAB5gIhzYwq8%^9x)2M5`9OF1maW!F492$vV;eRob5Bx?Q+(>G(e3Mi0(x0-DDlB1b5(o<%Ye08mF_NVF zXIdjVzamK% zrc$t#O)4j-IaU2C0owaGzE9(+9Z|(6v!FwsSCitWJ}N0iymS)0GsEl@>3sXJxv2|} zTCdIbcP5ACuFeWiP_&BexzA2>Clt$WX-m}uX?=d$!-tec3NVe?TCd}y>`8_`0m z7(1&pY~^@rSTqqKlsU6_mfj%Og~Ro_!4Z4}ZHqmI@aqCs?V+O=i0G~X4s!8b!rpki zvp;-Jo-p&)#C_nzcR*OP@Szy%@6 zLeV8R9vNzWT#?V@8GBMsNUA5S8Tpx1S19DCTUku`)6?a)$GX8DvI>T}l8r2OaS|YX}>3 zkrDPxOWUuyX|C?%!vj4R%j6aNX}jGo!`Li(4y~_m$Se}BO+_E;`MOsNoQilF;|AgR zdNTvXaInb+rx8BTj%A@3ySf&@6>NW2!xbYAyc9b`@TSiroEcAA-HZ%B*qWDLU%>0c zM8G)CWy~qN?#`&q!`hB|rJZuLAJ>nFi?4Gy*kIDkF=s1IJ=xX_rH|yMf^)*2@L#{~ z^_%V*`jIgvKG}UI3HB;bh0q^TL_E{gGRr?I5eVdWH7rHu55;u@yJtRFVDbhY!Igf( zjb@qoOgnVH@#3Q-5z&dJoA_SX)DdZbtWN~DoQE?2M8J31#Vm_akH#oj*#MJGmM0`d zgtNizfyq(Ji_dPZgQ|~7lyI)~Y|k)|Zje23F5!}Rs-niIShf6^;CTNhg@wZvuuGCO zPqK~f4y|42ao>X+-i4pd-f?3PV^;_D6%TCh)2|i2Uk3~T@Km+&>^GooKXl6+Z+ zlB0=}r*=YicLJ=V{uYSsGe9|ifu_$-NTbbz4}F?Z8h`V{pp`n2O?qQAyV1vh5g4R? z@UMqjpT~bhOY7eO13;$56urO!tEvSOaoLb7Ijc=eG^Tw31I3a7=Jq9$s`PUr7x`cK zqlX|Wp09Z4HZkj4RxTw*8Q3jCF1{6jX`nYsFrvvksgPOzOT3WPVTc(3IPG~h$54W{R#5zeS%Kj=|P&}#o`LyS~lg&Q-x6ZD!L0=GWB;;;7@FkBBDtCO- zdP*$J?Hj;=0;R>cNvIfsC7mPIq-C#g*EAOO$|Vb!C_GQ7O*Rzs&HEHnaXm4Elp}rq zW4f?%@sJ9bHWJ7~PA=|$Uf_T}U%FUZu%Zm*{utMv9w?sBiCGcVzT zg(Y7HWB1truYNJU46XkPOy!RpJ z{8e4(Yab2xEf!Z!O2!o}wLgekk31#h#a=$^&qn}iOJs|-iYy{}?H)QvXVhO3*Qg6I zO6nhC6^|B+yUnU zV$nrZF3?7xH(vp&$}A$NH5JP_2_(87`~foLR>7eRcE1 z26Me=Y*v0@si@6@zGCUt{%v=&l>o|+Vf$@obn!H0ZfrA9nBrSOX7DcUCr-5U349@L zh3;Xw>?df)YloVYaZt0J>){&ZA&UsS-E*_6b@g{*D|>qD84qn*X~)N|0BF8|+}1w4 z-0)_3#9wB(YAwKcecHTRVO73D>$q-IUh9X+_dKs2#SS-z=7iU6KJVrFR5CF;0>n&9 zlq5zDFd-y03CekW+!FEm_5^Dy9i%I7)MtxN`>f?Ywl80uiv5{nt5hx!r)%r)_$AAj zd>cPyVfwtjzJ3UGHH7PZW6#EkU}ODmf%kO0?q;wHG!{fq7ltCA3hj{O1ty>?dIpzx zSm<(C_*hC`5WO_T6ej<^<^H(~r|TYhbA;l$T2L%xaC>n;5ycFk*)Hi{x-wE7p?pr% zRwy^#p}?ZI&WpNu`xp13mcO$$fVQ`#VExEG^41(|y;pu6NvI{k$+b90$b_$Vm{S!K z_zXpR*dq(n;8;5@Kltr=L+0#t%0yjtQ}{)m#GNx2gX~Ulb4#`%&-?R{bBUFAh%wCRc@uqC366icGF(2X%O0Yvf9>HR$yqAor9EQYWTk_7YO9i`et4ak_eK zi-4-8A?hnGgmd(At){nyt$ua%aBm}BBvnoQX?c=sy!Ectc(eC}-nO90^t0 z;J`)%aceHPD?~|h{;Tu@0tZ?$Y;O(ALbg6qjqZR{ZaU4^==-o~_+*-WqkfA$ud(pq zxjfZS-G_l94F&3_^~XN;R$yp)%AlhG*3zLNtm!0V=_WyI)oNMojXB2B=83(V`73;uWry2lvm| z3fP<2k}(avBoPisOb)0^9cboe4tvh5s{Pgt!@1D5emJfsIXfbsxbc(Vv=me#Yav(V z@n&4dFTxL5t4oS2i!4XSv2=UPX0OqHWN~={jNDQS`jU(yEEICV6UFC8f)dybBiK9buD@ZKJL_;uHD zX-S&a!m zsUBms)lD4=Kk^dLb1v?mP|==QktBdMJP8?50zk%TbcYF{Kc=l15V`di766S28PP(O zQU|Gfrz;K;y4a!?BfEl+D3M2AX-5i()-L@w4uQ)4rcKco*=J{+AZ=G~f4iLUH1%%H z$l%7~mx#+d*5zg+>B91)veNvl)NA5u0JAn>^9wSS*1E4EK`m{*glu)fA-NnO4723h8@yKs~sNKJixBssby1QtM4lbSor)KyE%>Dc^sbqoc*Hkxb zbUxc(^*-7!;E?7O2v+yOZ3t6jOE9{5XU%nEadW3N(sV+C@W3)@KDH+na0wUit#4J}XrQy5dbyb09>}!b7{Z zD8gdsgEKMYkP#dwl^qm=B^#I_x7op~)5xW50NVbu;XeoG|L<2$$qJ0%wBO>V_$%(H z3wf!!_{si;q`#KSuU^`IvSZZ2ja;flj5%-{0@+|g^K#8~A1sEl1d%PAG!87q4yY%S zmNT!9Y~Mphg9^ZgoZ ze+^RSWz0Fl?{2APR>JPrJvXNskv@OKV5+;>{|zme4DeigRC;NSlftHk3+?!7ep|fh z5-HS?+SL@hFsqAJJf}mBIu^T`ecqePLfAWqKY(L_xJ-)WS(4$!R^ zAq-G?I5z+VT<|E25}`@CRon*IeF>}9qjBmZx5a(IQy*ZEx<%SRyBFntVG$D7VSN!8 z9r}j)8A)h}0Ai)=0Rsa&!j2ZrL@ENFx~q~j_1q(OrloxbQXqdVUj4tc%zvx`sU-5E zSw%!(WLIbia(NEzm_?Du0osM;kiRcWn{GXzwotR)ZIEO24FKOqcoWbw)I50vkW@HN zPGELCptt+m{*e|r2R1?L6it`*@bF|Bk1;Om@RlT|04OgC(FYtce_y%wMld+uvrGQ>i;fH`#zeM zK0Ui-h%GpI`np8upUE4l|4Ua}A#$!bi*C;a<4t2+AgZQAAxM;^ouU0` zRv{+Xcx18?7IRClPc>e{V6;McX$we22q?dacrJk^IPSbSrlg7QzGOP)c`2ybZ*ob+ zMp~Z2RG?~#Cq8N&B8{={Ran5+Cc){5_^#q$!i~~1{(ILp*!?6nD);1RS9Qoh1#=HQ zzfZg11*4>CQtl-K=r;@rpx*ND6(x!=@S;L@!d_)K5(u$!+6N~8ai2ICa) za^0Tiux10ILA8Ov)4rN%DtPq7uz~6Z*eeDpJkzu5TCZu8&m0{`;Vt zuZ5_IuMGjldT~A?%13y9m2Yb}m3%R2^^oQn!WEjYXQF&OGD(1r@fIp(2`Id`DRQIV z(}1Fz8DbCSS#dt0S+uNjMhc@1x?GfG|MSglu(&IPU?f^YJ^~8!^W-Olc#}Atm{Vkn z))9X-^swa#c+pHiX~{-pkLnKnv)gA72R{(k8ouY4UNurTx_8Xj=<#)4I`-WZFTIDQ zf+i@#j*dlke*MP%$mq=$$vW&F@IY*JRI_c(2PXKHrEG+6%KyW{XN+< zl*Xt@+&7^XK;|-GOcV!{RevGeH#$YIlsb)FlgO{GOBz~mF|mDBuH4^ zEy+j4fqh7Vo@6+m%%Jn)$lh1Q2hroLo8Y~qN+9IWJ`R;D`jCsS-L@>9XYpgLFN=XA zi@P6x3iTs$t{ltIOz*GWObGr!^lpz~TY1d1A>YESIyT$?Lo;dnlqgrl-*7|Mj{xXS*i3QZakKbV>gW2(wz-~PN|%3LqOX11 zm-*PYS30w*leS>i6*cUpg91fp9lW|>8BCM1Bnxebe7`Wm&s8Q_Kfs7^SlNp_ugVVgpnXm_0w`3#qvIC^XCHos`Up#FG9 zV{GYljE*o~8!>&i?O~Q^QorIFe6nB~3raI4g&B=WZ$jQ-w-c~INZ{G$0|Xf%PeBLS zcYuL3E(h8!E$AabYd|74f({a0K67|s`Hy<-|BEK0e|@j;7IGNAaqBd~SEu+a$Y{d0 z4J6UAk(k{Y|F!Ah=}9++8G#+Z>Os$FLMLET^O|W!bwuOk^0)v46XvZW zqV&x3{Tr7CpJ?2oJ2T7X^Kl8ewxvwr&{&%ju}L3ZNO+n!@Ad1`UK4(zZL-!cFIOch zr)e055$Yl90MopXHcPY%5i=qK>sUCDZzWk%5j92fKa%%o-Rv?h^CR^U9!9wWic+ii z`y*frV0^W5lW&B1c0)9zR&$%twMnvX+Kwm7{N=~#(dT))q9@z-9BqVguDT;j@oyZ2 z{f4|8r+e=mVuzP%^ewx9YLk9>_7;I7`&{)WhtzhtK^<3S@A0CS<@fm?^Qyf$L8r%` zsp|%*j4trY4eX?`Hjb2N6d~cb!fUmaQU@?c&$sL`f#Xwkk#-Ji!`X&Sx0C&N5-NU< zexo{G*sq^wl8M_-NcEq_&Wx`JPVbqE_GOV0YDSyc$dc{mDjC!Q&-t`89UUf6)xmRt zWO2FuGe6JgXqyHDxnIv*(JmkK{3&2N+7>NpV%zi{w6;?Bk!8cJZgfP=}2~X~|lxjoxqxzbhD1ATqF1Pp`@Sxl(#=?!>FEGccQZD??SnII0MN z)*bOs47fUj63Fb*hab5gFP6^eXMT9`E~{p8q!jMM<{4^wY2U4d4=MUlp1cC<)zGAx zeVahLvSdK@T&WN)+QYDMp~S)bS}0x|-s1Sut^&BR)PPiz>f)l6VBnUL3am_WLO zlSC7)9XnC=vOG4!Tsbmg=j5-De#zp|>J6$jHYFVamr7up*9%OJk?&fkUE1*v+?>kH zQ}-FqASPQ3QJg;7)5Hj4`9N90sF%W*A)8c6BE)~PHKd;yhseTy;g_=DXlav+L-#xM~@PL{=6{hd!fBU$9`*WGmv$#9foyZYbO8j@% z&z4P}r<*30LM0{T#SiN110}r!c9oBZ6G0ew=d9e&Rv=g|z5rut0VAjBg(c~FS@?zh zLM(_oD5#$(NQ~W)>b@+f`Q3LSpv?baBiV`21tkha?jD_$^+8= z8kimZ9L?_Ns}c0L8I(AFT2}O{F21Sp{^k%faY~H2*+LNqfc|DuNAdB*&cP7nz~ud6(~qC7~b+M zwK0#-8W+#0jek@xRdK2+3Tsby^^}+G6!&LloDm(}-eJT0U&)dM^F=eM3tK1O9X2M* z#U@TTr~?WB;Bi?paO)3ax)(#f2BYLP&Vi|YkVD&g)VSW?`}x~0G)ACQ6m}*v06tF; zEu{>;=S{)_DHsr97s+hYW%F{y$a*eT6o-QZJ`LYrl!H=wlRE3f}dGDhJ z-F_{+`ItmP9$Ll#iP_wiS3+Ijqrd5fe+7Wl-5>;X6VN+SL%l^4TwMS*V^|&-crIg^ zbqR3~WLRPWNj0PE{&TX zs7Gp!foc`iRm34q09G^P5Y_`(20; zKXt@9?MRWLIY<*lwrB-P!mW8nH$0uBkinVs>Y1m$Gs_|`J~!nv4$&}rrJ>0)W}Ct% zFPT_=W29jWlC``iB>v+If{X^qRX$38qeb^Ax2`pLfDx0V^PyL;?}m`)fbrt3G| zMSo}!B5N+4c7=04>)2+KTDHBn2$On|ZqdEsMYAM?_2J1k_N|HjD!;m!Rbi7Ocv{4K z7A68`oYewi_tzmB2RTekK-iopYIt2ev)V!NJ`j+bQ;yZSI_YS8$jZt^?`)v>rhDOq zZ0I#K>w1=S(c}& z2EORmzv<4ucmY&{sE`KESN`fm+cxzvkF(lq9o*jSIx{|o=94@~TiTCMYnLh|VvpG` zxa{`0j>`5U zRS9}+=rg8p-$Zn%r(Xu&n$>7EqceX*z)WSATMa=Ieubs$s*8{NH9~k5F5F;9a?R>U z*6C56YAN7NTFc(;XD4crBZz*uuGdIMmylV;(LEPVL?tdbBR_9Wbmm@^njr@!IPF2w zkL?h7gBAgKri*EPJ`4%G>G5VjWKRc`vkOwq*;)*F!zV&c#uuL&L6rqwpCX60r)E~V ze6;w$r)ckD)10JUG1|W?AaLXK^e69=@jXB74~H8}XecMeDO6JSIxmXqPi8e*#(DMnt0Qo#HaAt`}t8${nej3H6&7QC-J;EA;vYY_u^}E z6%EZ4zfPs8ttg1LLF|9iVctxUuhyF1ww(WskzpU4C^NtTQ75Vs45 z`dQe9BYwr5s5ZIxMEL51A~tFjTfH^l4VAPLbr+9u$!RtnN6+P&cc5F9Vfe)~!Y0;` z%%20ZRF!K4ssYaAQmaXeY1yj7#O4f=ZPdowF#gMabqk1iL?nli%Tsd3JRsUkny6VL z9DSSRA*#n#SaiEo53tol(0BB{2>Gez;4Kh++}T~^?kk;hT?r}ouA&&74sLk-s#WF) zKS=9<5e%FlK-=jJas|TYF~Hz>SXz_k{rnjXd}QQmttrzG=P;rX6QXIqAmy}N@dB1| z;u#DWQF?(WAu!$RInLz)hrVeHAhsUEh` zcjDx}bp$-+RrcNc8Q5c`ms5!9bD0#vXBN$OQ9qQ>coC?1_Wh2t2CZ%F5Eg!-b7fg` zOrbsBJ%_^SF20h^S#NmQ6H}NT!^saJr=?-GL;bJRTUL~~rahG*bkim9 z+RvG(jv_}EbLDmjA((6pxyhk%GTz@!0@wNL$tX7kXi7iyyeZ31Kh-!jdT6P9Uk${l zJ89;!8~{;&i6xAn&!U&J5#Zl+4C82u75J|o=#9EUb~a(|qHA@?19J1Ow+s}(+h-LC zQ?zhS;DJjB0MJ?oph^4NM|(Val%wS7w*TdZ6YVgb-*nC~Y!m@%X_K+v9G2A_9(Xa+ z&s)dvM$&>D2@mi~is2!#00Z8jyHg~*# zccc9XTw{w2*7>iv%(7?`z_-`eW1Tdfy&1^C|k)<7@hg_hPTddc{=3b4t(M?+gI<9$H1&=_Lw# zpZPPzUBo3yHYODPr8crU;DpI&m9okBytb)}$5BB|-CLC+`)H1PS3-W-8U}rT3Od#N z`u&%v8afN`bs@Se_kry~kJS9n-cA94p+w3jU`%qY;2=7u*_!$R^~YWAf{cJnq0d%< z7%4hP(DFoTb9FAcVc()=tn|}P&Krn?pT)D_T#j5p{(}lBJ=r00D5-%MQgCF1K;bms z(0G2XH6#aDeN}{}LC5?xJo;~_c?g{pcvhWhl6D=R;@V&cOKsc$=&+o!_>+l)*ZYVc#Jj-1!94kf$WZNnZkr=K6YZ)o7}3# z#_Gz^9|Z-oW;2Y;oE-btu3Npnsa=9%eo>Oab-vRsxR`!AX*OfyV8vBI8tUW(bk=-3 z*ypT8sU=NLgtQJCARc%-k84iMCPTZLFV_+lqQ;WLkyWxza*NBit1YHf9p7IO^wJ{v zH3mn;^bCKTeMbCEx8aIU0|qAS<3K?)-Zs3h`9zysv!FsXty!jD0(0A0;)?wym#R#m zJKf}h`c1ER=JL-~31WiKTKHz^{|=CEr0s<_w(q)`OJWa5+fE>!Y&L}(w|GVCN`yEs-ugO}rmJ`(rx`@eped5`&<^NR z6#X%Ze(5YQ8vNs4zhB#-MzT+#w#UXbMWo~rhlO82=dIaACZ_zSA35OJ88ez7A`^bE zx-9QVAGQX>p#ZzY2n+T%^mfAOL@^l>S?yCr%ChVUjMnnp_gDlrw=Oq{yk?Y;W69Eb z9_RiG{V-x65f!hH#J*$xn{I49FhSpPq9sGkV5}KLHdr$o_1Lg6tsg2`K%++{&4)=| zubJcTLKki}vi3luKG}qi61{^rnw)@>F0!qwamix2&pq1Y_8g06rs}8s~%|@M^Ua)p{j9>dd z*n7{gCbzX+6sHC07LY0^Rir7>q(ucpL_|<}$y7Q4B1$ibp!6mnptLAR6Cu)-7U?2Q zI)oAk0@4#o2&A}&bM5b(Z_PRPKI@!cXJ6O+!KH-c9V27B<9?rVKlc+FSP*T@=YPZh zc;+d}B&&Z-2QIEUTM!f~Rv3~i@P^TX0>rS)2~DmggurN(hK%}EC$Y-oSl#>ytg22S zj(^YmMul|St;FI3%*WJH8PkgkxC6xoZQKXw0a+{@{+s#16rD#x729;_Pvny`h0*~H0#9hx_JwY zA?Nye@g;$u(R@-gs^-zU zj$)Gqd9Y<#gjU%IS(?@uZiGOa-oR?@`DD<~Jn9`}!m|!8DV5*IPCf@UM)+Tz>VwZF%SBB7uWvo-!&Xi8fG%Q`FVX)2VvBI;1QsuIPXXi;r9+;=9 z1o97fpTy$gfPdeYJh`ab{{l!_IC9OQsvy)9_&A#0(JGW1d ztwr+f=uRR3P9AF!n5=(|a_{@^p8Zur0EK{1fj;E>R1h$W9L#1r==u9xpjFu4z0BYN z-m49SHiS^8A*RPce{C*U;BDhhc0Fnd%!?Fr(tu%s_C0=xgN zu=9b}O8jBa(?{MNH0%DqmDK-MJnPZF#It_IwVC%Da-mCR7sLKCr{LLkLxBh57>HuB1T4Mb%C1im;ruBXWDCn6te)Wev`Xqr zB^T4CR$$ap&b4N3N5!(6GTN~zJ@ZkzkA(GP zgu}Eka*U5o_^i(fkkI-$MR+loOguJIFXqK*mBMzJ=}woP9$w|;NjpR;&;k8ktNYpA zw&gbYA`r36YdmfB-ZIfb=wxDnB6=NR_!543ubSFOH9-o}yDw31j?mAQ?Cg}3X3aG~ z^s6h96ffz+WD3$JzQ;W=wOQk3=3h7vGGW`M19?Amdj&~WrhZM}TsT&|_C_=hCgF|= zTx$eEFzBT>-!aT|R!kUGFMnz}=ptD^XVUV`mZA;&E$a^PW)_{}<=5UswX3hbE1NIt z=@N=)lp@>BZ2$=8dD^l+l7g?R8Y-w9+F^PxR$jX~AR#IG@Rq2q`OwU}lruBW{kE4S zRX060&_!9cXIt+TNe)H3dd|PF$}oVwf=h@wIjwj4jMot$UMn+h+a^KM#yOR0*f4e+WOULD+2 z2O<+qX#`A^!bDwPIE2Z|D(0T1WAU5Ln3vzjt~%!^-MDvAr6ViFRK5E0_bT*wM#o)x z-zb#TO|JeT{55vNO6Iy=eqixOZMxeXJ?@lh0VlTe_0J+dA7xpGzWGsd>b$G}ll`Z+q=i%zd!23f`RWRp?|k<*3Yy%#0}5{)x4!*NN5qFs zI5$ObmVe3Ax%BbEg8`SS$DNw&WR?z1R&p-B$I4_-{ah_FR`Dp>ks@B>sW2j}<{f#y z*y44X*n#m#-L%Ml2*h^} ztO)&C`UqO>CFM!EM*n*J%ex;qF8EU^*6^PU(IRcSi91|-8o+h^q9sA)s+m#xW|*pe zttVtxm!$EzlX_cfC*dzW*JuajfFJzkSA_MG(3Bu>jXOmmc8Y#7Cb z+ER4R;v9=ydrPZ>%fe7X@jWv$^*U7XW@)R?cq(pdgONtzL^@g_`|5>uSMO~bFWk4+ zPQ9SJdq3*&kI=?IU{1vbF%h{tP~p@3{q-{WCG$T7J#Cd zZ3C{+Cmr{iABaR1yw9y7UG^M1@AvLR%TT|5*{0d*9{6tg1YGDd)rfeHj;JcGmf+~q z{pQ-i9J*;Jo7cOR%XAKBA6tGfUMAJHY;aBHz1td{(~nI!bo#7-XTlnim%zzzIGF42 zg56c!m#l47gUGKw`Fq*M*r^{e3v1F!W;=vYUf$JwK>L81S2l%^v~odOd3zW;%0+pQ zAV+6`7hDP|mS{SpEs=X+G*6Vnm{AcsI^uv@|FErYZAdIw20o|n%fmq}6hB1kv^edZ zrXuz1NTr5;%RVA(78cV5Ii(vk5L2Rc^HX}WMaf!ouB6N1S8+8d2OQi4()RZsx_ z7iX|>cIp(eh1#~ZI79|9>Y1!*6_AU$k4q3_%rGW6X5i7W*gR6P)7zyI1zQ0^N7lUX zRnF`iiJQV(VlS==?uoi-U$AIk#*q-@C}Q!PQ;XpVs#Y1nFw6_{Y|F6Fr5YhPvhH0M zXS)frka;XUIF3Ck9DkX&`uq)hN9*!KEi_&oOLQ6&{HVo0{-@*3k3gW3o~DXG_kEyKzkMmm4QDbve50F50fmZH$k0 z2>wRPdrt>-?HMimYxFm>UxK9Y1}9swnOHZ=w@RCOG9{ZfP3{l79`kn!%U2#2)iXSI z$7BCUv{7@jnt#xH_R8$VPP!79M6e$U-?6$z?CmlmhLuJUFU<`-jJs0q+)RJ@s0aO++O1Ea0~vvUmdMk!h+kM{>kt%(8UrrYB%2(0y(Ow zjOgAUZLJIDZ^kiGjoy;`Isz~;ZtLhEI5OW_i|u=KC+GA0MAe8pxuQ3&8=jUANFbkM zY=%ccD$Q1LcxXg6>wr4@%ACQeU?qytNWHH21Fuh_3mv# z-&Va!P8t%o3`7MFCJ9|IkjZ;ql`Zuw#*6+3UnpVQB2KfiG`5o8nAF>p|nQjH$ivf9JpEeg@L@ zu@DC}p&Amp>560+{xsikPW+)7ro=fohOA;&zy|?(0gFtbdBrnxpwBRa;T{G zyPLN+8v2rFX%RuNS)uU>(&LC0Y(%&nIhPd}^>|Ks6x}N_NvBY4GWPhEV3!pE)tZ1k`B_kwpxkPBl+4j$ z%R}@D3C^{){h=veKfG~r?LwvKQHMd9du&OUrxv~+)4ZFR;FyCRE5?1rjZPa@`jl-3 z;mXl%=op~TbC}T40VR~Ks-K?8(!E(%KdRt5kzdA}kqk zPgD!tn+8{y&%Fy%WDAr01PZ_{k8v6qBwamm>H!zv9z0}t&7S<9M5KXu%b}xDZ@^jC zql&ZU-B$Ez;+a|DZWU_f+lKzN2jNz?6Qz{~T?oE@l6-6%`bQrU>kgoV2wF(DU_b(T z2GuA>%Z0!axK=bBs>5buqDn}v+>G7+%@fy3=C#?a4joTDucDq#iH_cpe~&v3>btEK zKfNvSEvYix20`ERZxWul;N`w%Z4c}#?xT(&CLv{vPe4XGfh?A`Cgfea!&&rKkB3R2KZ3YF{-y|26}*qqI*0_C9@1gP z9ei59vl0|zP8iM{*7o!+Q~79umXNe@rQJ+D6)(i3dQUj#{kCmHw$Y7vu`6G-q*z1Q zuX0wAk8l2}RAubNRKlC!(a@^hCyLMrLD2!~ftjBS2VuL%JKim)!y`*~;*1xXFQ;A) zm2xVpj^}ke%K6ptxi)X49{bT13=G3aeLzfzsFxCI!ki+*n=RuCBHc^9m%L*jm166u z#b?rwHbom|mc`B-k`T}rWZ$sPsWlZVwvdudtsMXJF(*B$DM4Yzc!XU|iBFJ>e+dsKYlZ70Z zYc5k!dCA3Ap?+u~$ulmpzcX(lOsm&g?RdyDH{y?b_X3?(X&Gjgm`2=pS)^}D?gB?R zhKa5WdSbK@A+1^Z%^2pn!Fszq7ge$0yqdU;1=Q{6UaN5bZ`IFZE|pITT)$;^?f^1F z>IZ~flVL@WgI1v_5v2X;)1Z(JF+V29rTT)7NJin?atbuv-ZzB0Zqh)eKAv!?<$Rm8Y_k7}L+Ju;UJr)Xpobt%OhMc;7~Zil>Ls!v!O&!Ml`W+@ zZ-ynrTdGXY#4(L7MiS+*XgSmMz2ec!#VP0FqWEGXOPh_|y0vOrzj5pBn|=GsK`b)> ztvh1eN)X3b5{?Eje^bPSPm2wB_rTk#*&ZYDLVWx#DeK~?^J{05n8fzJ+xvbzp;m}H zcB^JEo#XRqJAGPhy&h3jKkLE|)s9dQ6KB`*D2Gg(!cT85`#RcW9CC2Fa`e$7{_{te zc9tcFJ4}j*{^*8DiO9?vW}r6!IqFw|=U!c!gL07hR`fp*9qV!@U9j%cx$4iY#yjPC zsCZ)T$8+zyKWc5Af7))KhDWZ}5W41kFzm&1kO%{FN z*B`=oRIU#;7IztTM}8~`*he<03(YZ7Phj+8NRRuy5LXI?Sx;{2~ZpRks`_zwQN%Hgt1_9HN4+o)w#S~yzln_K0Y zzWI&L$|_7lpp*-$yi;E1()C8Xgy!&9sv#|v&Ku-0Iy)TXL|FNpEjui;HZma91G`d* z`54XR=y{^Ptl|*s`n9LAbpnrEg(8H?otiOE8^vs#njx%oA+nXZIhL!jpQ`3$_vm=z zW|VN8mCNTZy=)IA#Wp&tX^@#$({j^r=t}pN&{)^ZVp~EeLW3M35xp%J5tT#LCWdXq z&Dn`QZZx7D#~CD1L=CF^wvBq0t?_}3 zE7U6lovQt6>C4j;1JmkbS`O+=4i9TmQ{P+-VeNNkJJY=06C9xf+Zo^bG!BEecr@xz z{6U(0B;qthoq8TMGzNq$KpD9c{)q_ z1nC{fqxAEB(Fh?}_>oS38sIuI2DoYHNAB8~aQK zl8*~YDd5&@-vWku2<1wUA3-@rQykfRb{5AGq)?k|G7zLVOS?8_u9{s)=whC>o;HNT z%Ff1X&9?~f%Ia6XeQ+^r7V;G2sT-LQAUVoSHJU|p01*JCD58XE+0YuYl4=w9cFH1B zfh=PosIuMl;YL*?7>HGVn%$$<9rxCL0t|188ZQXUP(}>0c*Ii0}w_Wz1#x z>7?n)P9byG6H_cgLt8{8RerGP&f&&3W`)`ePuakxCCCPrQeWk=YC-sWwCuW) zaC^pll9CTL`klNVGs6t?0NH|~L{%m82K#!?pcu$&FDbe8M_e4yRt2^Rzd0U1(7iJTkuHc)Og3urHTd|#kT*DMZqw+^txw`_`TG{9th!1AIOoR*R-5waZF@eLuR4y z$G4n_sagJb{vK{4BB$%))1lT)PLID&Tx@z#xFsrd#<^WTkmGX($MGMCqfc*+)=SK6 z9GUn*Yy*$0X}*#Cq1D;Sc*T2n?8_@RLqjTsa~a-U2JD6Nd6AFa7AfX18ht$H^Q&i4 zcXRz?QURzuDWNC=%{vbQh8~~V5D#8_D+q7Hj2Ce)Ajvk_yurE2mHLtrf=?R)f2q8P z+|bFE3va#LaOqkCRuLE%T!aI~JDq+ul|y-+;tR-pNg9Gam&kcFJu; zd$uO9etgJZw^|Tl-xSyEnvNM<0*byqN{-9eDY{u%wBmH+3i`?o`DF@R9<3vBi6 zba~rV2;&|go-Rqv@{}Gx*1oxnUV0ae{GZ299|#rl?W^0nOySSdfJyk>uxo=XY(_oV z)gHjzR)kQcUhhX!B`fsZA}x{rnpC%Fz7@v}udxN<;0_~~DIU4jJT zU&PPSYLlLE<)kF7CSW(MGgwl7FPgdFS*0Q+w^FAG8rVq+zW$?++%NAF03|zeUJ}C# zSxxcd_{ngae(7II7ZDIp&l8IR^*oHf>Uns-F{UG%06y6F@%drevzf?)1dJj4m|x%Q z_T8oZw1}WFyyn^dg}wP`36JFVmPZ_TX+P1!@Kk;}b0Q(5rN4tCrj)8bV_@ejzZ3u{ z{W-N^Wm}R=C)qhp!*;$#lP*}a5(p#@WvJ%@{?WW~5YY#|NZ0)irD~u^2+)oGSB2%d z0Kgv?=?9gEPBawe2NL+Kf_Wg_yR*Nf462->v+x|n?zcs_8DCI0iz3$1X| z)TqcAM$#<|3hYlPLI=2evxd}9@`wGdx%6{DaF z!jHio-vY9}L431X)C=jfTbKRK*$?CMeqJxA)_pU}{9@p3EKY)$(S24=3A8`8rrs3ufWEJ-xa~OtHjKI!}x)~#fwW4>LMMJjxy`fj`#%4n0Ck-T}E)nsN z1VIs6l(aBGw*%NrDc4ft!U z5dcJEG7E6=adabZA^JsV833<$^T=&r;r^EJlR=7ORTmIsBmT3o6L!p`z=Hur=0xt9 zBOgE(sgM~|Jd&^@_XM*IvYzwYV8A&}usB_E`{^ zq5|NKC<;0Z(0&7eeJz+1Pwv030$8?On#ottEp_piMQSQEmH@UI0R0?_s-Zt4N8>>5 z=?o#sZ9;#V2p5G{M`*be5FZU8gmYjKKhRr|ePm=41Tb!Am!SucKR{met1OsNJNWaT zr-2^(3SRy1iyc7{p(9&>90|BH|9xF`|9vKicA(Z$oC5NceN<)$^*y9aXp1gHFzkT* zc}F3CnuiogJ{mG?jizTKf0_UD_y5`7|C9Fj2JqU7AO|<>k6ZXPuH30b2v=8st2&bE zNMC-+aEPwB0x5%kmgA*QK&n9h2uX5G3*SblCTGy4ba$a+A3}ni^TY@d+A5|C?5jZv%mn#s5q88ep}hW2z0Q-0dq(P|h7FBbAd7o`T;c z?6g*^q9Uv6(h_cR8&!|QPu*8rG`ZZhZj|_0gcUJKtD@TZ61GT+W?8K+VRE!X13n9&ZLJt46bg+7p1iaqh|!FM^ypSyb0bQZ{+?v3E zoWTG9_+Gmg3c3`Js2gr}tV6OOcx6vBDlLKjTS5VV0?JQ@DmfYpiUCQ00%va%6aj$T z2sVu#*7pQLmK*-buqWI2drrbm!bxfw&M! zUtG!ljjVyTIMZdhBvWW^t*OQ&o^JA!p#wI5Ub0lQ6=&YD4vv)#L_j59-q>51`pIxg zZp@0bM2J`;5<;kVXYCsXODk7UA7FeMWRv;<+0gKd9}msnepIURI|oC!QSzT1YJ?xM z>A=oXC4_vgFTqRYLaOC%%WSdDxw#V%9waCqvdNyx z@fLSI*^&&Iy+=PY*ir~Tzr1)a&_clJ&E_}OcvuCxxJ&-)iP!J$nYj@zzWmxa+$`HE zU`AEqUaR}bpb06jq3w-g$n!#kF=+J$l}!JN+g-E;re6xS-!_fp$h~*GYbPDo+bc!q zXCX}i1663;icVd@Q6D9c-Q*^G=|M;bIAsfsBz|3U&ZS&pp+;&}SnZ9sAzSVvCNNub z6e%Pw3m9kdzy@LqqX6o3U&3n1PX>hd2K};431GV2MsPx=s#Z(GW!AJj@u*B zQZO664dA|!s>(@N?Uvg-v)=<>bmID(E9(B`tNBzK(O!kowS_E7sH=F)pDzipJiM7! zgIw$&nF4a2DtO)ql#WD0DlTBYJY7-5WM%$mtEKyEv5o~h)@)To|IHO6z87s9Z7a*+32fBp}r%sM0(WmIg%ZUZ6aN>FF zKF>n@M9XLzG2+UESWQ?#TzJ4SB3h$Z_0w%W&v~OVqjs~W3k#T{{V)*cYX|nof7b`M zNn16VgAqJgV(J)_5SEv zC-PrS@-#s}E%eV~Wr4i~MH4@2z1!yJTa{8%6DtS%E=A6Tah~Yy25B(S~)))%J$`ag+T8B17n(f|NbM}YyG4??m8ho27|{?p*3`jSRL zngzL91z<{XgRW-7#)&NDS^oxnUafyV_|M|}bLaf;PKP5~&DtEr(Rq+1W`hmUvp-xO zOfgV3crb#8?%Jn}GvcL|aAOj5=Hqz?tg25%F75|kL`b8k-_-|#X9>Npmp9-G2g?Kf z8TTnZ9qbJ4*LBZZeU^Gcb~#5dqnD0eHz=b<{280d4th5 zW$nAQmKlHKeyOn3J*xq5SXF;CBwvfV23Z)(6m1nqB9)cbZzzbdc( z|EhGx3XK#xR*4Fm=1#L1S+}nmoJmqizp?iHqx+_6d-MrKrw2AK9&%WsXE~zz;PHw~ zGVe?3byyR17s`edSZJE^@{Amw%#!K}FHU$S#~!qnTl+jvuu6IK`;G4}U9m=SqK~3` zXm8+8%zwMm7bFnCx3uAnK7~3$4mE(?{I-o0xt*@>;??5{8&`g2*GqBsu?syay7-|q zMNie$#tMeKjk>htJkKeSGT64#cez(cz}Wg-R>R1rJYwBANzD>ZKNsYZFsng((nz2; zco#sYtSs1W4q-F=9J7s1h)DHT1ml^cczHAo&-gp+CU{#R$J1uKS7554u6)xKvma$k z*(RdUt$D14Ygq&EJ8dDovzZIEKN%+Y>3Y>sKN;*yK^1l&~ci&q5f;Vmtg@hMW_w#!dLT7^^hB zxd?r4i%##e5m-^!{cQP)8lIkD?wchN2IGmD_QUey@4Vk;W~9bc+T-&O11=Mt5*1f< z{L|J>;%%;ii$K{btoArOS!h?A2pF%&vJq$&4*jLEXj) zv`jcTD-lzbB^>Nz6s)HIap-LIP?c1iHd9X2*s(3OuLtj6wV_ zXZ~jFr-pspA@|ya@54BQyX6)AHWT{0m1cdm($zznyi{HSI({|C2rqND)l50SIxX9$ zSb-EUR-Z1KE>jr!vDZ5fxQBZr9~w&DV|YyrY#Vq+R@= zyGt-4XFI$-g6p`aDMzd%k>P=A659=2vvl@vRGZh-+l21)+Y!VQ zeY%gO1(OSs;T&o654U2VTs zBXKa^0A?0S9}!}6TZe1%8$J%k^Dd^f)jB-ejB{K*>^**A>yYP-L|sW0+IQ!YX%$qWA`&t`=mNJ()pHkXAevtd;aQfVizBxUFNFJ zid@~J5uIyQ(xMkCJWBi@jla!BIB=D$r#7Iv?1rVX$t6VD4!|^Sq3N~;WSTu5TZ)c5 zZ~3nBJ@4?5Z{4}Y>~B5Ow>TJ`5whP95`K;b5?bUar`%7e9LF$GL04ggTIz_qJPX>~ z$qJ96t`SebH&omEvDvGdKJu~VL&cFjyZB*uu6&=T+Ov4k(|Y2i#+RNM>oFWiGIYh;I<;t} zy?QK#mVul`ia(m>AotG#Z`3c|MzA;d8qPF)(k4SjU%z(HDd|L8P^*6AoYR$-LxpEf zT#Aj|F`1Bebz2t~{nvhQ1l?#KOACvFR9!dwM9ar#6dT2dW~rZzVEV`DAxCxZkRMFP;dKxk-4 zq|JL@oS%kGARE#4W_77a9}Nlgf?ti0oDq?K=!zKWF#HlAZ9xG6(sn~2KnlXIgP7Qr zAIuBvX)1PlGHw;f;;s6uEE z1DlfIbqo3mht_-Pkk@nZ=0LfIc;XR@Nv;uDHoUt16;u5O0U&Ft&Hand--h zx!pfQ+?woSo^$EFebDY8-%fDmWg44gOSW~v5M720Ld_co{P0i?SinwpVv*GkWkHF| z=_8@o34@wcmHbahvrobmbyMVdo0=qeOhvNEP80|7L3~GSB?v_?rD18QCGW9a{&_8> zes=f1wWB$&@?EbCobWSVbgjL3EbXlMMSg#DUtbKAO937$$Vo;$CZ<^rt(DfFCS03q z&XyfgSkpK>=jwvzkAWyjd6p?#Pnx$0chssxzPdhttDIt*Tu9Z+AXU;bk+ZMUZuc9+ zH7xttcyY(iQQ*+jcCW-L>qd9c_`Zkc?ufyI2GVb*+>eVqlD5y2IhBr(#gb?S)2GEs z7l(zoAg&k&Dko@C4&-?JGN3lft=a0YUiVA4<+Xy4{(aGlK^uJX*I1KVqX){5I33VC z6Y>}j6h*jZo(Djp-a@q$5a1dzitZdj6tN$!3(ml zsVo#DzX=1{TXiRj;qo1GzxCZ#!PDVgP4t7c1L`MBTvJKASZNGa9)f+pCKj&bZc?8= zbw88&3zYuF&K4It1*B>4<{N?YrYmWV$=R<#jH3uKOyn(14nm!w zV1=h_miOtAWND6aXAc>^vyVByjCC6x^L*|z^VEP0qdf3q!K33#sF&^sqL;GIG*$&p z$Us^(d56^@nz_t&-GL66nuxUn%93y?pKqV54{#AiKTM zvCg|6*?fY617hF8p9YF&59&WwzhrIG@Ga0!Q2Kqpv{lsRcWGu8E~Sxl7jiWS7G}Tx z(cZU6mdftQ2kDtB2>umpX^~4FvblMbJ+5fdc{GjBumyeGRVmSC;_HKSxyq{#h!=H@ znao7uKbB75J31OTX4=|b1hgf@$?@MYbB+(2p+Rj;Se^v6*n#GV)RqHZQx|!gI=X}i zw>gdn-T6SkwZf3>evr?W=g(sv@{kNx&x%=foCqvFeh3oA=> z_+8cKu@3N|PLOq9Q=SnzNo7YyDP^A@K+ZBokFOUD7d)S6b52YWwRjd{DS14^EMCV< z_ppT)s|iOKvI-N@c+qcvvANb{{nLFs%!+HMHyKTSZ2V2msZ!Q%Yc`yI)YiEr?maR5 z=*{pm<%?Zl<93fbLw~Dxn(ZpgT$yGfj#T9NrJ2D}zyoSIU%R#r6LY*>IBNQP$SK_9 zORW3=r@ZpPnGNn`XwB|gz)yx#>c`!sh1e0S&H=axsvP>j(>WVk;t8oJnLv%KPc`>W zpi<`TYJB+JDE^O{N^pjKAi5qhgy^)@&so_M+{JTD^v#-u)td$9LH$zwl5Y;R#~_Pk zgd+6?<6{KNe!K^H94GZE;nvE5-Jax5TLhnjjQGp-T#m858;D#tc zwni|&*XL0xo3re9!%PHGSh6JuCv_ipIl_;STPIIGP?g{n5y0%r+;&}GH{Cf zZiR)Jm$63P_dC79o>}E?V{PU~#LU^`Sf~8vY{+mQ?+hVkvQ^tahrDG;%1%2be?s$U zxS0&wi=;vo8J^=w2Y$Pn)v^d5r;pkYgs7aO?X}PZxB`ZYJld9hsABkiRRdrDc8}Vv z0k?H}uQXe1lA-7$jh@ym{~m9-^n(m#M?X-$z8y?(ng@8feaR@suvWte0*8bp%&|dq zfhtn?-gWf5Ean!|U`8W@BP8mjg7F8#w}kE|LFF%tFjpiwT#pT!bN7`ZCbzf~Uo{G` z>C(?{_nWoK+$Z__mAUkM%;=r~*Df)x^Yxfh^Xv(#qXdw9FmC85l2C<2=i z=%6d3Co`Z&Tt;>;PHXY2{A5U*NDVPP7cy0uc1GOXyBY*BU&UZ3!UW{frfZmO&`5uA z9`cVH?Hk&$1Sy5OZN^4X4|)h<;Lpg98im2kwK_Bzr@R%>B&QfJ^lFc`zk5yhg?0E; zjfvZ)R3M)Fi5o(ke0%QtP{Bya`}Jt=nWk{5H%7@H?nKDPYo zeosFSHTyt>6OVhd)5f*eH^WP{AWV>SX)iP-F|7%a*p0X#Pdt)wsdjQ76JRRv`M21va?uROi5_@Nny4q?c{w~h4a_+HZ08(dWf)vb~dn2jKFj3uAT-T(0M4-b=6A5r4~RQwoeX zH%G2T2vDC**KL!da4N!S!s!is^@}8s>PWsp&I4WH!a@4y?cF;PWh5x|WCh)5k03|y zTn_>CvWb9Z8t~k|<1sKH%K2)@{xd)08stnCYBQlP1W7XV;-D!_jBu~Q|1c-bK|O*A zF!_c=np5@~;CTIEl$9>ob6fY9CF$t=UxsAR-?#VJLXqWg)Er%WAFT-linr`+!N`B@ z0`ix)*{DEvBLmRgi|xqY5DA;=B%spMoDlP0VfcUjTMC_XYW1fdqlytZqDs8jU~S5l zGO=l<`elFJrnF>5BA$?Bg_)tQQONG0ac`MFl%NCm~OXs#2}*0g4T z4v!K+F2Wmr96JGnoS4=o^whQiYqQZ(I@TodX3m96c!0tVbypisds(ojNY%q`;WH^KHRLKb0N3L{Bt40~>$zQ#+=Tv!&M;xuH2F-^g9`wfcx zxP5@!RKxnllT?#$nkrP~{(75P_baZAg2cn+)8;mj_7QziwMv~_Hi+2Q@%UQ4y$L## zhUX#xWle;D+^YpzDt3JkvAX!R;bRPelBMRgX4AKpN1VktLdU_^QVF|N8y=PS#p}y6 zgcDY7UYP$z^)Aj+R4P`e;oCM^Gw(0tTW4NrCvso2bGz8~h%N?hlqXbKLRzG{e!=u| zwkS|^Q6h}NMn~w!Mr6Hu1Rb;!!`fDTO5Bg#OXPj^migW1Bu2%}jnz@SAqS!xS|#^6 zPDHnYn3bP}M;%sfnL=#Y5aKJ|Xgz*6;en~l=x(SAzwDTLeaLKHtSZ}*#kPx8&u}LOg=F^zKTB(QnEP!%Ow4FY zDc62@d&S)gnPyk8{LOfT1f=FXIz};^5E%LZRd|G|n7rY2Ix{aMeE9;d5~{iVw14xxlM zdGaQ{w76san^Y8uT=5NsL3hYFioi0GHRC2hJs_b)#xYox4S6fgGP-$ib>DQ1SNK!4 z)9-axlDm1^Z*GO`GPaaJTCq;y#&V~Y_fOTlXX0rXNqnoHHzDsd{~ND|hxsv8l)~aS zGjR!y+b=}mAPSpdQ(yOTxPV8;7wpIAPEnn$oG&Gqdby080(uU4J;ifVMHjehZ7w5D z`-SBvO^KP?&U!x3x+3au_ky^3Idw9c6unmfvhpulogt*_J90FQF;jErYaZ6S{mKPt zoryOu`Yx;nauBX`dB#oKZPJGH2WG**N!!&qLVVy*Nu_+MJNRc}pn7b%>0vm#LVUY`Ae zPS7015V{QZgVSZj^W^{f*_vXZ8&6Rr zk&}R)k#A=kW*hhh`PB;JAVMBsch#dijT~%PmX$>b;-Pn;t-Y2|5WHD zkxIN#-u~#V;Aze|6_uthB^Gu-e#x6Pmbv`Hmop@V%DZ({aW<~;%o)k^29@X>k5Lz( zr@Y}Xw$)`ge)qGFZ-85iPO4Upjc#DR=ziQ#|I#DTP!o#0df4waUq9VwEJR4!tSQR3uG#M`(?GUS4ebl|KoKc;5^<0TYl|JqjZfILD z@Re%fd*aE(xYfOR?_is(b@b5uj@(nMX36Xg1&c+Zi1|dt2a#6G&_40i?|Lek`oh$X zd7m?$A)gD?&l37>l7(giBdN*-E2Gbwe$!>opp|J%bIG4lIkk>FFWd0yz~{~xGpLT7 zi<(6PE2hdbJ|kDP`~`nq%!^M}4eP@@JGkyG4q$jO$$B9pvo8`CD)O81V2F$9V)~-q ziL37SuSAxsCWV`|?~dJk`h>SEeS800p0S6=szv;LGk&Xyk?Hs+=F@di4Vo2PHwAB#?ChO%#C4qI7wIM)nj zbTj1*DYC>}^XL2xz{qLb?_I|-szcYWbX`>QGG0vi1b-9V{(wuUxTsMdm%2W>;f~Is z#Dj&dD0oVhDYlpzUrJ6`9k&eRcd24|wOYBylVmxK)#Ky2F?r=;&f1}nC!SVHLadb< zvbfgcR~^bBoPA=wh3ZQj*tdQo;_5YBFHCr>*)NTzPv;a3XG~QDjF&1EFBDroLOg<( zPW`!c&&k!m-mne6eZiw{jq9iGNk*o~C8>n4vbYI;lTJa*;?saDgY;@Bl zb(dREq9%OMO3< zMHDV$>zakCDfINzw&nUGptf=LO%SB6GEG0Z)krKBVbD-HEj%RaE^JWuTcl`K&S!xG zH7p^qzneN1P^8HxEtR{x-&B(JpLR*7qJtl~KSYT2yR3zag)6$pHJwJY%?3?MHtOzMWXlr}DB{89ntj<4mPwb|Oc}WMiEhFx zI}cvpv!)F3>_@+dnr3mOyQ}5)6_|Q0yu0hJrvOE85yk3N zA4IN|KwE2HjFg?Rd7~bYm2;j^=lqq=bJ1((axx1f)jB69xZ+wL05x+(vCF>6?zB}< z#ghEuS1Aji75^vU@I62{Im9_o07%E7X?`6>QOcGs7&hClvp*R=N!Mn*PekL(E>oqp z@BUSD?j#3&O`m#>P9x+gHh)wDVensMMN6SKAas8P{O`(P-~bU8>BbqvWKa$B1o%1| zbE^9wuT2IO8OBoWCv6=f%cLZ;1@kQ7-b zNw$#e3{!;cA!MDh?^D*YO4x!`;27_v-F<&-S_j{&)x5Rp8I+K`}_Yn4#zmI zac$>yUf=Wk`7WPN6WIdM=2(bW3I;KUocV(CVg=$*r2{98NgZ1~`n+V+grvCRkPNE$ zjIe`(X{r=~`v~r(f>jyx);({CLFdb%a6PECC}%J@oDv0$Cun(ZLn+mnx~7euW%&e)#H?yFLMLj!1$F_VC3GnUUx3JfzjsO`G$zEJDO(_2AOfKtC>uAYnWV=OC*wh$`&IAdf2<6BpW;D6E_)K5w7`m-IB-`qIK1#f6P3e4zlGU5Z3n%FI%(4Q9_o51m zku5)eSsz6j@eavYi|tuG4`a3SHlw8^Jgpfz+T!8h%!{LsQFjvRSbOfsZun78yEj1d zeAy8%34P@P9cqXQ=RAzA<{G{k!gLbv6lV4D(~v|GZGNRZWQA9`@5fjob4TArrbP4G zq`PL{Zyi7dK}&#J&qiv79-SZbUdbpP9hHkKeuraWv-3Oou@C#$DROvqMM!>uWQIGP zOgy`^Z0c>s?jtOwB(X2etP6%U{DNYpu=UD`u^hHV564$E7kLz$<&2z3?y9MJ-KqR3 z`c1@|w9=JBvd`#nxo`t2vP>$xl9<2^DySlsrb;3*!fniD2hX4Qek`_D-0__eOU4C3 zS9*@op1Z9)Pe-q~DE(L`V}|WND|ei78U7TZdJJA)n8w+G54)D{f}-1eLhW7GEW5UgYq zy#MNDFURE;8!oxg9^Dv)nTmHEfSLd<1#H0pNpHer%x>~BptcT1HX6SkY0f?$6~Zt0 zUTd*c=i$fbQ|P<4Jp07eJomjXPR2o(tR|qL2v!MYle{KeJM5UzJmcH!tPE1iy`EzJ z)-$#ST-;p?0w>q`-X#3cY}WjYx|5#qUH?X#*b1a9b=4)vX?XDpA~0-XwURVRK4Y~W z_?eLXUe0WEYhnRvN479UR?j+&u1z{|biz+j18KYzroM6|2=fT31fxB8zq+!fZ&lg4 zaN)R2SdJ8k{aJskia8UnCf*@0e# zhvedwjUl;rFIPecQb=9VK__$vMkxNSXY?C+mHPvnO|W69&*&2r7kgZUq3*yET-W;H zh~1*%L3FMS_lv>sMWNy8kMGmC&c09#x;ORc?t`Yw;+h+w!o(+bou^#debT&e-NV*j z%vDHA4innmEq8}pnZ#bMEF<-XoK`l)d|uA1XQWC^C8CbsK~$ei_KtdewB{~L5b^_} zA?gM4s3gTC!^Xq9$vY_dY?M#Y0(U1dCl@nP-8^$~MekSh zP)Krm?y6<-vKz0F1V7Y(KRG1vn{=+9lL;wi(|WLn#_P+vyR;Z3{aRJP$^wA`BX|!z zeH_RGfov>0Vm^JLW|qbT-aMcQQu>qb34*HpeJJBM4U3O3k|Yhd|GFf>t)_M#jgFEQ zryMhx$exCLqs~(l))O?2o&ca07@SY(g2V7abD(j&!zO=3rQk?)<_N|Fn&{wlNcR}R z>%>9*ZB_$&d~=e!^=__OWAARs*57`QST{lGDN2*Dm*&R_201ytIp%nMGnFv6**2u5 z!nti(O6V7eD?+NPC^CaSsfmfRp-z1fFZ3`~V1{P=5 z^g3>IJ|$~Zy-(6e5_*`_Ws}L1@koE&^02SHfHpO(j>k5Mqx{)7Ny!7~m*SM$LmuAc z%j567@{Bb~OiWG3+GR~m-?Zi4O;W#=TM+S9cvDd%fAjYAZTC&?yz_;LofHj{I(9Ye zgG~rd;)0zRw)4RdtgrNZv~Ln|IPBWF@9n9X$heZ63nxQW*eC)Z&-J-`?evn?f z$H7t3F{4s}?FUB;4yTp)rlzpVL;HM0yL0tEIy%K0qF&SOt-eZ3iK7Yca7jmUgqA9^ zrJmO?;$?A?c~}R&shF-s&HjyR)?zx#E>a1^<=bLuXOb>oOMiBS>Gg;t|HkTB+}enqAiZO1u1@!d&rf5e;=gk-hZ`2_87r>hDr?7A zXw`Acikqvb?Uc$U-2i@W(vW4wC@EQ+))UpRQ(Ih{9qla6V(t65>0K(nyukrYW$XQH z3@4*a`D@90;Zg*l5X!ZDGh4sYLQO-M5yj;f<`M(g-txq@bm>p;wcgpwl&HP@N?><0 zD`ddc#)rN!%sXJyih2{L+49H>oN!nO*c(v%%e+uk9`wOF&r@yChmU{pD&b(pJ8g^o z_0r-u24(Br&jm@BP0wkQ-Hos(j^b zi=aGrb9ABkTvc4z?Ze7f7rJa7NmuAtN*XFp%H`qpClp?wt(_P;(>9Q!US-_T=r6y3k%td@+j|l|V~es@evkTlh>L{Do8V)dRj#jEJvYEM#C&dIg<= zXy-2(&iFlqRJxRa>?mUABx2iV4ny&aBDuqsL6+k> z2$@Lv@&FOpq17`Som3qw?m_py*uE^(tPOoMl2s=>hFvyluk3uQ68%{JRtmd`eKi&w0u>Yev?Ky^a zc=xvc)xls#SWh5k>&YPS+)Dq~Nc=St;05{rnGyN%!R@pDq; zFwT3XSGX>&DkC}iI$L(AXd2)ovkS^@>B z*N3ZQ(Mk+Ry%twx2?@FTA%hxv8+s!Su>zLL7!$#$x4XfO`{|*=bi2QxFP-bgHbD8(Js7b@0MKNE*1 zOa&Em;84$U3`|$%w;^xPgm_@KY|-1X8+Oo131E}@5bHv713PZ2Za|y|rzF)v>428l z0$nZ&^ed$a@N59nm!bWWt^=6?g8f{;0;_>oM;Ty!mKAJTN5xpJuAMPyUA1(`)b4QPgez}B(tg|d7A;8RHS%XR= z{(b2B5&v*m1se;Y&`JVd!X(Xt8mqgF#M0Dfr2hTRqW=Aw{8GV+K@%vUApRQf|IT<1 zRDvEnA%$kxC`+@q9%<7G3zC8|J;lqLA~k$j80OpSjV{;8gFMxN^@97DUcFe^;FY08 z^%(VcOUp({hV{{SbFExss~vVmDM2QqE!K|F*F)I#gs)#W%MZOkx98g-{GWitUq!Y= zFi~SesUQ-V|NST30xK5i9cb+Q9a`;vvVi6KpJ{f?2PV7s&Vxcaj(n0!Be!o|(YwX? zn0uJvAChw`7ST7V&TX7bOW835EwcX%9P6H?69*3N$gb1tQ9+Q>2J?N;5Wm$BA$FNG zj9+L~Ckk>_)fk_x%x;Q@T6rXF$%sBY0H58L9xj|i4gBTh0umQ4$q^SHul{j|RS%oD`+CN`W-A zaF-*Bc-HVI-Q`6C}cwmLtID*EDA}MbW4|@K1(w&8TFGKvY0>(g(!Ee{|vV(2Mx;hau$V|Jw zSq5OK=t#~$MEGTax9UG!X)sX&^2;{Gqrby|&&8cUdpO2Jv7y!fa>@G9>u2XMldwGS znumZS>^DUK2=ftZ7JuE~zdiiFp5X3F^nb$?O*lS&h+4ckA6Nz}HHdqsoGRr8d70$U zR0CTTy!eX7u>p9r&@@I&KCP=xY|u{#t~2NgqPFG)vlIhaZA(YX_xS0gRLq0Yv2~gF z5woucLL*fOPK9&DHS#P>LFfTnVTBC4< ze*>&s7IMw84!Aib1^CIIbo#!BcF7+8Z2PlIMBI#$l1IFuMtX==b+yACy;i}rXNFU{ z%MPHrY>*U1fZ|kgvf%WwSAq6UnNLVzY!l~TSniL-5`pFQBAoMd3k$vD^nH;tN-DurX4*sO!`W8NaSi+BM?oa^TJpSTN$w6qIT>Bf# zGl30cV_O#mD_@7K@l>jAi?ZdUDS~A}MEuiQf1a3&F;NqyD+}rcuro+tB{;h&CFh-J z(&`lDzF*)Ej8eQ>1n@z`TIWzHfbGT^(}Bh_?2^_RQdGMn0qPtAUDORf>7p-L()ewE znO`u9?ExkEfcDqRCd5~|8FnlByN>c2vH2B9E4Cpc18h^1b&Zy0bo%`)%~I(-v@9B zGh81(km=!ZoEUq&Y{(&GWXQb@BNOQGZt_fM!tEoBO!I%nsxu9tu#FlZRl(89;hZKO z-{r!zz1vo4N!ODe_KE(a!!+uX3>Rj9ZxGwOlTWr|UmW?-MqJm<**2xs6e zZaEs0Qk+^*W1>x2c9{cpP`Tt=|BGm}@-^fG5}?r>n<^R42Apo>%BU{BC0O-qz_Mii z%>-GMBki7bw`apw_6fwpVv_+ttbjyhM1m4YVgP=~zxd&;?(8|gy(Rq;77t|ZXt~}D zrVrmLS{*gV0-;z5NYGO85wgRviNys2+n;pGIm!287?xiDf&*I z*1vaXtKV&sk6C^<{Rd=qhi!+S{~KgoLa(2&8CbYun6t?XrI2AyFJ3CrokjQn(Axe7 zGW+!(e?w-&h?#Re1^u}h3l|XE#JVZ|!JKt8NZuy?Cr8%%+ksi^^|vvg5~X7evy0r6 zq$thYe?yahT+pVd@J=Lz=8O7758B>VR}nK_PP=fAFM(#s%>4`Q{jrmG9J{YN2wkcS z{RkN8r+I9l*Oe=GaZhCXPde$KKj7~ld)3|uRmlhjQBC`mE6a8WB{F6^4ItlL=&f!A zP-}zQFM#^D9nG^;A$nlh=`PyjFDZmEt)lm3H$=FzlQ4X(E5*^4fFKW`$770ecAWxU!(k=jPf14-w(j?6})uM zuo1xublN8o4PhKYCTZ>JVb_Pwe|?&qQu?q#$N%R@_gD6_)(wmPmHiCUJbb&=DaW|<2%$3{sP9npzWd4j z8@rC}n*M9@+3vJW$mlvTf?AS=I7+!N;L75UID)!^c%bW(samw?{o2Tan4^hs;jY_r zr}>HZ`vz{rC>l6+d`>h=2_A~rr=E>mSBbNO&BMyo_7`q5B#?98ibj1sR0>PMT|h%b zBfdF@drRJ{z4S2I`l}YFxz38y>W5kMKORGvHueibE+W>sY%o~!Kvhdx#SF3wjX#8- zgg^ng*6ONt+D|&iU#S8&^mcfe6F!6N@e8mPfmhQi0}<%W!Hy{Ul(UYa>;>-g>0L^$ zzxMiTH2!}$H<0SMsF9iaD>8ol29?W@4v7^%9$V=qg;E*#XWxq`Cu$IMB9mW|K;OKG z2te?~bvX`~R)cD;Wqyj%CfspGCUJz6Jot3Iouli-zGo_Cln77I#tM15!_tBp zMjBM8m~9|VoR_%xkne4ktw17T;szbc`ZP}2T#S=fUbOdiRj+iI&InutzWNQr98q*A zbj`u58tDoL5bj?ipB+M){x|cg2UjWVx}f2U&<7g6(7O#^p%f;PHAwqmz@koMt^gr# zEm$4$zb+v6x(I|_QlL#ckWPdKddn0-%G%~})l-GrQnG(tR6FG%=^e|L)!?C|r9ltw zuttK(=!YZQoBJYQrHerHHO-q*?zQQ?~G@M@9s z$>_5E+;f#18mBSqyeea#C;S;sjIx|)%e0gz_DN9)Xn0V1olAI{+iyL4~5urx@qE{==fKUNVS z!BFh+{_w7#7V=f4rIQy7*9G?YS#&AgF+ei7GSo=BWtfea+9#P!`5P5&whwQJLx8o4d^F4Ry?Grj)I?<%C7n#+l zp^lMk2$TLk7{?Wpc-P*ohlNRL-6L8ae0N?~J#Do^7Wcrop$*GIy3}ChyOZo?1_ZU# zJUdQfzr0gYZdqlDg@Fgkf@cCf_BP#m*0G|Y6zS`N>&nZ3Un3P1+mv_;)u)|Js8=*q zP>h=mEte`8o+oI{C?>m|(_xP@kkKfBFrIki5K?JmA-162^m-EigX5;s8To!uI-u=CWrm;Ch4OeWTC3Nd4-e65J zpC9>2huG%5@FP3^7<2eLJ)zryHVw&UhO5VViKS0;?YGlDn9?^R!@RreHOodnZb-=9 z?vZj@+L#w|xI0l5q!rR=bd;JJ9p@p^os_wDPC6Dd6ifS#S<^1lC3BZKQ6)l48?r=0 zWsGG5f`#=^iFysVlUZD?XOry_YN_4#(mzU#K$}Mp0V;f_?G#NG?TZ$USKT}gv607* zb)J7F=+fGA|AF+`iMFpsMn?DY)?mT3qop6IIiN2zEP}q?kFVDacJSPQE9}Su#HQSq zx&CyksMpb#GizBFwq@?*wN7&CvUJibQ2m4qj2ciJ0ckRsDV7{UWoG@RUPY^Uww;uU z+60;E%H9pb4t_dxHL1X1V)eyN8PcW}FaJ(}l<}km>5wDCB=LFnG&XHS$K|7{kTUlG z!7ta#Z z)RIpgg~csZZDPKyBI&E#a@2~fR+{y_CGKax!GnD8oHg(0%IzV z5C8&g6e(Q$%*PbZo_E$C`g0zc=rd2MvWzf98jP~uYroI7XQmeQ8L^K7#iN^&(sHni zdKp*pzp%^B$2+$iOyigNp7=oZ#Ot7u&a|s2F0R6b+u?V&(FNbvOT`lyU!>=3M%rp6 z$MpvI#huFHK(7gJwR&Qmt?<$`|JIM4r=i=eZeGfW zObT5eTwiINh}y~zq)+jc)i(yq<5o6yLPOV(LCDhJpvN1i1B=8bKfW(kJ!JjSo~L@!zS9uS zW3H5!BHPLJ<47+?vXQAwm;-ChLPBJbf^q6W#%l*ZDz-FAvE3VYav_s7IveW;Y8^(d z|LB3lRn}cOY!k%KR-09sfI>!J;OF{+OSRTz6}zqTldgJj{!Uy`_XxMr%CeP%Uwe8@ z4iS>N0=06YPXO)vYt7Y>?)lxP^P}#+rBk9i;9c%A5G?pZNp@!4l%@Ye`Fn?TpNnk@ zBb1_o(X1t4_8)m+cjZY75nn*Ka9RRG_mghL0x-wOb^4X~4MPC^W{C$i&SaH(RoM_0 zi}+_Tc;xS_z?f-pi1U{qv;+Zi#uuq=!6&qGC{T9?>aQHVe(!genqSKes4e=xn5^dS zr`r8=0li@=0^cdTBqJP*)6UsUH=AU5qiRrcviz>?RM0qQ+~B#6eAE1+d+y7IM-OI^ z>?hlGLt#f;S&q#Uel%F%F3Dr=R77I0c0}v4wLPzo*>}L=6(d&{V=*Uj3FQ4w?KTBG zkO#S@%wq$q-xq1xoLFmWD7P*x`kIjo+P=NFIi(;rxnsjyY%PJ)D1wFD|x23d_f$d9V6`}H}u)=R0h>> zp-jh(7ZPwbX(L-pE!w62B5cy<9ZpY=0kJ~8(8x1wn!-ei-}NdHu^&6xHBR-gN}&Ka zjBM?hGjZpMeSDfMz9RW}{<@h-bCTb?W9m)<5;f^pI|c3C7_A=a2MIdTC2dC$WvDM` ze184VgEW~|+?b@#vb8=b5m&9nY?Zz4M3E}Jll-vCY@!or-ZT8Nb}hf#9^Zl!YFXClZZdu?t9-Qc-I$$W*Za=X zuX;v*bQ149d~o&kn+)EIsPvjk_|*nj=`4kP{R@qYq?=(wJJBnLIbfHNcHx^Vk85e) z+j}_`+zwOmJ$u-6R<`sCldn~Y9e#iFP*&*EPzQI4W-5E~HjRGhwIL|`TCyTDQWUAV ze#{iB*rqDet&y%Af^3s}Ja@bH42A@IlqcWnTJc)(dmCgc5O>S0K4F~WG66jT+^y6C zxG$;N&BLSMhg}7Xi^BNU*v@|wTlc|#UAJ!;CFp;TSSD+F{c5YAj~2t^{Cf*6&I@0( zTM$sg(XVzdOjDdHqjxL_tCK^)=trPDPS!J_@u@ivqU?%=wYBBrEsve@r8RK_qWibA z#zxc8ad*}8#P8mH;{rVlwNHh%KuSPJ7b5 z*WSN+&w|67=WA2KI4dbHj~nCYp@}2m25D702w2Fb8M~hO^R|C9JG+0o!tj@Mx35Rl zJCVZ?^D{fOJik{80M3MyLV#KUt3YjrZmj#7NBmw@?iCK|yO9Ny?%XdR%g!IRwkrW7 z_GUMp`>VJ0Pw9-kx+$EiG(7==HErT2-Hz7>6aXu~kskl{U&Sd9awDi2b(w@dhpKP$ z`>3)TV%2x+#eX$O@pIxQiKEELg9QabfiyOdXDmzQY~)Pi`7|(zyz2kW)Yw$6W`)f` zQ%Jf%^SD5r@CyS|%MeH3*> zp7~0A{XV`-k9u|6do3mIV$*9}*9?0w{0KYbUcdIFBhPc;*M^oU(kvlv!md8Y#BX=c zjD0O^=UR)d$UQV1{Y-UITt*gS?w=s`wm7x7d^M|*ykq04le#ot1S#siR=9ec6wh+d zQ(u2jGTyMFx9Chw;sd&BK^rrF|I1x_nl*L?Bc3Ao5mP~=ZrW!<%#O}x%KBYol; zpSCskKl6?{KpQb)ue!bqfr9o;KLR2BZ>!b%MPp#1S&bq{j)JI}+A0mn!dgYV88DH7IDwioC zm^&o(G&j0hW@WGHVj#l`9&x1K)I%lk`n3`#I z@OsAwld^}Y@7~SQ`Cm$$z|Xg>w41q&-57HlogTIP^ev}|21Dh(zU0`2&<*ag}-WSUh-;6H+q;R7_}$FdXN93S|x1vvKJN+3N1rL z)E%FXAHfh;pDjDApipNk?)I%*uW|6#o=(khid%boaR0+s&Um4EOdtdg`0gHKLizXi z7CW3LQ_oJeRE{XGWiV`vsk)`^UFdqi?)!b^_QCpz<(t-W8_=areD5OQC1;1|eB1O| zDz4GZgA4c?!akO=5PgbnnE9E6wLTEv=k*A;V)pLS@ca9g?1T%-%EzW_mwn({I_F zCC0~9bUAX1n*{YH7^@i&-ThQ2Ff7%8I6+avBcIoBkMFU_Ftrui&smj!rYoa*d8p!Z z>|=4uQ~M?#KM$SSH#0G>=2EL0C|2t*y}S-7z7}b^$P=l`4SlIBg+m@R zy>hVfoxR>=$t5_6@>LMyB>qj4_a&o2s3Amzem^UW0SFO0q6yWYU$BHTs9eIy3?CJ# z%s9#C^M!kCI>r5|9k<&|a^_gQXOdEwyGP(@@f%-rIv?a*u-kzWh0AO3&}Co3V!eyq zQ_|20*eW?C||i2x8-lo9VrK&H8pXb`-YG z0@<%aA{UK{qwt28baCiqt{lp#9=I%V`B)?8_*p_+{jkmWiT7GwZd!}TGdb}`J7q?N zV%cu2X{;AsR(mq_`Y`eU)P~Fw4juv|IQv`8H7v_<&zqxlIqw$39EiCVAJu$(0%JyO zCt^h8HTFaroJx1QpZTChop$K1GWSrE(=hOEjqmo;_(@?!qzW92iS%yexR?Z8gSCL^ z_FT`$s`U&DHeZ!Oa+cy>cb30`!Mazl+Z*R-hN{}#L`-atrUEDB)$}!T9owgb^ zr_meQ`Z&PV#D_%&BH5I!y(W0tefW&mZzf-_EH}!jh@9qNp2^rBLH=YY^hkyQ<%kNW z?W2ed`JJSVBFZ*KbQ@9JByJ_dF6XZ z5@Yfx{SYJ~6u+R6amRN05dVXNOy_PD#P%=Wx;U|?$#aOp9!t~PBA{rE5wM?h8qzV#_Ug7xhL5xVu)Mu%>kq0l? zU=APPYK;PPvh+(xkUtBl;HSff(*y|~&*hw0_zn)Wm-N8}JaWd1@9Rn_$k^$>`@Bew zuC5rFMo(n@q&plOf_{YJSv0O}Otr439q)BLoAi_JYP5KBNa42Rqcz8r>y^`v3|j75 zK3}y84w%ZyujF2hZ4`AJ9My6BN#_fE`a9_hPd7jvis2<_3kCvdkjeyoPWwrtxcwuY ziTw{~pDQaO$HkmpG4d}EeeCadn7KEekv(_jh1K1}$Fy!(*^%dDEz0?TMjAgEew3PS z&ojz*m8BG8tMKY#q>t9iHFs_H(7Vsh=_$u?TB)L$?cZTxQarXlvf(`@2SC1Yd&?NHHn9sjN`k(3~N>q z9FS7h#f7z7jXKB|_?$|bxXM7^W^juA71RF1S7&WPdctkiHH|R3msZz|?YB2>``@a@ z5idA&vqXCRmvF0sqyyA!W`&TVi|oO1ueI#+9goLo}bdqYHX= z=)>nlPTy~f*Sq@tV#Dbd7TW>l27btX+)uh%5YWYFeAJx4$7<%mSSgnxA$ z-We=og0LBd`Kq<`(#9TYzA!vjn9FxUM*akA+i!nu}F4l%gnC#TpV83g%L3}7$(j(A@C%$;mLXU>5i5Ah_tF~&9A z3>q=GdPUTTotJG-iw=F3>uY`e7}LBt*K0g41BI?~2)^AibVo>p$K#K`pm8OuDoVz< z`ot{DJui(~>P>jMVyx_-^d|lyZ;Y;Sa3kWdvfL!!qanQk%B6P;Re_Nzoo-$h?CU1j zO6JHmqbEPY`D+HJ*zX<4tZr?tSlU64C|@cdJ)EobJ`&-U!F4#h z-u^_|_fJo!Yf7r0n#Ol2#&{3Pq3SQOV9PkUqx@?)CPpv0HlGU5s_}l%7T8}^M!39k z@SyXD=b{;r871jSd1taVg2=lQMH9$2>V5_@!oUo% zR#m2~inp%!Q>l#v7~Y%}Ussg(CSDzR>x z@f!c(4$|{tHfpf&c>^uU`!cY(Vi70K1w z)d~Z(-kUz#DUf=WKm~JFz^|sPT~r%BE<|u>d^+y?>ezuyX`uw>8ppOm?4766hAwRG zsJ&GXF8F!;Y@<~r&={bF6o*}H-jn;i$!%(-dAYiOx$B_w(7xV^x$Fha_T;=Qc=s_w z*3IHaIqBNA4--UhjGkeSS(9E;;kV&7PtG1TvGKlCn-(Sgv2P-@?R;eOwQ4E0=P#U6 zw@o35wc5snGtF7{=^Z<&SrNo^`R!ZgX61!a>&&B>_ol7tr@~LQ(mAJu_1{@n8cXSB zy{N5&sx8`dGILxl+FX2u{IjP~<)BngJWezWqb6jJRutc?3V+g=B{}twVdh$ySK=*B zm&30P`ik8Mb@UiESydv^}^)l;HJsMMd=2K7xDSJIjd)ksRsYt27|u* z`Rx1i$7rA=JnJiM0dK$-%z*8WD^DiREct@YM#C#R@BddMxjSHhCNX=Vh4$4IvE!Fi zZ9EBe+=Lwfh!V(p6~Gj)*-x?r>XQ(m+YCQc4-4|+AKV~H0S3M_&JSf(6%VpBH7#E%#uQ%p!po*Kl-+Y1 zdwiwmhPF+V@+WFEjeVSiyf-*Qvcwb3tQ$22y^F}Cr=7*+a?t@ArC%+_gdg1%=S_LV zIB%-E97t9sRT67T!?4p7Kh8dtV|JYG9%(0Q$*x0+%|*;L?HAu`={vsv93}4Th+IB0 zx^K@>iBG;Wp&_@!Olwc{Po=ggqJqkneHs!JFAc=7nY&ux0?o?k`3 z-iZ@cW4O>P7ELlDi&LaYoW;6%Bq40~GYVgx*=2`E)!#Olv{k&`i5FU02gyB1j??LN zj-xO4czyR{_DYX}`-cRq?*6&){iUBOzimXws`(RF?8z?+9d3^aeM$^#mwiEZKC-d& z;&g~$j7=~6ScZ*?z<^sApTN!1f%3^?b{^l1Gd&bTLXwchic+)SgNP%EcDlxw-B%{-D4?>b7?tHjnZ8!s56Sy+2*A|XJ|p4?u5 zVjw-3nbqr;DEIl4)%(^<66N3@=971#*x1JZq~;MLdCA^$V!7#&ci$Ixxx!E5-{Qxs zGZ6LC*wv*dc5P?pLeL%ZsDbEUZt^^29CxYuk*zvLlF@G)#YRm)STL&-FA6DFM4 zN!IElYabLSbe?{6XAUzi|oG_ z(I)734DrJfNCqnm%wc{P(&7U}j`Db4%yaZa9E3p}W%#)7-niW%>8LR?J5EDsWb?&a zLzchCtvtd9YerT;@!i6?q+9-Lu;^V%1k+iN4`8R;HAEm0093_jdRAmDpaMuxrzJ@i zbRj0th_w(%7<7vsWFtBwycK@?AF$H;PmxqsTcG$GQDH;_tty+xk2epV=w2yuV=_r( z!Sd?ZXV7PPDvbGAt4J9i(<-Gz38$ATbK%;dd?fXogJtuUX)Oljkt^fZpR|2lIB`Fc z`am+>PHosXIzdsN`#qw}D|rfK7x^ zG{~X&qs7OGb(7b3t74rJYj4cNdOQ~8Av4ICa1}Ye3!NF6kq@=8x;!s>u0c#>!k=+J z|EIj%T)_!HZof7p6OD-!QjVa9%i~#IY(5Gs8rf3AQ?mjat~VaPCa727aOO^Q3SUNV z75a#$lsX<>6+6$Zlblso>b(>BcF;Xgnqh{QXczB zM|-8q=?dv0mW9c4aJ@0fIuNdq;~A#MRy1BO75v_^_!ciK$qr3$Yn zlNskwi~c9>;NWG+z@}l<@E?FgpvG~d_!-!G1LTYiON&y%)5$N3PJg~nT? z4vIkTdNe{mc+^8*jx<)yhWZ_)NDkDf<~bzas;GsEwHYVXL-CV@-t~exZyldR(la^*ZFq z11@u|i039fHo12N%e;%n7;pPriW2IBTN1j=)DBdW-0*2kYSGu%t`RtI#cT8lxQOzx zUOUJ2S^RC9jN$;0)SxwE82p4t`Kx9Gsd`ip?bP6ETXNAgeSBx!*g)%DhOFrrndQK{ zda<8xDIVHL60I%O*`Q)Tzt)@WkwHa%7|!e(E-IiLwuIUbS0P!rVYL-cIBX2n5K_lu zMVmk54ioRWCQgRjn!Y1mD4&l^P*PoG7$tS%bdn2ge$pMQVa5~tuAs~1mmMr{BAcYm z{qVwQUFPOgyEG&HfcBNv1J0nnj=#r5qhM}{_JzYGCwR44QZ-Y z*&Nr?<7$I4vBjG3>NZIY=U}^A_->4>H=|i7$0nKDg~R377rpt4-<_#>IF)`rx5-d> z!a1oHUkw%v6?$6_d6h%>s32vCm6sIK*(u%jmMuZ|?A}$kkUO&X_r%CPH&bP&W^Q{) zE`Pt6We>XyV)`;y|L3q4F}ZZD8B(^j)Q+`RR~yJC^>(cOmU-?!53>_y8V9)kpi+fam`$U@yYk_e6}R?mXt32`ci9$9qn zKKt4+)1mWB^;Lz>g)Xm08if20virs9=`3`~Xy#Pe&8@qbA`c{D$2lR|cLL@Hx|^j) z&h*P*@?3*_hEQ0*{M%-W`h64H+NQ9sDCj30QkonU@ssYQUOjq)5z$Vn#=>`}?e$$rZ1yK8>RxpM^aL8)2m#u_hY>)H z8w#A~sT-%n9vm zC7I(QgQ(^iO-D8b`nBn)58yHD3(zN%SlvT8h`bhpiZ!qzpl9HVY>nJ50RuiQ>%1{Y zBPhG!9)^)U8abWw&(qA^8}?hO+@woc{-Jr2&GS|@9MTP4_jG2CnZuYk^jTg!l)lVnXCBU#zMv#&Ic56hpc49mAsB*x<|UAta; z`Ks2j=q<19*k_-QTshP*^@#cc`WShjg)cI8GU^%sx$?lP%-0%^duIhseLT^w{!{PqWwhPU3jlCG6jZjK?7B3prQ(7rOD=?HP98&z)u6R(9~U7 z=w;w2MGVa?a|}=`Ls#l1S(d6)5MJ9&Ab#xgODKA4S11}$zDiS2r%12vDpo@=K(U$z z#A3(%B74+{<6>3h0J3Bha@^1PwE9>wzc2~iGO*nwL3C5p$T8#6Frq&x z3>z?!%d6{w)!l0XkgOd_4SlHaVU!x@wcgCn2vy( zeGVIDisM~f<2+hg8iOZJ21)ZiNq@${p}yxb9o+>w!vMc#!07aklGJ}NxBQNkdHibIrE?G zx3l*dR7u$gSkGWm9-h;*CW?q4g!J9Up|sp|LN~ zKqHy~_{jj~>>8sxhz3?akZ;^Lx+@Y*16^{>1smC+-DHJ*pmpuk7UGK#S%3vti6qQ# zr-J@=w7Wa{fLiM#WShWJO=Cbjw4l(|*G*_A!hY!`2k(kWBQ{rQa=?^vE`#Lp6_#Op z+E2Pg48;z8!zSb3Ps*|s4h06y{`ac`&1ylXso+3!r^pfr40YFj8qRC8BOU=NtVWep z(kW_m@H)A>(~0yz3TSKlLx8k45G6&E1|YxP0T`^Pr5`L5Qt%iUcxcHv8nC^<-X2!{ zrHFlvXbcpwcfe3_XZ(H>u&ncX)a2*DSv^WdPXrUyAl<9~jUk4XK7p>|ARd&Xw66`o zqRv$QJ}6PY-Gkq2VDcRS?btOCfANP5pFlusC;%V*HYOm4{`*~^dXt1{ogl^0{n8hM zzxLOY{eSzD9f~5Jpq8N?vg#K3b;RF7vs@~*f7*U@^R8!o?2?Wc25R9%IvY%pwT@c# z6Z9lE#ZpvB1-T=2X;on+MRmyZ5!n^;rPsV~)+stVCPL5S$2P4vYI!dmQg9V%me|yS zpQEYv`oqW7nns5=SWI8WF)k7$Cm$4Si=_o*}HMGZhtz zGxe>?VLO@}UcH`$o@9+hhOSU_y`0nGSNq*Y$!OVzo#r@R*3tHKqZV4JzPe=JVR7xi z2dchT{@sz;b!Ir$5sgv75N_oIWE;-{oKyqq5ak@fF9cL09PmUmxO~Csa$`Kb7wRW( z)(uH=4czZ_in%wXZG4W=Rn)@iwLi1(slQ&)zwFnp3IEIb{(af{Z&_c1;3W%ua?AMM zLE1Ub1e|2*1eMc-lsb8@M)P1Yw)W|)aryhou**FgS!$osx;jVHd}TBljy_9Q<#`ie zj{T2svln8y8n1tsngs=M(=harGLa3kwo?o3&>%?sbo;HuzyD!=uhZ#R+t*^;xiygo zxs7yBG6|*#ia25+4(`kdH^HQxX;}3Q6$CIE6BnD z;1764u{bj`e||LpLSHC;{;MhTt8sh9@Yo-wQWt-G``*Cs+{3Wi1*Nb{5obtLvhWxQ z(`an)fh5Qj;mj;tiwtp+IcFoVQ!yit!fw@Qc}X7Tw|f_|KI$VBGe52kjWH~kfgZzRvWOhIr> za?x*aULU{>ZP;rq`i`qEi8vp}29)=o`?|wTSN?ad_5ag8;a~6t#25k$gp5d{$R@}> zTgCcO%6U*;b4jw@=)H-CQMoRwUHFg<%}f7uQF*wAya1gsKE7+91tgvJZ|r8;Y(T7~ z9>JzXXuu6UcZGpJt~Hr+;ekL@PL53}#%S0s#$@!$VWY4v;pfMm7`RV5i$A@rGMZio zGG6{^Kwwmi8dbvsn$7$o3X0IrU7h%CjbTxRX@er^H9c-3Dqm)|0}n^n)^;`(7EG6{ zG>AFUb8H^?x1iNO2C)8*{LRq}x8I$IWTkm;=Gkz!z}`~?m0C+|gdme`u^_r1CAd~p zlo2WDA-NxUuH$3DmAMxTK!2+ zXKAZ-M0S|;>biX0a`hE~nW#`i1*AnP0#Py4$Pxf8T}i-KYwHG7JxXu`{wy15jfed4 zOkIDvPnem?;7G5A$>}iz!^Esp@FtklJ11o@&`G4yCN$Fq;(I9$6ApyAuaOe5QQ^kW zV7HI1S~=ApOw1lJr9$;0$2D2a(%qyr-t|Mqp7}Ywq4Nvs`LAE%|LP_G`}ceB>y1C@ z=+F}rRv&9R6s4A#@NbN5*Gf}#3vCP|1YZevF_M{Q6Bo&qTXGW!F2n>-YN5agu*r@1 z5tgOu$uLO72r;X8gtXeS!!ceo$-=1a#ots?9+KgC)r5|Xkh;94WvG(oah()e1x)w9=FA$x+{*UE{?_GcV7rw4q*1R|?>U^8Z zv|OowuTEL6+cJHcvB>&-WzCGp$Ep$wS*J`W;?vGT+yIGu8zcp6J9(g|!aTO!-*)`% z$<#7csXO(ex_W7!_23P2vppNuRr9eez>0R_DR`K+i!L6{n{1n_HbXm$!ez^_GXXRqy8p-SRy`c zp4jE2EAnUd_gz!jnR|P?mjJuv`_E~6)cly z%BZsM(8*o*;ELil;3BTw!2OmgkqL9d92_QDipI+DtkzIyVqCyK$xiLxaeLW+9Cdf? z1@;-&o&UA`&{@CBkIm*Tjs9`?@I0FxS9F!O@4K9sot^#L@~zU0&v{|ytrMMdc%Kz8 zJgk4PaG&JI@?-Jh|BlMD)+ARi%-%2XwZ8M(JiCuJzf4!(e)&3afwS)2%kDBg=O)Zd z+u9m=W8?k4$Q^&V)&0I(ENm7AyKCz-AXyu+;g4!c3SPegw`dY e#S*zor^uvmG2B{&vMvyLjo>I7Eo_+o-vj_|iw?5@ literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/ck-kernel_launch.jpg b/docs/data/how-to/fine-tuning-llms/ck-kernel_launch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3947a5615f8e59b2f80e1932e296dc83eeb7ef9a GIT binary patch literal 62929 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

  • )?4}Gabs+6(p#jlP7XqU?n^fIWh5K0*H(!eEj(a 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 literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/ck-template_parameters.jpg b/docs/data/how-to/fine-tuning-llms/ck-template_parameters.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8876965ef73af249afedf1c5c67edf8939059219 GIT binary patch literal 50050 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

    4kY^!+GZ{>F6CW*i|Ym;{wd%-kHAZJTXB!dsC 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

    PYD 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%0DHB#DuLlR$Ic&+CX2~<{2@qEek7ovrpO+ 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�_a0o>}1uP zk4$01jz`VqCr*>yIU1*^AV#0qIG~L{iXKsS1A4$pZNqrp3(}QUP|Y?5Mw~G|&EC_H zm~uUMy;ER{^Kp$f(sUq=6(nKb6T@6Vr5N-#RC;}$JJsXU3ClMNnTXz>tUIu-YdKv_ zzll8$Pm<5vGpFLS4Ab%IHqma1bppkN#=rXs9-%if8QcN6PO4PKQ$WK2Z8s!GyO!}o zmD52`2osb5MiD}B49)sI80q|+OJ``Wbk~jgfXkEj}=rPJIJ7SsSIpc zVR`d_!&jdvAQmVJUrpWeNV^OuFO1@h`fB?%Txxc~*0cDw%3x&(b+b009K8g zj==BkVh0Bkif3}k1tG-^EnvO@+98z=%jq7FGe5}j&f$Tc? zHd8H)RTsvX|FB;?N9dVlesX&o5_EV7Vd-9;=H-k9PgDE5p)lZ~=VoPXf{I+e!n zVAtHtLe|BE*pUZbfYp6dtHaHZ#3XiZ((@u9h1Gd|LCyK>Znh2|^TqcY!3fL~)TbatgIS;4L#lkN$`mY?Z@g?*Z`T~0>;M(zAk*TQ#({INr zHx?oOD~n+H+|BHo)290lPB8iXyP(C`*YMFCx3}C4Tk?~&-q}a)f%OMH5*G6{dD{Gj z-8$ctyeCU-visf^!#QNye&pd(qjYPJVzFQxdbl_lRHo#Y#UPt`u#=wj#-#Roz3khUG#=spZ$@Bpw(Q{66S6jQ!A@q*s>KyI?uCTMHM`SXnH zO~6pD4R+1-c``6fsg06Bea6>ERMYmueE^+ls6fVUvdXTh+ouAP9^;OmxZYTv2WM0lVcBSBb}d^Qx^L-fGksG3@c7+IiG;`T4TeM)1GLV zF+vc<)}}7#NH}ePv%uyh4pI&uiQY?P+&q-zwT_4nB+Ui2NoaLTL3l&h3bQk0Wl}FI zg+H%3Iq_vX*%6w+cgnVnpEb$;714;v_Sayj^IW$@3^ya}2Ms*Z&K3RdYgUy(6^)#r z3DXO`N&<#1jAF%_tbx))de9B+-o=mQOEBRnW7rXRgst&SxW08NkuhDj*6DGL9UD+P z0i}&rN8CtnQGM>VX~zC%rg?TZGhPbR#gvtuY-2v9E?RDge+og@?qB%EKSW2py4mD!g{m=Sr?L;x=ThZKoEUaCD z?(f4xMV%{u)Z)97xVy0ipzQMPSiOXK^a@}jXq*>=9L+7zaTyiDO)A!b>4ScEeSZSq zTig0Ga;#T&4Of-t%G)yq*)#U7{iP@8G^0ZfF{52JW2FU8PG%0r%&Y?2Zfn}-a!hCK z@p?!-?{je39{7B*>#IU7V)Nw;@^x?NJicycY<))oSrEH#_UgE&^B|qkvd;OH$g2|zUayTcjLM(VI|QW)G(S!6Kzoj(P{y*1qBBISNINB&?}W63mQ zpc1nE3ZOy~cA{2DZEDrZvHa-_ZnIP7>W3>IEvnvDZN~yA5$9b~gxSmoxs8^OyWZyn z(Lg=8c>)GS95eS-*8D-wXUPh*5j%Hk_Y4zFN2#`CAcN~=tLE2pQjCT1OWYInuej^~ zMC({_TQv-lzlqh&dzD~5YUB_QWZ~}8#&SW%3uqXLhIrLz$BXm#6!fz~m++|Y+(b*@ zTp0dPe98th;+jHh;S>*NrBX zz+7}ZLJ|_Xeq_P|j%-<%Xyu>{;FXsq~e-E#U#GVq}cgm3J zVL+2Hv|!86I3Jl~x0j6%WVF+(B8bPZgl?idlZ=#Y*F@zF+G7?XEINo`dvwNv!i_W6o%-@2WezKme(Eu-ct+qbunxW$`Iy!b${dS3&*A1N7dF1K{ zb(aD0dQ8~12`!+)`&CVb&iR3!u_-{^FEl^n_iZLl0%g7Ta)Y zj;E}IP#@}+!sInTO|D>=v$xeq)p!u`Jh1ny!qp(!s|lu1SS2xQ(=;Z!(|eZaIBlM- zBR0eCDLz84P=)W>wf`zGz=Wi}Xp4O^S3h;Ece6!W$=&<`dCz2YVxrZ$((L9ArR)E! zFC*8k20=|Z>~EQRyiFJRe^D$zVIcKm;<;STYZ=3VR1S3tp181qS(CF*>O%>{j0CLOQBMY;!cDK>lrrOXCXi|AhE)7n34W;GPQR-M*P z9ekgys97CnsoP4XsmFCYfC4)QOFDgBzmbJ6Oz*2af8EbS3mYA2kJl+28%5cpVh2;F z1v!cGNN7qt3Z8T6J`AC&`;qyLNn-Nq8VN?y-J8oe@XEC9zZ1-I{rTJuOfMCdr;dn^ z2d0U~>zdlyS>(c4#@EshAds(p8sTAa!3mgoW$`S(#>!~v$?OV3)ePGB;8+j8f8TT+ z`*qfTHQ@Bush{bAs0b=DmBC$rv0W7ERLsA8!9Kp_x3yV-Ti(+B`+}(fWZku{_^KYIJEI#A%9 zXHECe9*}TNLbiiEd3RpXPJAeLjp9kO>Oo#n6H-ana|8BqUBJu=r39mw2~T8H+PoTc zI6FLkt|JrB(Z8H%mNuGr7jwPcQlQha>9*ljEDSwR9VBJ;y07m%s?Hj(+f>$nZ3`yz zJQ0teXxR?0PzZ9{$G2D^XGRFMCgx7QvO+T0bvfVdw6r4mOC7J)H}vJI2iA0kM`1PX zb_C{m!^?$rHyq$?HF}D5ESBK6bm{K#fCj`$*0UXtAFGj>O75WoL^s)IE!8fxKZ2$G zRt-87>3|=eo*b{|u^vl7s`SHwtzVGI|Iq~D_idvD%jbgcG<}6m$KGkj<_)_{n*}#) zDV=eB%E3>tjGI@TN=5tz$`&;S7D2}ZViSE5A6Ih-orD)0Km}h^UB9Mm?__|#d;PS# zbGBqI*vlGwey7c@GpzAZ96dQ^;f;dNzVEU~GEa|(*w0_8gOr+-AW9&&f6(J1YNBM8 zEtvb+%0iD8Z{-rKd<71a8cczpN9lj;MZ?g*y0u)ke@*^(wWD`lDfCB8;F!sc>ejJr zjcR5d5QxaiYdDAGQ?rCrduH6T2wDHzt&z?BfL}>9e=zs=udx%jTm^L*Ur7iE6@4#M zs5meJ`iF}2QK?nWH*e~FrZ&5S>c2f|s))GCg|Fr5u&72yySbXlIw|_An?@_A&8s;y z6rMd~&Z?aqG}0PhEk1blM@*_^&PR=7_K4yitK))*SVkxMQ9jhihZ4k+fh=he0Y>3Q z_IIqN!F+=G(w|Eev@e*qT8Z+_-Y2RLEM+FC3!lL%^Z7Sj8dwix=y#Uayz@nr+?L8w#GoXJ2{|(-D_OA1x>|jQBCC1o4e{<~`*z_%#pK=E;$7OCKi?vA8B7ka=t(k2CK+iIERIWb-$6>7E(S*Q8<`m!CDF9x zYFi94T=stc-gr;8CurL;S!%vts&lh-M6((8F^JyhITw40%Z&Fg7JlPXS&PZ6fOA{y z>vQzXYUqpuSg&YYt!OICRE%;zHo|`K`RU_ZB2-MlA>+sz|?Fm;kZTQosUH;aN3_LEMiFI7eOR zMDWW6Ki8 zUT;@wX|95Nf32$fUhTxcU*V+zjP*-qW=s(8Xf_n1AK)F%Dy zPoMzk5#OrYjnD)QcgzI~qWtMOL)G}j-bSD%n z=gpfS$hmo3wrW*u8um_sGI;pEeu zwYW_NVICN&c%}Bx0s1FyDoh{IzfKa3Go;W2O(FEZ@~g(i9mSqw2>*=?EU1Ye%* z%2H8Lv5sRu1xX-q=kJXG0Ld*40xKcck=OF?6NuMOM z%NAw`ow$Z!r?Mc2>{7nxhq#mDRN~_ePLJJULV}A`s~jLCh*m@}QRLnGzbZd5E7`wc zTB>IsX;`+x$62<%VGtjWB@-VX^aA^0pkEelLO8Daiq)}fjdzj!#I#0(+a41;sAj3I zl=iaNo_1v*OwPq`!P|{k-ZcJ)`&vV#gQ1)F__`A3f4||Y8U#Ry7&372iE%a*{~%FSjBAo{#>jIhYVpg?<9mIpkBn>9xrO7w$^;oOrDe?uE`7E84It*iJXypNa z#w=g#y%~GHZ-d(|K#4l}9*Y#VBtW$(0()!o;~az#a?=f^n54*p{s?25#3n*;;9_O? z^;=UFo9ym}(tST3Ns-3m1F+^O`?oy!%sU)!5Lw%lKqz?$FAYu#F(6o_9`W(*#~xK8 z#&sA#6wF3OhY5|v=kzzW^D{J^>s{ZQJfCKrlh$a8dBaPe{Gk1tl_WbLFBna%CqUM4 zGZy9H-FuLH@b;`9Hf(6Ia-mKo9cB>6gX`KD_oSOpZ!;o>P1Av;ey` zztX4eW4Jcb?>Ma`^Ad!7r!7IryOyYp49h#h;Lc4C)61}*n_r5a&f{S)d|M2;wg5j- zr9*++hAOzoh(x1#F-aL7^NF;x=Q7DHMAD6WF3nU*PXV zudhA&!$owxegCRKsyvdAKDML(5+7Oc{+_~pACv*tO?8h09gJJ{HnIuwcT8y~9QXLB z4^et!lo+2K>&8A{@J|Aw3@@b>2-p$a?zW$cNe2kef822rxFiehr(+$-BIA?p3En zS))qVa38@tzLKlpGGnD2&~<@$e9Q4ly#AO?b?@nFvYj#ThG)a?0VB^_3`vNJU$d0q zL7NFC(@M45!lUUX`{_y>vK{oNepztQrNKl9(R22!->s}ar$*5qH33D#=0+}46JioG z9F?1NMJ;Ha!ApK}cjp+p9KB=S>#$!fqa?3d298F7g=AGq`JpjUDB)9WcMFC-8K5yx27cK8wm=Le!XatG0#$@z?0VQWY+#Q9_Svf7sgWX&0{mzCgUe8!?&8ni$RvJm9>sZI zm~0;F)-q`H!v&1waJB%0t3g}a(64*{?C|J0+z`Err*2VxvUnZ+vF{;y;0(k@|4`z^ znAnpF4RM@#r$%50&cW!;=fvfufFgfmQ6@G^`Llq5w~)LJTXl~=7M@d7*AF*C#GNJC z@taX~01C@|5$ox?socX6Q$3dFxV}Q%XcF2Mmdutju<-)j6jX#XrJDH{;u&30FA(N{ zVMc~N%}a3y-#qJqQ7ox_Vp^KdfgA1}KL-0z`&$XkydjEZ)B4U72sw*K<7VM72z1JDBrNSg(bj zidVjP?7lBn!w~4_0^z?A;(;D?9Cd+mb)nSk?DaLN%IVK7{JftO_`^VV0TXo7&#YhY zR>y@5uE50k=kAa4r>JtzvB$+cQA==Ew0zxsK`6n^!?XK9C`C)d@2}6u49L{}(;57K zyr6$-a8{_@wrhk42asuU<-HEB&{ORd#{HISJAXf9TXaSH57}r2EVPum2hN`}KXu5X zlGjnb?DR`27;A>--&fQff>i#*AD;Po_9d~vnNG;=oZ1k7*(-M!R>s%hlElC#KRaFA z*T9KS?|wV*M`uX~<*o>x%9Losh8ufHzITh0=iQ{2`CCc+Jsw13K;IdS)--l7u}{*T zsHSjIG@cQHPtE_dG(|`dQFKus%Hw}9_T#k-lIQJxJPKIpxsQf^h@WE*>})NBu`VL^ zsj=PK#HGA^%wOPD{4=cFGUqMB@#MOCz%aOMBV^`$^y;FK5oAaSKT7Sr(&@$QE$9#B zY5d`k#ye#6u~sgP_0e5u+_AOKZ6BfF+SpOCv^GjM67OC6!woTk9CuE-u7?^5r(-sN zy*ZSQnC!m*s;xmXmEy2sZE*JqBV^DyRj(AwfSBs&L*o1zt;?i$fy{2Slc$jO4t0(fb#UA(?aAwfpZ5(e;b3Wp^^Af|vZw8FxH1{@a8GJAdsP?wm;T@K4n_~sIA>G({ z+rVU-2LP5yLZft8C`tzH(~qljw{5Wo{HRq43geQnuA7Q+z2OVLWc+Jal<-OS?W0Dv za>LaZn|Hz5bG);kZ6OosR^y-&{e+)eoqNmu+{MW~9rMiA0;%&$q&$u-RgQRnVj5(}#IWK7Fq`uTb9{4M1>w=8?E7ZivF!;fven5Woslc~w!( zj%norCPKt9G{U3MuV}Bax-1#9wdq!?-?bjm|0-7EG|ad)K`ZbYYGA6th3<)=ThTQR zCJFU+VeowmKTg){rYQ#TC4&fMBZm4D%H0iZ8h)tF&sQT~^zlR+j5zh3W0$C_{3rSiBwR+6L}bNn<~ z865g5`i<$UpIHmuT2Z;LmB}7vf7f0S`eLe!Q-yr3x_u75)t_t8MRPpDor<62s86?y z)}}H$?Xu&Dd%WFn{&c4;8R(4P)Zh5vc;1NPi2eN>>v+zQYs7kqyJqwokE8rWZ#t;&8<*Enc;O8|g}XxP1|Tbh~jt)Z?W z+C;FAUK;HI353ubXQC|}L!$~IJBDVXd)Sh62DUM*y6=i3>Wjm?*HT?abTO~v{3flx zeKl^wD^8iG!{`JcRQ-4Pn;vfw*7>QvH&?FxH7tqeGxk6+z3 z#t>v|p)C9h6VRpLd4Ig9t*xyX38ddzp%gia@J&@Sw-1Q2z`eoY4Hl|J#GF+YcSG+u z=m$A{wn|Tmg+x1^!P`N*7|GMzjlH}hKar_G(I2$Q(!~f#iNI|lx#=yuz?PSD|EISr z1%4On-lCm-$E%Fz?rzqfwl*BjT_VtEF_1iE60<7~4t6NVk2)eP?D6<6Jtohd47ZQ* zc|ygOPhWy$?@zUZ;~ql(O0C?sY|}HcF=|j(1>GJ{RaZO^#_Az^DXq#$5A&I^7U+o? zeXP-x*Zx5TY_+Gj72j@;=EYOv>`~!^nd4Oezh{_B{Of(JuyirkLTaIuM-C5m=ebM| z&|vAYRE$7l4Cw(rX<^)0T+Ci~6Nwy?w?}3471n`Z^m&|3uC+-HiJ-G>#5*6ZK}{+u}0o|QYWyJ&grDs3o3EvBxl`WJf!oh^T(XKB75r` z29qf@;POq6Gu^}^BD>oe#Jsi1b6bfvhXr2Ru(%pfF^S<%7?4IjIq0%LRei^V`z-ij zj}WW@upFaIBz?bUcfzto%gm<1;+1eVZ%&tpuwwJERg{32s=$VC zrSpcLyw7#kIsT~{ELm6A6k?1vfcdF+*AzW(9)zUVJw)liJ=H(w$$sRPC0UBT)SDSu zh#6X4wOhuazbBE7ZPea{b*lwrD;!J&B(G1u>A8YdRmB&jmIpM5nQ{xYs|J(~?30+w z){oA;w`hyY`)wr3e|GQR!9sSV5b2M=Ri-uGorbJFQPf%oMM`EC7WO_9r$}6?&3A=l zdkxl;`~*l@vrPbq(frZp-R67mBx(NX+*va}BaQhW|9FJHDTmKYq`^_YyX=fIs??hZ z(j#S2*iR3+Q~q>{tRu)bzG}=V=1cf6^FtN|PX6)IwLDN+5CfNqWN?FUkGpN}_m|m_ z!rgI^7G(>Dp)O>FJqOBWTypQM5uefdgo^9iR}#P{2w&7Z$kXcvjAX<8|9vwvzk-5t zs4%g(S=w_hZAT8lG_hT$D32slg}&HzWENTB`)v6wtr)IU-QtHz(YF9$m%r6d$t0~m zv=MR1x3V9dKN%Rk;^?Rr1w;H^EjKm=7rU)#{Qh=t;XImQ0pu! znY4%1Y3HGZhOf{~hOV?h4QR0Xp!HT4p}N9d`TZ@bdr5*XLDD?Ev>)0_S;2RaQmviF zeB8;l7pJKQB%8?+Kp{;h7+6sKurNGvy;(^|#8zMYsv(f&QJAv94^1>2oOU+()D= zgy>LApGqQ@W_%aQy~CINdc$5N3$NQPOGMC#X%tat(u0~#t05KV`-?}6VmktmshJah zo$%AQ_bKXkpVKdh|NZV&o)v&^m%>qkhUn=67keOZDCKyf)OfY;_Fs{_q%Ujf{kO&@ zNzAKwm})xzI{diE#Iv>xVVekGw!B;>9g_;VTrWNl_hpTfwl*{y$x)NR?tgW_{cAnT zyK74@@*f@N_Ar(SA`dDIg{RWuFU~H%lQR-5zJ+Cy7RJ~Sk+1OJy<#)a%{d;|rSo zROiFhezhgh3pkk4ef$gqnmq2hE&dgOTjJ~GUMo=&YuU;zootqn*hGzyfaBUl8c z?{bTs7R)e-Ezm>g;;A53u$af=HEU^}N$CnYwhQw~+u*CVS+h1nbYL}CUo$6GI6XJu zdd-8X-8>@sLe~4|)~N*uf`#ZWG1~FUpeI#Nabb4mw(4iB&n0{`^z=v7JA_?jQ~uZA z(aaxy*J#@;T4w#v$%E;np3i|6QyKOrI%NOqoB)Gygt^TPZA7apr0es4ZWb+VF+G&9 z>vTTx(roN{M+r<|(p{dfI~jg%%WeR_*S?km%1=p7{J(p`C;joM-GB>`(EV(x^V{Il zrl3YS-nN?c&7YFrmAhEI?|oaug9M9Vy51D=9I(5kzixIkmX{BoBCfHndCsi^3(>6$ zWfFevS22BcNNQf(r)UOm{w^02n~ZvB9~08fyK9*rn`rVJA)ynD{`oQMexf;(8wS$h zt$eZ}NGgdYf7+#7Y`D3;u*~n=HC!NF5|!d-q=5RrrhDmeJ5rn6ZhVM;g&0BE%w_kj zw)~8E9>!%_WQ1ukSUgqyE}+rQCceNcy82}pdw064BDCJ(3ZTxEb8<9*#n}Lqq!@o`IPT{<&s7jm7tUz| zPF=GPVE+#=XDY6gV72S?3DJsgDZn;cq%V2Y-zQqh_iVcvo8igiV{hQPRCf~8QkKDM zg$&5B9u0`?jvSWGLVMes3|vwqiBqLbjeqfVFW(AyOMUd5e!akrw4hipOS%a_dvB-9e7QWd8t14GU#SDFYlVQ;+8Ht;jau=vEJ*1}|zY5837CmBgR^S)e; zYKh~AH$UEts=ECoqbJMzHFt$|EAsd^U1kOR{xB8BX8t`2gkn(iz`e3;`xh@|J`pn0 zDZ}v3lsaRT?t|E++Qhw$buYd$T>G{#0Udit3R<62JxC(?bvd~>G<1YLh83anEkL`l z%7^cDsz#X*3-lq3S?KP~gO@ocAd>ajwtX6)U+&gFR*)Y-lVZ=m>%d|jeG(!%o4)S= zevBDIWsdg~X>N+K*a3;hH34D-VY3ybBJJ=`RGu5Qu(05_9ATqlTov0y>#g@(z+PTq z2X*}FtL0gMRI{^!aV&7z5akE?O;e&KceNKd850i4uq^QumSyTbibl1$hx`gm*6?9n zYZjfP=S>&)tlW`Vr2m~(u3P7F0G>rafZC>mCf5iT#&7p&cYdO>GBM4k7?t2PICCO1 z`I4glAL!(>HvlsEYd{7tKc}}@xKR8&_c)ZYhdtb8wn$_H(c!BJwWFyABgWZbHfh{^ zIeryyDglg)Ha&quJ@=(-dgE0-#SSmk6E|5ELE|nJDr0Y9>j^mcXAjh}lwz>(D7t6d z4+FB?5A6fWP_>24s*S29a`LZE@N|yFp0i_-~4?1 zefX2m-F;5`UMz!E(Mv33iD^qeHpYt1+FH6V{oSr!CmqpmDUtKiYo7<0PXZW6S#Hr9 zbwHsW)GOA*YeM^Dx$yErA#i2zjLNu$YGULlR@v7Keq}Dh}Z(uzX_|`OftG^~ zcqgi`D8%&g5y4=mjQZUuABn8QeW8MG7hN8o>q~j9TV|NHrwO_|$zIh44G-WK0xt2f?G!x_h?%YJawM8nWidtsKi}p8NIzE-j4k*CDmUx4geEQv3u5>4{ z=$2EQq9UYdT%oqSiUSBbJr_lIN;;AR0POnpe%G606%B{s-`{*?;cYqBSKh2iJgE=z?GQQeKj;x5^vazf1EgwFe*N!P`+hC7jEutt-=!+94U)miB9tD`y&U+h zT-;Z#ChF$|@l#h+$W*)#b11-k+|d&4`P9HdN|eqZKe~7sx6K{zmLQ-D+Hxg3C)n_Z zMB`E!UaFE4$e+iLXHtV~Vn@pcM0>MEA$QxXaS((yv|{@b-*>(Y?5{DB@P@IU;-^i9 zI7>0jxRb8P2;Ifmd<}ByI{*HZX!fzLa6k|w`=}Z*`Oyj&%HuW;zHGaw#}3KA!9r4z zxC~8%;?%C=2-75S$%2MgrMHgsgygTBd*?l6#4*MW-$V!B+`|prDUoI6={tGGg+U-# z`+m{n9xQ6}U2(1F$&Pj-Re4rwa|XWzavvw0lRAR6gr1GyPSxfee^P!<+Psw(aENOJ zCXD}5$y6Y{!7tUVEq8#W(ocmKP<*O|EZ>a3>>yEo@+JJEK}ZB{W8)vxumO(^j&D+k zTsN_d;07ZQj{iUH3euT`Rx_$GXB0V%03rF(_mii8aZ<)-JSjZ&cazdfX&+tRg}n5* zMwO(2lj#CztWy0@)WwHkO+l3Ri_Ed0$ zvg_1xxsHpm$+RG(q3rYs=QNCEKZJz!;CN5@s{rnguS~B{OgmVqdON*f^g5!y1ZI-cN-3*qS^|C;dIjFz2>KpTXM(6;7eWJIqi#AX zcw4n`gw|4@_;r{2v!wGZnWoN{v#DL}4gW}qb8uK>YT^WM*6~LWqaH4dXR)mQOZQ~_ zPFz)0qYGPSp8@r3Wjy<4AAIrh_SI^-5F`vS2@&?`ZL1UOx$v}G?)*wakV==L}-ULGyEnh<-7|HwK{A#`!&IbXve=ZZ> z027@zQSk)P>!(;82nHNZ76WQJ>p}*rhY~eByNwsNb9#Qtx4*48XmOtb%;$LyCnYcX zttv;qAjt1|{o5RnQ-^0qie$QD4kLS=6K ztTceod(CYm9;N~_W7)T*(N(X-A6m%sHV0M^5MOB zN_?9$arGd*?4sM$t8#*^4|Vtl51SV8AAtj59pJ0{IRAWWx>`S<{-9`aD;;73)olO& zQZyq`{NYrt1k`%pQFoSY#Zrky??a%jYo%heYboy|=284~_M+(5vQCR6w;G7hC0vY! zA>eP`hVy+I@D@2&dlK*@8v!3*p#73!-nKZ*z&YR_eT(M-4cRQhj!!=n;<+uuLs_^r zdNG&2r9c85#Ql8VfSq#v@AS{jQq!7D$k44wETS<WndIz2(tsFqo*LL2g~_{C6&hOfG11o-*t#d@v!6ijo9%9S({g0d5XmBc1J zB=(WcE^}b^RourWLU3PHBqbDr+bHZMj|VT*zOSh9f4F+fsH(#Ci4)@~P zE)WpOO3jGP$jHcWSG&sO?}T8ojpzfWk9w_^L}u9c)v8*TR9@+)pd)v{LZ-ccWN3Y8%PpxFljTv zjF&)SF(R!7gPx{0bUzO{_pIqN5n){kx_VC5%Rj7;?brJaCg8`JlBipuO~Xm4_C}%b zC^{4Hg!I1t(Pl6GerxOrbnEFzVrF*RsYgp?-Tk;< zV~Ls7{_#HFSbw{g;suK4E!Xj72C?VZ8Ws2-+evofL8is$6}#iTDAYz_aFW`c0NHNZOmUw>J7j7m4N`CE_8TWnZ#{>*@DN zQkDEYrZM?Hlsy%^5ns6t`91C!8g?@|tz`IX z-*p{iZcf+D`t2}pOATm~>D>NAN1kLvO4neN&Ts!<1os%{eR=freQoA!!3D(?9BCog*lijcobc#u7XJ#_gDaV|P4 z3!oV^^P3Ei?%@~;?8<+^@Ug8y^|JeOuztZ2n7*`$snMNBGYqn8js`8?8|3z!=y2;o zH(x{#Joq-^rr8xGyKeYd2`_1Q$D+>(JmCO2d%tO1|eZk@L z)e*_Z{9)AEL4t(fa1_RHD14gNEeOTN1Fe&_P+t zlJ~`P_38X_Tc~_)hJLtz07m~$$^at&-wzj8X#k}hwgi}raxIgx#Ee0leH7WM1;U2tS8F_V5$ z{-_4+CORxU%cwX6^4#0YFIg_c*q!UJ2-M!Q80{jcGz+`$*U}ZRo<=%cVzVHtn4M0) zuo2|eaJ`DP(L{g=BRk@3Jv~l0FqfdzAVvCl)vB3G82EwU1^=AZXpMz)wKc7nhe#@W z%iPVFG-}6c9`VzkVpJYJH>Bsatmzu2Ht3GXxo(tK#U-07LOrA9aE%+6*j4~gaj>UQ z@pWVSw`;FZbS7PAxS~lPj4n!QRmfN*=L=&ol8590PD8I=;20U}u!^88^HW@_IIjo3V5@ zi!v?xk0jjjA4!=;o@AxAUwLxs9MV6UsSBwA;)(b1%m2SC0QueGv|IjJ!Ogbnee&Pl zF(`7JKjsq!@z!ga?W@smQPKiIKSuGe7RCNc{@@dWl+JmTRLKbL23Ms95}G@LU+NN!b1>3MyS%!-d?q zK8Z`kD==qZ>4l{v?6i}-n)*}uhdZ!~WAj(G^yV}P$fYb=af2edP$=GClJsm+v~Ge3 znV~su7d>xwmEf&lqb=|xrr}?HTYC4)wV&yNqvUE#0476f0b54K3^=e~@A z>fZ7(%}*cTl|labZy*ZwFY|%I&RWb?O!S*M5-O?U__8mbX@Aa?AAM zoZ>hcJ%Vji&$8u`jL8op6j0ms5F&SFMSJ!1$;xH{vOMmEO%bGw=?IN__7RwT7-~>a zt)5Kb0k3%%aN&jw#ed*_(bhfbfH;pbjU?s=6<2IyL`LyM9~f)@v&s8xt8HT_RR{*i zhG$m@$E$**PEQM(O=qW2HUl0`HF(6!)tpO#Mv#_3rx2>BX=l zkXgOKD{}XP2s`*f1S=i&?fN=?2$zJlY& zfFNNo9{SS_{ z!r?_+Pp*5e?GCAF!~4i08@A&f&X_ws*n7f?U(RX`e>79e#Us{(lA|C+bQ(Q&;*#^+ zBX*f52s+5uh#BRgT|q3*3VFVj>vRsj1IaxdAM~ly9Y5AR0eLxXFUGmHz9Ew!y0&PQ z{do5On>_$}ZyY$b9-{n^ZfWiDFxxsGWPB;xI6h%a5o`Eyzxa7_m`+DezikH`3if@Y0S0g9oqUQyx|JJ|rWkBb6H}e$AZr1}%y5*W{(YL$DXcS?^I_(wBHP;e6TPp^%&xbv(|3+Twn)nFL&$G{e zL6{0blSlfflGcj{vn|0!=&`w64P$pq&r*&70PHfrvnsQGmWh& zLQdcL3#SB=N=qwB^AubC)NW4flQ_SY=v4MtG}c(`)H=BSNBI1>&VID&V3C2LNMtS3 ztdE?1Z+N5v*+M_#nwCed(j=$K9RGUHBVap0*!H5Ivi_^%cb-ywei$6oD!$ygJV^V8 z#9{HTpFY($K;~pw16&L#ah@00xuOm@(9X8E;1oaLLy_gqe^CV>h_c&+>zKG%=Y?*YG{3l}I;h`;RuLc_-4?5oyVZu5Q z#K~hSB+n#g>~AJ|_b%d0YBIt!Z3f~@ll4WN5VXzC*pSUYQ;RlVM0XJli5Yz|W<6>a zWFiR&x*B(|A2IhPqD*DP31Yd&`EGtI>eDs$vhd;VsV^S#CvALOSF74F=JzQM5BGQO zcx9K5ocz9yzGDGwN0sxb^d3r`%@TcrQe?66^%V<0Zrru*voZQ$VZ~Q5h(k~+B z3k}uhs1aBs7nq&o*YZ~n>e}FBKn2G`f&oN`#`y1V3$CvwPGr1A$+QgWc8%$UTmYr{ zJ7&T-*J)t6eT(3Q?$M7uVx}K)-4RB=AYuIGi!AC9&%0zSEJoc(a$=ES!{CM+vsOr& zU1S^=`VY|^TS#!7q3xJ6A@ZisV?FbTOnE8Ew0_sLPG`2A3(0%Iaa?{|3qfPxhmSaE z^wX~@Mfn=&-%#oh84&{!#3DPjaQRSozbeL|;2=FibkadD8`jgGNzX6xh0Jwe?9jhz zj>CHpvQ7G4G`{us0doXfe6ijk&-p1x7ydnrngOMbkn`BoT-HDki(u3-jAjqOLeN8C zQmfY}M)q@)bhSQQNsNif9LBO{H!CxI6EPw5>A5RTU9J-BB*2N?J6<62*7e?1w0x|i zhi_Bj-Zs#04x1%I;7J12dJvq`mdu3&!J6f;UeeQ@yY8JSWnDOVBIv^N&tC6K)}hrn z;GHO9ivrTS6#gEr1{*n;DAAUJj^!o0-i>QrLs`);y<8?f2*>P%CmaQE}8nnELr36D{Z3V8jJC_kFoEX zGjDQSmJsbHCZ>ARzFzbLPRW*A0-GM47dp-}DU%w13zw-xJ6cpPmqlh(ahG}F->zvImT%M`qDSY-F z;4O*)K=?%WuT((AmHM%0!Ti(8kUtt@bP`&@9Yw`Mihu(Vi_z#11H!XJxy6(Kz=YY< zxMdt)L3(BMcF_ILS^10QK{p^^IdU7Q^yPm-LQ>M>a|KVxLp?E|^1p&deTq_q%tJ0| z$ka(8@Bb6_2Nr$nkno^zBsw2oI5=9s7q+jiPC!M;PtB@TJ#~Kkfkcn~!F5A3iQ~vp z;3g&Cer>R}zyD;CNu%Ywp?R#r$>Wip02#mf3E8Q6p(eDEUI9o1Gc69aXhxP3H32CO z`;PUi{e?N^m6K{hM@k~kFz!a)M}5rBWrfU!&x|#zQ$@AgchV2S+oY(>DMx|dqE$)d zF?vsiRik@3fLD-us+wJGtb;$8m(O}f?pSo?72Z^I2?QS~8i`oq-OF_9?cD@?RFK_n z_P(g$C+mlpwFSVhn^}pSD-D+o|?*|`ne`Jf{#TiLCoWVlykB4p0q&=G+Za)TA z5H;~e#gXXkS}gR0KqdQ|FRJ3cmRPeX3NK0@6!*H;?@dk;tSFN~R12B#M5aX#5;^T3 zyh?iHDtHvw8mmI~u{A{PJnJ@2TB*MGW=A>y2%_4jMi<*QDi+edXg-@%i%s2g8wm!d zCdxsf`a(XmOI%oy=<5p==E~^Eo0jI|RPvT&(H~ww++qB`NRkiUH*XHM734uR z-waSkhKQDxV`k=3`jWAll5^`}j}{ABUc zugPBddqGWHD3MQhOrqz>xZrXAnR(@OU^{lTH&$J5f#Iy! zYrGijwt%r`!TlU6ZK@a(#?~Nl_tNKTVk(*4n!8(3SUY9nYauhPqOQTT{?*-uSTsn5 zmob*}Z|HPg?aMpWk|o#Zt{{#M%M7fw^6&{h=eM#h%1ui8_Z8=7Man%0Ole4!HhXMV zRSVj=tcmFr2C71bG-Qp8JFl-R>_6yU4Y!sjzF_yMuZ&PF(D`Dpab(n4rx4ao>Hc5aYS1oouL*vmD0LNHYA8tKYsR_mi+G|RT&A+2f| z+fc@DyPV;;H>#cHeodv^_=N_w3B)TFT#J@idHL+@)lLvx?e?j_v%=Woy+Mt~knYWN z_MBHKkwUE{^jaoTR&HF;WlBAIy4AV)`|)xBUOwHMy_+{XyahQt*21weNl}nCE^A}p zqN^&jGJ4`chKv&~vg@UTD{vfkX9c+WlA!hHzOh|e5yQ>!)DOQuZ_+0`Okk*M z;Jt}};lMGlW(gex$12v<(zJw&nND~E%=+_NQ6D!R{h8MqOcVO`1!p6A?&gF7u4Sd4 z4XVWIz58Odj&E#e;CWO*(#FQ9)g^aVd6^Bn?w;l?$((B{)BX)Oud_qaTKin^&`V6!m$36bf>ar=iOSF6W?`ByJP zd|~BP!g*~oQ{!*i7gpbH?G1m)r8_hIs(Is~=9I)qBb73Qp&J=h`fKxU?Lw)-$Rm6F zT&mJkJ>f%`g>(QKXRLneO|Vn*ZAq)h^p};ootE8;ol=_OTS-u1PN>un=WwHeyqwyd z;aK+xZjch-G7{{+f#>l>!+)}PlCFesk)Bc$~<%oWZTKj+Eu2}tv z7!co_1v-Jl|2VrDkfHCtJQmI}i@p$aYCd`;ikUZ%en*|CJ1{FZab|T2J6e7p_1KO7 z(!LM{%$-`61zO{VKBKzvIJzgt`C+_^cd-yKbz6C65b{yDvT0 zPbBsyYFp(}d1XtQRxQkz@(Vq$;OboVr~F%!l~KDj#|2Ae`Qc^IIp=>_lH6Ty5Ddi5 zsW{9Mb=+r&k#1X7x_{=#2Mt-cuHn5WAoePz4dN$IrY%l%L+dx3;Vmj#n2o`sCP}dS zBT$~nDf;6m$FecnVX%{!#lx^X9KQ#fy(xoj|4|AQ(by?q77&MLCleh1E`Y*Y<(YG5x9DXbZflYHz+y1V~|EtYXYe~kg+ept`RYfz+rl|uf(3k9w zdLUk8i2(-f9rby9Ny~8 zWE!=Hm$sI?$uilP_@#jL2NSqmP}z`k7xvbe&U^H@r%r(ymX_)G@3Oa&5^>Q9 zUc8~s(f9l>mzJ8f zwkLnHVdf|05q-2FCIYqx|F0aVgTM6!xa{W_g=~QMPL3uDfgPx!RrFw&;@x`z;67_T zzC2o+sMQ4Hs0lu9@2vOoIu{@cyZGWOvXw8P&WIJ4{#AH1B8=V*Xjz`PJr*&q!7CN9 ze{1w8R=G7sVjziuEaGRMKwRF(n@C+C3sKSihyZE4*e;xe4Qka)_GaiXvvB+uKZmQmXj$Eu;d$fKbPhuI9%c><^yWjkX9ku8aHeGy|^u{C2yJX3= z<*(I<1R!4&IPOo5)0BlfZkQ-1p8~#eX})}8q($E@-)~EJx^i=kgysdK^DRmstP63# z4+%ygg|Oe^bz^~G;gQ5k%XaEJsDTUqv-bgxM!`oQY_cGb`_ruR+f7`J?!EbwVX@N5 zo?kADZc?kOtLq@Sa3UkEr0p4oRS!?QJsGx%f8;d{8)oZISN1k1mW=XuqTa$T&t6aV zqD;|Gzp;Kb6Ln9dHd$9}He0pTcTdvl1%zwKcvdzgWc-T4WUDQ<>7n-3Ao*O$T%{M~ zpmHMfy}##?z|dk(?<6ZOj~NBv9oDqob1A2}7gSc`GB4X5x1)PO*1lg;w!_4+z%a9M z$(x+f!DNcR-g~)?=L|h!Y`id(rno@sHL{+NlZ1`8H=T-TkQu`OKr^qr!wpCUWQK>81^0KIdK0{l7SSvsuV%Ar6=uE z|AZb7&;~hLL}MR3pFEUvDl(d#Vxx9VPxTgKTUx5u*`DkbpaK7VU%z^p4w!!vJVTIs zQ;9r9mRbS?W%+?95t9C>V3NxB>(3iP4E!BDf0k#-e~Bd{!RCAQ|2owFYLR^*QZfzv zh6J?r3dkY1KIcQo!lBz?tC{q)-%cyce@ebXdYKsrLd%<7e$ilHjIjn|gkpq(82aXn ztYFlw59J0^t*F?#!Vdy`Nu(X$jrnFQdFL;@Hs=~}IyOd3!>Jt9iIi(e z#nUFFB6Nu>fd->wn}oJyQ0`itm0A_b@GUa*%0|EgPDMn&hlVn@Ij)mIdS$sAaM5)2 z`eB>-@QXJcQj+nAMtaw@^G_J5{WA@dD$W&7LLENyF$rq+?AYwAtfz#8G**PaxgMUx zop2uU?qQh@CeuyY;S4N~M_cybM?pFapIM6$+Hi9vi$CI?$MWFrCIg8tNBd0-R=+B& zaee3u>2RJ#3y{G`AYsv^u|fX-%fc533mF9cPB6JhHUTnl2c&msoULF-adf{D?V&SKWT?2p-&Oj56;xx z7pb2FrRe9U zwnNk|sh*XUzveG#UHYf8B0=?CTW-c*&6JMypNYzJaju6a0L zhDeEy*JiZYgJC)To67mR91GC1x1Znxr$Znz`z)3^gRDY`GJt$OgZU)_P<|f-n5m~czs^1g%3Mn<+eM5T=tift!)`f&PacN zA0;p&c7mK{I>ivK{-ndZ$3$4ft*igtZ-_95P5QN+(nd0$Y=h~hdP-%B%Z&jV)l`1Y zFKvu*U3OY>;e1ba5A^?1`4-#MN=y`NA}Of%qQJhj1Et$w(!O@}yC)h73dh7FvNs{) zc{hf8$&M^~UkI7i{{DEqO2%DabeLflB0j{iZTEPy`N_>aMKaU3tU>EsYOQb;=59!W z9bP7$Vb-AIhIjYIs1@m{qd%l$^S%wRJ$}pm5V%h1qCYE`NBV~(cZwT%p4VdzjE5qz9$r`jX3MLF?z+3;YVyW zUi436PPCd6y7kkbJzbWFrEuu;Z#x{Ltm1!aJy=U4ECNW0VMtKqW?|nzwPnh+Tifk} z-2<&Ks6VW<=OHlY;%X)jn;8{WlHdOtcJ|wTk4d%Ox|&H0LY018+JY4o<d)-8W{7qVUP;|t$cMv8q8M0){+x48vND=#q|GSv z=X>Na+|3_O^vmn0Z6iX9{C~e@Uqcy3XHYzS8?pX?;P?e(k=qcmoLtH!6R|%{e&q-P zJcOH?nAT}0Jr4ckRIBm*bbnshN;p?Y-vKlnq z{0Gl`M%%5mLYPdfYZ28H0WqXuy_7HJP<8ubWCkSpZs^RsXOSPG8q`#|z1c-yo+EB# z`N9zt@ooi$&|J-sZ2MbYBeIgX7*t8>XZS;0p#R@HLa!{v3cf64^o+@-SkQ=&0Cq!QnM4Qv%>*y`O#c?wc{2+vKkub z386@w>0p6%mC(qDzVN9&{l=i|Guz>*vmNdVLX;=GY{C&M@wj?I&KPkRM*d#b!~U?Z z`qxzwEIJyU)6V{@?UySz))f)q8uw=jEM=bm^rcudQ$k@8*UZo<9);_{@U8d0J~u|a z%Vv$Y@%gJrFcOOZhBfsd%}?AfcREsT9+XIlEtb=8p>eBg%OuZPV~Re+`)J_ArXWDo zPd`e2qf?FyEIup1V(8Eh?J0k6#ccb5<%vQ>SMHZ`(z!pO1(}*mIQnYfT}Aw%z2ask zWoJBJtfEzuRSQcg+&j=8aslq2_)68+%;Cvfzj-~0n$&dBqmXY<+0Y&L(ZWi_UU|x7 z;(joXHV-tA??r;8Q%QCOQNEkl;>Mq@d0#^;IbGi~7Y&Y%F1UFRJ{cLKQXNWHRo$}t z?d>hCA5}XejVq=;rk_AWTS951E6X^N5pV*n+Q>Z^Y@iv;p;UN6PT3LJvUACZ2j2a} zDOr1m3EN}*)-q7q@!Du3^9n%5j0Llk-oJm}weKIOG|o3~8=&E2`_pxR?5+Iaz#gRI zZO0*y)>1vXOeKW4kEk;FqnI;=FG@3vvh_7T&puAmtVrel$>^;*@tNoko^8eI?|&!X z)`!0_CrF*k`Vg!XwAl8(d~4FZ&cI60dPYMXn%!gHSd%Fry{p6M4;Q=t7ow7Py|NPY ze0A-G)zOS8N_{7-o!)^czCc>1)!et$Mw`Zd@4baN%A51iNh6G!=DFwj`I^rNaJSJ( z$I-~1`(|YLw{v}NX+k#{l;f$%t}UPcXwHqzbK*oBNwpKv6{Z{w-C%GUgm;IB3@%Qt zd^f9Xhy3dk#<6Lh;9_v2ZjEATHK|O?$N&D_phs$t!`f0uq4E4TiyvH!GC9n>&n`GJ z6#9Ddmgt4m2h|@|AD;JX+PLCa@FTLYAAAwUhs~>L-+WT8aI%zD#w^!dz1g-?6BhZ4 z#S(!E?OF|zH7c*SVL|)LS2J9Ebr(ynHF0RmaqWpj#FOe9euIDz6H?;yvwWhtz(AHicYvd#FL*My}>t@vG_6y;kp zWhNGb7~X{Xe_g=`(-N-iy5EmWn{bxE9rU*d;(Xi^?U41u;jye!>OuJf0$QJm%X}Jm zZQ^aBEJT0laoopHZoBdhaVT74V+W)U)9;v)N4m3Aih4zCy-jK4U`iUt^cj3dDz6Wl zT4f67qOZHZyC~umo$4{-w4SeXm>jfUZu4`wKhxh`k32V=*>#gc zr3u$!pv?F$vr`xpdMj2E&4cmB5}vQ#9IdU5WVBx~v~?5!t(%X+>LrbXo!bq+oE2q6 zy;V_SLe#UGN<%x3Ij!0D&_Y3NJ9&~dhal2$bD}`8(gTDPCdx9;^EHOU$v?(AbBqM) z&v)u)-`bHUOi$m({wOxmR$jdjs>~tg#*ydasf;JSIImqj_1Dl>dZyD|UG8f2i`c2a z)Nc*@0~-k{i-+1_+klAyf6WQmnu{y_P2*%%j<5YSih^h@#aE&4ZF8jJv)5L{w4in& zDK*FB9CfvGe6`qYhgDOO9#OnwQlLr#JrY_ufah>d#F#}m|F-#M-wf)bl$;J za+Sdb1oJJafR&b$+|Oj!l5lfE`afZLrJAh{c^m_YF~ORZu^dM3uLPZOgz`kxLFIC) zP!f;b-Jn%Z6NkxEqNnw?5cx8WSY)>T2{EXpL7w$uDHqp7c{+C|lRd#3j;pm&{OeB!q)99pKzCIG z34GY)BbIQ}MVT-t@@4WKuN<96TLmNHzTaKEdAD?jBHNhrEUP)Z)dP0(s-y_ztjX*T(xu6#bK((th3P(xUh_L<@= zBiqS*G=`fo5yNq9$K_pSefPo3C!hVZlvoFnOFi>H&2f3TB^j65f5I`$4qd`BQkpWp z43g+zru`}s89Zn96@0%nkyg_E>^Jc}Sq8Yw3ar6hqi$;R)19FqgGCq^wOOHd;n)@J z8KEG0!sX_jw~>iI4t)YCmodh7z~<}E#;1|g|2L8u`*Kz|S5BXRh-jVH(DcXLfblD% z?(lZtRY<nu6LRB+au1#9O;1Mix^HB+m@rRGSd~%&+2Hm8M@25O+$^JCsm186v zU%8H#wZQiHSa{#r-u{$WU?#)$VMsceYMH5m>%%`J|QDkOVJn z{Lz=c5&wBo`jy;wI8V~(J-cK~_v*Fvxp{o~z_m3#fB9{Pep26!1?``g94yx6;=L7Wk0 z5aDaq1rJqDJ8Dh0$FP5MwWYL2%h_H7ALXe8TnK8DFx5!CMC?{2q#X?_Uu&r4t1{I> zBac*vlw;Z|3Z~@xVTxZRe@BsHbU z$TD|(?O2&K*m|+n!1a0u=yY&9fetC{s0!TyE~>R`vH7eIVHHuy9wed)3DMEM0CXto zA(NJ+M#>Z~1D_n@OzYQFF4JlFL8ZY9hrQd zDCGSjZSPHU^8c<^;k;zvBdXIa-5(yNwre~7B>OeVQI;>{Ae6GMJPeg#u^IVtQ}x`% z%lZnWwsQiTs4ys-1CI@8Jco3nMjPGycxa3;jU5y#>DXWr)PeasOm^f+h>yXKv1ixm zKKFg1_WRnGsXbj?a6IU6N=JFIi=q44Q&+fyHS0$#=x3(*ey9KU^Q%79P>Z)>)KIIJ z0l%`QL4{q(wjXz8gYHC}9Zx@#xX$$Tf7;gT`FFh^saE{kD#+?RV63&l!wCWrF+-lJ zVJ8>{0(-eXtqCxGQgQI+EjbK}Xta0=q`9tQYVz7Nk5Ln{L{W+~XtZ%vekA;N4_KBn zD!w)?SCWw{F*H&YpqJE&o0h4OY9#PRkAyzLF+1>Kl2>P!ny#+t>9oJfz&EFyuUZoK zc!R`(XNV3JMp6sTBpvVrQ?1erA}r7LGzLZtvZa)j+U$Mv(7jV%APe&#@k4678) zOR`Fg8P`FF?AKyKlMW*hnttnF4U0YeS#A$F0=C@VO@IQ`A4(Be&E&ON6yBYyRcwlK zOWDeIzS*ky2mjU)8o~P=m&et{v?m?mvoE2sZ4ICEUS!4iCFZ6nOOCcR&RlGme|0+!1Z5d z5UqbgAMIt*K|aX&`1nj?F+xdCF6zu%rm8Qe}_h26NIYY>RlQ8LU zn(#T{kYX|qCID(N0;Aax@Y^r{2_Yoqvrh4~@mAlPtL*_^GsZo;#$)+57r!ihO$Zam zA0(S41XuT)%+RCfPbnff7>xH!e|{0YKg@sjuj>2`>3zgr?R1Kb?7VtwM%hVCk7c2j zc<{@X?;T6O$q6W(6q-BwElXuS`v{=5NHz}fqpAL;o7D(P_bjd1C}gADB2|R5FoM`x zb#D5p&=1f%eB~ka2LMSd!?;1Nhy-KKHye+eAXaZ2Dh@z;T~bufp0l25;LGl zsYw$_8S!75QF3nOmdVMNA{K#U`418jDEq+dCzmez0>p8|)|h3s3#JUqji)Fa%1z6c z$uIZcy-dk*LSNzb<9f-qL`dtPZSnW_%W;f~dQl`xYr^aj^F5^${j1Zhaiqx2;dFM} z`|K#u4m`12UoatBoi1nj_W*_hG~C>TLN5D1)?}UzcI-7=ZxPrpBT z!L%n(Are^K@p>~`zrKj+H4oC~0<;WG7;oKna(vy|P-B_>ghkcC^yg*v%{i?heEi;S zy2-X=a_f$c53)}Q)nB}XuDZDgy^@QFl$Th#M;@*5GL`85qxW>)-ox|m{YZg4z_E@m zY4ER(A%|FMhU_xD2;ebro>J zmc)X`c<%Ld9ltlX$n%qA)wtj5m`+0z67SV(jyo4b{5h&y*t;PqLg}ypb5-1jMxN&h zWTkF%%bS|GUUvG*v{2`=)iE_Soyl3zK`yA~e7C<5%mSIg(igs0yRsG2_c5xHnx}(w z9e({l`~kf5D2e}D&j0Any!5!hZkyqrSvsrlqAZi^?Kjioj=cn+q=a50Endg{d9o>8 zmlpugfVwe884!I5E*~-V*J>>~rWwQXk6x0y6`gdnD#mNef~5t01Y> zycY^)(`^Vw?FM(mQv!llN?lcr)TcRg=y$=IK`}k^>4}M?Gf+fiw2x9yC`l0^1qBPW zAPvp?41St~gSxdRGg4aS{GC_(PnOV2f~@2dc~BKa z&u~N^Zm}r@j;n8jwsP)w9fpm%i)JLrmAaf$$Z}GkN>n{jR6SK&mBz`K1D{FK*}ij9 z-aKhi+S%MRb!cJz{QJ|}k}j<57YX3am~-1^4~}nC`bu`#JjGvd>VIBc<@Z%{XVtFx zAx^+;_D*&M2Gme5qg#NJaPyYre|1wuzZH>T3U!oRSVtKTm7~mW{~@=(bmdsN6Bk{x z=ZOE3*1f*G@TSxmM_(Ea?~c~mtZg4gR&FkL@I;~Ktuz!zX8vwG%fQB6l8NfWT8&?R zyJ#{m#DjW9_=>ino?l4sfA?Wn!R1;)tAdHo@Fs~z8`p=CezPS(r|pkbtnI8cfdT&h ze=7W9FuzrWH_=_@lyc6|Q-fw=7lOit$QgHwzpspv6Hbu(0?m(U>Vx>eZ^Ig?8yv~E zl@2nmDTs;VD+hsFIl9+Ok_&7xbeH)utH?CvKgsJE5~>A#|Bj`f>%&QtQ7_9w z{?&!u>nCM$LfHPU``E=CTGbYG_&vgCyJmzaPvMKWp8+B5 z6znuF%^PjBI&`;W6KmCxX}`Wa5FfW_o!hvv!f0)w@-h1T~YF+o4RnkL54 z(GBO#XL()fitX7^B7UI8ScR2FE^j{E;W1Wo*%#4VCM$F6-h*sPcMXKSx}!J_uZ^6# z?d^EijhW5Eo6+n#g9Z1sWJ)7KEW!=@o1W*eBeC-#p*aqh`*){Q{1UG+O?3s)*;`Jr zydUmfZ;*|X84N-O?gj-YyE%EHr1sC@b7ysbX!u^6#r}7A8Gs^^PRZ%M3c#9qR4j>+Zu3d^d#j zzgFHPDasw?*4MMxe5s7;{0ZMpFH1Kb$|fKrgy-_G)?U`j#50+VW_?ijnUI%tlllNuS!s2j{P{fExrFkIV9r2G{`zS`+Z*8eMMpZ}Mt7vJwG+*b zzQUmJiV;9CM&Zh2VrAgxpyh|Gk3NF%ET+pc+e{@n$A|o_xH^KBVDo50YuA`x>REN5 zI~m02ON8BDJoc(r@dwQ4=`m>e=~e0L6l7%ye-Ac3SVq~-&&_GqgjpRs*l8JX$Rs&G z3;(-JV$F~9a} zuO2%BE%91Tf?hqfM(*c7$>fun4{e#Qm!myL)#dUvZCnpu0dez{|9cvxK7P?t$&z(= z*mmEWqeGggmCKN|e-pJnPo54nQ`WRw@w*;Aed6Oz8j)NTZM3V)%0W(X^QzgJ9z=rU z>a^H$W)+82$VHczTw#}RL^iQdlV$~y8G%V?Pk64Q3cB3+(Fmv zg3q>OP<-lsdHvId!+Bmphs{bP;8E;u$)9Do3ZJ(3&=jkbc9{2Ax~nM3OLu#w&Z5Nx z#3kh__5V50S*u*FXiv5C?a}Xn5UJe)1V&dbr)eot!|#JW_ypW!G13Kkm|= zf%4_GwE(cRkx2(`XD#c;sK9H)-HVaqFfY`_5tF5WJIr&xOBCYt{#D+m2%L&YH{|uT z#VjAeOE8wTY#`Y4ymSVgU2bU+pEy_dJbNa61DEo?R&Ixn^_=8CeI64y)@BKXLJv9ESScdV*PBIS`ub&j7fj??j;AtEZTIn`V@!1?1hEj}D6ppl! z5vkO*%g>b+lup(>;EZ7^V7ulUjxdGN`t6q|^c1lOIjXNcc#?*Zn22YUcOXr_;m?{|Q zDr_#tEGNCt8*-667Ok{gY7yz_@Q?T3VS{VSbD$DP31rNz)%oP`E+ z?l0c(&*g*qMC>~w9*MTcU|`Ul>aq~=lW*QXRmf#!uy*mC$(qTSwRIT;4tVQT>q*sepS*n|#Mi@qu+Gd+TlJh1lg&5EobAYbFKOEITA``AcC{ z)t4ZU_81jb+H(DT)uB2b)wuIh>02YWtmT*cKq79Y0ISPczcK6_ArA2FRYwm&TKY|_>1ci-I}YX zuYBzS+tc(Or>zR&F?yTlx5g>s={_rTmMwP*^G!!;`6po9VHlzmH1)b>JV#qGWPh>Y z>_t)Y5&gWwf!F2!+<{%t(cOpVPDE^tt!yS`atDwvOXlre!vmddUs-S76VW_iBzbvx z!9`f>HKI;L?=Ow|_C`QMQcrmje=<#F(CVuwd$jc%EEtt@PZ(L~@8HZg47+PjMJweO zFX7`lMe5LBptc5^@PVaQH^o(HYw~#9?umv}!WX6}FxPAs{8pG^YAv*5|9ndRqx{HVFvQtnX4II7Fgr&xeJ^QzhAp8L zoVCURCk}Q25G2YDo>`;Bz?i;+rjtm7rTIYQdC+f(-HiJ{z}#xO#_DIMsFOvY-BGAG z6v6&quoC~xfo8dfzVUAE9B&vg8e#vazu)2Lx5m=ea#S(WRxfb@AjtoRk`xvGh zL4c%m7>1$ZRJ36EkAgPoyNEC%nzF6V+dpxNb6}GB&X7%3|4*+zl7l4C z&y)Jns^|6R4Le7zdfsmXB;_Gw4lRt{=->WY{(PnH4Q3OlHB#g-_20V@f@kC_>wR%Z z|1b|Q1F76E@dbh$|IOpJ+_!hvm@F??9jt7odqa6i1%}?933XS|4{G`KA%D%8>e|%v z3{k|Rg5IszEgWxXBlY~`wTTG*@)^>~p31HM3i$rE*l*gc1{xQbE=Id>pz^=FMNvx+ zn($#ujjgS%;%i`9qmyQ~YI^QBot`tJ(bm8S=eJsMa#dem;55lcX=(hn z_Zq1lso(nKa0Xg%)2mi-EjC=r;33=lk8?rC%wWj59~uAKLP2i#q&w~NuEG0;8T7n? zVNb|I!r9=~hDYVYfH&s@-z^w1^{BHc+6g8w1JSAIn+J#8){}?62b)Dvr~ikozYL3l z?b^O^K^g?cqslm`QR(tYe7gnWg1XtO>Wh&beee?GLyYtUE! zwK2P_GqrPc4K692re=GUw-Qmwo(-bUTlB82x^?ixItAfZwwc zFqsrcC^r@!1@0ykH>$VV8Y|z+80ijpn3~jw@y%DNq-1y_yg9qqF=uqZQ#jWT3;upII@zeB$T(E4}x6Qj`(<1M9N}?|`UfLQI1d zVZeq5m?jKuKy~Bp~cHh30F))>Vv`X$oZhZysz#F!X$f&jqo+FcTMDlxf2!;||ySsL8K49m?_PL`$C-)b22;qEBHhUM9+2 zheyPw^-2dtjwm;Q8oElcsQMnq>9V(9XS^8m(4?+I07Xriep5nweSE!h@?I)xW?DDZ zf5QSD<(n6Z8xJNc%$nWJ*VU#yU2qPl&7UeDEke`UV@0(Cene}?xcLD*>naD|`>U$w z%1qV#W}((YViPJw1A29XH$1$Jz-cK{`BPvkh5c5-0;8HEWo(2{sUZ&A6r)XW+6#Cz z;B1)iUYTPB3ETQ`J!&ig;mk?9^ zDyt=8ox;lpY(VD9Ld-rI(^>l4KLo)J-~Ll|*FnM5zk5hfs%HD0`y;zzb$Oxs$i#0| ztcDbLQYaCJ@suaOFZ;`p!?~Fn9|z}k%x@pC*d&yRY!G@Fu7FBBb)wQUSS&9liZxM| zFS|KDqb?<6qz0bW-w64cY`xt61nMVrM5mJ8-)p5Ts%3Q2SD2k7Pf|*L7`ocfWfcPJ zR7oJdnFnIWvnv%we>zk8vuP@EhEyEej#1m3K$8U*_ooJgmxIO0Sg1IH0`lI8`2gM* z(p*GPj+B_Um(r5sFiI=ts^-h56mu=`mPp%}6^ zQ*R0p0Ws;vj`P>DvU82kTKxe_T6;M3rmR(l0{G9&`)cwKppyMSol$b`;+K(zPa9ng_z~c^Y3GQ#89H|^^9E#Sm zBpnvY=N^vj_66N^ynA+G$Zz320pH$PVz=)7YN~%T55(}^;IPp~lUDbvgg4eFGE`T? ztzt;dcv>+EI~3nllX)??V>{EV-*qE~CYd9>Qnz1_ z+9+dG56-QNm7p(6&bCFeYe&GE%3@Vb>#}d;I>|2O%&Ob1dMx&zgNz2jR)K2DjK>TH zmK0@Bt)?gj)~(=yQp6@cg$&KpmsRVTLG%4;)?s!0z}lyV=8>$E8#QONcZ2jo|9{+L zUbYGJ{9tT&2nX%l3`Z}&{Xqey)T=)%d?0^K+VgxBdJbUPIVm)Ohfo~&Z0E^x@4ch#pzr@<$dz6)K{WFhKz)6s5&}04AU(o1L%RfV5 zg$|~f1X0JrAl*P>6$}Cm(;bHegeKp5e^Y{Q$MCAHg(kAj&#_~_T2 zszBGvThl z%rR#92%QxJ*WSn2cFCkel<#rHK;0DoQf)IC5w3k>l{p%N<~>MD5)G6s$@Z z);+cf9GPxvUzZM@y3Tp&Fxg4I`J)278_R8tAFskt9un6?Q??vWKw}T1M?+mQ9t0yd zOehqb6RyNXnYP!Uu@jp=e`@>Uh0GWj0Ygrok+-vyq`{(Fh7X;Ae$zW9t?Hibn7%cmq#F+(O^^NmWuo>cc!901MgvB zKf70rMDL2AwG|n597tq520NdAJ&o(nrP4=WaB?`->41_zhS-^e;)j>T)gWz>W*hTm zSak`nc+L?H{NfK|6k|Ms6d}awF469{v8aM6N|LLrh|JZSzizPVfBku^EH?0hC~94Z z)$=##>#K+$J-%D(IX96~dlD0PVRNnF6D{X|-lLhL#&=$fRCD+19m2Ra?qU;Cg>|>DBKmWT@lz`{j>4r2 z#-J|IyypxK9vSw`LV-Q`7Pg4MJ|YNM%|T=lA>Two`ojPGw9i|&ub5l9Uk|33Aln+U zPA{B#@uej3fa;!_nOb^x^F0DTrgj#tEkLxoLwiCA#}A#5Rb{GpSaKfKI5>qoI=&+e1Sag9!^WtWl!9S+oU|(nd&KLld&})un zcB-{|X>oA`(N=3WaiRhkBL@cuBq<%73zHl!lj+guXEltherKCS*qD*Y9Yx15KYshfkdpiVRL$OKsBP_oHtpmr9=(v& zhk2a=%oPKK82lZ#+{viD=NiUd0s~KMgKUstCZ=mu0WRaKRhb%<@y%Pn2+26l9d8Dw zPyBHQ){SS0Rx0pz)gi*1!t1qolm%JhX28MZtlw5C$s$6YixlH<%(!bOpGviZ&_`aW zRG_~A$7su16ed3?wdee}xQ>4DxAAi`n^o?y@422*&0yc;Qj^*{)rO0c8AEHp<1Tt2 z-S3ZQHg|BKUKv(2@lnugcb2{H3MWpcUq@)j*RAK#mc$vo%=yOhQoP#mT6x=c9^T0wM%PjP4hjJEnQhW1KQR!e7(}Si3BX zsF_LRh5II)6fLluWoWj2nKC#5p>)9$GPR7QP8GR_UX|uElg0Q~fP2pW7s4c8Sxe26G>xekRY++}l94cgn zNcJ>pmSFp5KDKn6pBf#QIl16xF6Gq#P2;MEN?p~5VTwOo>pV3OG}i) zx<}7f(Gp}sI)xp9+AXb;?Roa}DM`B`zqRbsp}zsE&$X0qMi}8aa)8dF+JW?olU=z0 zWY{O0N6HkeL}zeMiTO6f@Q1@ActKf;tq(3SN-xrK1gdI)U3gp32 zF}K6?DRflx2x22Z;e~R)kPGhJCq7}}nkRySg6??{fgNBz&^Jh(fWY}gU8~WA-=WU& z+tP~HiOcSR3bA5_8N8gJbzv{lQmn()kAd`w$E7Y=#XynC+{eX1r%>Q?FYJ$JnSRE` z!O>5OQ3KyUJ|=g-JsEA(z^DlCh@EkCsLUk~-a$#f$=)GOjC zD|8Jrjh;~1Ja}`hM;}0=5+OwyVH1K`Ck*3v81p+*Y4@c%n|_-7Y(l zIZqqgERVR2=7l)FZ^cWtY;X>05rRAfpf zyw~7uFa4#kXu0k(lmezu4@f7~;i6ht53q>>Ln%!HsE1{dj(hx;dvk%}J_}6BaWp)~ zK688Hd15Eqzj*Gz-~HJs-FwO+&T(Uz1s>rT+dZj0$M-A2;RWGcE>vOtV1!J&zNzw} zKIrk~;g$>fXE-FG!ecl)kYq=VYQV}nQRW0g*T^&8O{71x@{czNHH*c0Trws%?{%0- zJP!Kyhl{N_XmxC2|3f9Do6BaG2#xP=hLguNW3ZL6)coWjM|SX{Qc3GImV~LW!H0z` zCqYey^~!6`90t*oMLi?m%fvV7t*E2;W7n)N z_MTnq!P9^AtLQOMHCVoblSI2jiKL_gUYkGYo4j`r3G|H5q||o*0vk~5y65w}dv&Sa zIoiAV;HSW9X3m%t_^d-nFZ$|*veyqw-=(f-k_Ur3c{xYG;{P4kk1|(+tib^I-#jEn z^NP-t*iI-por0?7)u(vOPnn`a@{eVVq;UYhSt6-C`B`&(G&{3bl&BCi;-Y=8x5WPwFm>ome+JeT(U%pOZBJ>T92@M?Ys;bAQ37x@Mp6*TZg^wk zWwXKGJ>2Y5m8b9wZEk0c-ZaR@_H7nnsIixtPh{4|G}J)4;Nv&K{2k4`)$coYz`So@ z6}RK8h?4&@KrNa6eQpZilq%_59-wlR?yef}Rk?3_o7vL|@YBgRVm&yymCMP8SL0Ul zi3AXwrSzhX&EyWw&`2;7cmx92FF<0D=^^=j3;BuN77TZxm)>KZ6P61L<|J1jWl@Wox(A0X79%eq&;}@rJu)FD9PwD?Nf)F(4={8Z)~2^AoUgDB^qnUg z8Wn#IefuK>F?1t;W&2ZQ{yIz`=m!~e`D>1?gn7*9b35t1!w4ui%jiYFY1Md*gV-fs zZ*nJ%x11C7!iNL1Jf;H9)Sv@grpk6&S_MPz>U52K;|DCWBs|vhyxT%Zt}+={hIq%1 z@bMnEp@q41FXdO|h*29Vt4}-&0(l&b= z+g!Azl=`aqyLg${uV%D~@0Gs z)(e`Rn!ZC$2^A$3Os5PuKPEP#WPjE8FvQwR0q=0_ywg7nA)wo zWj7bA&XjaIt=JkK4_Jl&fVt5f4y`}j^$&V81Dm9nITnJg2E7c>n2DdgNYUYck`QV7 zqG;RWQH4^waAH&aDTD1;swD);qqezz#b@V`L>u7oflkG;rE$wTuuvbFg;W~X$1y8& zC;DGo6zF591&1FoqMKmdxR%%$+#?Yh&3;GWlc_9)b#O-DQ0OL`CN{JF@JL4f7`Qmus~W`-?y8i+uRbh~F8LUY&;6e}z#UNG)O8;Dj2D-l z4ZW}jk%0(UQcvbEA?BVRaEht!+Ii3*gk=tJoP3d)-c|4?aZGTAI#7!s!+X>i5Gpm| zImE-^BSu7|!s*1QZtDp7ji)pBj*>XMLN`=(Q@qF_4sKhyW@ou1%z4xz4h})i#ziJY zf--x}q0c}t|8wUy}rn- zPY~8NV1tWVBoXlynDtw{Jb~szeOKYkSG!mIdi~~TpyLA`?r_2f=z)^lm@!?T7 zVTf$eBKclu5?8bA2-tM(LaZt9?`De~5y|a|^f+E@T*`E#-tZUcfRZz1LywjLlyMECmCS0~>ZGHH{3@ zW|zkkrc)mDJOEpb?dQ8N4+5og=IsvxFV%pf=b!30e3m#%t_vRgNb!xocy%4Zz4uLZ zzAD7D(T+|`=~pT0Cw#P(qbihEN^1_8ctWJO^umlWt5-Q0tbe9M>wuUL;-iR zos5{>cczSa7tR09?Ml9h-=6aScvELFA)JP+2gs%A_Ogpg7hR{xt}iEAKn)yP(YP55M^e=v?dge8XyZ8)6rYCqTqOA6N>HUMl9rECT}s1YV5xSh-ps1E3 zLJM@FXw~CxBUz;KoJ)EkC3LHEoz+({pnQVKmn#lh5G1~|msVW8er8_N) z<&vPytdC=}HR-hHc4(hg!Ln~2e{$vrjwDna%mZ5je4Ib{=Voo^2sq5@j_v$aqqYh} zrq7SJF!^r49;hijPTrH0^0sRO$U3)nFQeoX_*dsY13oI}TjB7ZS33_tz{&}#nK*i4 zp33X`L{1jQ^av3zQe4)3E*lAyx=ZJW%Q#pPR`(?-`TMZG>y(aJqnDpws~MbS-`d8U z5X&wS5!c?h$ z!HZHgHQIMIf;g61`{w!Pzbt>4M#iH>0wO7 z=>{!)iX3Ux(mU10S9DYmlD%2N|5-NrXj{;ccb(Avb=>;uD!bSLH5UMVR+sDku#ii< zdVX?5$RM2_X#Hd9$s%d6&R6Zqvp^}9|BufN;I&7b>8%khSEZAas2D^4nZkQLLf*$! z3oBLA?R}2z{`*SJat~Bl(!wACDTlLi=5D>@X7IZeKR<{ZoLVOKz3Ci(^zm~S8n#q_ z7&Z}KD)n1!4<_B?m zdifp6bp!GjGM{rdZ}jm3n8ii9VbN}3fJJ;b#AYpB^2jVXO`nPC{vp)vpd zx?y4nI3;%cwnM0v{!pJKlJj}?TXH>*x0rJ8Z5r99g%iT>{k%FrGTV#ld-JpUR_0u{Q<^Sv^UW*4EZ_-a_sm0Q=>m z;30^`Y@4EKU<^RpQ~wgrXHV=t!mr-29TR2kM~y`l*7Wn|2lUtQH|07g7@sDnLq>p! z9$<&=Ut{Nt#@7I6cbryW1OUK2-RC+S))6@h9FK0f(77Ugw5ItS^rbgv|S#?Hs64FyVXtOuUnRe5fB|DSKc|_yKTfFg<+u z(DoZo7uO1qJEQc{fK_2oa`xnw&_M4rni!Ln1&E)~>yv;Di}7OJSY79m`$2`#%1R(5 zO+)Y@i5wB~1$K8rr2jP7j=J zka#!*g#1;QZ@&P~%N&!3HAVu37zCM!&Lg}(GvJCrv;M@etvK}a|9qoMOwhV;C6-)+ z`wH)0F1A=vhi-}XioKFR;jv=sl^aFKUSZ|NxV%v$5LWO#K6bcIn-lIVbFnbgw3~EZ zI^#(e8}~YIa8u+}47P{jYojF6Q#UE9dxM`tZv86Y-GE>bGT0b(#?IC8tUj$!EApEU z{L9S6g>$q%jP#r^j=Z%Iu|(l|<0?@L4m`>Mi>IFM6NaUwEBXS1D7r3gHm=bQCW@}G zprBxBR6{P+>1^b5@cs{ym%?}YA%Jg`>gn1N2|OeA;VlFyOF{{-+fiRn->gdAuo=6o zK2i_eL0MxsLrkNfl92QzDFbP9FbFU=?9|P${T5j~8h{J4e~^1@E6JuB&YdWe%dFM@>chq&&P`QEaA4Oy))o>OtKT7^N?EC@+{W}q7|25L;DA6QsGM6laRrc)Q>S#x7id6wm~Gs z#*#LC1K0=FrkSTqLg2a3j&?iR0C^R%^nfYr zG*x4T)ebt^|NrkRZoxV-<%-(6zsZ7+%6Tk*t2pwI1)!I9FAp`jIwp#WxMtl^ zyh};_u@Cq&n;WY6m=9{~M_1fF&n|p;s;ZhKHCg*=EO|JN#-zos_O!W*URJWZX{j-- zkH^c#hj`6+8+i63@W`zUr_Mg*Ko|=xBEu=K>gW8PNpcs&_bheCT3<8<4K z81YMwI{mB;mkR2)J4zc^hV+3cIS)9*mnG`X@nPe)ll6^a;?Km?% z<0r=9@$sI>PK%!oMooNgk2hl}j)jy2<;{!8_2}b&Y%;~*y2pDt)|&cYqWsXgFFwYo zU~2Q4PT9Smq01~Z>5D-gD=>^<_KlgrabfmZlNIKVE7cvqNax$@-=ScQ#?vldClY%- z!~rc*3lM-t{!+CucR*E21*ihm#0NOFZ_d^kscC;Kg=%C~IZbPR_X>TKF+)sGpLG`| z(Hb8g&r1Tm1_rH2ubt^EkHycUbg_S zwbeTAxxjN*^*h7My*Q3#;aqy;=O|An%eT7XL1+ad7*E8!Zb93wTGd8<~V@E6TsKfLcolP*O%>*1?`~KlzSN6Sv1VvZ&DT=!Vx|PEFYggCAU4hs zMMjA04C)k+{|1pZipXco?N#j3c;>jOMOClJxn<6|q`iU&62q`DxcwdH3Clgj5L-Q- z``_#XTMr*<2Mro%H!mvt@{h)?O6!&?=hKe&Jxm;%=(Jp|u7Z2MPdu3z^(V(hQA}PU?N^g``5m`9 z4e=o-P9u&I(TP-3%?hJB>(Esqq;l>{-LrJ0AT13=a$pulL1*}iU{+%V8>X?e@z~>k!m%IIu!s06fZORVa64TYJB++^1xZ^uuDxZS z4&(npQKfY#LPkSbI2gv16W*?$AMc-Tu=>!=@|!izHtn^0_dnF8l_4DKdH!Om_~8A5 zEuEff(8kBH$YMklXc#fP_FDdCzgfGbhCSrVxwg7b@_vJOQ%F2g0A>asX{6hecol)* zRKvB!jgtskPJh2Ft1tyXkQTk~n1vE6GU~{hy!T+gNjcQo!6d_K#@>9A4yfB)WEI04IUzni zN?*@;3Lp0T(I6puUJ145;II)V|LHbP`qnxRqyEx4ZgXQ+ECg^KCSDiyF3Mtt6>$?;iD)%(nwFnao$hxrJYxp-AiHpB)5 zndeE1ytc-lv&7-T=vC*C3a+Rk(^p{S>Xa68A4ea*FSWVk8oNfa*(l>4(gV7C_l**61P*5l@8qA z;jxx+8+OHlu=s9r`sGUTM2go@$j#jYaepN`3bDVPe+FKC75Z%d7Hi_Lae?$LxFd&N zB!Tm)XC68Mm}mW%KmQo5(c3B5D)Wz8#w4D8Z;Lsia#DMzCNLN)E=Ai+JJ{5lX~VIY zM?{&nZ27dNb|K5w#O^G6Yn@fQ`JFqp4Y`etQH*yNH8Z#hJp4V1i_E4l#+#c0{%mOe z#;B<7LN=WClGH~!CDMwipNM!jabM^d=~6ke&id4f$bB!)^no0y^WP9{Gfm~)v4nr# zK*!nzmE+UOJW7XJivTU25>&3t<31m+} zAGs1OaLsr2wcm72kj2QOVG`avOhUu_M&h9??)4Q`$1OW0?+||#I)@#d!cQXTEQ#9>AG}D|gF*CJaJR+hlcH9CK*fiwS$t%t`lB|J zfe?ghJ(cmnG+eZQ%n+j6)z!6B{Y7xU#Oy*!=O0i&;;|AIitPP8f!y@O1;@z>G_a@5 zdgxAyci|bl{R}vp(wfRJfc04=9w&TiWMTQmpJxU0WKQfN2$b!<_vle6Rm(T z=!DmjG3Hqm!iiCF+BRJRN^(|phLslGnNEYHOEJ*3pnY{Q#{B-4pcu2P7sg=0W*OM1 zq~CY(5)K`vl8#WCEWBe$4dh$HB|$3;MDB@hvp5SyY`k8q;4jXHTlJO>)P|sSCH$k! zL%^GmYMPj($wMHP#%czi%L|tt@JD2 z58PoMTIXTSehxy2IFUh}`9-eV&l*qxiqc5f>rcVep!L^F$i~;UR{3{SE8ke78z^G| zHUjc6iimU{j(a4Yn1z0BMNBAM%q!2|jbp9MvaVjH@(xv$0ygKy5LHXW_Z_4cy@|%B zLVKP*=!;PYmh2^YfdHMy^n*CHipxIEoRw4d^|1&*bV$ugPG-@i`}4cM1(N@$@l-n# zFb71_Ra4CxZ4`75!)9+1JBnW1{p(mkM@fslw_q1CqC{Lu9-v_HZUv*FxyDdPp@U_S z*2e$W*N)hEt+5w8o7(kDv~P?_Aa7BLtzury;B*b7H@B*&%-`5__5^oz%PY^ zlk=JB4-l-^i28Dv<{OtCaHtxMzIqS+qy}zc@OLIsq1-bLdmXfj5;Fh1@G(N~1YR#d{lv2Pblot>G`3WqJ zJ?sz1+kR2W8U&n4Clc+SFmdueH(rN_V^nT0Seh7V>>hum(}JU+ZZf+nRn{z&x5VRK zk;S_`FID;xZlg=k7bl+;&UNW!d=RoK%qSOvRA#fZc>g5M$-@5^_r=2kHyC-3|8i;j z64Xoyk}wqCjo)cm`7ui;$eZNKdAZ*DE0-CZdwnO-^cvE^I%2@r>OLTz#v6}pJL(`_ z*_mVlWzd#2KeS*K{! z=ggaA3JD3VgnFKAPaR3eZ~gqjdbGisDwV|G#EX+`ABbSX2q1__loS$r`|d*)lR^GEM%lVk0IlGKZq!iEcZ{bF2!&qQ9 zK~{VmB8if3iRy#>?PuS$EI#YgQkqC! zNZExROTa5uBSgU;U%?_Hh)*|j?gZ!NhOV7W{bFPtd)cvis<|xoA!Od>E$er2mFaWi zf0(Vb7Bl#Iv~oO6-|~8#ZVkB-)TsZ;r!>jm~i)wRf;`KA*=*~aO|%?T~_@mGUX z{QO=8-Oh0Au7T;+d`Z~bXrWhJVfFf}_9wdA zL<4zs45-hwhqUF*;Qet$aYQ}P{mp&XW@)xCYjhgI%UJja7%~Wq}f&L z*CsTC$D%SYlsv7jD%aRR7hTSj;{fF;JEQ@IjjP>w%RVQ6OO&25)JOGsR6u1ylGP(1OJonLThA%cG0(H;YpSceDde6E={^VS-cK4Dv+a ztP$f5S_Nvv6$74bS!&G#oImZldlbLV%1##%i&CmAN&O10}Y^(bxlW-Vg$L7&`%<|`iu?<<3QiT7gUJuRib0H=`A zKhGOEhecy+zL4`CMYuhDOyEoQp6`d5Ng_E@nlRtzmySa@zlvxGO-LeE=}XgpO~*7k z?U1JF{}>NlM#Y8rqnR}-E6|~L<_@1dmi*f8y8dRB$DfUro2BZJKb8(+DME^QJmz^z zY5I6a495fA(+F$!o$5kX6S9hJt-iZ|Pomqu@QR_?J{5hb9!r~c+hZqYw^vBs_Slsh z;7=+`D{emo;2}0A0e;Ly;6^m?UG9mus72VvZ3Kch9dq+A$%*t)H6NPCt#FOx97;!q zMd0=|1lFiKjF-Sqi2xc_mXIUMhLDhh{sJI7y1C;=M#?}ajNjzHJ`68@!AW+>o|vTg zQmPmHG%Z_-c^bxJ-Je_EO6D69_i13XkHpJshMI@7_KT1F z81E3CluZ?e;o?^>)GJ{cnsWi2x(i=yM?jL6^6-`U6mdTx-Nb*$P?^SNn7i~?ndegf z;D8HmS`U_~Z=rEVIE3asVRv?nh#<$k9HTvNMZV8d#zJIO&k6&s-%>b=s5er?Dl=9qU^P&PW zAKAsdP-BkfTRpAh22ij3Llr@n!}DJ!!!Bon+}Cg_%cKgZrCRPcaqCM$$4gOdZk1bB zk|;L>>J_;X2tGIU19X$0_`d&lM}#J>b2;K`(C^F~g-4)Wu|4F@4h>oe!S0&Riq1<9 zkKGZf^Z<7J3j0xxuI_GJyDTvmh99G&?9@VmX}Ias-M7FJN@~dHun*WLN+K_9)qCH_ z?{|K~QVb8<*YuGeHS=bn?cl1&S&lSHQFs*Cc~16=%4UryH?{o`3cj~U`VhvBETF`yXMt#f_4oJePC zAL`^B3=H_}xQk%m5C`6KtBKb^niT;DU%4!$IfT{+lOpgb`v)2I>=B`u>C(PJmseM- z&4{D$e%VsvCQ(l6KsVrz`1&M9U`VyDfHLnE5L#HQ{dMX6E%K&l`^~DB_<1in_&XxC z$tvhJeuoIB8HQZEeOxL~GpQ9M<3&SW%nkLjZ6twI$M^O=L2CqgSHd~JE#7ECn~VBc z_h*FA0vs58ySxD*^hpRo#rhF90VueTY-CL_lbTKVLo^>C`<(Jo+DiDJl-v>orooUdoSy@8-T zjUo`q@ssAIcW!({)f`L}o>IQNxKX7qjZ6OBP{0SWKQSJ_&09mF{8>jS!o6-C+b+zk&v7 z<5V>*AIY(JS?x%P$;sK1qHAK9_IdddS4Rsq)=Opru7JSFWTGNjW}roKYJ zN;RD(UBkQC@vQ3f>$#RhIvRp}_@PnXKa-s~R%buW=dJ?P&8+gLIr9Cn8m>R3i}5xi z*>=>+sd*G{4fIyb|sApysN}oGl=75MW^j3b|OISve4;9Of}XU z!{Ax6p*1Y)2^1ESd7!XR-Tg~?Mlfq?^wyzCPYi2#1V`}Nqwyvz;VHP0Zoyt(a}(u) z&K^5~Bd!Tt%vGynZZ^)Rm@eDK|M`AGtkEAR$Q{Ch6-5yWY=iuxn9 zDlW5udx7cRXXLkbRM(3vZ~PTPLJw1}#SN;&JIP`pYEqPjHwPV2sH*tcoTF?#zSr4; zh(myF*+=oWS=|WWo3@^B@&tgf*i_CnPfp+oH3*g^U;S?D_@*Q?K~}quHGv4jX8+AO zY}l>ildS`OFZqy9NjS03ALU={sbDS}-T#mt=ekViQtX_hSmBu2RBTjD@~Q6&=mfYq z!HWU_MN7tLrW%PI;on*}lC+iXR6ht^3VO@uuo9agg=q%Bk|Di~Tdwd*YMq1S0lTb1{58JE{ZCH!Sh`gMS- zM$w|n*;zoTeL!XA>>NDN>vwFYP1Enk9zDOKV`O$_!Iw`B5k40eWyaNmn8er%+kEni zH%ONZr09vy3CCveQ_Ou!D{2ogDSlMPG!J_KW9@BmStCXKhq_0@vR44v<7jziWsm&# zt*!bw|Ei&GxgdPR&TqQx@jSrqRQTsm5r4%D*b?;-oV&RVH!_IF?f6c4h!sqeilIaM zZMO?;*Vulq*m4Z7XyIo%JIHWA8GxDEc>RuSQhSC$bF|V7{dx0I0ig@aATUpVlwhqY zZ`zdvdm@z;XFl8_=)laC5(i~p#??Fpo^@~4L#D{zmEmk^k zN_*`ojP+^Vr=Zun)I@PWTMutvu+;beUg2Ew9!jmecQi)0XeO)d?n7keDiz+oHFbU# z26s&r&voC~-+q-e@~QjzBg!%HqNfsqA6e$;%;n#c@sL=SK8dc^!0i#bN6IVy%3<@1UXnyGMLeJpI*{a=~2{b zrpodem6ZHgkD+Ma^2v~2N!C_eR802*Gpkv=26r9uDE9FQU_xWs*w`!q2q78jZSzN@ zeide_T7?>lpy^W)EK?zP9jw$yGf1?)Hl42Bi{mw%Q+&Tx3Lu6Wxz<}=r*=qWuj5Yw zu@b{X!DS9+0GMgLT*CiDD?kOTPVvL{z5{n1AlOm#Q)&q6@awH6 zubmE%?~9@1RSW(*Rc&keX&VVX{k=n3v%&=H2IR;*TDUb2*I(nVBM;1m+{|3h7JLv?|K=apvJ(>PGm(a?VO zSHT?%%7O9p>6eK0>|ps^^4l0T?)!p;Z(|OwzmCP2_$uH2G#3&8P{0GH)#dNCTR+o2 z8)e!S8>=WmpI028E^Am^ocz_4VK1GW&?EyYJ?>*1K?;5oFb;SVSzdNOFWo+Rq}D+X zO%A|$fjWmxBkIV7i@(FojsZIh{*t9h)a13N3^HH)OV9Z8+(u!OuV;2Pez`Ca1|CMA z@^I4LloH9FKTm{W0Svc2vHQwV;-V)+P|83>XDgewd$D2t2?SPA;tB>!cP-WRj=GK zElhA74C|eFnf?L{DH%Qkg~AM2KGf&+XJGm7 z6yjyU){E4B-~Sv4v#FP3qGWt}Lw7wpc`ViZbhN+N(Ke9(#9~b|rMHnE#ISs0e#z*5 zBZrsgfwgOUJ+z6CX`}Km_;JnBVgE+=zfbQiP&Z#iT-~XK{IqbTS+TakS1^bNIoHHU zN`sN-j(Oo?^8)N75^=Cz$nviHWMhz(X=P&k?W7Ats3U<>*!SUeB{HY|9B`Nhr#%5k zhiMa}_%_zi!XjCO3hc5=3fNvwQQf~sEsIAhIv4slQda(JrPD4D5;%ctCo(04?AF=) z2-WO+B;dVkloq|uDI%g%7lvDOIw{Slqh}1Qp=J8MHP_O_rYsFu$S3tiy)R#yNkCqf za5DJpo5xX!sF(2JBmrbeVm?ZDp*N|#TLbP{7rYTX(}BlI<`Su)pr&)(mG)p+>-eiYL|vMc9-ht=vc9#xe<>0y4JWh zEJwem=V9nDQN}Cg3H2dpySes9o0V>J|8+}e1*BK7LFO%gJV48U)j$ta@c={S+nJnA zl@^1Fav&!M$5S%V`bseWa*t~y4BZR`3t>`=tptZ$%-zN`e_vlLxNY3&Z#$vsZ#n0d zmX!#1H>_iNn6G=_$4k3q`MGMM_ExIWR)>YI3YBo{a4&q*vG-Xz=%Er3qDYOyZ!7iN zWdU2SP@8DB@k76!=`DUG)D+slb^X}V@!z8CHaSn1L3wvpjz&CR6J>yB8gy|)^;H|c z=B$Z3E)x@`^{QaGw0=%G!;2o6rd4v20B?yBG_VQHIT8+px+ebgSVZ(8C`vwx1r%~k z%6o@-u7r4`5(viBrAD2Tu%_KcY_RRP8(fc(2DQ~6(@M|F-nE#4`b{!`E@LE6&%~F# z>|1|BS>q$4o7?omtGy}|-+L})<-dX*nmXddPb91&v_o~N0_a5p*u3_pSY?s&pD2Eo z&f@?OCUu#qf1aS6@;3L$?mRzm1~%-yL8J@2$k!p=M{<8P+>;h-2G>o4^{A5%z)-sW z&TNdT;^_V6$g8DITo=wU{$}_RMQqf@3_)YAAgeY`{!lIRukPxIpV$mhtAl*o(pe#T@KsMdoDWNPvM7lv5q`Ure zx%a*A`!}BN^VYHV7>nzgb6)2>&*S(U!NKL2n3#uGOfOlUGf(E4-w%46lk^Z!?kbIm zM3D9BWEWn`oD-S4wx*wfg<=BcvdE4PUJOPUlgXU+_4Z<6xYt~Rv{7QG^k++Sj?)L8 z`XC_)IS#YIx>X|U)7jm(i{m`QcK=rBYbV+|hdDMC2X4xb#vf;t;;p(or~ODYz&qAw zIIYD&tJw>Q>UC_JF5ubU79h}sK|(W~ht8V(af=Lj(M)<9>n1OAa;jIPq8*ct4==K34;hUCh!Mcj?%VwFrFO zx16J-A`K~E#;R~MB8xdZJYcWekdj_J?ZDM4z(%GH zCex0Zc^+VVnfJp{1K`pR6Z(di)FnZsI%!VSu9nmH;4YiwBA};Rt8YKS4D}K5@7``^ z`K~sKmG)k9UMc~pKF&F`+c4cI_ne6Bb+_ib4tfevcVrNT%c{aCh|Ly_q4wEq$+4vR zhu>Kwt(DUkmI~A`GAaybW^hf9z_eqG5#zZD#MFF1ub8E{9St-(OCW|fIZeCO=M2`Q z&sypfg$%>AL&v8{zrkE~9iY;fsdpqFwhT6(e$8E!BGwmD76Y}o08x0?dcR5LS>|CE3^O|CJ z!2M%An5+lf#R}Bfb#6P_bppOTGZ}SE79{S3Bpl=;)arL5Si*GA3HOOorXNRV6RfoF z?yj(wUsGFLhqtue5Rj0-jv8$=1H8;@xbm;A&=k}k`44HEd{E237aA(vF#!z-bpBLe zQzGz0@Vfn?_e4aY7bFn%HWnK{IJthC>z_Nb7uYuxuXb?Ix8!#66eC(C(dz{oLoO18 zk2iT-7+ACu|B62)IVN(LZxP~bzjmptGwF5##CcSR>uv3XA-i#s(-dKaA{BO*&2$I1 z?nkxu<7rl3a}w_Sv&~Ui2n$B4P=?yzv1cCbA=yg0GQNc@cJ@+GI@P`r5v1%zlaVL0GT$BHDc`*r3gPsJF%|O{XPvl|Ia>od7<`wuHOR|C-`9BK`UM?9wOS}I!wf=(d$>U&%}OFaiKX({ zQ(<(T-q7#C>!0jR6{#YI@jQa#RnT%qHzF7OcTE(x<88|dLmdn_8jgQ#^{ykGUzHom z$o@D=cgG|#@(t=}XsWH9nrT7j&+#R9mt$o}@K^cWE2;Tui?tKFln-+) zpiN9;lWi`a;cFUwqbdSDYcpH@mE6foV&d0MQjz;{QT@~P@=0*BZ;2$R6HB+dLEhFl6C%0F;KzzFoywmc( z@4+x{md#327RK3Br=}7_^YoEmUt;ir0-h86u*p}jgtf(zprbQ$$XIi)0EddOZnVlm ztY;U+hot)kKD%s8Of2+YDMZ#p!{UGyKtsReN({l|nBS2cF2!frNk z;(}MnH7%e4P)$HatT9@B0YrvVud3~MF+O1Gx+Wu(vK;7VjSX1u%oO(M(of_ft~Y$(x2?s75a@X zUL^*vsAL27%=O377kkJ*esjNb&7-C9FUSr&bKjMW@p>CGuPlCkuJK_NBOM(lhBuGT z+lRZWD*hWIC;~P|Z}#`v{SNxsIbJu4$NCvHv&>l)BhmrWQD9Se@e@h{xeBdDw-XPw zjSR3eskdJH{(cN&nw9Zafy44BW~PYqRZali+$}avkum3n9{G-#*l%d6JTdVZNHj`N z8zHMKF^yx-c_&}nQ{t)V` zR>}iDfb2SU2=ujaSCPy<*1bpkJr{494a2& zj=gS$yeRt@z^eYeLJk{RHQ_POKl!+9W=7y%Qt>(E-H{V8U{TV8a%%J)qF4pr5xiu{ zKyw+?aAu}2u7kRs4$~oQG7DM#TidY{*jB6Z8ai#rnlOWx@Fl)Im-B(A-P(E|pV4Ys z4oGXRwEIgaeS{FyPp9~Hd*$>+F^AsWlk%<2MS8omP%UsBd-PHQYh$GO`Ni4iOUftJ|e3 z`iD!tc!d-;mU2g#DydOo*>j~t93y)3?W+iNk|rnll|dNdBW^Csc>rZ;_-kNz!Z0l? zVEFXQgltpCLOT(q03OL##pjBG{lcgndv^Bb`gm6l9!7^De-vu9P%^r{RKRaJGqmmQ zyIMS3@Wy&FgbTye$n^Z2@O)OxkAayXWjFZ=w9H@zpEd5RcPil04ne4teJE|_)CB{j&DXq;pmG|z)9EUE5Dw!=^4Q~ zk+|7BL(%G%av({Gm`Y|b*`0o4{be>k@x!wqb3MB8R2MWT9%j6>&EUtw4F*QYAs&sq zI<*sb@Y{!OGC?2ex*ok>Tr@sM59 z8a(8iul`&+h}oELL0YYM2<@An+i!dm*Rh5n#;LqPZN)~C?ce*PEqOB=qmb+aA6J7e z9YZX?Ez9`3v$YnCI`cYLWuKmG{TU5)wr*lVP&o+dV-Z&>sv0W=24wp0(+W6z?9&arm*poKohWuS{z^@*J=&JFzITazIeGdMtG0#;|Fhv&>j|s0ZOB+ zuAF78>`4eV-paXGnI3w)pATq2=BK0FTpg3ssuOolikyb3s&(*kFh*fRh*_$Kt?GIv zW;2B{JFzToT4>HTLhi{n3>91b-pxM|5S)L>pWW+k@C7{=wFz652`G{!A!{7?|Ai_jFZ=b{!wBvoEMwHOILv*1F*` zO`ZQ4a*!jdw|aD7*2-<-ODz)@(|PXfe7@A|01EBGnSH9h|1Hw_N&P}qy<#*> z^217Rz}ClUL1A|4pkARL<9kJPq!=)c5mVQtXWkID1!va&_DdVBn)zG5{qsdXPp}Wz zCQ77}k|sW}s!)xJmN%}opJ^MtmDe^zz~DuX1y z$3mFfz@iTX2_`WL_VI72!Gtwwu3zj7s51)t)Pa3mD5sWyv9}4#C=WXoYtZl7MzWY!^0$Jw*NUWOa z+6-ivk=H6I0xxvf547~flSP*OsPG)wcuxL`fq@zQJ23OC$`>?DIWMURTn!8ibZxmn zP=E*^y-ze(we}!r zb=F44EN*CUU24u#Pe}1jGBYJ;04)jF;2>X~%38@&GF(fcrp%P=1xE4qnzfq%z|D^d zZ;;INm*X!i=ee2@@D}g$JItosto&4;?7D^Q3Y_~*Uw(Rs2uk|Tw#9)gcuF-nM=}mj z2ToNNW0UZ&W73tZ#6R0Bh<9w?jVf>3ioq4ITue$%d+Sc7Xqx;{7uU#l{z16-?jyIA zW#4zH4C)%9ZOroRAg9{>8uU957tCtwZxCd0puJ!?r_t*Pzw+EWHW_G8TKYQ$vF8HwXJt zsq2B}ERUZoWTL>d^S-$x537)6+IU0osVLvhw=x1@JL+^jzSInV_Dki{L7h+I59gY6 zDx6Gk?YwewE5*D;@QLu(uZ`>Ya*c%ol1M8Q0g*=(&p1UQjS|Ery+#$t(X!*vP6u-V z4UAflM;{92;aDV`HjkBzr{Dtj+Np2Yec<3VN(-Gnb27(GPa%$@b7T!N@23D4aqb!! zrO0tJrm{X+T6yGRHicw4X(QB9h}{b@!y2q_>h$-3hvZLu^$;n&f})7z*3*Hg@0@wB z+Z#21@_Z^U=i2&N2vif4S->U3T;_eU^{wfme-{%MH>rgZxH4XVcqk3Dh`vI%?eRm= zwHt?M#Gt4-i3&2DviZ6~pBU_6NC4hGUtce!m7yXm_k?@<`qY-ocV9wJqZk%&?BrYs%Fc}mt{;=1`~@$4@Iyjg zPsyv|i>5q2r4jX!`C3UwXFm@4I@v}u*;@SY_O@Bz_RLj4`h~@m5BKFo+{`xoHsDq# zKOJLPzIVHN_(|u{umExVDqCaXnSqbJeb7uz|Dq+!8sCJ&TIzps;6F`^tSa=-_>(iPYOs%=Ap#91T+aki}k3UcL($5G&to zsw1@^;+^c~kEa=rb1~juq{2xApdj?DUc@E!<3}5hQ)j*0nn3g6Lz;#b%}2_9#|;Oh zwufRIp^&@u&Tq-uOIvmH1v`tc#7>#^81*e`46WojP~YrfmfMyScToSV;OV+Z5k_a? zhrKd@#vw9v&!uQGXt<5<-N&cdQOA8KtTA*n3j>_jVyr^o=ji8gos@juS#{JyWt&Z? z{H#6c_5Qo9Wkmjw6a%zu0YmI)jj_ZVcU_t|&G;gW>Q7TwD-sA6Ry*J3#L(D?9~?d8 znVq~h#4fuq?;;fVL5n~|Y=i<|Y?2@dN#}cV8yvMO`hDPWD zrSOimnX1q4AH@2uXPod@Didi@xTR3<=cVyV*U#&c%eHMX?C#9Z(b&eUDzIJhi_Bt! zmd@1V9g^p5BMXISf0WN}Yhzyvru};$qLRz$gIg*j{*)MG$aAR;mA6joXK}3)s^?Ff z5_c%1VFhnGuPmefg(7wE#lv7}U0W^j+V33c{q4wUP921tLRH83$;4UrN^JMDRGNNq z--U-)XKo}QbPPY(Q|75rfS-Mh^+N`^`xhAm77MN(C_thjn@y+%H7fzCQmp8MDYAEN zVf{qVHgJt4q^0FbfCDstTg@;=G%zG%zp+>*lPN6GslE@$A-$y9`t*@6X}o?VnAUb7 z%mD9FQzL}odENM9 z=fh6ibdhbkbrR4w>A~jcs~FJRqhWD0`5zO1LYJ;DjtugE637&6>q82G_mKx{nMF?C zJC%J*ox6X@y>|jukY(WD9litlBtwLf_s=UQs+c7Z!!CagJwaR|lhTU8ow1an&d%E8 zSQQ=PI@jZ{xco^Um1E75yn3R&l@toc16qqWJoKC4v~@jT^N?Z;tU9zkW@Igz=*$0n z586M|jQsg?5r(grSBn71D`TUBZ4VThwcz6(kSO4m-Q~G$BCFfm7gtM1$7vfb@lZfu z4}JaaZt8^Ou#^b9;;E=??JUL9g{R0l^up4~r{?lK{*r!zBIUG2!dQ*Iazc(KDu2Yo`+4vKRMuR=L!&-7U= zV1iOd%|cgMh=d^kd&Qw6=OlGba=yZJZre;$0&Bk{LnjmT( zQ`Ar1TaSTFqEk?|8<7y$0NR+&E3pF0<9d#y(KrsWAS@3w-*jl2AqvJq9iu1#`eY~~ zf@FejkbmB!`>~3~5tmMdo%}u5=T=(M*qv3e!bQPAvCZP!^1Er9$$8?vikS8BXx$=! z$#_IIIOsBuuxtV+#_+r($0-a1x)A^sW)Fy`NEFR|2U3)06oBvo#9WrRykr5!URA`* z_Pz!%@|Wwrh$Lgd7>xSy&>`a6Qh^$8tXgx4LcjuRrWNQ~!9*S3Nz;uk(>pfjZ9E=` z&<+0a^=rv5Kd)7tLf<+gZWCMYNaj6wX-G)X#;g#v-<3>MxU+needc-sV~L~ zyXCLgr4fZ}EQrf*)!LG?8H+i#{<)vuhTC-OIr~b8_#3LDyUs{6cAM%8KD2_j&{>Eav;wp;=!ODi);47Fuuey!uzfU?)V+{AAX?10{(5t&F%2Jx~5Km@$(w)c!|aanuZRc^T01z1A++Ix3h*1!Nf1k;LEMLZih=&K6>16 zHS$^feFQ!o0p`&6zd534DQ={I6h|?EJftPYn_aK!@`j;UlAiyOVgq9c(Egyb-t*utEbBb7RAmFl?8gXtEDT3xwRgp1a3E$E@zW6b>_o38& zKl|WOtXA8khPv@Zk_lP2PU$`X9tr#u^P+@H%R={O5`}xuJSfjE?zOenVXxIjNrOB` z>jbzthp7+*f&&1*-2l5Wk|T@H#L8+0l>bDPvklH>L0^wGElk_Z;jnL2J*$-iK_axR zd0eZ2RE*{n0HUMJk^d;~wuM7ie)@QzSU&a2gh|4x^PRT_l~U#)P=Bevv*xO{!I|kW zU1OcV0JDCDI5eYULrX8bdM@?Jja*d(I(Z$1$(XaZ5Xnp9@-;fTHCBXR?#4XYC?@t` zwAII>vGLpXbL&UI{6Y|5&7um4ldKSN-+=;YboM{e=>I$%5N!AOeZHlaV#dcn_Oh1} z^<_&h6-#WY=X(kg@4@|h4+1sVP&gf7ni2-hOPde^zrRAd4{c z$Wua&S_WMCiSOpT)-zoEhjC*rKJ9*_OFaQ&O>3d`(b3e*izisyWa!W}uLdw*MlcqB z-DfE$r}aA~1d1|-wl8*>SJQ2NK3Am-SdUnh)4v8aw)F0QOPOUpdm45!K$QvqWzLkZh{HQ!|&+Nk^(+UEHWb5Lg$1Wkah5MU@N6k0`^*k1OOfM<1UxO#vf+0_0a z*{}%ItE|MDThv!9PO6(N`ZG){?xn@=&u!79Oh3WuRIcc8dH_{c;nJ#5B;@8c1z62v z)irkUw8fxICBe>@f@L!`T@-v4ij`gva?2&-HgH)g@<%#fJ^SGiQ}bcjWmYiRzyLeI zfRau0exILG&;PV+yLBEL3lFKbxF@>&jyB)CAu zDc59~U9D^dvrnh}MF}tY@Dmorlt9o}(@5Ms*#y~s0e7vl(yOtWI3kP_wT((z;%}NEPR{W*hM5d+tc$HmT17eyyuu2)-{j}1c zEBxkzo1{{n@?5m+7=8X*$Hu#W7YXbgE+Af0UH#P`m{OLw0OXOiv$67mxi`-pf^&AI z3j9P8Qj(Gipm~LX@#xe_gu}drS{$q7Z=fRZR@$!uNB{Zb2oA_= z?{zMnDpY_pZCHirF-?2zFLtUY-)j&o;T~|=_)dSkHHK~Ed+_4)Ly4s4GvH$}ZH^;Y zbP=6(oYo~s3;^pJk$vlnsCanZY^b(?S$M!jkE32n%!(lY?rfyq(P#%S>+G`J zcP0U&M*-v>ql<#ai0!^WL$zoQT@-HK88 zD9ymYOPSq6(x|^|EX1bO;i9Ta0OQnQQ0u0qXb12I&Jl!|B3`-PYD7{jx#)1O9Sn?- zf`g@2Q!-qsAF8T#R(U*?fspq(O2c2gqNw!MWQ!Xdk1+Sp0`NQ%Bz8tSOm)zAq0}hW zQX2n)T8fD3erY+*J``bIEppIJOhnjX4kt?&_0h^B?B#X2MC5A%g}x?}%FS$O!Y}}M zug?yc%^)I(o*x18e2(k-P?a*Wk>tv3s4;M6mN?ex@^~G-)_0#W2Z68e?s)|t6qhy0 zGh|~H9C2pW124h<>_GW@5WN^@@}R2xk$MazdMM|mpkl826d+arr8rZk%OEOyaLk?5 z?>ku&je?-7vu3CBEzXxf2{>-@ceJrSVI{T28w}*PUyNg;Wo2Z9DW4Q@#d9}HrlzJA z=+)z0Utgn&e1Bi1H&M1RUYcfWZimwPjPbK6fz9Jjc&~uypLs=`w^Z(t@^9by^SJ83 zC;&$QN4eAGR1b7Q2=&wIZhNW(;>^;=g;~3qT(YH|34YFYC9l)YSAK}p1OXACFlmOP$7I1^ zFx+myP^%N4@WbbHC&3%_$E@Y}9*9`JXMt=(6AcP|m6l}8B+TB;<^gYyIXCjlv%LTb zEB%ihyjKJtO1FjICpsY+ch!Yo~dW>0#ffFsZj=xy|#&JrT*cdXaY-0PzWmsH}M#+Uy zDo@WJ%q)W~-mh5@6O~l_0ZWscgv2!Aks}Qkjl!+gAx&QwFbqzWSD}k#QsRp6e>u-c z|9V>n5N8e4H%si@I>`37WdHyK%rEQ!9UR~)ZeC?G#>T|V{OwKG*t>TGNF_0k<@EXWcbKQF7zf{wtha=2Qi30 z_!&QMPn3fe&W#qGfXTC64vdc%7a$pkOyM2)e9QTDIZFNlfwUOX2zjeCFiEEo_8-Tr z)qyM~RWE=NP(PFOx-X9neC;btCi^5&DuAx>DRWlOV~Ls2QEc^SK=z zMXNqF4Lqa;bxbi&R&`L?U-6ynr2OQdn^T(guJqo@GFwQ)vE&-hlD886YnJVm+cdfq zr_^l$#%7)PnM&7n<*8F}S5SwopSp_WA3XD3OSOER)+n9{?6`5Q;ic-p0~F*Usm}Jv z?>E{&voHPU5=;!7$iSyZCkJ$D#bxXwgrr$ z!7Z$PC=Q9{6UMbG?>|1MzRUmyZg5k2R{U2duRRrp=!4J}&jVA4euHX_X%E(cP#d_4 zb<=tR_azi4H32N{Z69rbe%{=hQKiFA34umuk^^woLZyCu4vjP)e8l4&R=3ZG-8FqG=Cv~QZ#8=(sc~5H>_i}qXZbGi!uA0xi zCnTf66gQ)@mYEWk>coo(93$j0F_nwR*q&W}Qr4~zM#{R@XS(+jD#F7==Jvj1fAIc5 zUE55HDHYyZ^KzGSpEA-0AHlZUYhvG%69GYx-618r-)>ND{(^Twl%&Cf!fBX0-R~01 z_oyfTd@Ic{muCB}#xYIJFJoh|oSFV*&eeX)e9SL9gyqv~}wheW` z-+!asyO&*jr89DUoDVkYom()U^S<(K_Z~__{SVZ||on?Sqh2`Wy!qPM~GvvmERM77^wu zL5>_6-5LkhMInCrDF=c9jLm7ctrY;*l0NzMasT*0%3{UBbFni#!OqT6^)Wh`aPKQ2 zgh3k*+*{=}^ALzvel|{aoH~gPJKHuuDR1HZ8T?C-{km%?JQc0*W2K^`1`>)#{XKZ^ zqR0AsPa6&1Jc0P`Uu#;5)@l_{M<^qE*pnJlEBcV~(n0kd;+&9C zqLKph@RYASEYnd|&!pklw`9Jqk(t&>T}L}BZ%aF>pvKk^cOxS9gx^XryDN?num^Q* zX0O0WxpQ5k3?YbM(L^Bnr`^n`FjtOQNV$?8rz+2y$$@ zVDZ7Oozw%KJNyHaI;tTc;=c#sxTOjFZhvsJg^%Ip4O^C^INH`)JAXf=X}xLZ+L zseS1FdpcA`Nv}g(5NFQ&lrTlH(r?;)imDQL7zA&C!6@5Z#_t?0?6b*xGJtTIc&E<3 zLfyXcp?aMW{a`NrYBpUDEP~b8yO+RLa;{M!D&8RP6+(Fz ztLiA#TkM#74I(ICj~|uWHPe(@x=dgnSG5AZ`9V@d_f&3BVbIqkiWvYBqH{4$>+fIwz8IMGUE{->@i`Y)9xE2R{Io{yG^Y>h7m zrYN4g2{{mZQSvw}o|@4ZctMSltgOV$-vb@;y^8$$%;&q1g;j{7h2D%OeX8+Aad}*p z)^1Y)89{KE(#Ms`zE96%e@^GlTmGM?Gb%MGN{(#bJ_jYcT2YPF*PFXXF<4KXhVR3j zE1mc8;>alc=$#3)-vP1*0l8+3@x@~F`D<&v8l`9nJ4GC#lHNtmI%8%^d4(rKjG-TN z>P>LjDW|e~AM42NPv_~3^y0ZG4o7)fguF3fa@*GB$qFJx;lnPM2$QkYD~uV+C5)}Q zcTGN8((xIRHrZ9t%&E#>jY~{ z3A&cex*4AJD!3X~HIJC6FO<%H0qO1jj_Yt_Iqyxh$KKT2xQyndyc4RJRT+jhZ(Mzl zbhH`)V)Ov^~q+QclK>YzNKHiWF8xonc zSMM*s{$z*ablP(J%pP?t+2Mz=|CMMS)(Akv3qGIy)>QH+?j7hAJnVu0T;$l5KgF0 z$Nm0yYvrnvlwQSGC?_)qN*ez{5Md6+dt2k**P#?oEm{Is3r8(Yer-5gjpd2X&z;iP z*i(U!_mJ*faJpfp7i5A4MCg4aYy0Ct|0!hQvRn&jE zlGbbN4u5prn)jCH-Wvi)rYM?-s}KzZNjyuWNdXz9tAxV+BtI-3f2x?Rw&qMyfwP*= zMnLCV8pA(~yjlmVWCm-%1A*NGj6NOs3&R~Ct*M~yKo6yFP~-EQZ@|mm75?l6=P%G} z&z8oirpbxC_(b!yrhel`DeL7iRm9g6Pq`0$8^7qk$V3V7Za;MxCn~Jvjk$16%!=0{ zFHs=K_z0u#Xfz1tjEIR#uDimefFulrOz3~=XsoS#s5XuozQZjU!~dXhwpb+qM__vO z)=Bh~1zAL87PcXHezt>~3FndpNKj~SSM~E~lo@MD_pzUH77^-He1~DUr{ctYTj6Aqsr##kv=eJ3q_PxWspk-HyvD#k_6 zP&T)ZHhg#$n?OBBi_DmR{PFgq;QzL2oei-INADRHYcW1)%mbUhfADV>0S4q1E+d=S z9xApNC3(=9tlrRQ-wH%fXo0P~Zf%dkwsQn-TCtu8-2pDrc-CoF&T1cD)LWedJnD9C zDD0PCcJCr91GexqQKyUHq@9Al3D3(IX9CFG#lxX_F$zX1sBvV(hYg)w3Sn81vYM5w zoAA<$P{MXc#0mta{C~iYCLO#>RuO3QwObvoH}^Gs*B*H8%!7l&gDy)!0E#S$Ca4$u zMYE2Cz?8Zj!;?!NHNMqn@n8wP;CTPbe$ye_%6V^pWv$mN_Tzu62I-1)HCiyYM@XFe z1OHqMLL;GNj)gI`yC~chdHCL}KAHJywZ+TfsUyo@>}+rMpV01nB#7MPD5aQx#Ez6E zy3G6PqwfA0Xub|TGS*|Jf=s-OkTQmj{Br5J-i1u3W&&b+z3r@lTzhiQXfL9 zo7PUE0e6wc9K^Bqw|WQ}4zmi;AztLOoLm z+ez=2a*Ab8GiT809U=6b(Nd6z$jZ;^-!CvHvD9CfrD7;7m2m6h!8}9)8QG_^v?;S) zYAzo)MK?I6zBiKZ6?+Y0jG= zOO{KjRkQBroS<0iWmf;#L>4tDHetA$O=n^nR6LaQn{|g;F*&Q$y}hMA|9JL6@uV1NV7YFGfktSXt3AVnp>Y z_dl#>btrqxB1C*~F-&Pu!1EDX%lYSfYyI{1WL5-ARPW3$vifsWr8RKhnQ3fR$}Uv~ zaIuM=zw7V}PTv3i5-Q1PM|&nI|9@Q^v0z8q*`0^ttbwfS#%7M}TYcdhkVY|W|v z?^6Qm1TfQ0cJZ`A4NiNKY_*CNFLwX#w`ld+GYV(DJag*m{S?phxC}ai`Sv?H)Ct>^ zRk^`memzbD|J{&(21|&)%l@_G(!Ot2g{%<%&u{nPh8KaW-;t*=2JZhqb2D`bl(PVp zm3UcB4i>O8Kpf8hqJx@(W$!H||HW`W zy`!imnP6O`tm^wUjKZ1cL?@W(^_mkB|5s)36&2p8d3a}^7pm12QBzc)I&^ydy!=qm zH;5l&%aF!KLOq>ytgGrXY&W62QqdROug*pTmiKB6-Vsr0+6Cr5ued%!N}m-Wc}4jE zC29X9(qi4TT9W_28w0>?UddK-;UNg^>9=3}E9{~Ig=QGOtoe=wV8s&^?8Fo}{9j9l z@P2>*BW3aQePjPu;*hV!7XHwM$M@pTa61#p{2N4ueK}p-Yy+-^pUD`m^M5Ncv-x!3 z<)sin{fRn~s!7k;oRz)ow_TF#UoU94R_mre>)3Qtchu^fh6N=+jFZC^@zhgx$DZBI5U6&V*ATX z1i@DV^Bs8{NPhN@haL=1G{H4>6~N@Q8e=6vTjFcYBb>s`w^~{%Zz9h6)vk6X6t*;b zw%l(wv|6#Idv63Xmw8dt{r0~AfI!jiTV+hcjfCUOCMItaXerwyA3gF)n(jz`8@Omp z=C}3o=J0Wx`xM4Tn48fBY<;Sv&|t+u%2w;yvQOuN&bzbYaaqUFSeq1362&f>>gV@A zMGQ;+48kV+iV4YMiM2J*X&yRSMP+|u(?nX{do7~OAukzqa5ZvQ?(^SGlEegUyP^rn z8`t`uDu!u~PZV|p0+oOHE)2%>DuMCiG(WX=-IWSEPU#j!9QtJ+9S=Wzn&Ip&hkH5T zYhL*3)GI;fJ?WS-TC9b|<#<#5$E|~)_?f-NCYcp&u^H@LE0)-S2?In$oPT=d|r~O|9s(i zJ9&-l2lKZ=GDZ%&3E*K0P6xawA^g z5D;`d122FU@9w)*Ve(agHg!J|+_o9n^7bB0W@OqG6CLCHXVu1-e@>>xHxY0B+qtEB z-8zRGXh4w5`vV^ye*vu6S?zyIm&YPlotth;jV5o;=@6yMEFxF|RD;rx2@X2bRHqf! zl`{iIF|v7j9Xi2sWE`Pso=YxMp@)L5ioTdC^L#WYd|ivQM9iw+$6a2KN+`LclLiP??A^bQ3Vc0!V|(ynsrQm1&7>HI z(BQq6N=(J-LI}p=zm;i{O1Dcvz3Y+;9@J2aR`7;Oc}^USnD@)l_Uiz%vU-bP(uJX@ zzMm{h7<`-`k$Ru#xoQ4Jz^f58Ws-cZOU8eXIX*-KRs$kwlglWWLj#d8Szdq`3ki|J z7M)O^I)r_1*wS&cugz93{4;8wDX1{^lKzO_Ka-+z;gj?wdFVd8l1H$vLio0|mi+$D zcnM=3)~#x0_g@=+lXb9>LO#w9J-bUKY@+}C*;;^7H1XeNtk7fADI&7acON$k&c8Ai z_>Ov`P87z=*W1gez9-vnStau-)Qz^mk3Pl2f_lY5AIBo`TH# z(>(3Nu=cfH`8Va&9lSHQCNR>Kt?(>1#v}!d!z#XYs*kHDp!rl}_ww%}SSMG#P@nbR z6YLj+9Y@zdx~I$I$7@gDV|qjx(BFDO#wKwUXk;zCP~LpE+fuYHC{fulZSj#)4^ATOldgit9^E3G=ZYFz5I`-+(AA zwoa1RHml2ZxDz3V-I>M&mY(cc+j9CEZ<~WMgWBT$s_LwwuOnBl=I^(kLI$;a9I7j4~Z=Agd9aB z)!6plysBF}a(%5R^6`lynyqi*;Odd>`%ha7YG1cE*#li8-I;2}_c_}o-<@hE_n33#0@v4M;kr|fc6$Ny zaURfJ>T7ORzHJ5mnG%Mo3GvS}J)x}fHIJGDTeEWJ4{}QKOp)dTxiZbn82)U8>1Ax_& z0NesshLFLRX2COy6^{zxXN^etLYZztndR35UZ~CAdW{caIUGNssO7e0m$)|$T&Q)H zq^YydP3FBi2fkaiRvC`8EWt@AZT87SkNH?I>%QN9efiA)@*?16Vd|%9+PZEx;B@Bk z-tj~bXnfs%VSv#NDx+*{&j!y*C744vU!Obso-fH(;Y&=#58Zl*FbvNuwCt{nvgpJ1 zp1s+Ma%{UI!=-%s{;O3rhtKpkJ(XOxm;avH-x~5Tp>69l>p|v*T(P!(FTF**G#&p3 z6e0BU+1-MLOaq8O_%l5Ivy@4Km^%;OtBA&ee29mIy>#&ve8T*MgCFZ9q~D|m0w|58 z@sRmZf?9d@J>@Q?sET^6U2h6;XI=}cqi1h^v%o9xI(HYd8Jz&S8N>sjDSfO>#8^8P zPPLjW5Gpws<1zgSJ>D2o$y>i)9MbjFW}LrnQ($MRTKjXdeb6eM+0_Hh>oq+`v*1eH z@|H{Cw(G43#byGig%|03YwS&|sO3!KUP3R=#;6A!8Kv7LE;U16cgPoHSo_6&H>xL+ z@})QfEpPDhhMP3%rbOz5cA>=I^B11$o7C|6{+h&=aVXXx|La;EI1bO<69K2uOI*|1O3!atEobxYK^@^@7pU9g z3lOzFyV2P)z{!`Kd}NEfC1A&}e+mM4dlMLqj0hma$axy zxbqR&Yg+cg6r*OSb>)1gOC8x#p1&K{W6cgx#V&rmYPs#DA~G0UZNxddDy^?yUdecN zP@)!3Mm19(5IE2~Xr4A*w--Yja879J2o2BA^dA?LQR#O+2hClppMQDb1v>ov3vK>s z+gtnI%BHintJo8}&bWBcwya1%-c`C+s!l5NKTA0*^ufd)-AWTV4RQIRcCL%-pHo?~ z1-`Pq$&)fGLg}|HW1@O<_vHI`V<{;r=^QWzA?(dkdnQm+_2}=<3&>X11D)Guw=ID# zpviIGU!(^#A*h(g-WWMZAYupYeq399Hw~4tNXPaoJb^O3_&g5X9Oc$9plU&lqZJPu zvmKYukdO*r$Iem;kfNhKvtKg9g;mTuU!ya>Lk8ypSjDOv7 z-EWH)yjtR?-1}-+g#Buu?m=!wJ`5Q)&z>`NXZrvOAGz+DafyqjpDF4?#?^LS)p1T%IxRo_ue6MQ(Oy*mHY>&NMCDzLKpz_3vu_!dq5NsRTS) zxPKm}B6orgBOakzWkqj#F;t2t%;hdmv#5&YKhLiaq^-2xk3CpX5jPo{y+GC~KEMCc zFIX>FqYJvVF(U2+q7R>EzE;_@DOjTo9=Cs%;odsHa(>7e7xlR-y(k>iW;sK^_!B ze|j%0DK8abLX9Z+nljmu1=?)#Wi(;`ele10p%x@OK~CH54|DNaW6W0Gci%1n+Mle8 zjeX?@XroPS$JE%E9 z-gA9-V}V*21h4My1<>uo_{lEDm>ZtpQGp)*d`@X(z&L^6-Vs44FN9eg3j?bF%Hm zuVw#-g6HO{_WpG=*YeneQSx8G$0d0WWgHwWleQ%Pf6^&PjZrRl=j-ua_=^OUbMM{5*EsA#uY9+0fNc%jcVmJ{gB0%VIL!B`5@lJQc5^u#)@; ztYiD`{BJZFq8c3)z0bj-HycS@6|#59sO8&I2;pT+neo_3u={QY$t~yuL8nKOq{-*!}D;7X5H60kyh}jT6E+6^fh1^#xQ2(t>%Y6U}97cjG z4kVL9#1DSGItNlg5XXnlC=*NQXd-C@=tml5%j~Kk4>d00>3zlsOqD6+YO+!^N#eHo znp+DwWGF?2;tVc;y2-d+WPSf?N0CM5!0~ zQOhABCj~2oVM~QK5dJy$XG7^1vJ4@O@s5sjHak~bi67o+(S|f@Lv(||e+s|~hU5*( z(YW5K0sBj`$W5D-)M+U(9(DG_=hRf0G5ov2{XE~WVIIF{L(AJQ$PRj)87Wwg{dXc+ zbLVV&Z=GqaXCyiXr6VtP)8x(n({+dEog1vxW@xOIb4%65<;c5LJ~FDH-YU(&)7(^# zI7rjr&Tg6nsWqgfC~9LH12dQ91sb_Zh{XV|n|#A!;ULTm#3Bk<{Ui~;K4%nm-}J`= z=n90uv0E(IEsjQ%ZPDZ6u-IvH2fkl3g4em#0w>2RP%2N0%n7&-y1Bw%Y}%f{8ZZyx zrgsN?YPYG|&Cz`4{qOWUGxbK(*{3^m;UGGZk?w3Oskp*+!hu@Qi6DUXSy;8@u>8%O ztxCA@Avl7vc{DBF(JwL)wiR``ZR;{lLO4VHg*_`_VAfu*kL=R=V;Eh5%fq2w|M!(j);5x@MH?A95wcf8rHI0eeK4bpCCiMR7RyQEv>4fvy)wfX z`!1TOG1iP_3`!adqiln*{GO?E&gXN^_xJtl>$YTK?McJo*%PnB@Wy{sy!Sv4l4z zm$>sYqCQr3zgAf09cx30J#NZQn9e7Ni-p|>1sjpQ&gPob!#G4ONb5T-OsZC}>-cVO z@a}-GQKU`({r z%|Y(NiYA5?XQS@%ewECv6tW+fQg{Rew1JSf+|P%`c+O{;-Z~^*m=5|-*s7+hwk2p2ie&aC9RCB=doQr zUMC(;Ary)0ml_%2L&M)%(|kO?rE1i}!sb?V_qR8AdlR(kJK!J^Jw#jeX_l@Q9U}-nHlc)r*C@6WvwadVTqr-3ya7xT4sLJF%a| z8j1CCkh~nk!0*mo9_|mbaM$0%sY=3pUB|0yYE_jflNMx`Z_1bPp^d~BLgwZwINvoP zCJiDehnesDG z^?7^UOyg6as3kf%%rbz!p}a0W&8{E!DKWMEGDH?Uy3cnbPRY33bVE3Sx7>muEar8; z^Ng1qHB8g%Hr9K{BZIXk^uXk-KD|8f$RixPCHH-Lk(ZE6A3~*;O9GEqjJr8=%RR|&(d}>4_tzW=jEpk zsqlllGxnRxNo*&77l8LWY$ty{4B?GH@bKI*KdkgU_mq;n%y!ce?>&=0BA(nO2o>(c zu0;~0bsLq>Lbrhr)v1MDxk@ICN+O`c?_XoiXFcNy-70c~q+>r{(K%`qpLH$%q^MT} zA|R45buwb?`!4LJMxW1pGcCiQNs*VlFhmve>9jew0Y*FBDP1ucp01d>O&U7lJ-h7t z)MKvC+VZeUkJD~_y}D~PyM7JzPHdAAblZ0F3*(EIM=$N=;SrUO%t@ZOv`AJJZpDNm z78!+`s_)eA3P@e8qGRl69d52iU}B9v4=zBXthSTa&qGBHz$Fesf{luwU01e`gXG#9v7+hHv)bU%f)=XC?vEJT4Zh^R$1JXH zu>WJ|)JqGmidVMCrXYo4mLBHot4{3mWD*XH`n6Zv$+5rl!7JbWtDRX&{vKn|jLMfG z9SY>>mt$l)8zHV#QZcYV*Ue}XjhkAF_3vGFeVvFy|NU8T_pc7%pF zU5}R*x^;yzfkVrd6WQ0NI{5aNWJL)TN1R3~^77ni)Q2K3XoJVR|DTUpI`nnYUK-&w zNewl2-q*Gpirsbx|px?u= zejICsv51i0}Q&+|I+i?$G$vzq3KfCe5&Iz=;*a0|9Yc*D2K1NF#(b9^!-?Grxlb{X{vo~&^MHFLS8 zUc*Bk-RLVRY7|Qx6b=lH*U5pIV7Y<$q0e1sq%H8IT|W*&5(EBRN|9pNr%#`H0C9yy zP!~P`II>gOPfdu<@j6tc+Ie%%_of}w;Eq}jWT|OD-gj!T@W$&Wp@8MZlD{?4m4g9t zNE>6y`8QrW0Ylz=8UtLq{AnK(PtGh314=cCL|Plu?gUGGJ9+331PqH)=0W%}xCXZ_ z7mP=H3d-*JM`Lzj#UjNOt-s3N?k%vxJCR~4^JId?Gc3zJ?ZgvRgJDHbniy8yW8ka% zaGj2S@E@CJ0h4wL)SQ(97Sm81PuRB2MaYYwiZsuf^Slu3fpX`=@FH zie6PJkU7kn>xk4=|>%8|PZC>Az5tkdR<$Z2X}w;;o00c=$+4y=v??pw{RH%=rjDz{iPI z*e#aeRXwf70XpN0Nkvzn+iHxUivrxeQ*_VgCr*r|>W+14#kZCDB-SJ+R(65Dmysi1hBqPsTVojQDb-+!&`02wT>jza-M z+)_|?-bEx5&$IT#G!`Kh+SB!hS#=!G@*9RjFtW9w{##i1_Fi`eprKbyM<8C_2GivH z&uMbu3>Y@*9z@{Xtz@1H6$jcM9XbC;2XHbNqpsMxUXM{L+NxM^X&rQLmwz zei)cnp4z&=ti|r9fd%Byp|_zMU=DgCEu>JZb^ zGo7rOxwcmk2ue^}d)c+#r|J-+l34v0KR~5=MSm6NK#K{D^e}@=-&hgwJ6O9t8kw;N zYkcz03w6N;9rfDLzQ{6S#)}ln2E-iCki2X5Ej19wCPo3#szUT@wX+!`wE84TD4gJl4d z8}O`Mu&f4bX*!1VZ3Mlw-cSL;9G?YJwEldD-FpktLfP~o4wq8RdgNYcUyBRhSg)iB zYKjujw02D<#DCMm0E=omslBE+33PWM zifEdy%UV%)?{frX0Ae+(ifm^OR)Gg8MvQgVKUrb{D9sxo41WL>Ru7=o?2VFi@ar^S zWmU#dlOq?>H&*jHTou9SsQ((B#K!GpU{2!O?A*QB}pG9op+nrF$_ zECONRf{%Xw;svWt7tC)ZmfQ5V=g;@0X!#e|g|96rDeX9*J4iVz2?%yv&lk_VPmsqZ zw6_YAxxSh`cpG(pHKOjld~&a39AHNjo9ZsV0|@dMQVDgn`KFMa>)Of!UCMUNA4q?` z&oxbFu}n!G6zYjqaHP`zJW>S?LmpDkQ+=PjNK_q#hTo(fe?A{Q28gz_HE+wpbMw~c zILwhy;AZqfko*?bwz8!Q>?B{xm<#vIjvhZw1MU}|;9Gq4z!VBJO_!8~@PgevIFcar za_76Fx$6e6*6ytjQ=h+z)|jUURlE`37>#8@SQ+XO#;7^j{f&fSS6 z>=(^2Yb09y6?^#PQt0XFa2=i+vm0<&alDGM^3=OMrhcfSG3PyPZBrk%TCbmn!ydz! zN^aq4rd~p5dM8vspRc3aT(qhVaPNPf1IUX^N4=E_9C8op{nPbebaj(R;i0I4IdDeY zCcEFhSQXNX7#o?hxb`Y^r{u4I$QT|qc97&)Ytr)Z zBN6!E`0uO(q|KEN$=Z&FTL}kh-WiwwC_x6n zNijIuoA5cfbg?I@TCh{F4458DL#Vds)5P1ODt@({+sVKUw=CgqxRh8>=~SeyXFmEx zxd#mi&SDJnjN7=HoVG%vA!_{9Vob}5SI6u=ouK*Kz4;tQPNF?gCwTGe)Wr06eJIt} ze25{tmdXx%^J=0@ERXh7{LhDF7BTiD?q?kJbgmKHgc<}bzB~o|s$+{Ej@#geKk(wN z(nP35zUnAiM)5<^hg&er?49nZ)?J73=SGox6Q3jVQq@`v#;=>mj1R4<-Tc&=HdMax zfi;Y)5|#vH?DPTtH51|?{dPjxv{p5<3o^dHc@d+Ml(mox`&<>4m0K3HU@fIFDeWKp zkSXQUup{OKL~m*2zNfqp^d6-TV6JNl_?z+fV7t^{?#xED zmtVSoM2*hp4up$k{;gt0YbjvHH5kTA zNcG$l9x04bhPb-AR^MmKzi~^s=X3dT4Cl?udm0mqp@e&Tx z=UeJ8x%D)QcXDeqQi0jMKlA8`OdV0bxgi$dgwshV`Bt+hO~mz`uzXK_+P;7~POq@~ zKz~+yDfzuAVT|lhO3S^1ZZ{h^UUB-Ftlw`(n9OzZg-e&Msk(aN5e53~a7L;Y)$_UE zQ&6o;?9)mA*JW+!13&o`KCb9+bE+$U56ap}wsXr_KRMZ6k($n-#R*rnna4&R?^|JN z3|8=z!&A=^=K(a)U(Kt`K6J&JtTydFDbww-DrQwBVK1dthoJCoDA|RPEHI>qeERIZ zQmu5F=HK_@_+t4y&Yj(SNhdyJsnf_ZFU*;}dWw~4 zJhhxdc5fT3rmL;(D)!)*EVdR4PGv+NDBX3~$OhRYxj9Uc>W9S3VmaN0fC95cKz!kcea{lX@C`H{M1rTXU}UtG7KWP(AW zMftfsHWfFEN@qUxw1F&-IwzJO6reCj;94D|=!RAazSCT?{Y@a+n9+k9tx0_BpVC-F zHKSrY1U=h>tM1)A=L$(&%y^Dl$WldVPodKuUV>81uhN6&ecEk;bR};O91Qj+??rto z$$2EA-Fr0+lZT!N!_mUnwQSf!OONRUD~Iy+yi}x&rhhpjvCi>+^o!4#^Ao&$)r`ue z&ANrRa!WQZB&(w6d10qfD=XnwiJx8LTGBLRCPN}0{Sy;dv>b`_vTZtM>B*9QSZLAy zB&M@s8il7xJ2p;mEKap(&aR)9+I}i_|={1~@bIGi_NCP+<1w4TpKfvN!g59}!JJ zSH|o8$flq2h)UC1+#Gy!=&%~9%@);Bp#hipehpk@KAWLrfQogq%oWp4E0ws1_X=!O zl8s{b!GXO3ny;x_vZX~2KV9S8EK(jdKTwLImk|t4Z3mVIqbX@x(;(6;R-CDIo!R;# zf4`u1;`kmlkRL7uEDk#5M%~hrADB7C@`2#Hq4Uv}GJTfe5Q|vAUX_}fKc}A=)X?{Q zNz|W)h1fgw-(_~r4Zh~(qqV|{>C-2ain09vM9WO&k2LeyyI@mPXiiL3;)O=#J97L{ zV~?bUec+Wo0CadOmh#7>?Dr+|@xHnClVC5a9^M}~z?r_6*JiMkWB%M6D;*oO3&h`H96^ehk3$Ar6#XOpZQ z*@b*{GvTwZsW<~E6gpM}Nu#elwjk?GR2nB{jisANo#~52Z2i1eczpL;LXG3+%t6LQ zyJk9j(6v7T@oX~yJO2j05}qOXVf~n|m5lz!j8qhVQV&do_v{ThStg}OWOsI9VB+fz zw#41=;M2U7SF7WwnP?mK58KX_kDBp|U|mF(3f7$KO>V6c!eM%$n#&r;mv&=9MOw9x*(Z z?q4Drh0O_aP7uM+TAr9IPiHoGNcs*flO_ZIy)tdh+kEy#4~3^&um*f*9->Hy+K$-s zFE?EalAqn?dSWI#S$8qNdp@_^XXI+&?P}^}s#=k+ZKBl*LAkv*1bG(kzc+% zO}m!2Nsgzsu4OJL`yf2Y?4!{cxW-bI^_uug^VT?hYkJMf@5V8l@zSQ zf9tu+QQGJKz|MCXtz>^Z2RXL7Np*hx-cy89`LwRL2EVbT5cpso{x0a+Gc z^CtBac<~3p0fe~oXiQL`!^53eiCyul5o39qyOY*Dx`GVO2VNG~DS{R8{Rh zVHG#bCJLNQ%wo0`m^Dv+@)!?`qaql_x?j%x6H>Jen9n?Ui1Y>3Q`~3S3>~wt#eZor z!@MIULL*Vfx7qRm^zFAjh5jevG+oo3wSKj>4QfIro{-U`!MkTlh-54*>5&v}FtrkU z4gYPZTjdRF?Y_|=XAzFhe%JH*aiNQ4#jb#Uerx*;S_+SU$`1V-v)5%B(0Rkgx22!q~##Y zA7VSZ-{2EcG`c@3h4+8Ng?E2+4#EEFw1dhWCwGL6;SdMd;QZ zsakQ<3TaHRoQS9k<}F5^WUSG@p8IENKwPGFr|A{CRPyLi0QDU_v3t*=T|1WhrK|K< z0A`n$*eu(4`JSq5T|s-6&7RA*>VKToR`eVr!v@mMouEvF)ZMWFI; zuhrwG9+DxsSA+di9}n_U4pp6BRa!LqXUBPYc$VyszyrZW9P>F++#1|)@PTvRsK8rE z7T|n`{k5#i+#iH=tx+@d`Kl-1U3LUpsQRxP}-e|rL})pA1m9`7ZsNk}e->3M)U}fk({<&#vm->5BRDOQObrym8go z9*~Le|Gmkl!pyqUcf;c?K^yp=aX@t7;|X^;JhN%~9smp1Tj*uMY*s4XK+mtC7C1VQ zWN^Pp>L+IPGpbC*lA0v{gQ{OrNmS+RT^64V+j3cu3k2S2H&Aw721abLXCTawc-@s( z4;xp)HoCQ?AsfwEoYr8(v~{2v!qgRwnGTQbBGclwlcV{Cbw1@r#?YHL zgI|5edn_m2#Sw5EGxkY%<@~SQ=tkGfp5;B0>%5ou{A!{Y5^5<5(9pbT;7wI*mSxxv zaIDI9cNe>%>!vygQ|%uS9M}&iN>hQgEfLkRd_Pa@G=z&Wd)AHvH@bdsC7%XJZ#ggs z9kd$)R-uENSVQ3(p;Fobgjygl9sZ#Hv53K_xI;*1LH&AAFrd0m1K|k*_;bepeTk>l zcZUCPXs>78GBS8PBieS0CDgN@m?KDz`B+u&S@C%rz_lW)LuY}0B@K8GP64UKB0yu7 z{*L(@?cBz*6U*IA3gj9=yq508h2=JB?87bqdy*M{mFN_Z7%4E~h)AApIdS9F2)5>$ zt(CC^h1j z!bP*M)amO`D(-6)npuT7f4Vqm_Ui|5t}?1-#J-^q+;WH<9{~zx+x};J^`Rp6abJqC zxz|Q0ZEYCu8)OX^7neTZi)VYq(w2%ga+VhoR#fMzomL(FZFc{bYj4#9q{JMuR7)&< zfle76@^z#Gf>4BY7T9Uo0Mjs=6@6o0xi{@eD#!h65nG)|Ux0jKWq)f`e2M+SEXcfu zX2AwEE7Gwu9c#IF@EnzjcZRS2Mu{bOer4t>GX==NA2pX_f6fm;NS=ygK%2Vq`5VLm zP0ZAIW&lpOAACJJvDOk@10Br&_-)~nq-%`8=%LrM_ zjeXX7FtUT(GbT~&~4(u_s(*|{{9OPmZ<3TqZDw0}aNY>XYfdU4#K0Lg9TWRAgShKER&#JOXS>{5( z^@Y5Yier#OaDspe2O*w=AXmz>WDAc*q?y7sbajXDX{o8Hpk(FKZ9dj@X-aFWUlAH) z;XKQxLCSV;0-)GvZ&-1%YBj7l6@cerF{P^{pif{sC`N)QYGh0c)C}bEj>*p&`pWHO z&MsIK!Ps~zOm`yt>EILy-jiDgOpTpy>d}z~h|t1}4NO`tEuV((R&9dO=7-TQ5x<@O zAJ19b6Z!)9CIJWB!?4wF0gCtPjFGDe>o*Tbs>>wwNvLu46L@ptWE6Yq*3+<^3 zbcHbNq$-bykcNS;CJbb|rUAU(^5}i!DN$^xi3(U1ziL_jTE((yMYyxlx1iKk1U^wZ z8;wQ7tkq$93X-Vw5lkqB6MEaB9wgwD!T&41HS5zql_WvV`32hkH6O%HphLy3@mjwR zJwN32UJg5aL{d4;>Fc81;<9`nXz!3CN zY_(fm?|>HM$i0Hr6!pT3H~FJMbvbYtQ@s!4E6`t`9<1zERP1_v{Ww?PuFdOA?B7)k ze=jEPtr1LXkCBGE*cUH6U%!5h#bPa8{MN)y+#o!ACQ5E=Gt>p=0!2pD8;Gs4Mk03M znOFWQhWPtqE;bUQkkxLBK4u`YO0h|Y4lDd2tDRga{hxID-)+x^C%py9P*7y@UsFr^ zA9VnKz4!nA>Yy$>kiFwqoyyX*QKJw4ugH*x=htz$wP`lqN*)r9LWXZ%o}>9McJ}~e z9bjJIy0(euSN!A)*EmcnbFiji3d1_W?AWnuD>Hd_cm=ghzzZ!HTkB>wMD9+k@v9oR zMsDM|L%fG}KJY=1`zqAH@5@ns?E>QIsql$g5^6YfZW_H3yH<{PR2?r<&_ji-M1un>b z8s$G~JCs@Q<_5pFQNhe24J!d3asvjb4{%ykhC5{u=2#5b=t$$WuqhCuS9KPFj z0d&xuhuqx~-mWMr1o4?+C1-M?m^c6>A9!-5O`bE6m%BBXGa-w_nv(RN3By9YUy zlDQp-A?{UJ!Oy^oxR6dn8Pg^Dp)*2;ss|7^_mfhbkSL_|y;FVt@1R^3t*b}b&`Fu- z-)_ecpInf)Q>||Y?nsRUBVaag=;J6+m1Vb$l}1=?Vh^T-AX=CO*c3$cEeTg zPQR>jP9_^vYR%jG+6}|$2BcuhoLkEWfV%H6!}zGY0mJ}e)RgS*7`5r@eGygC@R1^# zzRC<=^5|(<)ns_TztgO2K+msf`fF|p@b_9Qq0dHMRp}JaD-0;3?3pQ&`6#4;Mvab4 zxW@h4_M3R}4lovZzJ=q2D8-fL`oCMw?O>)c*wzvia=ZB~u-1Z>-)EX#UH||HY|tj? z_L#gq>IeqnAmiV()Tr1*P^g)x++0=|#_DOtB!_V=-+7ix<=Y*Lg26Y(37cb65|L3= z#0rpa{JqBQ+{D8H7m{(peftpI;Wa?W4=Sevbroia7#An~mjx1);6M-{u$=@D()=QJ zJ|yH$z)eRX1^UbH_-g(3&lMOvBLbt?KD`P0+ebt>pezcgTOC$*@qHC8wT0Hu_@&}$ zMs!L%{Ixxp=`|T^bSZ>4UQ(F)g7hExMXbWOlj8k(6yb#KOE8#Ml#2z9g6X&T#Qld@&%|V386BuCEvxl%m2gS{@mlQ9 z3z{m4`nS&C$xiX%7&-(<*5LH>K&q5)Zn+<2&a=yQ;Fx-9!vgfMzr3DTHII?`$yZfD z(Sk}CvfTKS-2F)tXlMdDwW&eQEs=+P9p|kmqZP|B*>`#`|9JgU=I#tMH^CC+*`Ad~ z?TwTy_;}d0IM2|vR>R8&RdWvJt94HpUy==t8b-$2Z8``R-i*cKJQ{ENY&>HXbnt zklJegDeAvayJhW4*sIw$K#rn8(}^7xW2OWjqbJ_XGq8U!^<@;B>@ zwnn4EHJ-gPBP`0i)eA@hN$69YXw{x!MQt;ewh|%l>8Xtkke~Od@jFNRsJ4VgitrJq z9KJiVlSQC5epFxQ=fea$)wS0)wj?M0%_Z$2=KJ*9|&VIdZd}Xzitlb@O*ya%LZYPC-s` zEu$*>x+6_RY6>i$e2cQ`rFeMG!^C7jMAi?nhMg~#BP9pCD?gYZKm+=^ zLX%etK5HB#+K&2l0iY@5d&}Zz?)V|^wegLCrhtpQOx&C_)5rvRC;_Du+Y>xfFYV*G zhqP`h3ul6nuET}iY<+XmepY--^a!@CAIX0Gq9CoVHGygI8vhONnufacysS*DrMYQ= zNc%jSkwOvTK1@zjaT=`Fr*A#Yp~h|ntMYYQ)?tzU?{dwH9Ttk{kdRg|u&u_&h` z_TJi9dWtrrCYEAQ^g@;g+$_FVF&q-?I5P7eAPS`G>-ga_6O} zVSWc#^r6pMy!amgGi6<&){qaONLywDFuYEfnKG9*eNx}Fh4${+S0w$rb7)vO>AB>S zgn-Rr`AdAv+q%*Yn$4bd`EAsF2=3cd`~M~&|49l`A^|ri3Uso5cy%26cbEfeN{I{g z&CAR_3%XcEOkftcHaw%(V%)dKC`csLC+2H0MRwy}wqPxwVP0QpApe0 zpL|J@fqA*dd~C*+3ykRd`AbeK6W7vQ$hx?n`%m_))vxbf>+OC<5{U4bDT(mhIv&rY zDpe`s#lZZ#8z_jkEom^nZ(nDDq@dUVkH;9|xcEILB&7C{5m~hro@hqg*Yc`MC53uSmlv~7MjO{&Wwc!*#1UXRP6vs8DQZGis|n|h2XgUPMDAW{4w7okkC zd7!8O4!yg*ptpihA{5~RmaTU_@%c$;Bnn0Qp4RU~!NsI$%PWTV%0r5HEFMF%#@z3R zs*y?=T|;SC<=%UEc3Y#m&f#so!z0kC1Aq0fsX2E<$Z85ozdadv2km`5lmpe!LcYvF zoFFbbC@#7YBj|Y7cD(I@_tJ*|z|c@UYV&l{fqz2t|4t_Vv%B2@%KIqRfk&kD_iiE` z_eGS(_1$l`x`DcrR=sV}&!fi6#*VaCBcv~N2lT(aRM@K0wzxfwlCp7S^*|X!cECU> zFGua1U#psXO!9Z9Ap%(M*1i5;W|L^l4ZQpKmBMv9A@$!P>V2lzL2?uc`+p!yWzO>d zH~YN=+@U~#r{R(L5qD=RfKjIE&XD+wz}@+*RM7iCb-A&&Wbg6K zE{KUe$z$0_qgC_6G53k$GWsq1{h;(EQl0pCc>pyaa(e?wXNJj*NG zty&2F-Q$+i%HF+>m2$fvNlfbMUzS>=PdL&i5@FKH>6Phpmb)X_#+f6U`EuOl3(uib zPm58^N}8RG`AV7$&^O39FYQ=pZcp}Q%!&wRZuj^u^UIfL9Kt)o)YO+!{?{CbI-?d_ zFHwx*^jYFgQ+niQq zMM5kM8G^2t!jG zX)X+{UZaJk*0OyL+r@(87N&iQ5uRuLI=h_anUaT2*o~4I)#lm%w2&*q$ZEvB3}NVK zxzQ}peHUsdsP}4pS;AE@9Ib=uyO%>E=0?~-1l8A}lbPdpIr^8flvR%ErbLk%dWSuc z|Mx=du6nsC!Hyj85Rum!3CMdWH6hNC;Q14N`9NmBP z`~(Bu+*Eb|2x7Dn^ncj!eV+*of3w%_OK9kzm@SEMQkkAdY?FpC8C>a}@K3KbQr6yE zQeMX1aZArZi(yQ~^4IOOW1cSmhiE2eS-+6>Cl6nRtbCQ&eiL@Ab)?;~v-G{^=!K#( z<92JVZ{z;i(%RXZ?))mU`-I}}McpkJ>^wZIHXa{R^k?`kYCY=i$Od=~z3N%fY<-5f z7CPb2JA31|>@#A%@^L$D_t-SvC(f8K#!yGILz>wj~1INKe(E?L&ka+$W_)VD^;>xSL=EFnVXT$U!+Xp;~iu#x_E zp~?a0XW(tZBbEOta(x2~8ZZD}V?V%V#qzVcp^&eReToLPzoAwgzT=Rw-Le=m08T?gjGa;Pl(znf%8Z!Cl9mlgG%x#~fQ&2I60gAKLTFLZ~vh{#&4B!ux{yAH@C-ud~L|HPP|) zIN>ht1oL>2b#Gu!elt@_I=ZG3oVeM$<{p6E$F=^-kQHwoTR1Nx6dws%e`m?RTW=h$ zxRxUc`JZajh4y~df6%x$hW`#E$H}2lo1i;--On~_Z*3IFWSG_+-;`5)L>yK0-lP^a z&Cf+9j06bhFeZ;D@|rnUsYB`|8R1X*WZmDhSyg1?{@kg=5ofgV$qf<160)vET9f|*gPUx0> z_^y7N`(kDh+zx_IGM&1Ei@avrYzVzw-o&?E@0N|5 zg=!|H6pR0#a{U*^k+7WnqzS`2wVm+0q}sl_GqmNekRq!c$o>9Vcy?U+R{s$V_@%)~t$i@GGm2ek5!9{h;%WHb-W1kVnbUr<$mI1OH zYnLipI-JwLiW+LXAv@8sKts%zs^l@`d7)VHqMav)R+tr zm)?)>iWmyXT(5>x(wcrhsrA&voErVzAz(&eh)1{GuU~$+3|_LRwprxA+^Bk}X?FW3 zo$Ue(G!@nt=_h?7qG8q%JUEo@)Dq6-Xg10KK+HFVtGi(`=3pkWTT(XFbN%m0E`~AE z#WoO5sf^>@uP{z&^}4_lBLL^R$*5a8%?csa8Y5zQbK<`^5Jl{Tr$m>BnLW0lbivRXD{%=D_iP~&f=b)*A zBz7ADzG@uQt&sM82XMG-2JjkR5g2~YFUUz2FjQ1ao9FR#Ir{3`htF$zULNW5U=ydB z{EG4JKjrUl=&j@r>N}OVAw~T{{;_t8z$T-UHb3sDatZJtJd}i z;&=HyQbHlLPQRe^-(A04?6h9!*PddBJ9dP2tN5Rh8^FFyAdJa_AFA5lecBxWVP#Cq z@fuyVbhf%x@am@dzC=Gzg-`RZ2XA(~U96yN{0^7*5Zq|bOim!EwO-HN$g=xRtV)tb zZlHppA8SUrU0d_A(UfZicIXNtap8h){pYWrn$cEsEWBm?)t;r*VA>FJSTx*ZlP8^< z=(6=DQBaB$AT~wlaf#s*M)vLAr8fm1T=LAxr!}wc2YvqFBxdIa=R#tyH|SrwDA?XA zQk}p9M2bP?U0y0iz*~u53c0?Y zT&|?@55D+)MhWbjjaEq6-j*xGdgu6p^m&%I*G>o6>g?jSk!0&F7MqH1&t)7I;2SZ8 z`6J#!bq=RXy|Nc8M22sj0x7TTbuShVr3KNR59faTZxc9*0R%t2`Itb!-%N1#X^()n zIXrZIxV}xZK=3HRTDkm1W^8Hw(EDKVYPJsz{(W=KFMjh<6h@hYGyog13>+BQZ7gRJUW` z1v{LhTJgc;H?dQ_s!&=!LSme)gaC1{##Knv?@LfxL&v7S88@`U?DNNuwFGNQ`CVNv za7~pz!AAQYsRhr#bO^#!9eMxy>{_?9acOf}TV_y@a6%j^FHqsS?s)qf7)#c}Fw(FY z4WC4%=p;~mcdiA^F7DE?KKS5ym|F+6gy$Zn$w|PH(^4yiFpyt@P2jx3@8|*<=Eq@9 zWo|w9;uhXfhJ6D0wbuo0%PVAU%|q+xnMaO=UQlGbi%VQrX;Sa)>IRWzJ0X>kD_BB) zb1z0YPSVB|^%vNc5QZ zShR^1(6Lb7f-#LaV1@Y)9?s;tSBri#DP zWFOu6Z65(aY=q%A$r<%)%bVa3$K5&h4V0p5Te~T_nmU}K#Q}d}-Mq@F?x4+l!CWfE z36Xkew{doo`=#lD$#Ve;8mHLl_EFc<6ZLcm5N>@_aJU!ELiSpiz%$&#NOV8KvB04M zd+(bjSkvNwG=I~s~(Yssc!|{dJWCs@Eli%Wls zGSbB3lL1V3P%^P)wPmO1vG}3oeIkzcPGraHhv6|v|^hL099=t9#M#fDz#U1cRiAM;( zc`I1>*el8{QvjZ-X=&3y*U(NWOg@jtsk!Z3gdb6+of$3FCBcVB_gR-`5#Qe+Sa>d* zgK&6a1%bA<^wT>cy`0wWYICPj_(4vXvfAcAq#$13f&NHBbNEJHa9t(vjHK1UR;B6a zaG-9jwm#)^_isOVzd#fsd}309qk@3=O|C2N$%DM#$wgvqI6m(FCzXeCm2E5(HS)MR z{260E*U4TREn}Xo7xW9(SG7f@8%mD1DkpE^#Ah!VlUWb;yqFe01*{0N_S<9x>~exDhKUuP0d z4d~>>u)K`l4(h8p^>$|5ypi6KaxuBBXW<$tP{A?+I?@<}xB2oWt1HIfvv25!&KtD`cx+8rD; zq|_KTVNb};Hewd&{=AWfGSuWG&pw(n=bG?HXM23=0iOGA?c^zBFDkqYHo!G6t(*LEY~n?jP0E*eUGT%Lp(Pu{RCI#FAg#jEXp+squ4ScO0!h- zQnAH@BIfkI!;p=S{S7=gw-j{9d=)%_|Tx{+>#%SLEsJ;tu7lIr$k! z`|VOjj?!kq80A)ATOyQx<3(LMJExvkgOKae#$JbK-a}8|`nI`xaL#9?2=gnyp&bbB zL~RBKFGgO)PKK>b0)O<$BXN?EUdDl>S*k5Obi8|}U8%)O80VAlHdq*5`E4KH@u*Jc z?o;|dy)oUQVpvQ?H(xh*$R$%AG?k`xE{Nk?Py6Xh+q0o2>uzsssu}EmUr4exMjIDN zh`xAlp@?X^rGn+6j9hhmYcO;M%z(-E7t#o2^M25wqN1_1P}Hu0{~`bSYwL7}HM`G~ z{O8-!cYQ(4Hv-+83(bgghmRjyXt1!3tT%M!|Jd1f0;M1LKTm^^ly}Y?gXdp&19@2X zy4zq191Q77?XW>aXM?MYW9(>zA57MhIvh6NgPU&Ybxeqed~PNDimIo;UFsp@04Z)p zxI@EgsqMXUn?z1g(iU7`~Vrp%-kU#1CCzdZ$S@~{g(p}X}Do7H#^^q92BQZZAH zvdT`Sb#z!L@R>-!)Qh^Va~jO@MNv~YO+j|N1BgRJUIl^ie11{}sw$AxDJ_2w$sz54<^FP}Kx&MI z?qqp3FEye{$s86t7;a-E3U~K_NpoS#77muwQCWUs#{ThH`O#%|SLlTEd1KGaAn*~m zqVusV_TJ4w4HqBo`S0zdmiPi)2?1Z*g{@nO1H^z>;{xLV+;YC=*>R4{KYJg0%APkj zI@?Zb8DD#U>oX@*iEi~$o1fQ+D&~DG<=DUXwdlX}sFy?PZigv-led9h?+@#47{3`X zsFVtZ1;Hd9Mx0u#u9E(kefQ^ZF|vxm54>GVnk{_AM7V1UZnl3c7GvP7 zpdDUSBO*;XAM7oh2#kK81Dc8UQy%amm1ulR&!{PaI_84;#ItRn_O$?lfD1ese8kxQ)DjC$N%_ zcI=>AT<+x(?DDQq1%G_~uqQTmY@|S94uSLKJ?&u4R>pPvEae_?M5TWw*eTLagNlU1 z>+7=}GiL3A+*c3V-sxr97599Yc;6rORDh4<=fTx~_yUX~UAlY%$SU>y12Yf39_SWU zW#N}K1NWqJyH!(p+?6*MmirJgWNY1VMPA7em^?dE;_}sUQPXojMiUvu`HS)|6l*y% zjqyG2hTlsCN(koi2;(Zwt9^S(Qjx5%4_}bqc&r{1Kg&PCcW(L$I-1AR{Z4k@k6wOD zlJC&(k&CI(uTciq)+DVKTi141#+V<~Yn>Cr9DAe$1*1`#T}EYqvA);y5HU5&o>Qr1<8Mrc^Txdb z-L{jHSMk=#8-knV4G{c_)5fPoS^xoR3FRMZOb%sY0uw_BQ>}ptcZrwtEMP4bfP$Xa zg?A-Pv>lL^D|yjuEHH|ow*`D_>qI8cqK5^v)Yy|H%ztt{V>DAGUR5+$dSzhEz(@slBWjP>D!D5G zb)j~-+@h&*MSh1D8R5gCV(PRl7qee0l>u>lkQbL8d9=)f$&f|SJXGJBnOz*{yCh;G zosIp9cxu0)dwiosM8+sNtjla)ah0!HpoQGzjYZx)k?j}gQtL2&>nP_@t2~9>cNOoz zm$%c%k%R~8`g+99y+pRtBDzMEjkmG-q|#&dLDh%*BtbCD#+E|@f8JWB0AHeSfU|&& zQemzJymy4NG;0Aa9Z(jVpr2=LclEi5P}gJ+^v3Igi89%9UU$1xNFIj1UOESyjWcqp zjWO3nUbH(6YTVi{2i$P!9~(3xu>vkyC_woMuButXL)rNd+Y8ZU+RWh}K*g;54=f%( zdq0E9SPwb}-!bUs%*TvYKYqe|+<)jV`&fU;Uj(q(N-I${8xowm-zq*RUGYlJ>p8~5 zqiqTV{%$;k%`6eluumV8>O`0XvQ4c&E102EbE*&f11OU`2(>SsNpY`|u*X@lbWk}G ze`-H;A8*b#=9(GHs_NKvJ%0@hpQfc%z_;GYiLD^^x;$9l%GJmV?BbOgx^^x^{zmB6 z3=`OmHdr{eY922yGCo$!IC|#IqPiTv7yFa5x@y(b7HyVai!$OA%XTvLX3a15T0$~O_gvNAN&o4Qvj)MbFqWxIDFv&% zIDf96rA~nDczR^Qnvx0nz14|l5A37649F{4#kzORpOqP$<&JD@y7GGezm%^F zlV2IIqLz*j>MwSUr_}5VKkf^PnMMVcEaq)uM4RMnZ1@ENvY=Zx+j76=-4u+sJhD>f zP&=(Z{R46oCL`N#nd@0e)Qo-Nn;JOCH}?jw9|j6-->iFGvWnIk#|5Ob2y}-8mRNvmTncR0_F*}d)&z(OKqC^;w!z9L@p(MU9ZNw$D3V)NF24# z-W5>NhN#k>L3>)b=*yaMB;9MmI9E1Bm-&w=({Jk>`r`($Wnmot*hb`&Cpi+?T?gl1 z3|?k7?h)j@+-^of9t!PY3X`T9<5kJ#;^FCUgR?K1t6qIpj2S+sl~V-SsroDE4x0(B z({8&fvO!(3lUblW$M5)LTBt>yyy8{7yK0j|m{RIqjjUyLUD0Q}r(WUb$c2}-GUiPV zB6`08qo1ux;NZUP8C<4j9H$)fnTvILKR3Ht88z}=dd#i(*AwcEf(>izjpK)z1HRTlv9g}IM%H^_Pu54Z6L*X*9w`^U6__CzLDcn^5lWCU zvRB$qx@>{5&gb^Y7s%D)gHvkX5LFYlf&@YsI*52rKcsb3l2=J(9Gv>ewy6BQ!$ER# z6+&mmv)HP6c6%$2j9s52O9C(FJ)oR>`GV@to5_kz*{gZ9Q1(r>$MStVz<#pfDE;R` zk#3n{e<#ay&PBS@Kfm}5j(W;7$mBo1EId>em9>cn#_Q|h4aE24Tha~S{PUQmn{9$6 zoqBq@lr6jknjXYVVS!Z}I~B^ww=B`CM!uBhT#_oS zTIYmP#VMWqg_LA`H=;_f3E(aETq-8~^@s|!| z2)7dv4>gb5Mki-ZZ1&R(%6zSDeYuFJjg!>?DMpd7;DH6HrgQ%2#Y2nP4YD`eGW|O; z)?qY&VDcN?#_{jLhTNJ6lw60vW6LYOq#r!mHE33Qhq^jE! zwza@lqLS7%qwZx!@2%sSiHvOCDc=;Zz8demzVGa z)Oac+7;a9T2-2dHbQE|irl?ttuJVoy*M1NW+sVOdt%!}(oI=$q;O5g8M-;)z1S6WD za`XF5kCwS6*Bd$e%vD^e-;0ZV#c*I^>U`~YqC_1+z)cv7818eyz*T2^&J`iSLAZ~ z1~w|f-=2sR28%c16}o5CJer+4@}Mky>@l)trYMbgX~)>x<{C_j->Sm$o1PgZzX9rF zqD(IzS*1@ENR@~SvH=uyR?w&0VE-cHM;|V~TEliHn)xW`SMRSYtG@NcNs1?glrcLfYRTQ~MuEo?ts{u_cJJUbG@}gPu>(U@;or!0zVAh~ zeJU=kw|wa2s%lg%GuMWD&_dXP8gFRI* z{c98fNT@29d%-r_QINNqL@CUVr5}+T@mFVcG}c7X$PM;NAaywV29zQ0(I+=NKf+ck9$*RC4{2ru5^9g1)O@o*mQHtdxb=Zte>M7tf<6P+823|AZn zAE~E70@7Kb{ADg8{h~jTV0wpLjDlK@bxGaaoVzMtF7>zBu^hbiVdg8e0!9wwSGO>N zr5L9f%2|7chdR`Xj!!&`{<4nETJht&zgtRqyY7DWcYz(~(iB}zjTp1@Ax56d_nr(A zE*|)WGwG1K0Rta4%Cc_EbgBD#?l8rNu=QH!1qE(&K3m)iNvsH9jWzjo;h(>HzBVA0 zEgpyRd-yI(SthXT_54U)ld~ItrXt9A{JCpLa`Gz&h2wZHX(PEi`4Tg5#@E$}LgFkAxt?j|yp+zeTb(dbqiUYTNe;y9~ z)&aBDk`XrodqjV34b3Kff?;@ivuV=x^5#Lk^G&_v1|3L-4Rryx!$5&#mX(O{8X|4& zoZ``MivHK4B2Qi<9_Bq+>t!wW|flFh|6YJ6nfd?IF6)_Bg{65;A1^_EF32B<$un3Lc?& zjR#V}wXBlPWC?TSz!xGA&Z6RV=B?%m9@>Gj;2e2md>h)Es)O$djI@VRGi3XaFflPL zL1}v_!0rztOH&ZKDf8>3j@S0gLD8$m^A}4}+Q@S1^}kUGEUz-WUoQPpbqSHkUEr!_ z%K!VT6>+I`(jU3mT2)w;Nt?bYCvbcnxv6r}%_Fx9U5^^8G94IO%8l10>hL`wxC)Js z@~Ac;_~}@u{;LE8IqWNcN!l#|U3paU(|{L;n~nxQhDcb(oEsL_dX(Z$$#qZb z#b3Mi+uy3+?cxgaMlTXOXk4_xLUYlyU)?SJ$Pnx&DZBj!Kg|WFe=r)* zOF@>my~7r8Zg(x)?J%3Z5#8>;@pkw42!}nSLY%rqe@xH$F|LB5=gFg}^Os&V1e7KD zu!jU_&T=#!8AHz!=;N9D&waniGBo~zT#&zgdCf?~c^BON=JM)`jOkkboL(KI$Xe3QLB*U)x#fY7%qGSp0nd= z&ku))-fp&sh|-i|rh02B6(}IC!ea_D zTp*`Q2(!EuE3 z*N=NMgW#-p&#K=5s2boms_ot{9YTHcR`{jb4J_wOpM&$P5zv=lg@EcPUvssa@w7)J z3dhYJP7j@8I8;oQ*^}o=nwM-WFMx9gq_sSBX-7IaMNfW|l?KZ;R+SFsWf5=X1$CuW zw5|8u-D5Er5;KV24H!(>j?GY@rrs72&IDlw1y45?k=ue7<4wV^l;t)g8GZSZ#a$<; zWKQuoAu+qLKPm{7fR{Id;qSHirxdsq4yk1rw(Cu_sTidD6Y$$|i41?X&+F*`A7!*c zA4ejt<=F`LtObmE&y$5uh(XJ^s$VqCOMecAZT|%irnOJEJln$ zz;JVgv?p=HhLgU&Ck}Eg7lO_W3f&)wa~CcNc&xZxoBi?Hj9T+fX_?J}48H+9+c{6| zEU#|IUjCh1?*6-Dm&qIuU$jQuG>*|ASRfY)OnOTAhz^7FcB*|oapD+Fa*Oa`O?7^%1%(SbeS@%tlaOJ<-Nl% zk4d&cir35ng-C0^UjNG2xmd&UFW`EcEbX_kOQBrc6)+74209=lmP@SyCg&(mXIi#8 z4C@K=l_SoRxO0Fk{&*NL$+giUTDEj~R0>&a7jE?dsiM0eJy z;G6w03NmmRGqVuIL&}879QuT3K(oNR8=ofx2bAbGPiN%`yC71Si!-`o?80>geP_QXHg(yZSDK`w@ly_0f2H!BlGEcNdWuxn#RBq9W|uOe8+r_UFaP9G zRNmEhi*~43I}BnLlX7Q+#1 z_w&uqiKv-#VVP?BhLDichb1K-;+hD%p**Q(NGyfm+dWLTmF;zWX7i|4CHy|@FuQ=k zqpzsaH-pW(uJ)+XW7M>INtDf7v(EnF6)V_ z`4ECr#}~nFoi|dqj7iOHDo$q?DP6=fH&7t3X|V(X zg$3#d8uZqs`!&bMkh`oYob-9aL03&eu8_Pdp^7PA%EG4Ab`KVxeeHE+k4 z@q8BB175UF1)aYA)YSUij4Q#LLo$TrjowQk1@aBbAB}o>x)Waf<4f5}H&sNRjTvGk zt{0;up?*14$BksP(e?I600InZ;l`z*ilP>&r5eGSEL`DXs; z>a$f*nC$*~ibd+jmdqf>ebeMK|50J`xdg+#2I~q#UJ^NCm~A#~B}aDe1pVGw&gy3o zA{}aolpSl-M;}UwNBTXq(?DBEDAMa&;1Fzl4Ey|7o9i#;7%y$6$_=ufQVd<8DDmA? zxBJ3%MW)<24e}gC@|)+8cT1A#L5k~FN5+97Zr4V19EFEVgMv!NFP)s&+}fYSn;B`-y*F14NZuBU~%a zDAihz)-^}4KjztS*XalOA+hD8P^8g|He%^K1Nrd`W5^xW0Kxkg0=p~l$>}nFI>a*Y zEq0l$7jWB>)HStC*^wG;I&~>m6^nk9G@<5?dJSf6AS0FpcEw+kf+-sf;O<* z1xnj8HQ)L~Wim1bEk0%`w!FS4TvA&{!1Z2PkIE{wmm)WBKbQCl&@ol@iXKgaDQn1v zFU^S>Vj19pAOUJgr8ZTn^gBo2)NWDo+qZT4iGBNs@fuB$)eRH;AZ%%6nCvW_kb;lX zdtxd}Ad%z`oOmpIa<3;gh2sR*F+?hMpZg$rhJmM3=1%}5G`TwFkmhgNOgwsrsf47@ zt_rCGzwww5gj-KB97ug)!+R#zQ&J&o7;AD*i;N-j1y%OH+gpne9PEtHh*kLZv!| zlO>iRORfwC?;aq!r{J_AtIQ07T~Wj_eXIHS*>acfoC(>4c5&2!PhDC59O}?BOFZ$9 z_mm6R>V2M9ya=?_Iwg_H>w@ncu^uLt_|tOO%H_%;InJSzY|#iytVDd_Gjy)%8>_BV zyZ&SNbGqyW*}}*NT^C*5+%A4bq{PcLgn&`>f91sU@wC6UjV~UJ6&M;fkh$ba7}2_f zT?ezg8?!h!Bpz-h<0QZI+hPQnc6YNc_^mum&txA0`RRT*FmImcQ3zW>{?TP_hz;Xd z5K5o~@}H7$Zyog~8L)H1#^7~}GQK)qqZ_}?*C%MjTdKyV_Vu=XVzHb}18}CJUVj(+ zx-Mp)w+2_HBBtqig_Hv22@Z?>@$>dXuMw~VJ>IMrdxM+SO@4&%TV^#G6)Q>2I~|MWsHaR?n7BnD>oqWxK{4(V@!3xF#<1ownkhVJs7 z&!Us7t#V@;fv`-?%vt(hGwOaEAtj-URlrK}{8RgGdhf%!-cv7RUNSBj1I-}v4`L{xRHgcc=;<2mLc!|}7Dn~hJtQ~Kg#v;V zXX7v!b4veU5%5#_+%xw2*&=8=_>msYTJR$fs5e#g5?2TvM3?H9RVZQaF-PyJm~Y3N zl8l;gS6x@_RkF{J1_YPCdQr`T5kdU|UCbKIB`=f<{wWHk1HJLw=+7*}F6DD^E){S{ zjB>j8xa83i9F37c_}VGuxP6#^kmq*8Z~pi{uLj3lqQh=4{+h+;U3q23NXGy8lq=eA z!4yECyVEmk#rohG)T(JSKgKB#e=$L*OXfQ**{>VdQRWEiT{d73WAD#j5;X_Mygwf< zG?DqzK)znONqr;h;&AMsD3{E>dN#mEm`;fg6T5h_i6lgQkQXL*h&0~OX@>1zmfnBk zbUWTk+0kOP<(jfXdeY+;G}9=;8mw38wrCf^bnpc!yz0s1#034Sbr+rK2H$&}g1hug zu@5jGNZTgSIQG?prHxKfWIe!`pikaba@;x?yT}uce7E3A8q@fO{-I|_j}to;>I*!` zQ;2vm9`Nw@S(@L7jqZYz_5jW3o;<4USpJD%_O?l|i$?cpKGO!b{z4l|g?mHn8MUGJ z$(JEh7=Hlq6yv*9a6K(C64ZY>=B4j2K`RD+rP*j@Go*G>6xf>lT_&pTa+u>}sEHK3 z`(4OZq2i#V^^_OF8mTX1o|+Z%M7hl{MW$+@h9ijD%lU5~`T5D2A%A^=T7==W=n#+L zO9F#kPx4kWRG>rH^UIBYSpG%JO)ok>ryn;-=2lhKdAXh+WMbs7!|g;*f!#9=!Zk*$ z&^BWeCw>(b^N6GnSb62d)7Y1CreSt%C;Rk=W~T))$Vp&PG8gf{NEN$s&MFoUbYXB+ zi3_>}FXV<+fi)vu<-Iom*CydrURyorK4I>!V{zwWAzqcMi$+FT8$=?vf@mH7-q4u0 zzyiBjzO%^oR`Q&)U~I6_p=o^Cz5YA)_~1y6j_%t6Km3_GSnIaot?vqlNL|vET{W%4 z-YL&#xuRHHTvoH=ryuN|(x$!Rgj%#+R({zdLx}#C>100nk^pBw_*=O}Ah)bXv&5>! zFwH`x+a|j?4FzxOE(7!WfO*A(J4EqM`Vt={3-B!nb^9$TnlIGB-X>)Fah(?Z>@4Jh zG7Nepp;F^0QHtCDAy)_97icQv1a%O33@fxcw_H~G+i+jqZ!ws*yLMWDI^CqqvVB;9 zG>QeaebCCy11&c(cHzPMCYJ!_K27J8)q7K!JLIr-I{f&Y9JAvka?%~4MknA~PE-w$ z`%_hI!^)zX2h>1G=kRpATE8}ESy21kr4WYV<)5Z&FDZDJS_asBi)cOMhaQby)#X#{ zXx6L9uU}7T`-xsa#X2Uw`?66zer}dbQUN_E$;zb|hP-`?laX6{Ya=5_xCgwD`FXVjEOcMNP-6Szw zVEyxrI6A1|nX{y?pyN4Z(%U`9#(1v_KX0y%O5Va?3N*>N;6AZb^5h9zj!xXq$&N1n zs@*RM;XZU{NI)fePvrYe>0`F=7R2siMelBLFHlAwt2{bBL=8+s@4tixZcDqq!1uyMLSKN5j^R0O zigCzcn~+~}M-InqvI`t4rsh92>hq_JP}e^l^9$RG8}gb5xelAjd1t0*>ta(9B#cj# zKZH0uYjCc1)UhGkFsTc4mJdU&Zh~IVrq8L@9n?Z+Tk??xK2%~5={zLZP7&et5w&`r zw+BGo@y|>ITPrRj9eCR*HtDt*v7UEDunyW*M1+z#^#-Q&mWaGv})uglHt zHv3^-mzneD`orODv%K~;bIJ9K`{Df3it9=y)e8>euVMHr2+o7odS<`Pb%6V6+*Yvd z^F48U!fEGwzFz}LSeE|&5P$qxZC&>@_*CA7d-;8MRuU>?aLG9XBmZjbEVu;kT{9xg zt8$VcOUGM2_9(p#&+>cnc=`GAt%xtbOZyYhb*BMkT$d~@#e0<9CEO8PFG?Ghnv1U- zY2X%9k4Kq9=uFMWt&C1Qtv(5BcWZ=cC7@yD1vD?aji%){eqSv65v;g@=2bUvV5tlo z#>Zm2{3=>lfL=*hPGC`&(8|XY&il>FE>k+$KBwWhR*GYY<5jY4^HNGj5a)7Qd3r^@ zVk?iIO*1!Mao!v>ExZ2wdFDau^6NM#a6_PF{YQOX(Lqo4QBJ5O~X*^(^g!E_m2`p zp0a%oSKPx3=SuiVsE-*^r;ukHyg8_k@+>t&y0!r{#*DC<_E%H*s^g~c*u54xNnau@ zZNV&3)4!sD(pN~zlp%!%O{p|UP9vme(Dp~59G6N+$)JG^b;MIMWk}0fMuUYFLQG4` zTuSK{AisDG`i8S`^4vaD)*2!q?PDbKHM8iN*)$NyqI_tdk&yPONOSyDE&7MEkz2eL zi5Z_$I_d<9bad?;$~R{Tg)N-TCruGAKUU!Rbrk16kCQ=`r{X>o=~FUa11R6LoUafP z@hPlrRIoNO1FPIjpc8Bhi}XksCr3lu!w{N|*3genfn|CGb_Cf$CD;#|S^2O^4S`{- z57feJk-9S(>Gpxx5aWU!(SFz(69wazZ0tC(6RM*-pfOB!Vt@uGBUC>K>O=B<3RfG{ zBN#w^!~koLnZa|Z8K=qW1lNVR^?>(feDjt&<5XUhE+v!0Xg^a{55zv7PvOiF z^TIrF`7-aj_u1n7<%4MJ44o}+2FG*y=Nx^7c&ZBxEgraZtrHEco}zAubj&4{Cv%!k zbwS3RjBDPPaV;xvWh7^QNn5(Fx$%Mg@h@7m4Yg365lG zlsWhc3F)7rcCQuAUuj2YPlAX~rt(vylhqHhd-<`#PSbMca4E-6$G^xmhl%uax%-7k zrsv4WS%e_J_pr%jJM?LgX_n*zy~I*j1(!f8Gy+yZrZCS+!n!awtPhWeRe&cf@>8H4 z>W&RjS+EFlfo{AXR=YdEI(Qd+!ct(G;189AAgnqR0*!IvTH*7FTju$N?GVQqKxNzj zJ4P%JvriA{$zmdbl=GnAo6CFwk}|#!TsF1&kS}OM%b`F~H=d`H<;k`!_~Wvrd{Qa? zCEJxlaUGctnH&F{XWlC6#$5h>4U)6IKxWno_$QfRd9WL714ED*k^)2W)k}iCvBh~C zwuiaGt~d);5%$>Ps0;IqdYC5q!a6S&LBSCS*x`#!;jXaCNrE+V9TA9aPG+#JZiem& zcWT>pWt_7gXP)J@JeyOV$T zLZo@l3;7Rm4Las>Wxkc-=R$FvAM@qP^+xkD#A16l#J zAD#-UtazAbr(<(U3Unhp$)Cp($Kg;-$%Ub>Aq;Xdu*Js;S`le5uwD+6>=dl`wZfLf z1lW_GH}1-(z9ZW%3yQQ=_;H0zvoB|G9pJtl_3_LOX$zjym}jMSTfy_oe80%6;9g=<*ld> z&-q~6R~(Ccl;Y=Nmgo8WIB_DoK0P;`FKe?oy)5omf%787q%MF%;1&c1X2HPT1FA9M z(05*ktr=NZ=d>A`Y1zQQu6JINm_p@Tv_+Cyu#)HlIDe0O6yVUpcSx{+S4) zKDmr{DmT$Tll7xz&n+v*@)|vyKHn&8I-TMaKAibc=9=w4BX2pn`jg0}_oBYRUe48X zn`O?F`*bhnBP(lV$m03@`Rjt>`n=_|vg=XYTn>K;xPL}@#w9MqcB?P3GNk}UVGhtu zPr)`{eQ2hZAjc{g+k-r@gLpK^s)4EHT56|bVHlx}9qGw%anOf$LIL!mTw#%!M16Em zY>x5AHfpnV+azIG`umxGEG+NqyN2+(353+mAZ*X{EJEuh5mI{(A-g9Lx@YQzxED~b ze4ZkmQhIrONX=c5=WMtluKoeSDScvoDc1OUpfjxr4-3X{D6I^)@_X@U_Zc|(x*{q)$>4I4n;g~<;TrxmvBJ!Dh{Yz!2u20uD*&U0`E5w znrXjzjVw%r6B;SJk+%x)vHaZGczGJd@!aj~{ygyq=z3zS03EliJ}d6Mbsli|evQ-E zL#UT;8&;mjf#nymU;P~F*PKQD>NB(0yZR#bYFwtYFJrIzMbxXDN4@F=I`=f1*Ph2g zH7bKu7tyrx9Kus`pwnZHEq#X2>M@e=XF{(rwEE;w+TYqu1BP}3Y&}F!r0Z2mFOHvM zYo{T$v{72xihPyx6j0~Duun6j`tN%4pZ#Uho2o!*L!V9P(>#35FWY^cGhd58JUkYp7t;b za)nJw0!)$z`X}fvI66*)7sJ__3t9Bbw(pJ)7 zfdvUQB&V)IT-x#%IFC(TF8EGKSwXxK->EcU;N#@wR0o#Qb}7ZvfPl8i$*YKeWuBhz zXC$vCZZ&DU1}X6?3WKbQ*rnG)0C((tyRexD1wAY0#p2upz(~+oF>Yl$#3Q z%tUDVy2CI!0(Pm1(259xzFQEy+(Y1%R07|f;V>`FCBDsxSD7Dp&bt!d!{i@^EU>=c z3|j~7;k8!}$zdKcmX4_66n@>(zMI5tj6W7FTD%rM-U*?@ZJ0{zw^hwNh{B!=e z3>j>rY^#~6>t@TD%S92d%r}F1&Q2rSCf@m2kxqGEaXdGEJ}B3hm*bx2E5hb*_iK@s zxC)uc8t{)dhDLx790H<|8JG^!_z0-`2Vk3<5%j`*;FOySyAW6Gurq~4MguJ4LtvMk zjG&-6_#1>`Ylsi*($ip*5Qa4o5zx1{gF{6N%m;n2VUXH%VcX9+7yL8lbgW77oBPPV z2Q0C@(-c9a>yebHg5*rH?KEodiQl+6?K-#NTo>45w;+5;B2%E#(ufs~@#BM~s z|4!IO`9nXQ##({?WT)A%Pf3PVRxWnLrNbaR0Jf zgt_@zSf!E=@NtGtY$}}7sqJnlz@|a&H_EwI^5L^!yQh90^Sq9Hx@D^YlF5h5cveG7 zD*N#ld4A3}wco_0g45(w>bDW^+W)4t6z_F@^7(J-yH%C5bB!?GkdbZh-etN zZi8M@9yaeZfL3Zg^miI!V`3@HeJr7qnhSkzE10L}!_wa#T8YWf_i}<+XfZ4!1E3k= z2O~#K=+tLGlQ^8^S#bO!*oSW!BtK7mG_7uPgj8)qBJrG*MI2Lm&0PLiKRtok@x)~E z-^6Wl@-pI=w+ikT(sn7?J^A_Mm-%C)lP_cLn8Vrfr7}@Ys~oPd>9j}Iy=ZX7ec=`?SgfUMXrYXZdjt2b zKf$q~hiGoRgPXfcF%@Eh32z-t`08Pj;irfDwB_Sp0zT*0oX5Bmw*$BGx8ZiN7VZ>j z;a1^)!WP^r+JfegL6q1}AkXdwO7ridta=*NwNt37nZn+EGiYj>!GXpH*uQ^TGz(u$Cyog(?kndr_xL&Hy{0@5M)89A^84*5 zTF`>#b%&5+<%J-lXheivMr6im6gl-H(SHcesT~M$JOICtUc^T9Bhs@6{yV#o7@$E+p@y^4!^l0=q+SPd$z(3J>=iL%DB1_WL#=ujmxg%WjFfp{QeuI+ap- z6Rl;J&|J6&fysxFZoe1d@wr&v*$$^&M^G0qieT>oEROKNS4!M}6yyUh`vhcKMZm&w zHQd}cBEu>Zu{*pGW3GkF9fokTT7fL19SG7ZgrjjMDps|jRFvcMGGK0t7Bo;96Ss?A zET6fMadAM@1wK#kCeKf?|00jHKZjQZev)$vpXK~V&i~c;sufim>Jj1L1;?ap>~a`E zp=}48qDB#6(|~HTW~4?Pg5|Dp1jGy?%<~Y6wzVSLyBjgSgUB}SK$>$e(%g<9!n+sc zMqS8v9YKmqH{$I2&}7$yilRZJmEE3~?_}b;sr)hq3U(niHV?t!2VqlCi%l)$2ilvF zk=~0kr(IYW=KccTZ0Ab?0}!W)4K%_)1_y@NkFmVLsCf&qsJHlN0QAufHeEJdR z)PZcv9;BHbL2yV9yfX$-;4p+Nvkt_196`Bf8#1e8JS%g}ZA2QOxbiA$3a_FttO4;U z`Ebeag==~?R=2mpx1tX%M1>O13UHYgk&kD*$kEH-a{o`ZJ@=d+g*?6TH5GaA z_O;nIp=u%7=jK>=Ijl#rVFQA8_7Y$FkhEhjO19L(KD`5xfk%*K+>AusIuvT}$Ii6V zNc8DLn9nf0y*l6$eHwwbUC6L(f@^dy{K7|3xa9z1eS6UESc|lZ`8iLgFzo#j;boVKZ1U+I zZmVEp@flp5R>IuqeYiNTgth4haP{7VEmmQ0(C9}$H=mzIy6y+^R~Ko@d@2N361M?8lR&r0?k;Eyl; z0-)x(6P|7w#O=S}>$w_%0VY&ugAk|ViGrE&Spuaf75#PhO7WLww5Exa2wTbq#UScX#lJ#dKG zi!!|~M8_P1dqfu!$ycWu^&{P?2kEX|aB!?ff=Mr;tveACa}??3ZHTZRM!4Bw#6%pU zcAyyrmJQe+UP1g`r9K*S{4&o~WtY)c(1)_3YGgT8!L+&@x^1m+Ywblgwb$#&U$2P@ z!y@8V!86c{%>E^M554wW54k1NIn1B6mvx z63n{DHjX0KvJW|i-P9KMqSB}yVSdz~-9Yu)klJJ8ZsfQRA>OJD36_H>-f|czktdL6 z(TYfyA(U)tML_liM5Ua;eve8?SeE{N-X9Cgmv7v~x8Hs%51IS-1Mc3rh3~)nMt=Ne z{_ahDi{iWqu^k+yj0e<`NvTt1)oAI^zW zfUhwhCezm8UZpy2SE=D1ryaOXpZhfq4RxYJKaE0S`aoI>jU38XblBBN;r=?7+Jw+is_3t>vf zsSWpOJN?o*GEn|Ga$MZ4igPt;0+;L5aD{NaP8H^5+wozp7Cy_- z#K-v?5v-n#yua;-O=dJ!wAx|uerqfxEZJ`f&Dy7HXTfFA^YKdPB$mb?0KBV#9Tm}BafTep)bpS&N(yNb)TnW(7s5k zXDEwPN;|u+4CQdje@53poGZJ>Z7-+cYwT&7z;f3Q@b!&?muC*P?mvaK2Yax-r57q~-S90rfnJN-II(U5XV;Uz zb7+EgT0E9UM&SeR5PT63A@Gq;C_bd)k7>*MANYh|rFRq-yNAKUv;YBij&Rdeh1>ci zaNWEN9@|vlY_k$prk}#meJi#*w8Bs0ENZ`^j`GL7DEs6^lz+zC9*QF=qJou9MF`hE$(pa7pb&gu`J3g^eRA zViYlM!w7a6L1yq(RJso!!@e6?hJ(mb6+R93 zqk16YobfmRV7OanAk#DfCbnzfvQrZoX2poz8iZ)0?a16>3K!EA$RZySu&o-lx?|Y2 zXb@$BgBQy|@T4eHMOiA!b9SFP^vsD84}xbU&P5&gG0qiv$+w~oDW@k0zPVn>Ij{Ia zDX$mupm62<_*kBY;+cLFAM~SIjRu(RL9k0IK#kRLlv#GeIr;?RYz||e@nK|!cfzvf zG(uueAjYEyRhteW&wUWFUPn=E(2pF45oEdaBhG6SyY*=x<9ZV54*f{58%3viE9&!3 zBCqJltp8wN!@M*9S;Y5|;z^v&u19WIDI)y4V4c^9)$M&y>Fhy9`bkvSHQ=LA-xv61 zJO9it0=_myNZ4QjLzA!IV{L%|>jZdt#Z&kaL>X>I!X_P5ZmvL8 zePjPNq{WrNEo&UkDTP?k*$=PEQ)u@&2P4mHeBd84%QNF&z5&p5FGaXz37j3&;Ow#t z?pxO*Pcsl1n@mx$(FtL;_V5pjgpo%iJhq(0uAkzWZB!h~%Wt0Y6uiiJk+wD!UN&ox zt$PrmJ5bHY`G zSq&lA`^k6r9WY1cLLTN64q+;<86*%e;aio873j-;MCl zgV?dV0tUS!h-f*FlE@*b_yuBNSPVXt^Zh>A_A=@hSbJx}-6|hBW(jb0Sp^H@PvLC0 z5=J}TgQM+Am>awgXOAsdXBr2a<)=_JU;C}#h@jwawmg;h2?|bT!wDQFc;kIJkF)0} zwlB5gl%DgW^lZz|IF&*c+ zjw8iv5Sio)4s5POQ_>&`$Y;y?f)A0)eMUL&1x2*YeSqA^i-<_+f^+340+Y(%G&ByU zmZQiEIDL#39QGnbZxHboLx_wygFKUN#Mq1@%BUB~5f@Nn(S-`b zCLHqLO`KBSUvT|kc5J|0Gtc{qCUG+R80vEOqR3(o46Ey))zJ@^Lnn}(egdk#{#Y3q zi;sz01MiuhSV3gj7IP#XQXXTM6{tR+?`j$aQlD5)k7ObzV(POK8vzX zsoa!!R&dNv*yLKH*0==B@D8O6f%&f@4MhOxf1u z5c~3bm<^Zbq1gW^d`xY_=N;IulZcW{yO2R`ZAbw5O%rOL^~R8EFo-I{21NPwqfX-x zDs)CsU_6dOw_`{#??bBTIQi-UWJR7ssYxed9gbqxnofk|+(LZHRkS%(Ny4)9_w)W( zSiW@qE}nfozp%{lw{G3SH{ZNrVfpSiD9O7kwqqlYaj5kH?l+X&j_ZYO##|qr5(4cS)G)MNM$mu?E9B)u3Y7(XU zX0WS)I?wy3QBTj;)bRiZ4n4&Fwg+@PgWSd$q&LhUG-nWYeg$xktV43`4P+g7j0`#_ zv*7_UD4w^Ow9VKr+vhOFK8O3Iv>{>F6=XF&REnQ|3F+dTDU9rK#noC>4CJdL(`O|z z2qT3WxUzc*?dHvl>R|d5+2poV$$9o_cm?9l#dS{@7g88Ckzc`Y31o> zqN6cI>BKd)v@q%Dh(|?5c(P{?rhR>7`Ey$N{mfpE_ZfV|Vd*2p#1F$i=m65Pu24GaWKvjI)Dgrd9Ybc$ zbwosWBQ^6Ph0}ntn9rLM=gviD$ux#D&S2W-Ao@a&BQGHbArTF*sQv~%{*mzV%EGpN z$FRP&6C0b4K~bAz_E$Tu0JJx#)g@(PzavVbD&R)cL4Wq_@`a`bAk>=Qkc)MX7vTVWb{A0)| zra@`xL-H|$uy@QvNcbV-7TzPiXK=XWE{^BaAv>ZN;enm7&fkxg3&>nI zM1#{8%Z^dpnaiZuN zdV|iOZtcL!oYVO)9zWmzG3@$i5Mjm%u!ylhv_&U!jj7)0_o2#c2qoHw;p%q`fx%q} zPB@BM!$A}pbRxoe6t()jNbnv-vO^d0&4-XhgWK@XA^2p{;MQ&odB#0Ra_d9w&JN_4 z%i4nM{5uE;ZicgKA>xvcA(!mBs%!%L@+MFo*ou^d61ZlMkWb0Ss*Y}WR~|!~?j^0xRRW3vg$H60OVXNQ2Wa2R`r!&B=d zs^;UFZF}P&j(CzCksXRMWM1U_avI*UogTCrCvL}t?XpkbPxjm!e1_`B5y5kB;AvsU zigGXi@(8NQA1mxvkr&%G^WSEDO!xxkk?R}h*GKs^8;z1}Uq^rFIr0G%{}QkAJ6bNnTQS`Q${v=wgALkJ2#filfD#C!Fk+o~Qp^7cPF?-tdcChT-8 zLPE+3={5r^J$bs_Cd|xAB)4H@QIx7kI1%H z_(j0RCmkNvImj`OgWJwkur&D;F7_*7toI(A>{i0U@O`*=ZpH?)7}%~nhDv$4%ms7E zoUxq>U#y7Z^b9IjZr}Hi-)D}+F{P_qK=r`#sPMzZWb6C33}PVSoXi&aJmR8iNsqA4 z*}Rml$#sp}2j+=Uv9KGhRIdi3&SNO{0>)D>@&ZpF&ZmiZjwGIy?AuQ!GB0=cfcwtX#O*)f?Y;&9 ze&+D74M*HoKNN1XM2vwkHu>*_u6-3smXR-3Dr*IpmwM_q4aJ_9mD@aNnCH5+{WwZ} zTG4-!bJ?(C1brcA#d!_e$<_m8^+4oHJhM;Ovz~b7V+BXFW&7s*2ExwGUXy))E%hA+ zBhRDT|1`!kF5`&Dspow?#l7+Nm-75+7b?FxgdB@TxP=d+PO}Atj+Ln1u@8=M&8Xhq zi}<(;@Cxrms>KMh^@fm5+Z^X!I6CY>vcUl2Ec>ZXb&Bly2%>Gr5NX^^{kgN)WkG#h z;{!MtSc8J13G&%fh)X<5{j)r3uc^&1yf66QQ+yXkbH-4Uw+98*yJ1va3+=<**x5dg z?DTP{`}sm8G8&%|w+f!ww!aLBfOcpAOpT~7ZWW2(%}z+$8jonBo$wGZ75)l0&uuXF z+l>g5lT;?%FY(NL?ONH3o`AD5U#nbZ^0b_$n$jH0y&||#aJ-*=fY)i!#_wfYCVnax z$@}EQG3U2;3-!U6C%Io2eA4+0!iBU%qnPVFc6oEiUCUT3sYzS^E2#e}6_{`9Xk8 zSaw{$3{l!E;j&>FPP%QtRqsvcc3el>jX3AAK?uj=t{c$luomY%H{h1Bfbr1(?r8*tHUBZgeo;kKWq5TNH3mQy$3a=~htY*~l^v!!s+UqTIn zI!@XZItj=me5$ZqW8P0@IEl zD5D2q`J+gwyMu7r24_*{Vb5Lc46hdH!*Yj3d_whAL>HeF>12ZR%fj-t-KwaIQGp{l zc2|=nNb_8QW2G9nS-0jF3(IQRW5^%8g@WN*=(#cjzvlB;l|70r$&#@An;{oXzaAUI zqk;lFNKVE~d_3-3SYXP-12Yj3m@qcR)4h9z0L)_TH%E`+A*G#kaS_7tbV!I0omnuR z_VyNHFsFNvn~SNPJB2X)tiN9f#m^2M!c1tW2%ljQ+uR(F^7DnrJMHO-DFTbnoc2Ll z8YZo*FinHKX*%b=i3z5?yoC78={TQBTU*?>w3G?rl-JV(2k@l6UI^d!O-(UH_rm9M z+%yd;?mIc*>*L48HCgDM2@J#(4HO?lMv8mBZ)7CWeRuOF9;Bqmo{#R0%V5ggUF17K z_c1G?OZXAIC@iz6oRoGJRyOf4F!B`wUtHoiViQIYpL86){(IrzoGnDZsJJ1dW?q7s zMFc#&YY-UH3@@MEh>jmZxLjc7!G*G*tiY=jmKTJEz$~{2*@ur{&+sUA^$%iON+$m8 z;U_w9Y=2QKHTZ=y+WROHvFHzLA?IO%v?+q zoApt#J)U<>h!5R#9_M#{&n*ncUl8ZAIMt{>BJPI=OWbMh^f-z7O@l(bVv&@Evllw7 z^WaSi%LV065gF458@m+f>U+T2E(s~==a5~>GgyB=VY%R+htL~*7Sk7>pws=7;IfSd z|1G9t*tePZA->yej|qOpvo7O&{cTY%SR7Pn>r9p2nTQX(3iN=nzL#{wz?O ztG$I*^Kmf%ZZ;khB4m@{C=NLs$37a=>|WC+uEB%Yk>pF%2e~4|%G2dHaF*)JvHUBd z9yRJxy`g;D?T?{)RWIt+4d96TNl_Pgu+*qOie|$xA!hvK0Okz|%ekeGkwJqQr=11R z)pLifeH!uFi=48@zq_!^oU>r`;NoK;B=Jk1Lu7+&*LB1#^VH7#Y#Tz4-)S7nzKXrX zUnSLzQ{~q&b@mZF5$x7+ho_|%gL@;jOMzthuQ>T+a9L`|14y3 z9^8&pke$zc#<_S?!g6u>6XDNw^*mr|9u7SNZ{!uvps0N2cNLad0Ahc5H0vsE^-T&c z+0PzwIxgDI8Y*XQE4e(Ih^sRdH&9Q$mtO*~A3j5V_d2!Z<)3%qSk4uyJ2R+W*@HH# zW8&oi``pV-_o$8Tr}RgKeX_XJOzk-P^ns9bvNqUqT=35?h_4>JN9WwdP}Bus+gumf zrdv$L31j4U#!;=(ix$d*!-b$J7rK55Z$eluEPsrIl#?(t@~6IF6!Z;!MZ29(eZ1dO zSXPL4EaXm}d5BtSSGn9esLf>?vyC3KJ|^s&g=%hxTgeab3u1mracTcu;rqwat_a`2 zJoChW{o3RQ$d+5o_`Z5XJrjMtO)}y7C-H`aD&zP7@n1*nHv5ZH#n&(t zd7j1!H_6YR5Wc-pcSO{KHab`F0-61J;|}r7bXY+Dw zS6PHieN_~js6khC5!^N{Ln6iJ8LEW+H=Y%-R0`a7?vk+{bQoIml&CJA1;Ad@Z z_-<+n58~tTFg;zCPeTK~86Cxw{rmB#yj%#@lRI|`vG}_iH^lvYP1k-*@y`Ya#eF_Z zNx>6}|9X5JkN55s_sBD<@7vo8VfZn{eRJlFc&@Me`$ZUE>sfEF5WD%Fp3uE~bLkQu z6&K^_zI}Ll=n%e}o)-7cQA2$h6W;6&_@GE7MQLdxi7@0+e1_M=E-*$j=g{z zo%d;waR(!b7jdQeo)C#I(zzG*+`(}gte&sAg&SRyxOQj)7wT`}WYKjom>G;Zhsje9 z#h~PB`viKZL)q6%w@x#2EOm)#U%<+YXE>I91sC?; z#^hIE_SR?hPcRokB*=HDndf{BFXs zV&)192>dseb_pFc7`=XE5_g8Dal3yS=Xc+ta(;lZ)QcF5J&(tCzZT`sv(Ro3_uoJJ zfd-kE#kmtF9uk+#^=+IYPB|U(ek|vz7?9lVof2U@_`FbmTL{5Cz`Z**gVU8a1m`R+ zcYB|~7;VSWFNu10BL6DR*O6UN9+PJt%j$*iDLlUMR0xqL3u$0{_&yDUC&X-;!haop z&iP#4-;l6eK>j9_^6~PiC0{dvl#C06bI2@y@Vg4jJR6B;pL6;0-#87XdA929foa_A znZ&K`Nt~&=iTh-SCrhr08R>V1W^nz`eZkd@zA14Y3;)dZz3~~r?*t86nWqzlS8?gU zT?|EE!0D3fxJBvN2b|q?gKYOY4w@YmvyyL7T{us5;X3(%Qxx7sgJ%{v24gN@`ut;D z+;>~lmD9xU{o@ZXns!+TB@eGZ#ifQjLYUwg&titvd^{80oUr^1et``zw}?Vk{%s_Z zZD$uw{l3C7mkZhVA-iL^e~j(-655@P*2b9SZWuE>Xd2fu8(L+!-vp=sfxIUg3O$7mowaqOWG zBKZ1TpN3-2<5J^Y!S_8nhhHYJNYzExzcVsJanx?aU&IVu`xvzwEJofNdw`qNUi1Z@ z75@CEIDaF;a+&OF1pW%a$|ga4%@mt3hU|ig-+jh1&o<|mK;QWiX4_BS{wpf1Pfpgs;DGWPgI(#x5fQjX}*iARJS-i`zaR5xeou>*9mVzSS~7mN`1FZtX-!o`iqGvCy-9{m1na4 zp2BkRhaIR}GeGus52vWF)9!FW%p#sX_gK8JVX<-Q!ehZ1x4n1ChK8ukW`BRa?zZ^) zXoA{x_7B|Fb3cv+M}ASr_BI@MQTPS^^57A*vp1<-;C>v7lVjwIxjyyyo)PErivyk{ zaEWaH9JSMZL1)FwsAF_3j^~-OcSom1T{%H*#jSp-8=aF>S8j{h>&!KCENoio83o>y zuv|KWgw)g2?{}hp{beMRPvEame$N@p{KZL)N*}eA)Gm{K@eE-Wjwi_`Z}v=ympt4D z=JxP9`DN~>9nZfe+S40d_c0K99y6Doh?hIu-rhg?2zBcRag+LYw+E+1J3Mvak$73a zJl!E)`0K!FsyFOwFE!p1FMK)eH08s>Gxx!`?O;Kf>yr?yssA>_Tk_}pl9+A$Ow|oh zf9_KMpp)*I+Xn6{@beVYbN#4YOTx1B_ec5rvkS|E&g-eOtB!h04d|&aL6^f?1aDml zw@u42;=B$!RF|OHW;G(USBW$>YnS4)FTO;)jtcUP)S$1n7#;R&;78{SP+lw?-|*ce zme$~XUOI#EW5RN8k{bL?mm$$%8Eu!MHA!m@*Z5dzXXg$^rf^ldW z?u1`*JJRYWkiK_vcD8cHzNvYI2~a5SDo< zjI1ntGd3o~+v)IdJgKV_OG`Y=$-%d0&*Hm#_k>{lsrMssZ~9>m08LQhXz?}um4@ZGg*0*@;z#dW{#=@I!q zrsrUh{2AT%l(#n?CMV;Ykr8}%`?i=B{h0FN+1L;B^YQJaOPHbO;rsjM{CRwPO{$6R6g3EaIZ5ggWrLK+ydxEz-_23)_(9*UO z;<3&SS0ONG=if$TY`+*hZqhV`kN;ly2Q^V#EgYS55FXVn#A=zKeE+oz%O*JmLRb!{ zt;c&Fe$;UdrGZNDD-o7?Ig3M1Cvb%Z{ol@fhhZ8djwW9cvxZL;UB$yIPsN~;g@&`$ zw=j};Nem9YdHkIakdNnG#n%tM#iQ#_F>~=Tj?v(&KjfScoLDU8!DD~Oc_BJJz5flq zrSl$Kdm=iwU7n}Ktk%AeGk8XEJaFaCY`4!TjKs@k&K-6-jvgQCSUaD@XzFE*r(Y7C z*(2_!Fc^N0jydcy<^46j|K&`#1~wwBb3$;;pF49r*8vudxc;yJ_4FQb{^UC`LuN4M9EKtilDz*~PQbF5!poe!!y}Psp}s z#8(Jo$(O}omj{kKs8rOSr}w@VoX-$H15xL2*zULxhr7H_3qgqoz4uQ%5-*nc6Wi$v zPpCeeK|c*@`6ba%%mrcRT{O7muNByyPZeJm0@hgOB_XcxXS_Un`6ZqSZ&p}tgoSmi zSUxE$?I*bX;#9l0RpgY_mHi#HW#j zOM+h(q0Uj=;TI7@ak7_FY~yU(EGl{G>;P%JLzQrrJ~3(JM?9Tu~Ixy`+LZ~}J* zrqJtq7Ck{{g)qovdyP2e7r8e&?u&Mth2`(R`(CuW{9>42^i5xSgde{DLA(Gy>~fs! z_U%as7$p__fZWVrf_8Ap;gTiuR>S=7(aVGzLTX3C6 z;{)dT_Y;;oP``N)4~b(Ij`@WF+s^TvtD^5aK+nK_nC2Ju-&j_)3^4ufg^Sij* z%Wn$4`Go_E(Dj-_V&cW)JI_RYnK~;*#X1*oA{teZS88JJ0pVqK=LCicoy7?5( zD1WXCY_D9e_yr>O@AqgD?|W`h+bk2Oc_#Gj!70(+bnZMUUI3gxW4}aRrh4?vqi?CM zJi|fq5rS*tUD);9c3TpbrN2MQ-=A4n=A|&oOw{1EaT$7@*1}@-QtYwNK)Rj^g0)uS zqUT0fu33tH=e3B_StXXuXt2_Nw#pL3({T}<%kg6_>k+bTr4XQR`pA~T;N>)~5staZ z)?&WHOJmFtmMydvA=7mQ>~}0dL-;BLm@h%4-%8X4twLM03P#h^aWqpMr*c$ryIdVD zQ3JnjDGcvySh^;`&^8p#!4=Ro_k~MnCG;%=;1;b=#n#tDn5zSJrl@koSqeycgLu} z&uSS$?Uy0Jbvee0G;r%TEQOIr=)F1(|Ko5P3kO=l+_XJ!iVnbSP2ti(4119*~`C(=Hxug8<} za(sX35+26H;1MsY;kpy|wX{UKXEinWx~U1zDBZLD`|-n_J9wOwgvV)VLZIerKjV0c zs-y&*E`L2A(xjUi5sA>G{9z=)lv`5`1_5oS1$6 zY~NnOK0F8w6~g;>7cU5rnV)Ii@{}NlHm0?;(5$o+Mtt&d*g2+)HI}`7>tJJ>1P`xW z(A;c}Em}74_S*wJ124FFl*2b*zgRob+%k$foGxOvila-OnBnZaGY^3wts;z<*GQtl zX;$7Xu{_4>SPCQaP^VZ5qq1)hk^7tAQ@sbS<-4Gro{cpDu~_UL^qYj`f`1*tC=C{Q zMhk!9-WPZlJj3|xu3OYeq`}AF431@86$20+ys#M6PlHvSO~LCl@(flMpl){G7oT3U z2+e~{o_WY(6L&^g1mun>cZ|mpFNr}4uc^yoQ;YE!MpG~1?#Q%Ab9-n;2+KTUg4c>H z_{Sj}qJc@9&2iD$J(+)1%!K4wP<$^uqmA$XCeMVdyM@E{l#T|m{7E0L8Qp9&E+~cIVp+W888LmK=g{ka76;9biWdiW2Bw8*$;)c6pebG!L|qU9akKuI_^h5kk>=U% zSBZ0;LD%JVQq00(frAH5{KA4~N%5>6{&b#&6P|&^pLxHq&gdHwmh(y2*z-6`gFv>=)0H=cAjS51asO>G6S>Fdv=Eoi z5|<~-u8Gf}Z}m@!mk9jz0xxC3HqLf?H1mp>Eyc5#SXe$=enY%y;Lq!M1{8n#-fnvw zgE8mD3|OAsbpP}tA#m`Q2YkL*zQOvKSi_My=VdrJf1bV0_silJuO%tg@uYJOJDd=M zRbFC6tSzbZtZ!0S=C;7hG7>JXMXMT*(L?8i?L$LH&BiO=cTzRv8rA-HNMf7<19lJc7peDL`lPRGeFToALIkEUNH ze}7B7+~d#QS^VeOZFkA0dFJv3@+a&|cqt5?70bdm+bF-NJfKUyhpx{vSy?wI?|v$@)GB7YAKAO@+Sz3>Y~0tAl$vGpl{?S z*46$!m%`v#fGpauU9g|!m$v*R!f=ete%a=ak&THN$<%gpyUa7mTg}GA%w&F%(@ply z{+`=#7J~1LOo>_McZX+$pWvlXgm4&mM$`)ywb)Mir2&i1{1wY!#CfU{GM~^(*SSpo znMFilqvVU*$mgD;Ia4|ggn{6+#(uDsb_xIr7#4~3%bZ2PYHYBKGg00N#PT@{COD^wpaGk#4C9m@hG3yaOBW3skAV2@-6pexc%hz@k*<#zkH22;{F-) z&ohDf1>POn@(US$dB8TsFO1r$uPnYgBs*kV<`+i%5{LU}ymTG=Tn;-x^@3j@@+|eE zVmA5%v9!s>#=GKcLB1aQ2VN3G^ySFb`K2Gf*yH6>PL*62zp=r6cD8r!f3vX6K8R<) z^GnO~Y}?c);C0)%&&f;U@kEyD71SqH=35e$rN2MQ-=9%fR{VJ1ZVL_M7^vZZ&1xb1 zcG#~KKjzo%xK`|6_t}J9=IUa-dPh2}^Vv_-GNwGuTPjQ-`qGXHpAP-YM8{qo@uP>RG|SCO#mGMt0TursU% zkwqsElHCvQgeHU+jKL?d6|rS!;Sy2_OZPMcXZOK7{(x9UBf0jbNEe*Z3;&c3xJB-U zPeKdDwZlKH6G^-8Ap5|~?2q^L=BSAu?@Mr7fxcXIT&ewaKi;R2GY-f4vqm>8c-AARRm~wLyvxX;KUB!|R z5BZ1jc#UIFxJUQLGn08Ki%FNAviq>H5$h(4{5?Ey-^B$F z`5wZ;#8Mr+_Vc|hTQQ-pj~TiS-w&@BJw<~GUXPjczRyc?@S4$de^Xvw;>Z5@y8QeP zGBRa9JScx|p2;lMTBiK@M+N!*#Sab6SDq5&(8m22e!OoA`Nfm)3)l~9yF?lob|WGA z1U$T}VQrg4_F9YRxFJMD_h6@6F@nO{#Ebu4Mn!k<#II6InnNr+7>EOMuk2a!A@jz3-JnJ&DJAFtcU>p1cnjzZX@ zPA-eSEEcwy9Tn@ga>tgpeKhFh!3(eB%IkXap!0yi2u2bwh|e^6rqe#{A+bIrubo`@ z??beerLA1lMFXd!qNB>|d$N$lB6B0%1E=o~J42+xdSA%SPJ@gRq1Gm5&SLxaS% z{ZvneMg8cfdcvPy^SXb`A3P7&OJQ)?v;FeGlb0P~E_o&s4?uaXZZ3Dun?H}|^Vt4* zmKF27oA~DQSWx2d0Ws_999rpo&bP^c%J-j##5%joE3YBR>j5+8iZvT~X$`JZyyhp{ zJ+BSSqC_3p_U|Pu=aX%xXJ3W4-)`~Jhy}-7;`#R!mYHW3fOuH~_VW$oOD{Iw7Bkh@ zc6cpJe)+>QjJf<|>*0@zmvb!ouuUoW73E^b8?X^FW>IKyu&WqPu<+VIn^x~IBd=2KA{W<$}{wjgj0_NGwJd>`|jeMx8 zl5LYe;kB1}b{xOp;PyiKMIqyj{dga7o{@b`e7)r0ludTtDb`s2J!dR){ol2$SFEMW ze6i@mobVR~#|y8K{Tvgs!yjFLB9;>3ANXrF9u+>Fmnq=2&$;~;KblM2@tUq(zNbYP zzu4gyQoPPChaI4L!7uXIw)d>-7xjVpJWR*z+xg2Ewr%zS{DR|<^Kl^>7V}p!)Mj(K zs-->RUmEYU8{8&&X!B&UxN9AuRI`_vKQ%9T_tKJNtC_ z1~iD7tiR`v_pz|dKd#5WE5JX{R=uJ}*awS=EXwnXq`g#rxA^4@*&eThEq*IQcUTC~ zJgb!ZTU^e(elNGL{IZ_gbAHj#N4|MK`3wH7170_sCmL{@&TB0*k2S z5U>0dqP=65m|&7qI3f7|J%nXm7KC3Our0CQJNOtaosZFc_z4=@AJg$em>28e<7^##mbn!l=WRi-T0Zjr+63E-c&uo4#NxenSi099 zi|cK$xw-+X^NwRx&QWL-9K)*Iqgb9jj^%W$nX(UGm?mS1bs?;icA#}28#lu4quHPw z-oCo1a@dC3+qLmPOAAxmejL+;J6pF>$7d~aSE-}m9Yg+d6_m#%p~S@<`6?Q+aMjf^ zsINrpE{-mlvg1QII~M1Vl@3M9(W(bKx%0{U6vt`HXfWOBcpUAP$58SC zU6by;im%DwG<2QWJUK6l=WCYJeHMS%g@Y>n$hYuAhye@Bw-J|p4HYyPO7%Ssm((7F z+aE$e=ok$|#t`E^j3Ad0qy=9^xyK+f9J-NdID{=ee238fHQ+m#m!GlWXocW^b zSJ0r7`7C+A6YUnq(B*s*r616s`(uiue5)4rh&ok8*JQpKTnCtQuH(Ed`=A@U)LRhl z?hm`<0@T>hVAiS^&e10jV|@twOb#O>;t1L5X#~d}N0dhoDm4!ykNA%DK8hk5*kn77 zB5P+qV!TFCYcPaj*HcJ$96-G7C=Od3L~Z^tWEDRYgHm1^CyV?`ZsDZx4OztZkh>d0>Fh*i`f*g)?Zd~Rp2T+$KJj4$;v??>eBl=gKbw5SZ#0F0 z>F4mZF-4$FEWEs9;A^`OkwzPluvr^bTgs57e-RmLhfw|z^Gwgq98p;-?3``1jLM^g z?EH}Jaj_O_;Xe+eNqZE75$D9G&1F=sCI9XaUkdPy^ZK;|B23sImnm^2_-7tx?VOG& zZ?^SH=A6T5UvMqI4^AUEqB!0PyJm1+oGtpQc&UV%@+marO$uQ-HKAAt%g(8JSkc)7@5&QsCm&(tm4T1^17tkQZTmeRA8d9j zM3`j(TpU&4vU4fiwbmkUv!4)_D>NMuYHthwurL^VhQVX&NmTO76D}|2nV+BiDcKAA zNfsR0wppO%ndxjZ{F1HL`!wo^Q(o(`n0Rh8If^r-*TvecTyK~^&PVtNId_6rvSYSO z5l&^#{42N=ZGb$E(^N9gZ1-FzI7|*wRqgw*v(@U&ZlEZu_$aUMpN@d2c19YD>d{cy-8I}RK~o^Bgbv>Q>e zwH>bHvs1mt5aD$K-k#(O;;$goY7n_5ZE%YoMsWCPly5prb)p|VmV1%K%V=@?&;FeH z2nx>mi>Q){hd7vh83Xn;sFn-MJ9d{spZs}5%NdkL4nWo44~xPgMO)5%e@OPd!Z#e& z-sx}`!g4I!Tvx)v87|xbom)R`YGW*;Pw^KM%c3tow+G9Fjw8@l*s6WgZ zb1rO^(g=H|FnL`lW9|r?CtsWIM{rJjigujSaX9BM_@ZMzN6szZ_r8ro#5wgPI6YsN z&Jmn1qU$cCF!}w=^3B)yxF0DR#jy6WM(U2Eh_M|)SlmU#J0C~MmM-|mokiW2Rs{JC zBFnN85do)AueJ}qUQ~8EJ@8BRcfx7c5d2e0;50M}rd%u+iTIJM1e_vXq{k+ikWhInScM zBrhv&hxtc$J6%o+0guJlI*mTDTmqLN*8^^cI~`8obUyWOsO-5e%=%f*m-(Z-6g&$~ z*}m9^FyG84g(=dDEps63P@bN{L_D2CacqyGUeLbao5J~bJoxt)_~nzRyBtpTEV!nv zsB;{y*is#@{NfOD%^TnrHjF)++EC=U3pG0$gs@zrP3>;nWq3slAk|_V*}CMf&Bu`I zJOD?BdL$bRBhGRNk+EmVp1Tokdkm4reMpMDh-!1HM@CI(3#=9|4{}O~YwG*+QW$yi z_L^xKl#Ex9NR+u zVPdopu2vBU)^tGHmN-NkIm6vW4Td}Z3$C79VdS?P;l?Mayr?~s_s5wFwm~lE65>kq zwWxepwC$lj8rxpYiXI%#ynTm5bXhfu6 zKX$J^jIteL)UJ=C(Cs)<%zKeyI);i(1IUazj}ntk#5f*B)!HKn$-RyE)N5#S*(C|f z(%;Yf`=biW6ZgJBB{?PD9vgpx&O;9|v9AnMp*pzdyAAjJci?`&4onhw%f}P)W8MnL z)9}7xI~lYCQv}8FM2HS(~;^r<* zT(8o^)k;lVqwNj(G4CsIy=o(EH)3yO7jm3#&_L=Ua!YO^f6pD1?!AK&LQV5M>^n4p zy=@byYrThBI?kxShs?Suc^I{|@?gyWxDzI-J|R1s8U&r~NfJw`&b9Rj>NT(}*2RJx9W2e>PS}dD z)fp&yuMQ5Wkyv}c5$bzvp;2dp)qAX=T~Ukm+5J#U>xOztH`e_B?EQCmB-eSMi~HXH z_Sya2y}Rr6^{&0LEeGX5iDD9S7;cLPWnzAWbUN7lBe7>iuPF0<*s_%U1MX{!COSZQ;*tkP*)hKty*KvPp zH(3=itek1%McYeEMYf_Y2&N-5glEH}cr7G?mqUNMyef&rV}YSu|BWB;AO8Gn{Kvoi zmdLmN9m%)&Pk-}0{?lJy=UxAgfALL`-Q|}=ynV_u`DEYjamu!`{_*~A@Spzf`~0WB z{T~1EuYUa-pLU#g{i=A!Q{P z_xx-6uU?yX{p$JGtY019C%;9$#eew!{*ur*H(in-wtL>iBgKD*0)gA!k>v3$*?!Br z-68v$+r@WuNTDdw*zt}R95;Jjmm>02>RVr@ruj8$Ti&3q^-Wp6eq~)mS$ahhQstOR z*}qf&7;otoSvO0vTh@fpIzwFFPbtvZ(P^6q9>2)ZxiyZ>ZLn`)6@B}8){>s(?C}?P z(C<~sGsg*bySUp?!gV?`-!C-tJ(25+EM8I8y;5YBLe5%i=Z#*R;<0vBMcHAh(DE}~vh_ddH zj)?1X{y7?5{k_3CCuU+|l`E6yNGFHb8BC>3k@jbUlzlbtUhy0eZuU$kr zzT;Lo_lL?gta`8Cqx_y+qvxh8V<^Y9Dg8>{4`poSdT&v-PqDCXho*Qv=EyQii=V?) zf0<6zX(|fNkX5~oHC+l*^J&V8x3K4KV#wU0*7yY7c^g!#mZ^O3g~au?`nevUR}E?xZtgy$`k|IN}nSEN{7Y@fF-Xev= z50%10(W@MP{hG`PDIV^Uc_GiPL!P}y>6dk7zoNf3MIW-RY%AklnG=fMWxrP!%0A`0 z*H`98o1E*_nfzYcO{+4-$`!pU$IAK2Tu^l1uFN^PK4qRM^R?|(S&Fpn9^*Y$&S_Pa z%6?@Y$+4}<`qjB3$9GBL)4zWnTdomRc{9C9XYeF0lj*ofN%9;+(R0)mFObyt5QdWT z*z;EC@|&YUy+MigEG-eM)T%bA$v%Zcdzyi889)0RRq5-vQg>KNm}aE;VLYDqXlYY` z@|&Xjw`ladCi;Gz3eoqR_>+r`W7HRSP^@1grFn|Oi(BkpS)-=r934^+-zWv?_jYYv z(f9Rw3pW~U6sERPc{Guj=-bgHCt*k`Ctu^DDCJ&CBm8k4mz*QOLtXS`8WcDzHlfUQ z<(VjYQEX3H_Q><@kY}aXPp1NIM6aES9&VFoB({FlMwMsSb*mJXcW;XhPE3iMUQeF%C)wL zF1>R@#H&-8dtHj{%KTK$@%n)q-FXbg6-?z98HiY?C47vqxeh!nKlMGI7vb&=I@f$Zuw z9#}a=e(we5bdM0NY2^Dx(ebWrEAm}~ffM;1*pfTQRP7@x^DeX}kJEC(;04Q_N7H0q zn)oFvQ5rki0P*MYj620%m1lQV2VNhn*xSt;-e=w^w%mP(;sX@h79HOv;7g3&dhv>3P#_zaM8UKndJLH%i<+tP8o*bwAuGc=5aU{+t{-j;vOvjy9^z1!;S6UVOR_;&v9U0T>U*w*z#2Ur6 zPciU=)6^cUrXcYUHDS}3vQJYNGe-5vF?x^olU}!u)38aS?5hkKrNe(pbn-Zr+8wN# zbL8i(k>Pw2bMiI~u`}d4PNTP6r2Y6brJ8k4C63V6@g8lhZ(aGLa{Jr6I)B6K&+FUY zWU}rlwo-@a+Xc&E!@Wdrp20TzC~fu)_7)nrqqx*-*NVQc6C1xPE8C9v~+4`(&i2DXE zEB;lnuTI4e%hKzUl{`T?PT7{FS1-yu@vbX+xuPqt%_=@y_9@4DZB>~A%DKw1GL{ls zygHTr%I{wtLs?gT%X_YJk8&SM%;~>=i<AvHURx z{3kHzHmQyGU@kn*z}^80v=`_OUL>!418d?qBR?FaC3uOt>}|^9HgJnCnDFmlx=MVW zH&=X%hPF2(Zom2KJW!U6&2Q3RdmKyEG8sK*(N}bmwR4)xnKLvRAHrEM#~n6B&%1tH zv2lY{@-{2?=4w%A9wIvUTNLCRL|>FlUa}qM2|aB`l5mDabG$H@u(Wt1rRYJ4o8D(7C{ulViWABuiOC!Gq^7r(7McjcKWHr*w9?zmH8yR3JM-6;KD zKP%%Zxu0UY?Oq$a;uE}jQRa-|Llk|;d5XRiyH&>Z`f~3zD0A+L&XjYMH@452(o!)D>;%~fjLirsiSP9>%h;1oV~bqEWqF9+ z_yszmCs{BIi4T8M^!v8t`eM&g2Q;+(TF*o6uW>=vPtgp!_>LY z@IZl>!V@ENIZX5$Dfb&Of>kHJ{=hWd;b&-ymKhXbPU;AwB|5UL2%U}Kj@4ov>@A9WV{Re*h z;otLkZ8P)t9iuN~f}Vs6^u+FbEWL`v{dVa~*r7jhhnd22%o`<0CZ6{8m$xsGIyQo7 zZW{f}6saR4Bo7Z$JU4@NZkB@SDN>{_X-Mgt_V%ZYj}SjGh+$9z>D{{>AF!7T^ z7-ijlYMS)f5fZ0{NS(Q|RK%~?%>7xJ>{l0ZuOXMaOqrZ;83?K@CbCA7qvmqro63l) zbCBNJNI*e9qp45vSlU}WqQ>CY3 zR2=c*WoE`R=yKgnd+7n5_JnY;C5+b26F7UqXdcuts}I2ww~x*IKuHGnGts4DxjB>x z*FHAd!m*nJ$;$P^8g&%s{r9tG3gyw3Bpz;v<5X=U-AV#e`5X_|Z}9HfCpqUaV=XvJ zggKaG*`M8Wk?j7*uSnmcpDH=BFRN{bKe=%)fAl}T%74E80DpXoAOG#YBJy8vy3%*;`qkt9i~Qzq_WdsMn`8dh-LbC9)noqgd7qT4 z<6OP}-{)FYa{xsv-1|k!+9LOsrDy@SSNwRx0Hb{vc zrTl?G+8&U^HhhEDoYNFVoM%iD_>%l-9Qp;u3_BDRuacq}qB^?;SJ41PQS%gsk1!H0 z1(_6eR!R2q6ISWW-l4JZ0!jJHMCB~fEaNp8&!Doea42Vh8p{kb)Erorf(}de@#hev` zCO3&9_WwAXDhP||>Zs>~;uD>p?I6X+O3+qOl4Wr4o1Ne0sFINA&8 za@12|9U`-EjzrfSesc>1O)hbAVv&6ELbEy#=ucaF)_{w9I>0!8P~}b{X6%qq7L7t(lX18X@i335nTSW zbRAoyC#Z++uvuykjZt~0hw*?O#?q#!@Lwe%R>mnDV<=+{P1Y$QL&vF3nPvNLcjz!PiEHGBE)%1fBS$krR=^m^rdCWE7o~@LaRv2}8PiLE z+)GO7g6Mq(Q{W~h^%5DjF&>ENAw)Y$lzj|;l@uE43DTo_Jz9=QAYZ4$Y^}hZatuehKlufP6zfeiX!BWjpXS}li}citpx1XWX{{ow zG@YAb%EV{b@Gl*}REy&9dliDbtz_l?hR|Ijo?$LBaX zwZsD><2Wh?S&3_=Il7jT+;K`$C#g`4QJd4td{`Hja3jh3bnHzFOy{jqtLc@w?jbm< z4cEz8DbzM7kD6xd$ROsRUUI^hDGghvCAyzM<2Zh{5iFwDrsQ)Z=$DC3nW5;&I;C-E zNmoyzOCBdL;2f@`DROmoj0qD`ET5)v|KpgWPGKmVr6ubuiD9SMuNuJWoTM{l30>9( zp{`-VDu)Qqm>^R5w=@i+oJ<`iv0;Mvf&q*f)99L(309AA|A}5g(`8PSOcP=rC;Gll z98vv*icbv48zEaG^DMpxTVSW?eVp`yc^=U85FI&4aoHrQydf5oCh=5_5mRQMF+CTH z-he4f>{_EmpB77DzLqkRn!1KI97%^U=cJ<3mQWJh^43NNGAv zY2^&%O|2BSo8;NFV=6c!etglZlF||PI=oW1amr$oWFvWz^uIgbZrJtI^ zu{Z-Gm^@jGC%c}s;z?=?Hn~)=MnlmV!qvUxrOe`rT*n@I8hen;dC_H}b_Pqx3I&m8 z&}e39$k-t#bBU&~VdfHM$#gB_C;rl$Gr_cJiRAhjf{kP3$IsA_wM<0)C}E|eWCqVr z6}!eUb03wCA*Q3(uthvVf_a9Z^kHht#<`F_Lqo(2NA&$-i<6`s8In0V$WhZEC&gA1 z+@k-oQHeiuB$?+4GRT}bGC_6J8M0FriHM#cqH2W5ya|p*4-#XVAW`O~e@HLE;wv3# zqtqPhAv<#jb^Zn={-@ELoTnvnl7O6s*m-O;2J|;xJJc^9V~G@)QT;Kqzn_+JWiT^LVWHhCv1a6 z)s7J@e#EZbmK<$b;!7u)CH-h}W+e8UCNFgfcko$iBOW9>Z-*H1+nI%O-{NnKa@|u0 zrPhshNB?7%kV!Fzo)ZA3EqW#eqOKy}JOrhP0 zrO1pUY(K?f(*-%Pn8kk=#UG&}DV$BQiC4sr&sOgc?{YI_E#+jsUShVLd$KD~H;+)A z+D&n04F$FhstQM`sIS0UUxu!>250F-qDQxhoLOa$`0>M%vxUz|-qSUSTGu5$$Bor5 zmddnTYC5(gc8|+_42y4XVo>b6ptuo-dYR$4M)X?es&f^Cb%VVLeWYr~ShAf$TeHNyp}k^< zLyT(HaTG7%lIN{fO)(uWu_$|$ir{nTgO-_(IZH;N!~@j=fypC;iVqI07$&A*0)74< zeMg5W4>^raVts1XJP9d7Oh(AO$d~*jZIIBSVGQ{Lc>E+6(@bN?S|L7a0JY4Qp3otZ z%`&cx8B;k%VCo1F;@<RSkY8xRmKcal6-=h&Z~8nn#`JiMG5g6@9mAqYz?5&1JZqhooM(7g z`MhS|ES|;%qK)~I<6F5mwH#}k#7)aM?yOGYYDaO`pQUAJgPz4F$#JF-5*I^w=L*Lq zFN+eJjue}IKyved;dzYZgP1ZKaYhbNm?ZgVVjrcdQA#BTEr@T&k=TaDI!w2Aht{%Y z{F8Gzplu>wHNjBCG^y%A&J>N)s69(X_!zBX$KjH<8r5fLNH|Y&-W2nBn{@a+L1Nk} zNu@Jngv>D!dr{{1w&c2}C<@zRI&~X;^$NL_axXE%ctRvbM2%wCon|9xOnm1A4 zsGs=MMRF6DI2Jc3alB9B{S-RmIdbDxDN>yy!#T(C;69qdC4Y~fA~jIvlFX@Sm*kw` zqpZbFQD&>B&yYoh_~jzKk$PL~Fc38-aG_`tHSeWvz*Dp>xs_DFdnLpL6!-tP=GQEy4m ze3_cCm#K?-`O12@EESRUPfC6CE0T1)OkdF(44K}fG4>Veq+i?r7>Ad(NZLA2{Kh#B z&u?;IZiBS#2T^T5MAZ5@4oTlW=}XhhywAe@;|E01f!=u5ka z3$A-{=ibHzPdbSIdMI$Klm!o7TwEFTaWQ!!$F>r1Y))6 zRW_R5<*mkN`Ng@{+3roHz;ru7mJmWc0|d>z&B>*Y2$=s7Cl^1E^$)KsuaUsz9}_(O zGXMRDhxxz%>}&jwANup9dm{K>cZK=nUnHUY)qN3s>F#j;+`AshU)*zLT@hu!vi+sI ze|^r?{ws22jH_~G->=73c_nQ(ZU7Lj4oO!LWede}=M@Rw+=sNsO8yT$1p_(iXJ2ZX%O9NiN+Xt#g|s#{iYd z?Gz?-5~3d=vGx?lnrF$r<%a+0;=NKk;7ggm> znk>oavi6d#4ab}x&af?j=8{A*G|^b{PN2=WkA(Dl$k8XEvzsY1sxW0ABrWewx?SbG zUUPXv9MlLElK#7MD~J&`h>{ImG-@l=VQtt7RbL2I02Fl2(s1QYcQX^fkkm>eCX z7cG-rwnOO7X<|;DC35Wy(OZ`Y_c(|(m*Pz7VEVX=g}^av>8q5gw-`O>WGt)|eX5N^ zb`?#Yd1f6lPtvovtxkh~$0+9XE!eo=2PH{Y8gbK|pbJfcvTRJJs>R>i^ zl@=+|wYih%LTBlYA7CM8jpX=cPS|HivJVg+K1`UqmVCR+`xEWhqdSO8Z|6P*I(g=Z zH>{8!wMBmMA~B7_T%Xy_0VzC>Hw|-d;UN0rF=Eo%*i#{WjU((!m?SK3kv%ot9IhGS zK-nOXOOv$DtJ_U;?UNYJ|I+2PukLr77q14pg~NolPO@JL=@a{!v7~i# zuxpq-vOm#2N<~&1hNxy@Qb&k&&GJ2a8-6Lh6m^XeZR=xIuC=dqp4f6LZP~HtZJB7) ze&py9(1;EV`EgX4;%IKF!I<)WbfV|{f@t!@_Dic9uor}&PPv1EydWv${jf@|o1?me zysX2d>tm^^^6+fS1%Bdwn11aVE=@DzX;yAZ%iu4MX7IIiEeX~Jnv>^Im7gK0`7~9P zOSD(l;AqbzzoLc`-D4bIIK#=6ZIU<7lP!67#QGVsmoL)Y^BkJ=25b@W4CO2_mN`Z3 z;W(^8p{$-Lr7xqIO#3RW#iw}Ixkg=u>~&gWeq*fA-7aD{Bu zdD86D)ay@^Y+9lzv7hDaY2rFoxVv;f{MR`1HA{qzO|j2CL`K#moyH}Oj1F?hGe~^Q z6y+If+*#8>S#uxrsx=JBPY_f)#ooex++8C)Q8-0i@)WmLc8V>I5$WHDtFV{b-96l2 zDEaWOW8iz#rVQ&LujxhN59ehkUcU!z1H zOl`RdQ(-(dZ47BC_sBil(CXr_=pwKfbIB-7!{IE&B=&A|mXMGaPEOiAWSDZPFq!y8 zP|CiID?dnl<{ZTj$WWVZj(dt;#cD)cr<(vYy2FCC630X&(WE3 zfpn|*W6v23ffMY+4xlcZCMRil36s! zy^TE_A0Fm}dR$`M4(X8-)cCiM(AG(sWfFV%S<><)r-?mJb@C+=t!Fq`<83PjTw4ICaV&f5nE?p;Q$fXKbXC)QtTYEE>75`-qpiH8$xkj1C)y z%)2R)+^5*2!4Q8P`kce$d9%c;VOTW)cMCr*}5RL_bL3PMo-+iz=_cn zEQO=E5_%{~hRxPRjb@!ORV8`GGH%c4BtKH@U3^W1 z*m$_uzgp&kHFl7Bm*_&hB)QiB{Xx^XBG1s3c#iw5{iJn_vE8wXrfHKONZuRa7-GHY z6zM~Yd@H_P?698++Xm)_MI15bNY#lC$eKZ879GZ1BrkfImGle5l}o%XoaKSM0S?#( zIoLCRziX7d(jNLx_EQ>rmMn?&5yn}9w0+DZ50YEjM|?pK2h01>mUhz~+DVve3XN%% zz|?M1Wxn*r_Yo$3-~pSA*Eh@q`2!rakFcksm%HWodD{*}6)%zBx{fXDUdbzulaP8p z#Wj+DX5WX~aFpcO>tqhxfk%6kdTRn{s(UFkYNYQ@tQmKcmbC|MVI2C*!x&?~Lu!)v zd);vgVZK#jidPIOD*QF;yaOAbZwH08U`p&Y$s5jWqZxTjPz|X zxpy9m5P4Nv_>h#l3m4+~}wxLpRDu@+1+(yA(~UhaGvbIV(VedI>lhn5{ATXs#4ksllc)+CULk|;B{sI?&!h(C8^-or?1 zk?22I{P-FM6F} z(;GC!zC^wB7xX>CkwqyGH_wtNN$C+OMh?zO;1CCwv2{_3(KFtEBx=9(skY9ET;Rz3 z2K#2#NZL3@jwG`wlGGkqSZA;FDeKu10R0!G7?AUhi<4A9^#NJGy*P*KvrmM*RaDzi z^Y7h4DaDI>DQ>~t+v4u-65QP>rML$O4#nNwi%W2Kin}`mIC=ih`>u7?xj5(MmzA5W zWbfINneTjN_LZnS+(LL@fb8+aT7NhUb#%%Hr2k8UgIgtvQ8UBVcd)3U8sIRFy;ONf z7bL#quS!|pdwk&WYE1+xAJ6mq<7Dpc-?RGmp$KBqYg@O)#fm-JkYs%P?rSn^|NTu_u*? zX^+k6o1aya<9bV|_3dfKb^f)Q-{<{uk82avPjd+O%EhfnO>Y>MEt@uis`a66DvU-kWbMG0zJ-;WK9T{BIlp>CeBfDkv1pJKDEFF0$~&wtZGkERQ?toMOIN3 zcRdHS07CT$4F{I-4ToOEgbX`brUlNjPqWJOW*lOQpa!4bUcm2q8kpf+NT9b_bPjK{ z=l!(V`Z$wsv|ARq)wY5;o0JP5$Y_bztXEmt%&=vQ4SbCNW^aF-&*VVx?vXfuC>Jl#@#V90yIP>p_ zs#l{JoBC0}0V@z8Y9Fk#gcy-W$U8 zi4$I3LdBK3)Fb5K9R+wk+89TPe9~fwgo?H%a%U0}l8i$-&h26KGjj3fbSXm~` z_+{;GwR4FzA9704kCvtJj7GbP?bRE!2)<8)R7v;EYvhFQa( z5Kxh|6zoNdj%eteL&EBjKr%W*6D8yfHL9Q&Qnk|+sujdyxuZXHospBdm>_Efr*BERiD`8tXr$zs}h>l(3J;tK?1ZISEoRdpi9E#Fq!FxoSTT&r6t$$C@qTNx4X4 zrKS-8yxv=KoY5*HFX;KP^S1@FoAMW)^cG*86|Sgv+i+QUw%Ml+u+zU=g+$@3w1_Z7 zcA*Y!IzZJ{?W`ytiK+$TEek7^`%{*Jm!=L8Alkr{-?rzUJKRIU=4Qm~gylTbgLqx& z3#3owNIlrk5g?3-r91>eS|gTPC{JpPp>~Iyjbj`(*_2XAW26l_aDsU$>blMSUsM{# z45~ATxXZrryR66RJCr4mMIY0)Lpr%O^2qOMuA zo`@tC$wZ`^z2l$P)<~Q%oF=)XW_zeAIF9Qh$5$fFJB;`kuNBx`{+n#cmcmg-z*)NH zCnzTd_NIjE6H^@{;iS3HkMN6W+_5?5FR~?R6)UYpQE%f-`7z+h;;9E)wHbMZ29~1N zr&;fzdV_3VeV0VCt1?Faq1&Jw+5B}*w~E}W)U+&9|Lcs(cgKGvGhXMhD>IH)T`#^< zQb&?v*rzVile**oF&B}3rhHpQH=o-rYp-3MyVrtMJPB(rEU!5rf_j^M?hbvLH2Q>x z(+DFum)$OCdKPIM@kWKtTkT&blT{G-#y*5Wvbo6Wv)>Mb{88iw&4@AU!Xeea&f^GM z<)%Bul1jmbiKk8~di+;)0cc=1`eVzHLM!eJT2AB4bmUgn#^|ZkCaD|3{m<^)<}*B z_WYN!&4>#qW`fvigBKGqw=(MV9IhQHTJZh$3E1X^HFkBLb@tr5ok_fH@N^nPT3W^G zb45k{;nWK~)6%Wk3ZOrK*s(q$)L8ycW>tg#J3iSNAHj>9U{|n==BM7A{tl3oTAxf( zU0qh`|3XNPo z&SdDVU+ryauiztzxTT#GptyR7MACG8(G?>J;){#|D)^&+52CQ$k}&!1khwjNWbhj9)CreQcWzXa%yTzs4W!Uo0(^&5hC|`!+Can zX%>+1)Z-D?pT=p@bPb1PQUyPO`YawA_ZL6yfBt(_j`2X3g{G3v3PCzYgk$K8_;yL8 z(-2~cVx4@A;_jBN=vuFPGfwTR#9==>QU3 zgu#cr847YH=iC-_(((nvqZ5oxUK(v;C5sYXy0jfS*cMw`V0*3jhk?XV3gYF35E%}-#NQ@9;o zhPhfm2)4}vv9jL=_E1OT|@%il*U0? z+k3nePMiu{k`}eIN&Q=~)aHcnw2Lu>UnjWa?YD5NNmhjc{{N7*m~lk(Nh!Q%P#vAE ze;1D^*CHdfROKLcbsIxn2H93ThQeSjoH3k9zj!oZv3ERonpuU=CF>|(mI^n!yURA@ zcP*n)%eP9O`6>^5zCvEhf=%Sd^yhJa<6aD_|F( zGd*8)ZdF132W3A!a|G3$SGRL&>NEp9HM+1n?Luc1q8j{qoA&tXe+vGB%6z$~k`o)5zzj+JsC zXYs(X8U1=a&OzXuOmz>77ceajWOxU&w*1wy*cye(EQxtql-I=b{labsRLxKUSDDT3 zHNE~c<-{pK1^(QLc#W^ZUtK;{NV^jFVam_4GnS(CB}=!@kJV}l{r!IYHMI5PC&!pv z`okQNKiShMb!M{Vv7Dn=<%gy;R-fIZ$&em}NEnW3yTsl@^g$Sk(v@{GN-{iFv;qgw z$CP@|zXoMd3ml^cr|$-BDOb-AceCOY_9_H$lDZBMAa~_LX6DcFDXp-**oa+m%rKiW zb~@7ctRJLKmK7^l7R^y+^z$$sYfi2&N1VhP$eR$1V7ud=22~a*?S(1CDF3|*jd9CL zS_L>5eNx;ec#ohAb^G>lK^#|UkvnRPRjOr2`}?V>r}Y=}W`~6Een>v};r!Pw#|NfJ zMO=MG=Wkax)h+U=C^K05)DjX3$|;@oDB$G&1tt?YgB*bUC<-_fr+QU+%282*f^2f5@O^OL|yb!r3 zYG)!3ss$l&gC1^_k+=SZrXMm*|C1ZRfF|BB?Y*(34DxX0HlwBGUad=5fSCBGowWMB zc{Eljxo^`xd;^QIr;WCmz9Puz`U9eD2%p-zypu1>}t{!qf@); z)(bD6I==LoL+De=!qQB!H9R#`!$>TqAoeVovOgA zs_rYcH#lZV1|si z&)pvPNEWpFa{?XQYq&4DEwZQnEa2<;RMf8XgwC?t-VbSQ^5Q;o^S>IJ@a%v}3T8uT zL|PtP_|EjR6upA>XV!0i9N^ahqlz~W03!0eBP?&))zE{YpS!dk-B&2Ek4|@b-uMPV zGu%JS6@oU;#oh-XR-cGm!FdE1IDI3zA5P_gg(E{K;3}z$X++^_Xw}yMUzc}oFEgNn zMlW&)V|CgEi(cKI)c*8X^h(|0iHmTwmdAx zdz1Atg#|saBaN>JMqXX`fVbg5SLf9ZSC%tYa{q>6;O}FKYmW_+*WRDIx-`hmy@+5x zqa{SJh@{bDsBrZOJmi0WKwI8Hw$9(iy02<60B;WPko#v?Me)V{^co4=R1)hKr1|BI zuuA`xP=Be)+4u^c*&(2>&cc5yc=YTae!By+p_k923v3V9Z(vhB*GDCxR}F@j5-+iy z%(rN;p?^itlSjh~>%%svSXRGc_A7$JZ0DdN^Gimy?Avj}`PKLVqOa@aKJ;YC@S^t4 zE(^)`bR-?J(B1(J;MB?ri2PZT-29^TNo2Jy7M@!4!+7VZpDgURyxodvq^eAOf@j}QG{c$U z>jXR>Tas$;B=KyJFX=(z7W;Y?h0gs%y`EBbT-DzDy=SuQUVBN%wU_6A1K| zw}N8*f32^Lt?nTlAzCc8KM*7vdIm!yxHIf10g*3bc6vq%{yatX{jjh1F8Al|oA)+m z=WE6J6k+A2BsJq3MRhwZWx`t{OY~-giyFq*^@}B`h#cqT*kt?Kgt6JR2gU!sFaO6j z{r_(}@Az!8C9CydcAm1}by|{r`AXbnR(-%_;Q3G#rM>a51u0`sz<#zia3qKgc@GpX{@-)>&=^0klo{0`~C6M9>-kCLA>1PBb* zzw53m)K`M;YN$(FX|)sKST!^^Uuc|P{-O?~F-H_kdcV%`c)ksiN$2wJ`?YBY4s|`v zZOpK;%ATL_lebWpXZjH&Tm1GE<=Q9f80BE;99TK;oDfwMVhJ{(gdLl0c*xri*#AgC z`zz~|$69~Su#g}F!cyC=Y`bB@i%-z5$a?a?;*%G{$Gry`CG-vCnTzN+!Okz`do~n? zXd}0QK$s8wzdsr#bf0}YYs!6*x6u?ZUcwNIg#YEF-g`aPWY;P^b5CSEh7C{ibY%CZ z(EB7j9yM7?H(z;0!ETOZT~CLyu@JBC!PfdnKOo?ea-H-gj)!>T8g4&Z@Rs9zWmLrL zX5aT_Xu>ORQ%G3r1i;<%TTVwln@QD9m|LmQD3t(*YosU7i3c2ewQtxJxP@qM!Fcm^;_&$4k9TM`_%$oLXR)ehkzWQf zOMf(&Om9gt#Isbf06K4GwtizBucJZS%iufu(SPMPHH~NJJX)655jo6^kN^( zD?<^%jBmWzk(Bf_=RC1%`rF0&6*t3zWQmWyE=C_qxA^%7lB;L$y*CJ$lf-g!O-G;I zYp%w&!JA&_G)FB$a`Lvue28X3jn$wuVfs$2h)?RtBM%aAbtkiTa8;DY)tS6^=S?CgyEzlIeQVlKG)?8Pa=R%)i_ltPpE68tMw#w8gY7YQw`EYC? zEnJOV2>w6M(0}CD_WB8ItxmQ1zZcPxmV)HNp0g{Q5*+X?_#{%wrc=r0f~uXslv}gtqZN4|DlWh0 z@3{*T&QeczW0eUsflTsGu>f1CA1)DnV=iXd{!-%|f8+bzzQhRwg^q8;6^2p}_ZIkQ z-aEau53PP|(yo2<*Lc^o(|@fm|9N9JBd&)x%P&SPrkNedeIHvXa}ZP7JNMXjwW`#D z<_5_C-6wg!XJd=6Wq+T-tflSMw_YmaM!#-i1)uUbr?wJ62_$6n8+jdCb4j$@6b}tGFr-P4C_9^RKO0-Q&eqwVw9k1;9Nfc)A;aCu}R#qk`1(JFT#)5oBE~cB89g! zus*%z-)fMqAMw7>p`bchpV#qP`y$S-wtogUrRk2@%~^ZLT|G16_m|3LWMrHqd#SD7 z8fgZ}-(J2ra0!pGOmqz#uB#zOH91dXiAmXH;}ao{2K;;*)qR-gl>NKfmXYEOA0S>> z;IL<>z}&7lc@PP`RIm0e6A5r~_+Z#7FiQId_h?8F;ATh_KtG}KXd6s1A~K$AxVf1n zg%;qg8+Q`>&*pi%Jr@ce5YWUEQWXa67utlL!cVQ+?fL?B31zhzRz}kMVGT=9bC+*> zua@VnaNJ1&1WK5@yg;wpRTjqMwtc!m`t7$hc(&<)UH&SA`~M29uUlE4Uc1s`FC_zB zxgy|i1QURX6p-xXs8i^OTgd;1z?`IPQm!y`v9oO38|@ln_cV=x;)st0XhkDH`_KJeW_VB=dT~^6Js1C@h)y1nF3tc2cHL=p=!jH?g#)` z6Br4T17*9Ej^y1=*LD%=c9f-;SNXIonO$UJ6k#lhfW$;(pE15aPtPRT7L_8q7k(}{ z7~jAY6M-Sz*-Y*4lkhKz37Xv4&*Jd8y|uTdMO$GW0Bacf$>S)c&R4e34|QzYt+k!>i#f7_*#{^8nF1sDiP>#{ePBr@wZ&_@gZ>R}moo zu;|!DjH|-2t|k4bRT}R&o9c|Hnna6RJkUIB%QSP*R6x4M-FcO5;PMO;tKG;8Tx*7b za41A2F^-kR{oTZhW0`~}KAe;)`7Ca}Mjm7uH?pG;vDF4!2I?C3%)GHWGaG)TB|yM3ciC@pf`v^N}f zWG*$H&Tu|Y3<|e2rid9)!Hv0!H8PmRSHE`oo=E~r0rpih|28Ur?%G*1z*2=Jf5)W6 zhnYmK(Q36e@xoDf$v!~G_sE-m&x7bLI55P$`%3NgLuIw<2Xnpm5L0oRV!2}y&A+wg zF^@;;Af`+ln3{TzQ&EY_qBRfO3-Q#VVJF6irT-Ex+&^H13tU_Hmd)QQzbEn@A(uWw zc(5r^Xp3-O5d1hf%b#}5_mKYWzWm0zB9pjn7}XM)O(oYcl$Bd@6*{vk*_GTAUqY*xn;eXhG+*fUL1ya`Xv*Lw z1?^=lw-S{4or)S#;ZXY8#Lqr}y-sN`8nTwXr26z<15u$n7=f%(uqdDT@5eV5{wY%x zC~{-IJd4(sN}}yEuyF*%g5~&sZ0ZH4nxs0A@)@pXo{e5jQaM=vJ!BY&U|A zx2J~|4W;S*7iQsKG~|`DJf?cKk>ssuO4^$Jg6@u9SL7Kd_Dq1QeM*pvQ!RLe09jZP zB2hdP-w;x$ugK;?_}eg!scIl+V~)x%%YSsTZ6>W;ibslPWm3Z0H@Wz4AkLE%;V40+ zULu~c@w~WvuoR7k_LBROG4NnlP_~jxo4zSN!9Q%a$C80jNN~kDKD+rp$?}+7artWb z$PNr-xonU_0PswL+8xof406`=C8Z^~5pcHz++v+A?3$l?o2R`@WJCIrbNYke`Iw$X@q!9BwZsH}^vQ>qhtIKX*c6*V(cn4-Qu7#jK- zy8JPG0|DaEB0%qOWXg7nQtK1_YW#9!myg;Ja?SO@#s`RW$opv- z9+CH8#MBjm;fGff&Uwxg1$+s8K|Fb!a7@E)1A^Zxz&@qVvNik>iG6K-7P`v&gC-*w zgZUFQ6<=|6rI9|?+;3qa*6nBLw$-s6%vayB$5l}`^>$7#@y+hXW zpG5)h^In-C}XV~KgobUxHo5a9@=YX1jom&p5i??BVDvS>Cs8$sC_V?yf{FW(u zWJq&UP3U%S-UIB0ZkS!!ziD7Cw<>F!y}|_ih(#1NY7q)|*AQ$VM_=-U32uO@(edrC z-9wy5G&i!nd|kTX*slWjRB0!l8Lnd4*r{5+Eel7;StF~S)6i^xm~!&?)1+OH)rOtf z@Tu;5wD6MvRuQ`NsL0RGuV36o@2d;H{EM=Q&rUk^>~?kx4|FnRey+uSV4S*cN`S4= z(QlfF|Ge^_QlSCyGSnqlwA?iWC9a^`RMJ8(e^=9HXLS3{_5M1zB1G;`0xyLU$;R@9 zA7MESHIp)krcCUZv3{UvMt7r#g1R?2rg zJ&O(_uS-~=Gt)7~r{bk}d2n$F0V1O0foV);Qsb?a5%=Ke6`6tTZ5TZ|Zb!5O_-6}ba>Pv}dlFuY9Qm5DvU5WN#FRY_8v0Ffweza9FbDU z>X%AX5&e0kQ;qFM$9670 zfaiETj0J3AC8YSmtYrW*CyP(xhScSzX%Btc<}+mEMTa+oMqX@hoL(=CRQIs6a9UHx zs{%WUE_|X}0#!eObrqp($2g+d?;zwR8_(W|yeVArS`#05@?k7V*1vDVpAZ>gIH({C_mxXiP$Kevbs4Gh``kAB zS>SMMr8MopMQY6?Oj0xDhkQ3?2I2iCGcv6t>2GcpBA;b_R4&|z*Py=Gjo-_~{W@zw z94^@hZ``%B#}TGs$eWBg~=dM23$i-l^Wfj6>h!6Hlw z`-BX=W`zDgZF<@B){|>{#^;@sv=octNS~0(T>L|hPN|CWHp=XrKlfOJ`wH>y)}cEM zq)>B3CtLF*xm~od=<7a4hla6oC$T4X?(wjU1k-sw!48?D5|`p8W)MwqWOkI3rFVZ@ zR-0SQw_P+oLP&tW>bMZ~vCXQLs!I@m%F0#3V<+#1!|{)1$%yKgak&_cVx&q&ia(9t zB0h3Wp;42J+M3gBksE~hh8N`-{5$*AJG=!fz zCKy^)6FrPh?8J-$j)&9(UVa6#G1;%Isp+7*wD5&+pt0S!XZ$H($r%35n9RB9TCg^f zIxVDDe7+M!8#H(n#B0})zMn=VO}{AGdE$``CC}2W+^&6nzwRJ3-i8+HRbCho9Acqu z=NX+$%yPY5S5-5WES~cy+!N6oenvp$y~#wO=?}OfkB6KaVgmhkgJP+zZ$)!y4Ym~R z)&E{;KF;XI_-wR8uLXYjU9rRq1U+UqAx3=g+EsKA8cse#-h|wXUs!nP9je|jzPxR7 z?>2wa&e~BFPxO;_^$<2=n0)qw6Bb4!KMSTH?j{TZM1lgCY_e$+6El? zJ?waZ-rOwc-d+ZJp;OrbxHHo56ZqWKc>ZCuT)5DDD2d%;$1GmMrQWchNNv@1!WLI) zTJjPPM{jq5G#2egt5Uy|fu|p~q>@xQD%TC~cGE|!U%6TT!{YCp!_{?MslTCio+Xd- zC=5-D%sgW}7mT^9PQmJw7?>bmT6IAg*Cnj+9d2+2#?*pYUX2d&P&_UDIhpC7{HUD) zxHA%loz8CGU#+${0v1x%BGDUH{IpccXrC|Bb!lylL;tp*LB)HL-7m7U$eSgQ7k_KZ zxPS?-&WmW8lR?$|^m;!^E@E>y%i^b3C8oI&T=|;_>eRQglX@`h%%LdDmg6aTO^*6l z)!+3Hy)Q|$@)*4m_O>{7s11w+%?WLWdHXB*Xc(G?%d{!xmn92oBqHwZIq6+MVd$(N ztqI#j!H{~=+FI}-tF7w3cU(0H2q%ZanKrJZ>K3y21UzHCQ##EutK4&f^@xnCImBsK zixuO15l=Hd8EmBszl$@!`{zJP^9^gl3;}>BrwX2xQP!cQkDn1MkO!GK6nt$1r-;#O zkO<^A*~Ob27qQnw_dF={Acsno7<6|TYhbBjq&D*Fy}aBkS+H5$Pku%4ws1q2r`D0v z5xKe!s+qf2KCa9iiw{JX7M5G%JnJ&^llT8Rtk%}BD zX(I>Ddf0d1b_!*}KqFt_u7T*Zb8}na&%g7SfKvI=d`pEnPGg}~nKYcQNnA4kH3v|F z;7>}Eh{`y=Rv42nlhN(xn<9e%kaTCwVhIkzY1y>OOUZySf)$_wL&~rIY9BKa>{#k;>xcZTp^1sC?FQxQPjG!&8GHRGC{=cG*r#U zdJAF`Z#m`e;6~H1E$ah!bZe`V1d4}SP(q)+O!?uVhlUWDa_i0&JpvyIpGx_stV>g7 z(xqxYModgzj3sEVn%;VL*Xj#Jstbsg;arT7PE6}iikthPTHBzdf$FwG6`VZHga7o) zo6L_pdb+>YT>H90FLcv?2bXyB3+H$ttjC!d49{1@yK z_^_qy>=G&+srL8kL+Lcd)FIuju|=`K6OK5$Lg%7=-X@80c+rFLcl^RVHvTI-<>Lju z>G_GN@%J(KF^;)T1YHs2cQ(&R#6*<&`6!w8zgBC2=sF?I%E;4skLzu9oFG8K0W4q_PImeg(`8$YC<-* zSuMx_UnWpF*uYh*Trp3>SyNG$vT<~U^)Qc>07Q?qQdMk|l*{qE4S^?F7$u0Cwo1Sk()Pmg zzzd)b_S6uvbMf`Cp&8-XU1hP@&dK#lV%i?Q9hY^;5kx@)8+@!>RTKn~lM}9-3wx5ch2ej;xgm!<9)QRgsu0mcxOc zSt0Gk=(e;C)rd)c(OcCsW@6*hX`J5_Jy}$JLJ9b6@eDI0y&8zy_%c=e*i*w7RPDoa zrtAjIWqRrT_)-yfdGWnXiO@|c(96&p=#y(lWNb~&$48K-k+IFP$fy=HzPZ&T#g;0# z@C5{`c#ZEek=|I2>LnZRl)>0S4vAh&RnoH)K8F5rz@9e4$80m(e-v}4WBHu8VcFSK zP4-#&V|DpbFK&+J*l)q&qo?|EB_Sn|4uf9^sJZ^2hbm-Q4X~P@e!Q(A#R1|dXY$BZ zEoL`RB-`2$`kP?rV_Kw?e)&5&_4l`VBS=kGn`$5gl7YcP^g$Qerd3OBycK8(i z{=~%_Emiw|P=Ja_r-+6s|5Lqyqxo|k)8lgJu7!3fuXsxDXxMki>j~BCo*0dY6yR$` zOHf4LM?eX4L|wM&@RHKiVK!C5&p<4Ti-Yq-SHGD$#e$7o5+{a|dLJQ_)^L8LK!lDUg$ zqWY@s7p0?UT%!AzenLPfK+oh3xB4Wa^CyjWDsaw=MN7COeN*Y|og@gFAdpw4+Q8AgEwHENx;+A$=es zU%a!0EFi6$tR>VWy>miCos@vJA4(rfB$-_EEosri>W%_f0-`LUV@ZorQe*Eknxd)5 zBKk5Uzr$UYegee|0S$z6-#bq6eak$}zy~y0H(e4R6ixbuEN4WD@zH28fZN%3*p1m) zC{_xk71DtGFUHQqjl=PJN(t5dw%y!mSwIy5Tv)neQ~rQ4_s)FZ%AHDqn>uz|a4B4U zYp)m>5oiR{tNpWP6~x>{HgorTNjpd&X*9JizjSB#Kd~t~4v}B~os+LQV9jy(m7d#* zG;ByEeNbHKrx1`qfKp1#sW*s>E_FNG-Z0I{P*BI)sXrG@r^T zOn#2{?n)wLWX5r2noXCAg$F^oLgI2!e#hER**!70 z&g_E#7KA5WfH)GbnW4;?aVk8mR0Dyp(b9sj?z3Rvt_QPTKBHj#!z4R;J`rD{nQ1_I zPzRg)9js>+Qg)o3*h}9pwy%k;@sH~3#6Y~OP&c0fGEs70;JvYfW%v4gbb(#mbfr6k zw>SOqL1Akyd^%MiwNOQ($NkpP$>3IM-_o?CEF@^wb!_Y8OI#;gc@_;r|97=;ErDdZ zvlJZdqUHudO$TBpeJ&E4CTv}n{s^jodvpvJ*ZOR1)0Ynl=vbYsQj<5I{7wCSW8ABf zD|kvc7`L#77vyqQ0ghC}Kpl{R9!9@~5fkH5&B}5}P22HX{t#OkHC`hXp}}E^QE_L? zHB;<`>!2)7D+(VNU!j;L8c{w;E*w6>OFQ5zqF#u``$TB zPJ+8SwPQsScY^!={(s{Q*I||EE|s4et?z3O*IC4ix~MoWIR&CQn}p<^MG6*^S+|*Ru0S-*Y16 zMv!JD<9~Tq29j!Yxbp}pZ7~I4=2|8Y9R3bmq0dS##)80Gcy`LL0p zGbv$Y0c-ogT7|@82RAN&>etcnS;3aiy^1RUC#f*I1<}ydRU3;hJz@6B9eH^?=X|v= z-yCcm6lgmrP0}B)*2G`!b(6?-P;I4Ca_#VEKP9Lpi-~BNsNjIKe|avl!W6lTs-f{r znSP5oL31^z#0t}9+l&5F$dJ=Sg1S=l^7L=vw$E z^}7TT@paMV{4#q6u-(~}VoSnCb15YP#0TJo9mLXch4HMU(T#Zzb}V^Nr|2PG^feK>Cfn!y}~5SNl$Q%tkC( ziN6D)povH_D0o)G8-L4nl5^b&{RRM)xmHJ9bvGFVIj7ZxF15IsBf;XT^1yY5r{C@) zqOz8EO~&A@aylCX-6sN|v?z}Gs1ZcB*IcJ3Ls>Go3%Q{*qn-r6F$$TUeXpjEmo9oV ze|b?Z-2Z2}8f{*JY5U_9FslnnpeXDP9{eIOs5;RxS~nrw8<|YD89q3Ev51Xv^+37r zbr{akeltob`1ByE=YJxoDCnIg3*$i-Rh?I7lD#xy0%Qg}j}A$}cv(jEyVQFh4RcqT zMGICP6rVmI<$U}V`9{hWv#7OE@;llB1u35jSsBqJ)w%A_y)>|nZASeL zdSsMv-G_WFivU2J=*}!ob%atV5RgiFQ*<{&JyFc?ClGYt9aTznQUWB1P?*{h=^N7L zipsJq1XLw${r1vls}i**_h$y6lvoo+`F$_bov6$y z%yu~S3UrD?h&W|g=twnZ9K)GVl=`RG2wDFLHRQw!d1uMW?91^idopQ)8Xqvr0s|sg z3bbyHEMm^a?=bkcDT{GE88q?~BzV8$W#FrG^SqNM_%drM`0{|D-PM<{Fp4I=ph(~9 zFNQoV$>Rkbmh`+!9b8;&mI`>5EpO2q7<{>Z)Rc!LBp^jNMrM?)~TAB z<;9#Edu#)auAio@OfPT+%Lx>*(L+3n(V8eNu& zl47`^4sBan#D?*2gKCsz0*Wd#t@M0j0Jjp=6y*I91Dr~ zdzGwtQGHK5FSaF>i-!0`Zt)0HBGYL)=|_tpIzC$ee0WJUG$(|8R;kTJtPP3aMaN2S zQlA@|OxnR>5XGF4F34q18giB+Xd$t8L4hU>zq1z$Qf7^06ZK7bDEy%>(sC$zP#|Ks zCgmf+5pBO)u}nB^Dp8VP!#F|w=P&Dz+MT|E3pivH{-F{3!IWjO7img(AIPu_o&c-c z%$BC?Ob(4Ly~IuYQhkBij2b6pzZK7MB)s7DiK-y;-P0m=vKjr|%L8@IT&UM&|Gw8z zJX#ixkjQ0U@4DZF;5~(+h?DY(pRDa$?&7sqDx&il<%%FVMA9r~bTr$f`V`KB-@pR! zOoE1FYQkuD!iAHN5*M>;Ml*b7%*jui1||)Eue(^TBUgY)l^krsUNE^&@_mI4!7ViO zXmh3+QPc5uNY8<^M|p+9%MT5YJ|9A&AY;cIQ7cN%O{1irLN3fq77Y>Azvh$3!0&LV zDB|ayv>4w~Nc*nt8<+@EO)N<+!P;2FVG;MZ5-b5i5(x$^!-;dKn-ix;f7IW~=Hn|& z<8jLPY*AUs=MkVF_E+jmX%R_Vf8H=79!UE7BEC(9<0Dm4CTe#~%VvRAvFPgVOpKPQ zp2#;?5_>F0cK)@+7td~oQxU?7p|_O~(k1f+bqmiK$-*16j2qs=^p{`;+f9xj}IurgkwT)cHsRyDeg;z2b@ zSbtLTNF9qH6MsMq#H3A89^AJCS? zwuQ57FA3kE#ZCa3KlFRmn@GSRs%aj_XcMg5b;zMsw&1wO6V{RFVpx)Xkntm9N&}>q zU@6bFgQKouRF+pTK4z3KD&6$()asq_#2>+UB)$RR^_j1}6Jg*d8#pV*HdOkhlb5jn zIb;psw5k!kZcD3p)RvI}=X_(mT4{X*5lrNac*AW|Ic{{MWl^#r25QYQ?~mn;8Rlp> zr@EbTlR7b`G^jvQ=ZESQw_}L@&{&5>H6w?Y^m5{apMI1PA~?ZpJ1Wq$Rjf$1aLDM- zYUz_x!shzUB}S+j#N1d_N&im>WGc2T@IEVux%a(LILFOlPFn?oJ z9i(wAU`Z&@{bL{`lYVWC>>BAR8Dl!0{nucnmm~J{;v@m%GG*~%+oWnj*vY{9RnzlE zIlMQSY@a@S3L_Ft#Mep}dN-p7_I%lyQM|m_rS&}8baQC;mlI26OeR~~>KP}}zg+<| zwfC5v!g_%17O4~-OOO}IQh%Rnp*y*mn(d^TF)x5LxoP}I!df3bF!<0B6(zm4yGIbU z(p#N(uh#sKwqQ{Yaycl|l~#0&%dDd1U?h&@3vE1Hx0s4hm1Ips zS2o}XSAHZ>n66%^tWfVbnBy<~B~V>hZ_3KE>8wxn0LZ;f|8D6CyUHc>8 zgsFZA;2XfKQEkB(#%4N_W=E#ZmM=Fw+WD%#S*J!d4l2@5$fzc?u&vzrP+9xx1sACO! z3yATorC}wVh4lb-N$5=%CWAK>`u{yG0>)+gTZZ&mFY0?!N zIVMstipX~tFH4;JjL7F=pKhXys2V-NG4q5fU#Q)>`-&1Y(#*$>were(*}D}BBQ&fk z%o^-eEQSjzG0mNb~AlzWI8<&#%jZ^1>^xAj5cuaalH^z(h~O z0}x4jYDSOsG;+Gsf)?U^ci{S&w6%|jSPBZU&nyl6rYF@NItn6odCDKwac)t$2jC2)%KsieTY|Q0Cqb_Bn{qJ3mg-U@+dj z4QYoc3T?qdI`5X2_mKc^C%2mY2X(wO(o;=!3Rn8-oEvgs`^T3xzD&X)RRiMJ(Z6}m z?`U`1N*&R)YFk8;|62p7sjMsqPs^WEn7x2-LfmwRyB7?VPI`DbB{L8&I*lUgka z8UMeQhZPheX0=zsg{AlG2L20!eqCT)LYMXN;%n~nyOd-1rOsOa-9^RZ_-S3Os_^ZW z2x;!;)eMK*3;R=1X#Feua3h6(TC+zLSS7zkBcd zm?8<)6|+Aj>_oCt#uC;Fj_e$P4wAc4#==7@Xo|JF3g)>_1~g^&@!)&Wn>4b2^&gcM z{lB~nL3ZSX!;5YO%b0ovAE7h8^V;`!ZDh_ffl9C0EPe@ZSJA|8@zDLMm!EI<$2`7A zoh)f|_mAhh25&-#w*k)`{*T8WXy<0uZ<*^-bztKF4@!h(Gxz;Yn5vZL?zk(mJTB|I zB<-K;TtiSV`&n(cZn;e4iZ-Vpw{I2AXCo#a7 zbjq?z0WXR1t-zYzlLWQmUB@@cDwHCe#fs=L3QErK0DGI$q#xVB@$jjh zj3A%DW)l>v0%nycdMccfq2lxbHA980;aF4~X5}MnOHzrnXR_RU&!~t4_nSM!f`c13hMqL=-pE# z{%cV>NECXNoSkLitFzL1fqew@cT?~i`gvB5gA(c5?*JmUrF=es=iIj*&I}-e&4*!M zd+FPga8z+2cDlvvTO#|TQR&0ol;G`ylSztwgCQ)v@i)QM(|dP`ui!yYv6UmcuRTa? z?_=DFW4wWesM`Ds)!{GtO*AE(O9_5C}+8Db?1-vfi z1w(q6#MU|7^>Cv8WVnYj(@j(^R#VSiu^Kya+w-WK5v)pBV8w#+5={M2OGk4# zWpZ&#;9Uj|hpJi;`lghAF1uSQ1O0CZ@>6kqZn4^_k&TVBrtHOLDB0Dz&-tnS%j;?Q zet?4PTkOH%3*P`uO;^SbnqCFWq#a`i>vv33_WUybzZ=~$IW?nkj^_xFp$9`PU-CBH zudcSN!lQB;N9AQ_=!%p2@M!;h&UFyak9KsneK6h2%?v3g|c^>%)8VpPk2&7#}X2&{7@iLu6MW`b_@qc~{8IYbG`taL0MIT_S6 zQSe+x&%JW}o@HH8XIotHBe)G>j;V+G)0VX>n%YG<2v@h%lr4s#pGW((s`AP&(Q4hi zr4oNpkli$0vX}E~EbMcLG=KgWeP4%|Tj1^=@~spG`D*=Pvr9|rj)b*OBIh&TV|kS_ zc$#BHITZc&2|Ia*d5%#va@CZAR~0-?5KCo>TWI47SjffAZ!z@^Bq9w1LOt;99*fSD zFGXi$WuHFBHL~)+5l*lf4QO<*dKfFsPTB(`Dz(BkXz_WLQ;g-Jtizfri0(M2d1O_U z>nYyy~Z&%|Ky~9&u0$bj@#k2qT+&i~F(~W7%thsdb!R2nw*vF>ioNF&B z*3fPMjyK8N(yNKS$t5xf##CJu>X-yCYfGx0lFll}d>70wl)G$NQB$a!NuxDqK0j2O z;gvbu&aF^twa{+C)Xn%3&Whrh8*)D8ZRlVZ8!-o(?GIIY%NypIs~likiD!xxm_{wf zXm&JC`pzAt?Urq>SG3SD@J*6EZ$yXLOtE5yc(`H*ba(tIMS{H193##-#O2@Bh(Nlt z?HVC!>YoE^1_hUbjn{~8(I3~yBm~=eg=+1SMIWC+uyAmXYq_Z}ayg}NiQ5U$vrDOq z$fxhb+Y;JhOnwbzIF#?qEBZSMY!y(J;lTe&v*WP>GJyMO})ZH(bK8 zbMBS7)+UQW1K`ghO9gK%C3r@cnIZME#^GwL#_ zkV=>brnVPK+k_1my2~c1Gtrj0bV+c^yh^~UPV<-ue-W>4If;Y8YoBlSzNT5xnj;e- z1MR|;r%81z3r_^Fgs(9vxz9mUc*HXfaa!Fj5vYm}&OoGpBjI>KSo|h0V=7N7Mb*m_ zO>rK1J)Gws{iDYjStHq|g-z+*CfRFQS?&!J?&tDj?q$)rIJw{~eMpkaoH$wl`^P`3 z?QExB2?=LjWiqGbkqAm#6RQn>er4{Qdrr54`(D_g?4;X=S zBUPql5k=4iRFLdZfJPymaVlnD<&2$on5ti9?v?tj=*aQ>K=m^b_g@A3>TNQ)ue z?ULTFWDQ>9L)_eeFfF%pfO-(_n>sr%-n8V{TUN;te4;GexjJ*woGaX-HKg_Q4|UTC zwBekhD=V$jZKh}Q+q&e@YA*IG@GFLS%Ok$Pvz4APN?`!&RO1D2qi{b8n7zgOk2(ZI z+YoB&(U3dYLwe*Y@U68MJkvrJ>p4YAN>%T>l z5A1y-c1}Gnm4EvnPJEi_Ucb_GMcwxZl*t3`74m!zMpbv7>#3aj|H9LxsA^t$b^BC#Z&qa0o)E&X4{k%xr0bmPo8J>YUOqI~ z03*-hUwz;7RC;~!#Rih%mubUyhCvs`LE{Er474XCU>1%T{IuQP_0Obw-FvOQ7>JgE zk4b)uSk4Cj-NBtoMMcHd&um6hUx|hctGw$LwExvxXd`H zsGW#opMNx<(rTseCa@GmL9L}O-2O4japH8Xq7E=;at99-n{=ga-0?2u+-%g#?gG3OdJt1$Vz=0YxY07CpK|k-#u8nJ=`! zT}bM016&*4ehX1}54y}lJ|~rr1W1QCi5QUR+I)}=xC9dbC`OD)f3rhRUv-1@no+<8 z5CfDfXfRC?5dEy^iMZkI4`c|grXsO2zbAnoq(F2CZ#{^|AHLy76U6oiGOYfYlXFNm z0}?;p6R&F9_a1{!#`d7W5s-9H6gCPc4$^1Bm=zl+|1)m*;e`hL{gwynq$*2@4}b@> zzjK4U?zw|bHXx~vSn`*YI%NZ1_rL@AA+}ZB^^gSwva)^PL+XwRl2#muHkab2M^}4L*Sz>e-*ATDBJKnm z4t;NE`P65FRPF9fN-F0(-n!?~(aIK`YyE8e`>2R;huYMf8on!}h%2%o>I1 zjQcp7{JU9S;~UGJukz~6?ND?6yY6QDo_9?D$EtOJ!S%xr|JUXG%R0Zi?Sx%FUEk$- z&-T8JtK9azpA2FzHl7y&s@VplA;-+p(&rkAHLT>v{FtF~f&wVDo9sMGxE3jovJo3)*s&g^2qD{JP~ozGw}-xZQhu0|K{VJASav4+w>k{FR=G%3Zf1j zwg2zKhZU&v#Njpf0TBL|(}w8r|4}IKt|tE{&ik7+$bI$yGra#R<$5o;;pR4psjvDT zdEbLqx`@%UQAyePn(NiZpEXi?o!9~jcY)W@Ct-4B-%n2>IyuaL=IXND?fW9B+VkE$ zZaU@#*rXCrWd4jh_4xkq!Y%CM9C^~FR#rt0YCNH>&RzVX^W%bS9s%6{9g?E{jH^9# zK);OYDE&hc0}+qgwZHlQ7TSxa-T$BNz3(@ieZF$+8yYFbxn53~=?fLdKE7z1)h^Di~ef0J+ zgr?{54=G9Sq;TWT(B`D%noml{XQz{>TKu2q@m%)(i;!3Y|0iHn0Dr%N=d9OH^C6;D z9re98__j6v|1G5f{+Xb{D$85Co)j9^PUo+otz2;(fy}~@V6t0waYH7q5D_c zh0d~ZEIm*+TQ0_?`X($UXG=RC7s9cq<~vyT9Wc_wlVmXVr#P=)ebL^X?s(9tk4@Vh zvUo9q%=nd&ZhR(Vx76|Pop&EXSLQwaKE2<2Gd92C>{mwaB}Z|${Z}%Q6w+FlNt>U z8@}tnuy|^7kORWbMRwfi9Pe^)wfn1f3wkQUZq9ICY-I^eCXtVz-~bee`zt2?*(dA) z5p(AL$pf{wE6WW%&B0Sv)Wta&`D?1#VDN>`SY4a`w$WcgX?DI#BN{wc&KiIB-&leCof zS4!k^X;D??klF?H`ZwG(y6ngt^W)7&o+q&{3XQmg>d72i6!e{MOw48x6|t2=nJeSx zdB*tHH>ts9ODNzAob@PH=7->uvI;NeRTQn!j11oam2DBP)EqYj&L#<^z?hbaqY~>a z=VJvk7MXS-38-lU*ba8HNrOLx0Dd_P4IGgOsp#?ZM@!}sU`-0!{C8Q8x3IhX4=C)v~koo(s-`yc6`5NpG)vm8J@b1=3lZHh?{?jPn z=J?A(I$f!`w`IaDa;n~{go;ZJ=zD+2_uZ8L=di9k#oGV^)-)e6jLMw$xybTF6}b#; zkl7P;il{_ADGoOMX}1&=Ty=1goY|3H7@R#;j)**#e?SbpR1{%sIV@Fu23?eGZy>rV zh$>9CqB|2EOfC8~>$lWu@*kl|4TFVBh&&}e&=l-cZ+R@=jQjGGkt_n(5&Xjm%tN{? z<X$bmY7%Ihk3R(Q*7B+xwPi;&HDL66WAQ_3$@1TedE&!mx`A!Qypn0 zhC;O)nO&($w01~a!qg+tFM}~Q*J5VN%&8nATb|*Lp}5r0pPFb$D%ux!>NpF0`6h9t+=spek*0DYFQ9fUz8E+zrw-$zmJdqkfl;^4>!ZU zggIhno*e|O;Behke`WVd=vi~uP^?yP*D9J9Q<3}q%z5tA4GkVHu5^aLlOHJH-heYF z5jp`Nj*2U^R~ez(9Bxf+u`ywi#bU}8Go8L)GHNwAtroJYVI%*noc)3eqkh5jYi=P? zOC^#3z`l4YHuZDR-+OqJ|AbdFc};0_7c_+)zLcpkde`XRRFkqY5(^QYxu#a=JIB;Q z)XjEZ;N=}Ncv?}wqs9rS3t57I+m9sgedt9SZ>Fxi;!pOi~!M~WTR~Vf9w^%8e7)Mb+@f1jF zA_F3DEYB-OdD0Iar6L6-|8e}XHncBewfg{RxDR_kn>Cr{m+zd!DiDQc97G(|f8h@UXpio58x4VM zf%eb&hIpHS#rQH#X3wS`TvZG<(GI1Xdys#HXNH)*oP#(YctER4>JkE4yHUW?#a4@@ z^$WNnG>r}+SuM`&z&Z>H+R?t~T|qWy>md{{MjK%Ap92T>g5v1n=Ng8Vj^R_Lxg86R z1*wMv+@Pj&~$kw0<8tfxhGW(CsT|lTq!?q&20x~7g&6ALSYL)Iu7wZUK z_C)K}8QZiaM7Mhcv8OAWXhZ=M*f{EsEkBX=Vy`QqX&+}iC@e5cb0M0ys`&aK3B(I? zO=U+h$xCbJNNCr_F;`w0I+SN1<_>3lAX*+iL-vgR_sl?JQ(C`Jw1=vZY$p4n?P`!0 zZDGRi5x%JBQY}kJqhZG;HSrU4?v44qYHdLMNGBreMdo+)09F*bG_bzC6>(NQhvO(R7+ zWzEO1%dY{&ekR1>1&G9Skdw2ujn3+j+TPw4T7dkFo)wU{2L;UkH71|R=x1nivz@L~ zKu1~NN!A+5<8R*y`G4FHBg?D-EtElx1Pswcs;(TGCXNIxYY~A}zrzO&d5&FoIDkRz zmr{X7!D^eDx^zMBIFHFA!R_(NHr*u5Jk=rznHtfU;3X~L2ZG3y7aZ%xDMH(*Q=iGD z>v3CjI(`$|n|&gH0!B)e7{p<5c2eXqGVh#jeN$i|SfChkDX`-%zoni3K3Jg8EbcS& zpV9+wAThT}LFA*-Jk#$xE#8Ao%P3$9-Pvi^+;@nOlzv8uyhAER_yUq=wwm8)hh4%?0YM7f2wcUD(^)iXl z(x_>9iB_OP*YvyA^o2eV1PZmR>Dwt_QX&Q;ujq4EwCa3_+;pZ;(#XSSBFVyTzDF3j z2CV0cKIi$&&9mo0wq?Ovx@c49O`?cE@L7|Znse^!kv5M@gnD};N?R%3AL=QLIFs7Y zSpj%WXU<@}d4s&ZoL6k**P>BLHQ-XcR`iwFvVN zAIxzPiwQ#Ht2p;Gf(spdD0q#zEB^4H<5ta_{a|@%FUfD1itEv8g``0$%8drXn-F)i z2bk%^&P5n-HFibrl%N{XR`5^>yxS-rjS+X$(3x??FX0$-o3{lA32o9*&;e0}VO>!p zC>3t{sWHyxOEp8jsicw37y{I^<~RgJm3yv?!-JKUJAio1BlTYXf0S)`{K*IsKCsA! zMX^JeJ_yO;0%D7XdNfSW-v#)r8Q5m+$_fmCST=v$^$0BI@`W2Lg@`R*?|0ht#`=_zd^9o&osTVL$4d7 z(@~$Q=j-|?Mf2BFLg&%_$X>E+Tf+=y=0Un=#~*Vd(chb~^PQ6$6N?8@OYoocN${(w zZ{sMDJAtt<6dc8gG&V)1~vNi9hk1c+J}|?iQ~fh$ia;dP(d5Vh6e;(L@0lpv=f$TG}?*)sw7B7 z-%yLU`GV3NLkF}`&3AAwm4y;FKcn|jqXuQYkT>KIK)mgRTTUbuD-1aP)Z=a3sS&h6&?SDbz^eua4?!EeVF3a90Kped``h4&4yum#ih0R zynmuOWU?Q+vM)DTNw}CCmuP*aZrG2aqeyL!MW;qsj^!j2I8))hQJm92uVoHW=j|d$ zm#DM}nfMIt`2&$o++*T!cB1q+KawPtl^J!0i_l03kg6z9vGojha_uC zfEu;=ZHyD-g?iCkR)F?;f=SI3IjF?D>Ev%wWEpX>mZgY9C}63W<~{f#I8gl zrw9iDBca>`4rMg!4&0N*-UfK)1AVgSOCElUWMo?UuN)kmo7-l)bxY~Rm=ZCe0WNjF|2ceHm&fKoflJaTd(0qUn4djIvr2Y%Y;crV2v6H^Bcq;f)TFj zGiz&@zM}kgk}BWI1F>4yVtn1|s>Lw2Vl<%PzT30}w$k1m%20x@qNKH<)I-fkthH2h z1Lv>lk>?Oom7I44HW(A>vIyP+xjPBVF+@Zj)=nS6o@uAy!8>vCA}}SHL=&6NPyyx} z;&u{Mt%QywT8$)koBgjx{jb*p_k}4KYKA^UtJ>{_tY?AXdU1nWj-ex^Mp{!E#UZ1L z7UPhb@7zlhDmh>HdG6gAPe0IYpH49&i_}RaoTFGtWM1L`KsMGINrlBv$jvT^bqOIq z2od6F(AKg%X!T~~8_%dbwy+pb3N19FlnsQw+1z+?tZ4?I*VZ)M(l7#J;z`f zW4X4PFoD9PR}Y+6Cbkw@L3L~5V74lZpBXA{wJef)U+B1Gl=tbG3h!e=SSvBRjwMUv ztO`MN7=9*1R4S=bHH>2;r+jV!SD}_h$N)PjPy#P?%$8JbADT~ssuwE{zZv8J_|fqg ztX$mwn|VuMTOD@|M%|2cjgZ?^{wOg(QAR_8UE_<}^{RnsO-7(G0eleT8mfE&QiCmu zFmqRuv*MtTQXn3*ok0v!A7|3U4hX~$>&2rjm%(*>0V4gw_&Z9`$`jC-=gT^ObT}GZLv4JpX$WC_qT?B?dBqMe z^eydfzXk{!$Gc`%*}0tCz0ScU8kbx(%{bW?NID1`m#*@8$Pk#M3EL?h0toE_cg=bom<@2Kp!8M4{K*6#3p04z`74m?!-N|cx1FX5JK`}i5Gy0R*6Qq zinjE98NRmyMOXv|{C5GT4O=I@G!n_lFh2aeKI zY@bOE3c>?ashHEv5bpO*23aq^v!px8-nw%z7LNhtmR=Zv@yg^t8Yld9EoNVH2bz7qptPZ^S0tYGe!WMnfvJ zRc%cm0ro;@JPQW?r|d>c9{lpn0-aW>?B)2PP;{V|+s8;RW4wL1gaKqqDhXwW!G%~6CL=eKZ7Qv2sj`jGr47f5RGf)&pV>f5-m7Zv4s2!9 z)s}j;CMmIK=&Q3$V8U2|)v=t1IMY__+c*9a^+Fq?e3;qrxCx^qST7LnIn&-;Oks{t zQPyF)`mKyZBJCK}{O8DEG+TT?`q+w8Rkn1ii2&&yG8LYatPx?Hc3dX~EMOXq2b}5` zao*%wafDv5)sNO@S(-tB7dlqIK6F4RC96kNe6hW zrehe_b7|PY1-Z&^Mocv!-3l<5039ON-)CvMxg%Y?QQEFwxMUBN!mQfZoR~#r{*Wl7D1in=in%oj7bYSI#=#qv3nes?*%{>C2~(*| zH&MT`AkGwAEDdYWh?q%-ow`1mWI`2E8HfBM84Vlp=| zsS9ZBsq}Bt(sVJ>k_}N+rvuFNho5vLrKe$N`m+LLkSfhkJd&4R_mOO5uO2ZBYW+GyzAaDP63OF6S{lyKsnGyNX z@jhbkPz7-`T~5US1OOdu9mJFLqxD0udlxSji8^qPW??EEexSC?MsUTUmMTIiW|f1I zETsON)-M!IN_Ms)5=lf=fNd92grXfb8TKoPq&rFo6=EI+FxVorswABW39|j!2Oh;} z3!Uk%B7%pxk93{yhnQj=vqwhqU@}Bqpt|FYhGy&N4F{1J)rt2f-Jt=186qTliSsCLe z6Me+^(6@Hcgf~wttwu#fQC-QQBT4#WYN^qPVGZcIsj$=yTE%mkuRDN>C5E$}Y|6vM z_f~DS3Y(8ALqg@SL^@cB3e||QWT>zDq{qHp;Vrnp@1{JvmNa@Y<`!1;@i~Hr4y;b= ze}hjlCu=LF8VZue7|Lfp6}Az3H{zUQ;(bxyRQuJW&e4J)WL*a`+vALNA`33l2zrW_ zA2|sf0v(!mB#uof(%Gv}RT;|i;C3fz7D&o($$ow~=jgO1E>798*b}wi>O?u}eg@eT zk!6>?HvV1kClzrG-O?1fUpi5{r`?}Ircx86O0y2Ko|K6m3L3eTh{V-f7`bEAbE9Pa zOsvR>!KWCm?UvsW4}~~E-qZ?}7&a~?vHfc)yI_M+yr~b{SBceOIzmgqkH$Fo_$j8~ zm<5EJ#T11k&XqnUtHAc?OQ5xdtZ3*;6{QqLpR5`c4MQB3Wv_#n*MZp6Ak8R%UBP8X znS2t+Ug&L0V)j+kA`AOAjEk`|iDQ9JG7QDc9qJ1+_ZKdvjwQp$lNRzTB}MZ-pnZh6 zJ}Qz?v!RmvtKsb*ooLS`=ly-1`m~?ufPA3`GW}>pwMxz6B1)W0bd;tJV#d|fk+3e# zRJ928b#>IW>ybY}A%yu`ab+&NE@Vnn5Nb;fAMWf6`r|r5k#KHAlP_D12e~1UWW^Uw z4!kK2&dr2hna-D=eW9~G?8i6a9ae5U%`?s!JnToqrmgRGl4uyKYlGBN&=sV)K7WPo z8pr=O)s+NjlpwATVxx`nRUqz|ax1xGO_Z$-%p`z{*o9ck!J29DA%0(RaxF``w3oA0 z1cWO1(taKvTwRyKV+f1ga%rk1_`0OQI4qDDvpne9LL<-%_m!&&O$-HFB)g# zgBDLMDo%}ryI@sl;x{h4GZ$5ArfIs;zMBq}b|OMNCBk`y)`TY93Os5gJ|ZSjSMXLK zny_uVU@4rABl1YKPBMnNRJIYqzpbbJdP5977u=e|&+=i^C1qceZW<2OdOImx<0*C% z#tel79q_d#0BQ@6LwN6!syN0(zCtT?_~__1kgpX<8(Cj$We9_sQQarGK0=8(wTf^M?Zgl}AJE@xQ~UhQ=*k_<4Xz#48-8=|XT-Ma z-PlSIAI=~Ap{SXpLw{gPCMS2Zkk2Zw9%9;P==v!njqo=0B>ZI2S~FffbWmEMm~frV zY?5(66Iv3unN+6Y%*oGCi9}dDUbZnnW)SbjcOUrO8fluG*Az z31%ll>Qi*yiDTU2*~Cbt+erRq%q>x-3#aQ6W)2aef>^dq={mS*Du&dsf&?|pA~V{< z`!1KqA6^K36pFpC6d2D3Cu?y$I?ruUj?b@A$hrRX(QM#FmatSSkTao9)jlmvB|Z;Dx9i6*=`*}xy(@5 zRSKQmo?!0s_fy+VCbdZ)NwEQcp{pCpD7HD_UMn1TH$BI~9)h_9PD`WY8R{(0T36v5 zd7!~2VqYMpjM}Z+KJ(@NmLOHj0-rD|?s0bKWF;nx3l$Ha1jTd&l>%%S z9|Cn9)Y~Qe#I#3Ze@!TtI;vL|6w@5}H%8s$^C~K(CCxn#aT~`F(QpiR=1~+k@_QSq zW1hAcuC9U-_hVmH)FQ?bIdw+`KSSllAOJl+bqJ2P40fzA9TzuC#SXp{fxL5U?3<@P zN8GdCae7sOJ^{P~2yiTEi?c;cSVEt=>IA>OAbl0~rlmqKDiG0&pCz=@;}Q1S1`|hQ z#dDe(D0QTgJQ4P10+-Q@=>~N+BFn6JFp1N??2qF`A5Fzoz1*jhMfKlkY9|+qKV1r% z7GP_ch|zIgoaKm{a;WchP37@Nl12E7t(PgwJRHUbxzjnj{DfpZF9*u5Qh4$_O{d#L z?a7>^!e!uPVll0}1eTVBlE6}&nG5pfolwY@NRJYOmFWlja(mBala zJiKeUJ-b~0!V^c^SCsrHm@*3vGt+SohNlmJYTYwysaY!4--~eIQNg&$7(0$nu~8o# z$QY04WQ3>MlttxTFRENXXLvI06+p)}=Rj8G!nKBYJx_6P^^y%Q8*p~HVr+Vl@ZJ1S zuHWWt^5gg8i!%D_q2{|5Q9yQrh zCoW=6t~|$aVn2JaaOfeeDIcsPOf>1J+Qg;&K5Y;?OF?7WSn#EeJZov9?E_=p8a2Hw zQQV>+E#t^a#Pq=Ws)QmRU+HZDzU6|b5@i9WG;yx@RZrd)?kF5K+Yi9$$Cf#(wPXG!S zxMs>=qR0-U^kT`p`&`eonYNy&ynb2LGuPMWNLH5GZWvPhM2-8TJ5VbeywO8WyVMyb z*o_6yl2q%!i5~kaPs%EnTuQ-o=wNf!4ekHevBvS6se3m3rX{xxVHbkql){KU22GSJ zX(gD6m^2}fMg&IY#8Odfo|5Sn5l-r~psE{Q`$*d+yKZp9o2&_J44A?>ntufW5qgc&O-wUsq0Mo5_BXo&reE9GAl)bO%OH?@*tTjhc4}p>P~s2XD>Z(R>#X%> zfvwnsYyIO=-=M1002!~hJ@W$VPiEcdAAPq0GTO}~ooF%(rEKE4UNDMEf7SC{arA1t z3kl*2Z%xM4+HK)Sq0tmI;|Q}&Lj3xtB(|%*Aj|G_thhrz=ZlW?B0O*2G=lwim(3oCJ7nlhOIK_}GI~y^j zKaekQQIbv&rQ3KB6_)Dvr<8^_QOY;}ao@oi^o;u`zDKZXjRPpi*`yTe(6ObUp^r|f zmOxUe`cRe1FonwVqJLSVgEwiF1Yx}#A{P}0CP^f7=r9(U$>B;eBU3{`?th%9IO)W7 z)glRV$=?-Xl8kM_`S#*K&Rh;oGF(?Qi#FnspOLYmdA>C(CYeo3gbEWSF(c>I^3iID z=Y#mD=Rif~ButeY;uicg85Ds9p<`O|rv8+q>yE~AXQb#zO1z5ubBGVD5HJBum1+lwgInM5zF=fVQY9|M0 zw{qHl!dGqP;vz!E4qtKtfA@~>&Lq0H zG~unz5hA~uW0fnH|ILkpO@T7wr+dnDEIC12`o~Wh+n#sHI=c0T4l}bzZP6IPL4xyp zXD;G#n7Q(ZHR2aNXiG;n)Dt6Meh;zpFF1MkRGQTOc>Aw1pTw}Mhy10Gs0f6s(Feco zQGdZ6p7V`euHMvJo$3D`asTgEvv#6T>}CH8cY<@&T6Tlzok58Wb|G7pM2&F_ut^V_8V;9MmcF=YMnYtRO41Fy9M5& zY2Crh#4LOJk|XM~U{1Sa7<6)RngCiLOPET9w1!Pg$e98#@{%05fGPI^aDKb^G$tG- zPtPId0^gHiK*CO3oM)rj(EQQ z-sb0M*A_6pm9rS9$$eJgE?E&LrMA*L7bvh>=LUkOg8jlOA+cP^paoLRI{n#=W0^F5~@`e-zx2QJ)C z54}>m4!!>}TDc!~HS?Zth7I%!mHxsHHs(`B5k&GB@V(5tMH{tCW$eY5#0rNZ4^MhH z%dboi%-5BiV8Y(MO^U$}s)J?RElg~2)D@v%SJuN`$d21v5!09W)(mf5yOV6^WjZ1+ zE3j!en?I52vK-6gGG1;$dulSY;$fXoOq)(>Qbso8lWw+u)4>b5sgkA*!22Ffd$u%; zB|WYT5hLZW1(!O)nj&+WDIdqA`IcS!ujbd9>BHvyUCL=&Wmt0?1 z(i3B+A2E4Fo-NkSySoZR;u|3-n#*95sWGNr!m!lG-uXARhF1j?v#He0vI9N@% z@+jL$n;wa;bud^MiUch)W%pyVcQbsA!%c2ylQyv;sr>uHL}6q zUGa66zaJ4i)4dScx)OD^h@m5IdneknOMHHTb)BVT+w*^ZJ2!HFewDdDLb56C+d0Ii z25*_hDx#Un6aKj4o=~|6nqCW&)4guu^ZI>>^``#dbPNfjzpxD_;$j{ zz`{f#uMgeod~XrA-Wd(*yR`F2>&1F+oB#E+NZa#>t*Z0$PZ`{9O`wqV5^!p|4!R$N zsE!*U!=lO9*EA${&0X?UlImL;RnpiaY;MM@GX1DzXJm4DpgB9OkB3^U*1(ukBRtKY zc+$v6s>p)(91sr;r2}2)rdOg~(b?|9z+@d9e>X9b{yoAqb5-&0l8I z8pRRjVpGOC@g}a+S7*^&SL~N;*^!B%0e-c;BEdX9)aRSMCw=Sd$3F)m_D*x+A~zTn zseoYd{Ageo!)s(*#gV<7k2qP^Np45LJHB1^_zNU#mAoPJrqSFqdW+N^JxtRB4TRl_4_0h--?39o!7L%$JKn(NX_<`D@QJzl` z#GXi{o+53|^0Jy*TEiZTT^GjDp7~10O(U4{+DM#aOY}7S-2&fWavtR%{g(Ie$$LbD zg5bC{#BN@yDb37>4uRz89X5yw?VzW1W!yEy2eZSfMG==;FWHq$lYK`fmjtdyq4lsx7)eUUg*0$5qHY6AK5WA0M#S z=SqNY4Mlg@9Cx|<@9)G^eSymB>p&t@Lov?w?Vri&klDEG_9P?V;Pt~_@3&(lkC{tr zw2#{Z8elWB^ApvM}o_+A+q zbT*uV@a<&lf`s@eRgAeoxM=)dSZu~lDXi^|@lxBffc-O)-3y+gM?&+>GD|&G@i~0j z1-r4ptdtrWYRL9Z&~Y0ZtS5o^!ZuozUZne>7w*V>@xV381P_V{^t3@(-lnboE`cJ%CnHP`-coL2eAzIy-imSr6S0sh)H9>1Fq*j}!3%~G(nO|v^Y+n9? zysGU4;81{h_RKSU5BLV3o7#LFHFDT`v$Q9bGf!Gf~xnWc}hE`2^E| zpA%mF%GR3~-22F7=!Rjq>X~Q+5&a#aEC^T?xXvwDr`v32w_L?hq~3!KzO@*I)x5(m zF{@Gv)??f`;sodJAmTC)7Q?EH1)emzlmOwAn0MpDgY5P_t_RP@NNcVaD7($riDk(H z^IeD=*UaS)bEK;*iG}}hek<8i|E6-vA{LQ4V2(*-(|Jvd8^>SZ&;@6H;V`lF+DNGy zEye{B`0cr0y+*C~#@ZMAN~&aY>u1vN#`iLCU(N(+rPh#T%TvVlWU@&4O6r${ve^2% z=WNviSG==2q4a`NrSVR5()a-MJ|0kNN>UX%appFsb9kL#a>Tfaoa<)P{7o!Ip~QGu|WW zLq|~4f{~Z9u=o7bln2c>L6$U-?jIe4`(M{2)3cGB@9-7l?J(=)AA&7u;I@d*l&TYp zAjC>)3?RBLvM^{9AKoYk0dTqwIq7{b9B?7aN_$u|-9n7}kpMT%6s`s7iCab+i=D2_ zojN%;=3sdQX|O#L#v_Jw)C+;Vo>C5P_;}%I5ZD_=!;ZZ7%|BrZKf<%R{o)Z4vz&yD zzYq|;P?{zy`OoTI46wm)RR9v4S0NDZMd(jC;6CtVimgW3=mi>p@URZ)d+=E&^j{1D z!1@exA`@+JDQxk3E2hyP&D6RBr=MW*s*8rvgt(jT?HP`JSL{+aEwSZToj2 z>tf6omYkr@X7Hhy11fZpe*zj(eltjKJotnMHj28U-#Z_M`0g?(46I6sDL0)7L43rb;1kd(C-6sM-V|b-JRH&TQ z{fYG6Ptyl)c>9^j1=Fb3LBFRV1E;bWbO}xV3rS3B8Kee2nel$L@5XKfZH80Mx!nHB zBXMcHO<(XP5;#^}qgL;V9hL+AMpcR`4fC3leI%^d{$k>BF(jwE~ zB(GhlzknYhv8TvtZu{c_BBISVJO%FyIHvNbOLc!6u^juhj+2zsv?*T4YCpPtvgZhhID9v6TG7pr#dGR|p_! z0uKeBRJ+cT=rsr*$4jw1UE%ZZp@6k9!$PU}{n?uY{3aUR4>ns*`~DDFsZfk`0hS>{ zpO&S7G(s7q{tJEo$jhPm5nuK_4r+QnPt^P&r~Q}cC>`B3?%G_Y&Q>}Bfcs9bgbQgB zpZo35A5y0A%Sr6d!6%4bkp3N+QG3RLmQsjA6=LIye~1#>AZfu?g5B|%Lunu_rwiDx zD-yI7Gj1SdGn^j_nCZ(4IpG+z4OI%kl5uAraEV7;Jak{!`VZ7F+_JuE&zZc=i9-)n$NjzschKOw>Ah6NsQV{ZykYpF41{x8bjGAfR(>lVf# zI0SbOgvQ<7UDE_>+=5$hcXtS`Ap}C>?oQ(&xFxs+f(E~J&VAnZx!=$4PsX4}(WGkE zT6^xb=9*K%MWDbF1~4n!*V#x9=|xFOaN&R1@vYHtP;p) z#r11c9IyX}3A9=geQ3#5o{{bczU+5?D(FO%X@AzvSyMD08Ne*Z177bR93fWlLonLt zMK{ynU7FwMHwvMIhg_WPCMd8HV5yAAq)vgg-S(Ww3iGkt{K(I*s5w#($+45b1Sjgd z8vu_?DTGc%?bHjnZPpy>H-z=up>*2=!B+CMfMt^NnzY9!3StgZtDYY|7dtHMrfrc( z-6&b?#>HuE(?lrHjgFV#2&jPby1cQwK*wawYJu|usd1YxrO_9>ci)UZBc0RywB<$J_b_A zPn>MuY?!U=GeinF59PRT_E}DkJclWmjlDIm4N-c}KF8%2TQxJs6`b~YT1sImJ!CX~ z#V-<%fVKCKXW!0LhGdl+OCb;$ef+4-%KpuTvV-g6yn!%#$Nig9ky|Qr$9T$`uGKES z+M`lL*nlr+`g)*K9|zp5wU7QKo(vfgqFvS zPGl&8H=ltMs6otNjkgfDuk$%yBV;`**^a0SDN{iE%{rVAmMs;ulMG?qyi#vdGNTQ? zor!O!IU(7e#Xxrwb@Mk)mla!M1tI5mNac675WTB6=;+MwKmsoCsOjapESz!3OJW~D zKyM~8_g;7l(?7Ru4piOxM=0XEa}b31>Le0+@;%z*Lc)&t!rbBes%fa-pl? zxHbZz;mYSMA!z{rT1N=07g3Q=qqO+t?MF%;@cO~VK1^CoC2_w!>Q-tBt;YfO2YtN^k)~$vo$J z$H^dr#M+XcUTvjTU^X-3;$My|4w%1~`+Ad^_7Oio3uCtH2uDzCE;Qvg*-rT*vK~v1 zywBRESu#8fn=-KHJV;6}j=U{FE*(0pke`z}Iu|%!2k}8c`Dsn?1heL?UJ1h|0_Ae@ z_h3H+X2dn?@i$gq1@EFxQ_W^y_4*Mt2nX$=3l3$Th3qss6ox1KZ=Je%9Umjt_eMM{TLELIZ9I|} zK02%%!2Je=SK+NG3e4Q)A`%Fz@?YI>u&@0u3Bv_Q2k01hHQ&uF=IF|Z4FC*w$Ox@g zh!(`hi~T2?=HVBhp=d%O%h5gHjZ4 z0gebU2##!5jCzV%J?NSA>FFN8gLNkY?f=-*6ukvdlh~&W44`fpEZ?1i4Eqwv%K_ey zR|2!OlR*7#`0tq4*RI}zf3wIK6k^zKyXlhX7YhksCwAISZ2L!!TYvrsFA-p5meQ8V zo;pH=(pwVM&=v+ctoz)oMu44TE5gik=WKZg*qaEA!CCc300uPc#m2~_hjO2o0{F%_ zswk`1t=dHHbYwVm7x!5nsk{bwsrk)~f7NI8)<>#^TU3fK6j}7SRnm+CgfJje3d!3x z6oy$nsXz?m7p=@{uZ6(anXkk-!HF_f7d?=olOtWM_zYuG8xWMg)o@9)JMs!~W-i6C9lg)*+6N-8&$w;)YN&md*ieLn?v2NXMg+t@OlJ*oCjo>g6vI9T}fGFg@9>7rl6Go{2 z_7oz)jUIgnGK>ub-cY>(05>0$dB0fpf-yba+f~h>&T|CEacVHqW_l{n?(w9Ljbg1K z7ub>i!9W5{V*g?w7GNF5e5qEmN_Vt&P?3TCypgUzc>+KMIXNV6FaXTb3c4c%_WlGW ziO08K?AIgOAjzAlDoJKXa>h8DJ~tX~%BBWcB2ZKeJ+KBM$Xbu(KumG-bYvjIe0FjP z@l2o}%pN+bTGIf`PsRnDgybHn$bWSgamB3|$+JH^9_~YgR5QmzcUisns6Kw|brXI6 z#kr*w8HigR2%wvbQ!mtY;%p?^cE3g}G4xvp70MnrT(u9VM38rZzy&yQCn}@g7yDJ8 zL_YoELjm!e9E}X;`L(b&KyvEbEA$=^KnhhKqqUiIOdR@#TQ_?UGIRF%B~W207d!8I zxnK8mVP+0|k>J_3kz7G10;#Y~WZ|v>NyJ3uxz~8t?jPJkyB5r>#N1K44@{%f(@2wr z+E)3&XRgx?MlZ_bl8)TyrI|oqN4_;H5yAVuctWSnSE8 z@x>jOOe%z&YmBzs_vz9Nm7b~DK6Mv}1qP@2F==iH#iIGVHUA4=Jq`SiFi4?!ivQM* z7^B~qlCT(UBg2%-z&w@IUva-=&WXhV$3*yqJ5ySdTAAt;^P{X@?#r;028hojkSU^d z?G;|VkA3O_ZnFOn89WvE6u*mR$FK_z98-&414mh-Pm&L5G+LA+p;i@7oDd=TNg(NT zG7+MGCZiw=0#G4|6~bJ6Ng*nThf_dQDgJ)JghI#*-4B~W-ark*e2zfS=Lp10MBJ!P z{JtF}nTdzCrHn`{%z_!@9IR@CYHBz9g=c@+U~1F2GoGQFsO#!(^e;hGu5fX&Bjbvy zQMVhR@smYmaeHxH4VoIRnf(LRe9KjljV%Rw7@|=Qo#y0^1mcCP2;zL5R9!lA9TiRZXIHI063=Fkr zXRpNEXF6TsXh0%@K)>4Ty}Vq!%m^_Y6-HWqp0u46@d_vB==4wNnvj3O3|gV)@oO!s zK;G}}h<4v+hp?V%IJ(Yu4|56DBl|}n13*#M@D|tpQ^(Ts1V>y>N_CxO!w74oEyPBJ zhbKGdIva3kYRD$7oIIE-|H_$~qFyMLR5gt4f#YO89RmLg6I4^}Fr?njk5aujS4UDb zH8EjbK>k#BJl_VxC9{X}FDN0tqmpOBk%m-9n5M=dm=jmG8Mk_lY}<+lLj6%^*APJ9 zdc2=w20QUn^bLE>w|FE1;%rc(Kth$Qs8qz?QmXIS7f>%~`7q7$C87{!naZLaXclhi zGt-i;rKAriIy#d^TYn-?0CE%(VgE2O=ciFJb)K=X=4xk&yU@B=pQ9TF9RI71Q2p-! z{^q;?enR!1)wxg*vk+n^NQ%AZKUwjEvq)S0Il-zR$xAJlkub_p8p#QLWmw@|C%LQ# z9zs|fZ}%eFC=dz4LrtQvp-yrA^NSF)j+=mG_C?U`gyA92dQWKl0f*9xTCXo7*8uAG z{EM*~Q#Ck9m(1&AB`WV1*^STG1kb0I52f1^Cs8~-d2EkxPz z!Z&$U7)*={AS{WGjBIxhP4O#O$SCx{}1E4O@Qq9)Td#8GWLOGT&MTl5>(6 zJ-YpFsE0{Td&;U}@((8%gceXzNFRmmG0&dBp9CDu;sc5;F6fwiVjl6K8a^&3T)4j=EIKunvOR+s+`=tMP z%Co>wGbPlXsv!n9eD~%=#m+;8|1QVBnk8M{BmYL#)9!!OEdEFABxoKYq*h`>{WK#W zn%IBg+lu}*g^nA_lgfI$%GKsbeBad&_1XI**?wI*Rd3`PsS zE^9@fu^UOND`9z^i3|!;SnGQlyAw|pbZq%JUFLTXpan%O@iIPG1j*Z@P2fDN7d`YH z(5&O^anVe;mr4+d`930fQl{-BAGvOg`WW^25T}52#m|ffN;Tj?Z^p=qyr|36`J@ud z(E`of{wh@A4UI(!@8iyWb)u=c`wj;Sl%lKTsYnJ@S<}|9iAI*gWH_Ds?1`9prcF({ z#9y&44#~(Dx>`=6q3J+=+<){!Y1q&Ce^!OA_u@k0=SlK^^<@F z>zjeR2Y0l9(|fFyGeWQRtil}spZ$zCs7N_EQxiU150+CIcOg>Nxf*Ii1Rty8+_g3B z6d?8Frp`0lOJCwPG{o*n`Yu}90{>P_B4$$Rd7H8I#K(^xk5;$8QdyQGiJO8(_<$mt zevv&WVya)_>LLz+!0JxN=6&@=p8;KzeJxyxB!mtQ0D`82E$@B$F3vR7z+oV~mMz~ayi?{{o9di0I9=0ec?;sKEMib95oDsPox-KKEr zOCg@qXb-K<&IDm~CW-;YnaHpH9ApYqq5t+6w*R-s;ObJoDP`bEiGL?lhC~szI{-Y1g)3+?PbbA%M0-WUb7sLqWoqErR9y!t}7NN&e zjn>+3%_Q%KfU5OT5QLHqfOPo1p}Qw*>9+{5q4eZ9kGk`uC;Xqjds!vrxU0HbHb=HX zlt10DG44OM)kM!}_U4F$len|f5!fj<&h3}bRHHq;i&k}=At0d9{yG#HjtnLGR9w8n zrI{_cY6zYoah^$$!2T@DnUlJNuPnNTR^H2_+V^=Y0|AWkHunl78b3qYTk4Lx6pyxb z-&dGgA*+U;+VqNZsdUM-ElI=MT;@GZ>-dkEJxfV2ZwP?`U#>0pjL?|!SiTgZu`44Z zD=n_@2To$`3pFLR?7So-E5Sxm+VpG@JSl)?;~E5pR)c#(t(qoq>O4-z+6l7h%0_n` zKl^Fj>O(^%e&h=gc^Z*) zK^kI!&zl8?8p(LRLi{IgB-eLoY%H_8k!C)lwaFzah*7COgXhc9@Z@Nfo#h(UrB2_Z ztwiQ5Yz7CX?*>2NJ;YxpaC+$RRRtgRl>_VV($DD67K+|);t(u2eTquWQEYQm1 zDe$ZG#g0leIPwl>W6Nb0sEKDGJ&O&szE=)hh4Nn%at3Wn(COhJsd#bY&&PlZ$q)>` z_4>Wr)2D(`#9))XbK`rS*Z-kNI6OeJSYqHu&~*8A11^&oI1B@MA%Gc*3iyMM1ILo< z%Ud|u$~*@i?vo*divS%XPu$~Y!unXd^UIawveUnv^oD#T!d00Et zh!75#dCxgU2|wPqt$Mha!o@_vi(=YewimNPTYDa~%b8)g@XK1XlK%4I+6{(ah~5$( z{5u`gJAHU zYN^hTui8;qC4kOPK%)Kt3Q!zo2txEhS*Op(z;b;$z=8Q={M*b}l8yVHX2zf?6p~|M z6gGA$v%zL_%>=C;W0fPh7ILhJ^Do7pn^VKxZ3#K9lI!Fnj}gXR&7v>E+d=i&YR$EK ztTFF_M5oKuInoS6%IX@>r0jM^7~zwxMR4CLg|`-Ak=CGoIa|Sdn^@ND2sfgKs`Q5@ z^?S}Ug<2il@~S~1WQAWEKaRoh)gvIRFA|5Ev|!aep*ZJiHlZwy;Lq&dfH!Q2 z6+%yb*tU~vWtQA_!pon%{QM16()<})HeERyoc5ZvKQPXdE6A)**WVZ0SO*>beMgEd zt9&#AX~j_p4rXSLd|ceho2CKg2>kvn&7Hxsu(!olVr=l5f>!p8RUrukCEwGa;$6rx%n7#B?zJdtA%|rdj|YAs`%0+U zGgbse7mz& zf0L%oV6aMnp1rzs`VtPs>#P-B0`p1rGC@{cwxsaxN{Uw(kfRaI^!PVH--8vEI9pLJ z40N+9UOk^f3`D6#jk!w>3J&@OiV7MqDB-aVGQ7LcGn+~PEs`@ytVq}p(4(9|%tQ_X zO0MQ(B4NAriCW=GhkthlNDGPOpM_^>LTe;LKkA7l)a<-VBcj#Mh;?~>d+z=TyfmQ- z7sJK8#1TTz$TeEDMrSfo%JqUVc+?opuc?~98p&(OKD4d+p-|azPokHnf+oEo_P&)o zCdY?2^D;&CH2Myoqc2tJrjCx&Q7E2}E!m(HGO8Rh;b_t0LQsxDJ6^-+=YAkMz=Bg$ z*HKOG`kv|`LcUTk@#am*Wnze6OP-^|1hI^kGIj!+TD0C9nLSOqjNwAv3yG2vaoMr$ zWOH2Tb|^^f`7<(%<9M0;aqN4R_{Yr=X-?dW{Hv}X*{4*Z{^1jO+&6b)99N&#xsJsp zrjjVnc0GG)Zn1}x;vt8qoI&gLEBi)bO(9n!UWOko^R4o)Ec0UEi5Y?&YEUXf# zi5knKjDyf}2n8TDo#-kPw2=tGXy z=YUiAL%0JJv5xDsW=_wLVP642g@x44sQGnID&r894S-m*KiDI+o8bKY;I0-tXXfs$ z@3N?%py$_u1P1`~AsOM`+1Q$)Nr<o@B$#vB};Kcz=94UY9a6&NLW zA;n&&6U2CvZ0w23-p)j9oYt{N^sr$Z5H_wR2;=D6*+>Gl59fW#y;{cd?HbBlzP8RX z_Rz?F(rw-dZg}EGc3AAK5suAXa~kYOKy&q~hZtx!B92!)D3YS;`)m2&W-_@GGxYuD0T&=$!io@ z@#ifj+ais_;ZTVY*K-+0|9JRIu;OtP@A6y!*AGBd;sxvf_8pGnt%m%shCtSR7j4D- z@i+4{5_cSx%GSLXK?9I8xH1FzN3*dYX*CD-i(F;M7Q1xV59;#rfJ*nYO}pF>E#AnI zAWFG`qjhFHd(Bkq{)14miN}?QW)H8$@{7%4zFh;oTo1wfA3&NNenvk||Cj&l<%^4vxqfFS7-YwP=bsAzj!&PXCep)` z%kHANmRU%(q<_y#op8?8C*b=ilYQr*EeU5Z;Xtm1AjKRar`w*Vd{Qce_1Ezq@t_N) znK84=gOF=OSX5FBQn3Tf*pWxSGzOq(^Khq_^Vjp}mgo`awvYF@?q~()9EE6;VgqdD zln;EgvzEmSBba#kVS{#3m7Hj_V?nZ21&E2XgnQK=v(Z6{b#1t#IANL{@R9x^jPq$* z)_&F+W!n9NV~v{qojwz2MR(GWzV6xuf%QqVO4p!dYHhC2 zeK`y9+f6OGvEz<|d0kffdgjrVL3*u1rQ20?i;`D!Yj2gg-TT-`N*b= z&~L2yUHa-wO(Uuz{RDJi^ix6io8;Ty6MW!Ao1RhgUN5%^(85R_bo$5q4$gcXDt0|J%iztb4sU~3&_-ZVIHx#nU^x$YhiwT6qWXv{W zbe~M3BM@omEmKYqY&@GVz1dF`q2!Nr@e{yUkZ^ONLMqR*@3K z2wD4|bDqrm-+vEDaD9nn?0Z2kV4@%uGP)qQL)((;P2srN$Y>)(%tWoXnE93+v;E)p`F4Ybx4(}6GFW-`|BxdEl z>mdd&xc5leK2j&sp&=~(WO~VYrFV@TjUh5>N$A5PuKx@H??B!Am?AS`m8&5aic>qm;p1L~4Q3 zPP0dfb4Kvz_c2!pi~tPo)A=UrrN$C2^dp)`d&5jUqK_y7S9nC%kfI|vpSxJgTt zjlL@aSYU45IB1!SrX@qIc#Ii9pNv?>N<*@Q7WMj7*8!Hs$gFbgT^H~k0l{XGVzdF| zp+95%07k*UNH}Jks|Durd1?pdr|`})8+^sU8*%~V1hZ>|oPus&PVI`TmoN>qP{Z4< zJvQBv?Jb{q!iIINKq7H^$&1R{&RD;6m2`hC^C#Oj&ny|ly6p9+5fp3gS<)+~p!>L@ zo}5Nio>|xRM%|^VC$GZEEprO;S4h0k1X?m)dbFX<33?3L50Gbvp`;Z9ZrMhsGF~z} zd0NnK-a+)NFdIA>!{jjASro;3cL*!ZW_4`jTY?VcSZv7>{C)ZfynwV=(y> z>fbkkY8FIILWbhTuZf3FyA<6s>oj5S1+L8cxUWw$Dd6!dDTf^zlfxqhD0?sr@(LD% zcb~v#yqZ*Gm;p8Lj*d=O3-*1b&mU5BObWV*n2xq*>uY-jkh=iBeV4_ z1Zta&d|GGEG_0%u`9Xr~O7)lnaod zMAfk))c%1tpM-Ikr!%_ATi380VGRJckwpc6LFn2MGHgx`m+U*P#_b@pG4S+dkz)-Nb6K_km5AtV(1mT{z8Ok$&c-XUmhIf-#J$ zrJFQ+4#`e^NedMWV?@-d4{U#VpU=l$MwL-N}L1rV!8Em`zh_D`6u7)^MlvVMk zYxCgq?ty)m?aYy4Xz<@(SYE^2m)Y_A_u0J{2^}r8j!n|`CE)_53226lk9>OP@7_Jy zzH-T;ElEYFxj?VxnCOo@qCnDdNwZZN@O_dGFIS+QC5!b~f6u(;s>!REoSuPX=7ol2 zFq;l1OFJ}%xVVSvYE6Rl%@U0@$GJWNcjbv@98<1J2Iqpo*$&b)gzNJUxi-ze$Z4-UgnMMUcWV~ zQCFyLqA1SvB4|#KHZVxss*(=pUko;!3%jb)4_98@dQ&%GsvDu1foL{PhZGCLQ(Gi2 zw+rooW+7~$4<4MR(=3k~h%7t*Rul5^IFmVV+9F?4&N!g{qF@t*yzVTduLIX|8oYnE z=25kuD5){D*A#yy_&S3xpL#vJ!8 zPV!!L1RXbO=Ent&BuAkB?idsg{dYz3Sz&#D@|mZP!X3Ji_)@%d!JaPm*NUbiVRstG zGu7jAq??JxViq4Cuf_oN$P9<9E!%0C0`^yO5lqqc-?h5hh&wb2`yb>ImjZjT~m)zm-%9B$#N1gllm-u&IXT9;LFuW@hY4B~REpCX?)}>#^6xh7LC8 zBkvcad9jj;?V!{F+cF1K)Hfg;kK%yuOdihbNtwka9!_GBnQA&4zW1HARD=oYS91Xr zIR)~b-o)c%?sYy7B#{+NT8pbwPSe$^;==Kf8%(@6-bL;(FOPWV^4n97395Vlym96g zd4(BnZsidwsp&nltN5gnZyhL}j_i#%o<$awl=QFJNOH)e9+r^oI}XSq-*Tzm9OZ~d zB(ilJt_ja}`(OwU%g+jPhyOh7nBiIq-iUFHSJxcLK!;6lyi>}-P{(0Of3Mq2D@ zmztXC4R8vk;L60W9zWA*lK6Z^Pb&CeCz|C%c-{)OK|73?$&o@yYG zs(>iB1K7%ZXj#lqYfXBrg%6HM0pTJRf0-j@fF}%U)jrhmW7YF!i&Ng0dsb*Ic;V-y zN6*NT--bxr>-^j|vqGNfM+!4D#u3)_-c}B;mYYex`+1iH!SwA>Q4b3Qib`0>n@$-? zmf8siL~u%~x)5qCR!1vDv@}+mQzjic$hBs-$}BvK9X^nF8e7>OI7nTNlDv;Z9Se+~ z6qvoY+?;Z|(ugl|c9+PXW?FdGb1b(!$LIIWiorplo!M@uu`eVddl% zl0L>M_4FVZxC*p|!I4EpE+3oUOrO-|ta!rEE&*Sx^5#}Mo}-5jF5#w}#~H@6^&AnX z|M4h1=1#O`iE(h>9D{w~ypsT5X-7H6Fd7e;E<2{amqi5(Bbixm2^dBoozmN~)auj) z^=*`*0;)}{v1{Z%nKcj>8_D>$%^AR1bX}}bIYQgZH*D=L&j{@gpJrxK67DmNbX#`Q z*yK4okCBdiS2WkP6udwsegOi!%nN*^HEb{h}Dh`BI97wzQ6H_F6Mr*Z zJ+PZnyZpvBG0h<*#GW1}fa;08GaE_XigbWSwEqCEy$I{flFYtA+u{Q}@jBrAaLB18(MUIyQ zM>!7~0Z_+QoOMI5RI$-#R@o9@vud z2v6yKiR3GA4f#I7Wp5!iuh0S=u}++ob__Xeh@V^?&bC-6@r0(`G~kGdIM3Xv7JYiu zakqIT-=ZyYcv|EqbofUiz)H}=gE;px04-mrj+oIPg?Um*I>3+Un)E_%fK8FZPA;ZD z!v7oYcSo^}rVu|Is#J|CDSLUEzdri5tE;X%OZ@440pjG54nm zubhOwo`vmxzWu#*o`|RGolz9?`x1A#!^#r(NkqNKdlkN2gU4f&X;%H&JNw?vJ&5Oe zz^Q&w+{1BM4pyW4zVc+h9kbQ0i+pXU zPpe5<>kJ9|Y$t!$#~K+|GM7z9{(99r5`MCMnGoW=;-3>ru3eY52oPw3%~EN+Fo|5N zs+xabz1w@1zsY7B$h8Gkmi@8iAX|wwkeCw|mg17&UaD9fwshwSD3_axH`{R``4^3*q$@Lj@*#Nw zoF>fc?{^u=YQnSgG6A;7;tTJ%o1G|0X;yEFa~`kv>|(tuvF00zG!02^mi+7`hH`Wo zf0K~0sDHB?le)Eivs|Bgf2sd=)%IoGQY98=Y|qi6Q6m=bxbi9SWGyMA&N_Z3TbNVn z)ZUULz=AhWV-o6E)ZX=pvLniy!a8YHDxkbBNodog5o-pl!R3r`z3Fw-qxx`=v!ZfZ z8uqJOs@_2?f6?noomz^gW>rY}56Y<@q&mU;lzLCyy*LRU^l)*@B3nnE_8{edOmjy4i~_RGkF@`L(7G$oBec?I-Px5?-+ozf)=6a#kD7{-+7(M7s)P9l~eZU(|3x++d$7CG0g z%*qtq53Oy=;jx?_&^N4UvI!-}co2L?YWt#)+Qh8flX#gnni56~>H%ba09V zdOx)V(N+)2>&MgrsoeeGNaZGolE;D*YHnuQgza#_6mxtFQqdbSJQ&+ZOCtq$LkISdgN|xOp6BpB4YBU9cJID= zC^&>oJUFTyR{na%BToF?Yir2&0sbZQ?H}!VeGCa|c^%2|xl`&O!Bw+_# z=C_HGetZ82wmd`a2NjhL5~h(EKlSPUXooAQ9{_XXa7F&V6=%7+N{QjAr7x=+6N z-Oqj92Xw+##m#T~);`0sIJQ@=9j*%6oHwRTPb|E0mXmBurvc|^aYO54(UJ3cpU1Zy zL1#7v!tVp`<1=lhPw$=!R;L>hy@O6{8XhjH1s)i$lMVy=F8Xvjv}Up*w0DImN+mbl z)it2*Ze*{NHtBR(q!;J8L^~xOR!K@7`56E`b93ze0yeCVUYA7ZRrz4Y&s?8|KR8;U z_Z!pB@RPahj;o*PJ1<7WiMU=_a{QKPJ?%o>aIiW3+4gSw4C_I8adeH|y0cAXH)4{+ z4_fHcVzxT{l|P`Hs$(iHK>X!o_t%#~<7q&pp+M~O@`ZoU^y$6Z6YIlAH6N>h`a78G z4lt7M*Kq^koDL6t#KqK8*zUg$IB~@}TY05EhhFJu$L!25J)OKydKB+zc_e0Kfa@v3&R^QNe~ zf9dju(jK+?)T9}95@7ZG-TlTyth9Z>SKeToA&HWzrg&4haUf3?xE<KYkXfHdYPp%jSeH^R+rvsqYG8RkcsXBX=j>6yv7t& zPY*$GSDsh>*0;sKAzRD*Hbv>fN`VU3pm8iCduOZHf>Z6%xI4AYL)B-_TmR<7<-~7c z>%ZHuIz2f!8WxWXlI&Qg7YmzcEfDv*Y`TbHy4JTpmuvS08@vL1?jBAjwvP*;r?+$E zaT^w590dUq)FKk$i9y~J%ae!D#p9W-EnZ^xaPk3 z>F(RS5sS4pKVqBd{A+fdKR1WKjgUO}0vP*jVCjCN=8RLfR+j4;mZEeWw@taRfFpN= z&+zF=lla}%@FZ-5E!e^@l7?_13fw=kP~f)a_ZNvTcLcYPSgM&nOoswd{R^^N{oU{H zs7uG)flsGBF`j47dKBUtawCC()1v(6YZ%i{`PV+v$ENHB_tec8*2@-I?-nlE{Qzs+ zKPt5aw+*X4M+F>yM+GgP4Ia2%2aWRpB5}0XJB_E4Zad1GPucDJtKvb|^IWym(i#O~ zgWch`^^ zvI(lj%9$2z_N#lkopSdQtN55Sy)a3&Ewh~a4{hv9{k|12l^fKvEY%y8>RCys)wcK( zgj_Qy5n27Y9=j(Iv$wVs;d~R}-F6R3b^m6a730Hwf>D&up&dB)uz&yFvU^*cz8VLXzGAabX~BU2!|$Mc$yC{qVFkE8VKm*}Q@1|+n1P)M7Z z4mq;d?X2|KK#e?z! zFpQZOIsi@YHb=M?lkXb}*6MVk9IrDM6g?Iy4WLHCd13QM6bDC5qi5cAJXg}pe_q~MLQU@IPU^Z{T7;4X9DV0`4}MBaW5Us*d%YsDz|TNd1(Z#lHtmX|5a zCU6!C@J?FU!k#X#jV4`_0iL@%3G~G0=053g$EwJAMBS*p^M@f1YsJ&^GP8HG#FuwN`<X1dHE{Fa6JB;_P}BYoD$pbb}r{UXR*0 z^)1*+PPgty={T<;uSB)bujXUM2q6W~*8)DFfWPQFNxLLS-^KbvmgYl#@R@$?(KV!vR0L-t@l9bYmH5ZtIAW70tnxw`5SXchU_XwNyZmM$m3os8 zN$$vhFt-U9=5Tvn#EnDFt`Iz@9SY*xejPoX6b_}M%u6M48J{br$vqSEPDi#qL&!|Z zzju{5S0U!v^JkWLY>7sO@ca;*{~#W7MDWG(R()>i*&M@{@*OU_R;1G}TqG zRRSt#)8{Xynqf1b4xB<|CN!I@M=1RsFR|h@0Px~E+vwP;xoh<}USK=xNRk0~j^9NN zEs$Vr(%8Oy?EV=B01QeTMgY=+ zoi?6R7NDzu7L$o))Orpqcw56h^QeFL&p-O%Oi#nm8C zd$QKPEXw5oJ20HlR~3rDkX;I$ryJ>C;(%(BMrHK#{nbB7@+pDyC%+b{=DvW=><+fz z2lz5~C0BHtN}h*rNNQ?Ym!!KNw$`{$2-`hmVyzM^{5e-gxioKrY`7&+tXz-Ql!0<^=>dLy`R38= z@P!;}ozNxo)9kG2lRk8f>qjuV8GkGmFom(FA~E-1M9=dEw;&5%1qLYLle*D2jbj;i zq1>exRS-E24t8Uo5lOHEvmC;YPA}F^-^_!DM~EQLe7-?Y(Xh}!Vj%7t34I(w)>pk~ z#O+>5XY{v(?gpf(5wvZZ^$%F!;7FkbHNZNFM zgaihEVkvCjqW}?y14G(#lZYRlW^;@cRoQ0MsNh?r2)OCT_DH}&}96?ol;?t zJ~thT9l-K*qdV+G{IDj6kmuV*Ptaz^m0cXX!2VR%RjzY!8g9+}wg-i4zr@IK>nZ8U}hGJJ8$-2B%1zb1;&L&2} z9+Cib+abpKY(e}zFek@Nq6rLLOMPV+_KXbfmM=D3o#CxFW=Z}e9R!!DU=qBm2xX8~ZkX+b9hm4InJKFP0_dwB&hvqm#{@-|QGaSBK^V*(@P)N$EdQGW(% zb5ma2j|ib_nn^swqA&1XfBs^Ahy{l14N%%-uHS;i-M0X9;DbY<*mB^fZ8D7 z6haX+A`Os~19SgJj``EQ0k910_q-_w1~)>9@hyP71qE;bGvxrv^n(8~QU7x(;8Pg| z2slsI06$Lx#EC-v|0D!d*vq@Ew+uqnf`QMVNbj@3o{^~S7jO^e%a5Rp&qyDw*@0ih z0V@9gD$)U?2k4pP>jydtMGvbS|8m-2-u{oK#y@?5f35-?Cnd`KAwEvP&(4`Z3^o4u zzNV$VrW`0nbyr}n;!sO}f+ccPJ|`)q{Jjl#d1Mksdl9px++*odvp}UbE zuD$C%nhePjS3+K*KDzMRl=S=%Qw5|g)-S_=E#;g4bT|MKFF#Z@ z#@{%A=sw--;5`>kREx*`|L^CE2&)6w)42fz^5<_KWk!V`We$8FZC*0|W>rc)^7DrW zJn31&JuCc0c{H9O^RJmPGeJRh_~7L4q}W$QLEK&Eig#rKY1;zK3}5^pZF_tWgKK{N1VrvJK|ZA{8H|Mj7PQnXFq z1r-r!B$uvkkZvS2d%8}NG>*^&`k25B2cruDJgW@AOn*k|lY<6RgI^+d&0fOwv|fPe z#LDzqD8t?v5L-`J_`suK{dbW8esf;5@Xw?a2d+=i7w^8ewFYj+PFdq7L501dhSd=I9?;!Th{AE>B&(ZiT=q zOSz+Gx~ljRe-d;61kcF2L=SDKzxp@prUX-^#8t|A0W#-7CErcUFSLcbJNhpt+U5> zS_TP#cQML~)%M%R{RGzKcYCC;2^*krg>p%V0y>`pKhGtH@(Hm|yewOTP`fVUcNtW6 zG`KBpDg6Z%v>l z5E~E&&V!9V`4tYB@Q*`v!d(k7PiEH8;{Z;tTaokdg(=%VLGe!@l9AuF+;&m{O+mM;q; zMC-%SuUjH80XD&kVHp*$xO+3VHU)0(Bm%jo_C$=Q#JYJ6Uw~vUfa_iE+pIxv+=w7P zk5#vYbw)3XQ(*RUAa_YR=hvO6M@&#ecBdHR_6S=DjRRk#a21CH18%BX)i7K(j_MO| zb-{ja-6L5*JY@NsQC#r6bFoVm@FMGVlfwR)k@~Em|BrRR(>cpT!kw*l8`sfW)Iu96 zFce-(ib)owr}(2p+7WBYhgA9v2AS$moQSUkc4U-)hXs)Yg%n3|>1M|w*yyoKD5%Wc z`|+~bVNf4F3dOx@ueaf5uFl(A((b#0eCw^ANdl))`qj#lJZCr2k3s9^!yD@rvA zp)kE8J2izf>?TPxC$*oe;fx5EZg*l-rxrgDV}-apV0tK{s#A-c*4(ZBC+Xh}9BnC* zk~zAi&s&$u5JZO*@d-9I;Sj%3a8-OeLX|@$=VO*FK6|?UE9%oX_hRiE#;L-B{-4H% zv)e@GB^&W$G5n3#O}!>%k#l4rH66pVA`2n;el1&nN=IrV+;E(X`)yU;0G9ABacj(O z#6=xe1jOvm(5|EeEc$WwkYa9>YfoW-&23*L5X5%{^&uGo3rRO7hFrZ@4b}hX2to z3zoX`^a_;o01yI;JHFz6`9iMop; z#6kt`Cw_am+Q&D}o4g{;dcwW1birZ;Vz1B@%%{YqEzmOo?h?20eZy~ReD1P~CzEoL zmJeZ5y^gT7VOj>MefL)>Af26JH`!*f7#g-FJf4KGzn7?CV?oJ#Kex$)NRjW9{xbW6 zz)%$(UDy3?XH1uxB6a!vNAYpidS2yJ84!J_n={bmekF$s*3r!$X#e;!>c(XTZ5mV< z@%~Bub%*&^l1#NLPQEU6bS$pEIy~soV-4l6e<{18IeH3kfyN`7nwh4T9WCf)ITCKV ze9$!cq|tTsHgKTcZQ(D$DOnkP`EbBsg3a}YxT9)^NX)Xh%fprHcIg`XcyOsDUT-fS z?*!*6-RzmDeOK*J(@y^5{T1^ME9jZJMMC*NS@}S0!>!8(7MG=;u{sQA{CCMNQt-&O74~3tUCXLP&CgRdm_pv=0xDj(#UDr_R zH@ba3r@IDqg`?Bq&GspGUdTR5LN2kXhFv}~^dOZ~Ba6My^UAt-Q91Z!rW6pAsYIYG z>pksoM-71+%fBUAAyC*E#hB$lda0$Zk3YX*exCD|mz8=-p{|M*YUAm;2O=eJawDJUC9h2VI%w>Nq+gVi2IDSSK^xhL?U6ot2Jg}wL{n+S!8rP+&6YM zjMC1bN%9noeskPEd^@^EJ0Xagd_x%?FUR$AD=}t-iKoeX*vs+dX5 zR~1vDKO4Q8vdo^a)njIFkAYs!;S`zfgAp$C-<3- zi@E8Uy`?()$4ZSv`9ohgC(w!nfTJsP)BXx)-c|;k8rt3b#6EcUUhejn&N)4Wo2_t_ zgCjz`*^E^9k?>d9b+fN7cC}SZ0XIMnao~eza_eBPNNMq_Tlb++t@mOFCWprOf{8lQ zR=<-CsPl6PT6CW10^0Zh-eSkSP#-w)n%Cfh#6Mvd_>oAxe@U%8{p*x#WrnmJ&wWKx zy|(&V`vUhfU+tG>a;yff7W)n7xx^dfJS-OQV>Ptp?J~VX!E3qz*Cecd&*%#}!Z3b& zc(r5BF@x-?syaXX`RVT5q*f#Oq_?pGNfMZRfTSbl0BP*hqHwA~Gom-lO?|^0*ld zPc0~MntyC`Ybe=_-W6^%_0usRtYzveXiz-Vn75HsWpfDm-TG~qpZLVo{g?Oov_4&9 z;P1V4(w_54cpmT6KcMUn9LrOCy1%%OOX&iNE)=jdga`8cahLm)4^#B9r?)&$-ae1t z9>h@fy4)ln8+Q#1kXFywn()-4ZeL2>bC%-NqWb%3Ui23v3hjh6Jh{stn5F|GHV@i3 zBFe|iz{vg{@E>3|_nK~wA-86T&()=E%BMFH`UXRJ%LcmNC6|Loa`$q3qb$_AdJ+!H z@O8W#T#uz}ZdI?8xIKLa(Q474wR|KmMw;KxoVX~;_!idZj1KUctiDSx6@rnNKB@qA zh}-cfhOpPY;?86Pj>{HKD0fudWZqmz`^yU&g5S$(OVJyyYIjnRo>(b)zAXPd%ers* z?&Qtw{@5REG{FHhzG5sCvR5^%oe-G)>F?Kv0b}uVy&HvNS3270Np5GU3R_#fCd=0R z7F1?j&`1KR6D1l4RI?5-Ox3QVvI8iY1<1wNj^I)iE~fx zoeDW=DMBJgO%=tyX!P~!W_~g<$-9(VG!>(L_vU5k3%Bs**Mznf zs<)+`%gl^aFN^WY5F-y5zyHTL^vG_ekwIiqT^*{}j#IU!elMiWEe$HNobjaU*>+a1 z4=C~ma`ZV!ET3Fl6RP-ivP_l2)NH|?$dL*l zTa=S$=>gYUUm<}sl7UyxWgoKx+FV&BG#?tt7X64X&hzF;Aw{t0^R?9g$Wa7pa*IZ; z`d1Czx)w2#ClAVWue)Lw7BM*l;v5&|BNxaYD@m4lf5bH>G z3+@9P9KTO7?7w?v%H4?Rs@uHq@pnb&5Rac|Ja<-oOy%gayqne+VkRt6?0lP9dNRO4 z^;Cd5+maIy5i{%B{i*x=D(E0s;7Qir0tW=#j=xe82L?hNBR)0=XzlG6QL?Oul=FY; z*GFZzpUx-z%<2)fZRcwJP!9;eJsXHsmbv8nGRr??zkfN59}1hl4f0-4XAge-Oj4lx z{_bEFglzH{1}Gb@M*qhnb3o`%$2G;Rl6ile7Db^Hwm5is)MCc)AxEB1wPIdXY+Ua# z6A9!W<)$Gf14u<>3!-1wLT*0aN?Se#*hSO-LZx6CAivGd%oZGwC~ps6x5)RI?Z8HI zHB@g%41wl4kW)#D>;WWk0%g%Ml^`D>oM=cEog(Y!k@Sz9C)*P4hM#U#gCJW%Tzup1 zmxyw9jllWa<(cm(es39Ln9PSp&HyFzv@k$lro)q3!>X{GH2ZqGQ)f-sJjDEDCUSI& zB#f192mr?Scp7Ab)X4{a1gWv<0a9}!PHJ?#NBGe1aU-XlzRlgKwYbzyW48_;?nv86^j|}dRl@>6&2+ok5uQB2ap46G;)I!3C>Jr78A({CmFNb6b^-CV6w4T}2Vq4*US zw>&9?tyateKQIJ@ksgmeJ$`|@qj&wzAyvoPd0%KGDsBqy>4^iloOTaXio z_xwu&9VyR_0hy-cc3MbL>&X>83Bt|QV}P_tCx=)vIwtAeHR1N0EeN0A%zGZZB=9Lm zUck?qy!TK7SPjBDRc+^_gtbu&0sETM00$HS@Jm-h$RK7SA#Mu-0KmPq`bi+uV=AHW zmnEP{Sq&)q?6FpT`6BBuR(*aEh&~4V0HZElct|(~M4pWmd+?#MFXl5;-3@b+K2v5r zLGrssKz6Us;%$%}Fq$!(nZPIh<%FiqZhp458yEtUIRDjIW7xnxM;i;|Rf~}Mub;SS zG;Trw5_X8h+;e7^bO0K2fi44o>CtCv4J}y>8O;8HfdlDPJ8om0xM|LZNV5O~SN@;v zOTfT(-E<)xppB_|gaS?r<~b<~R@7-js%vet1G9Gl0`y@kKyWPsng#GT|2zVm4*|Zf zUZq+O{H_4#O~4-m`W{B;_ke~%(Qsoz9H?mVp-VjbeSFy=`FMbe$NAHh61eRMSqrF${u!}>rk5X z&;MoHnUb#3(0I&S@pT^2^CnL*$Dc=UNfH@<7!UN6(M7*rWTF_HTiG>!uBKSkIMOeFQKG|Dgy&fLi+g&1?SO@|SYvY@rA80mx&6|^3lB!SleU*{ z=1vMyK5&p++7p+_Hftk+R1!(dZT25mwVcS=1s8xIf^jjk-2O3rLyyUnidER<$@4 zQp*&v{=+~54GXhtWM8!s{}IWCd=e}nVXdCpOy9zn8Jl7&Z$7^#XosZ-I)Qnklyo4< z>&n3Q)k{~nNcU3!4)`_fFFOm&WniPtSD^RnVN_Mzz=^BofF+?ku8l%1HIfaGz-i6Z zFNWEji(z*5Ak;+{?bnzP7>5y1KS0}562D1c5nI_>bKSjp`Fbj)Q3bQEuQj=g;)$$$yq zO5bZHd@Z7cY^_~_fB=y^G4V4!K#LX#T+J`O=B5kTfP~9dKd;XDA9Z^=ypo8H^(lu(0q zO2F1RpuJm1#ho=ysU5zv^c~W}fX{wsd)3@t+cjXV$}cp*Emw|o@~U+vV=AVYG83;Ya!A|Vy{n}x zc{QY#?#}1SVM<`1`}{1I$u=KIuV3?Bp;~^+>Syfvr~@Ud^<{+5DDzUQBJH)SN=KZO zvyY{|I;%bTA^XI|@@4tEV<*OuzpjZcJ}d#Yns_AqrZ@mCZ~aa%*5?`Nc1?dJs`WII zrk8?8AgbZz$MxbAs=od6=GIB|(=&B*&sXo4e-;XgLVhCV=TxSew)#$r1t%g>V?ut) z)+0wVLKXE%VHwwHLn^4r>E^X5uWg4Hpw>aCciOj4dpmXfvbaq1$X_}Z*NGL!83OB7QKg=C`j4Wx$ZcsUh;09woT?`8CsdAda#iVG;?_j6 zwk=P@?+h1jT;%E9B9U7Ut)*h?Xo9kBOQNj9MI|VDBB)E|-+(8%IuDjrrYg`n0g;!L zZew%x-8#yi$r!q~Z&}+vYCfald*FlodfnJGD=Gg0^Bt6784uk9PHJO^A91gluUXsCKm+8lubsSOJ0gsGbfs7fk!WbGLPxuq4bwQhv?0<9xtu#APr-<26vmYe9M}5i3QgU7rkyw1R*g6FW?FAgrrKys*EqbF^exf3c`5cAPqEeb ztNf_@NhI7RSANcV=Sr_A`feTp1kM&{*TEFUkN(y7*;dRPc7UP$7#C{7mw+S^sDU?QkSa{j60rn@3#67lvF!mzVt zUnqIYsH36Nlx7>3@l>HuH^)xlF=UDm+^9Fv8nUs5Z~eP2eSFk3%4(MM z(Ol%2LS1oqFkNCK)ku+fNY|I`)bcTH82ja1)|JM1TtIv(rn%8_xSucTwn z%B1d*KeCr?;U@n&m&-)sSQJKaqd4y+XiGP2+<_gt|I|kIMJh43cQwZPsm;f(30j@0 z8czxxx6E~$_1+Ey_wySv$Ui?_(OJW-ZS>jVPdM}6Ovf$PXjtVbexFb)exjUF6i?9c zwYokXQF>am*n6au|J<{8_xJCHY7|65c6iZuOI$yP&q(A<9-QKqgq3l{P%C4_T8?_706qKG+;`Hs(D`+dm8DBS7DZ|l?tsK*aB4LWw4*%wCR5Q-#p+VXa$ z_hbS-JanutV#Upd`Ve{Y7IxHf`sbm^Km-@;d33bTY*jWF9ZoRJAIw8Upc zfjXMP37mD*TsH|WDyg60s%#BJjKoLsI1{kzt-<>oLm#}lzHP0IltCigtZ(E4=fRo= zI3&U8E)PphHz@Wxn5u|7z+?IX9l-5lR%RA_7&q+$;9 z-entNZLyr)yE_5UurdK{t;EZzuA$X%Evb|okrr@^MLl}%mQFQmOvL2|M{E!<4kdO} zs7>Ef$Cx;lQM>B?-sHWf)9h3I`hXbNuo5a#u@ntsE>sUXojSvqtWtAsV?I-K8>q(y4mJj6LOrE~=x~+caJV}b(Huck@^Sv*hHLUmO zp2yHGJ`KCUsnsM^SIkMPF*AaKMx?&ykc~C6PqV!tto3Ya(G>*0thZu0!U$wyNJ(hx zz$wf5nC7T^Z{nw6?zm6%J4ybz7G{ZapZiRj9w#8N!R$C;deWpZpYYYL@LEE6m6e1k zkPVU_#G=rrcKi33TbdnX_q(FV=&c?gM=UIKCOCiiO>Zabw+1!X)k({=#j9B~52bq> zt~D%8B_svU__S_O82X-7qqlswOa0N{P`Qq&&>$5}CEG==b|Nz_Z3s3KyuA8w-TJm- zkUN_^@xS;3=`RSsoZ=Q`(s&?aH81_*^9L25k_8#&Xp(^p&I5nBLcO(?N8{*iM~-!6 zb&wsPllVj1*7RC0k6hV(uBy3_=w?UgQASQ>k!Fmic-fY~sREpGLa)RPrjEp0v9{Yr^^tsry zUO*-I+|!u|N4HvU)jG}`w*?XiG$g*Rld9V-yF{~+JYd$o)7RuHd!Lr&O^)9&t*!=& zUnQ91YEG8tRpi@MnkAQd%hm>tb1uM+;3`zRV$xu7Dg-34veO%N2&KyoH1g2>XnQ3D zup@I5fHrb-O4k&lY~s;d`K`MKcz@92^ohlE=Kw@nN=2PMZII$B|<~t)7-afJgK8_aX;gvxVUPu z(kE|H23yb{{DxXjM^@*WLlqtdn#nmz$<$JHe-XR=(7}0?Ne1|rJ?@6z?>E+U){XoW zlTP?rPInsgC`d6TuJ2XO8cxbv%?Erw`OEk`K{9bTr{u$r=U*N&XRj^Dz9Ty1GGqq= zNrbY3XV8k`s8WQ=j;^ui^Z9!%M0q0S?LGI|sP&32mRY|a@xiuTyx zOPq!}$eoePk(DP)6QMi}I3I;yco8JrpW#$}12LD@gjGWDSSzMd576o>W~OXHF@ncY z&sCQZzUoVKIsC{H)d%N;T&_@Efn9Pl?eJI0tHVzf^6-}c0z3v)^in8d~#=KoNRQ@#7uCe96s&fBl3>uTc}+cFD(TixrD~=gO)@Dhd#=Xfr*od0?9ut$O1yAEIRRfQ zDYa^qV2`G{cdfp7%bjzRaN|-6I_?eCKshUB^@!LDhaJH6{Nf0Lz99ij^mB&qzWL$m zNEi_{@&*(GDqdsiG4X`;yU~R6cDoi)>Ws=~H#7bMWhbFy-^u)ptor$h1N{kq%c zbb3{hmP_QCF-xGHy9OIBcFoIHt0MDK(pn2c{Z>3)my?v;f! z+qXyNls~%kZmK_-dH-CXg2U8xr)la07+AkOKG-v%=tlK%wWPYF?zqyO+ZLTcM`?ok z7z_!gtSN?s9Wn(~ABdzs31(hn$3a9`3jh}q*jD#yLGIi+=MNvfd!8(d8&8dW~? zTvP53)K_P1Sc9FuUc=nRT0^tfjl20gu%(T7sceFB0BWPzHz_50#?N?MDmaSYm-*Tt z_eTOUnequHN^Kt;x;=SpE5%_Ge_}K{WmWx0*uJsi3&SwTP$%b;w~yBZT8 zA&^m8^zvuNB5(V~RVyj6U+!E+Yj@71wrwP$QPx#GNZ0ZFG|hduj|O^>d(Pren0g@H z%DgQaDe@u29vdavP}mYTzx7ucewYgG2ZpnDVp2zO~S(Q=vrGWu0kYIwB5KUNdBWbJaAT_(*AQktZAtJcIs9X&;OO3e5(JYa&|XLs7F5fbfW3OsZ% z)c<^KWy#JU_*^l8pQG6&fA&N(Wcyd|Nby5H=P_i{$Nux)9&Z@3fi4{b%H9FWzGyhQ z5V)3W@R7qF+jB*An1&Dfj1zUewm&If_uZNzDA(&;i(=pz@In{Qesc}I4k?9sUy*`i zMUp|Qz@roc=qLZ9XZ|-eklDYk1Eh+1v`n^XW{v0;_d#mj4C2}4|0(yPh@Gq|)eY15 z-c z_4ed6LLbM+Y}8m~^`fDRRUcn=={NjP<1Ec29#tIe zw>@x2C_E$Lq{KcRFGfaIbX9OkpW_u&QWKHzSQ}=U*ksgYeDqLM8SVV`ER6q81xNs? zf4v3f-FLb`6yGhx(IpVmRn`U#J07_Ck9?9{5$2Rcwc2>fZS}*^kt$ zV%4y5XZv933bHX*o_}rTH+v>lI;nol7;`e&)QN=t&#;s@G}sw^826MWGa5CXE3ZoY zcr{DpzA=1?{x_WN)-PLWV+N0z+OPA!6Mag9ey(`zSVJx>=DjdEW$1IQQ=`sYiu(Cg zAxK|oJ3>-{m^gW=Z*J3__d~V?gA{0LOV!$^zx`B^Cnh_su;h37H1JB*o-DQ4k8phk zU}&*Z4w%}3=R@X0abV@lwLr*#j_VPnyRyTAay%_Z?v^9XLGC&C2>qJ-u@`}kp7{*59uAFj#9 z{6uj!wF55Hh00hfBdA7F4-5bnQ!h-+zdFhdXKlXQo|9BZfBB}R-C3Nu;|xnS6iQl; zHgcyLNCO6W?0Q!MU@5PHvPB#@-Py8no@;+ch^D`Q#Z3G&)*&t<+{? z+!juj{!F$uoIRwk2p>z@f=Fnk_Ni@aA2j-Q^WM2dD6(cerI(jdT8h{!8e=@yk$(rh z)17x(@DlIH-~bEI#E7KpW0J&Gp?;dbOeC+sIb!qEZ29m>VM4I17jH@k@fa~qi=sB| zZje&^IfQjzB#{AYK$l3@erq>})NYDf{cVt+LiFt#O>jlMeM#)H=&1dA0CuA)xOZ9-Fn=9x$QFt^#K1VxVZfUmQrsbYkpJ>$I zRaXvQuv7d-@(uJZ{WR2tC440%X2_@TqkDM)usV3kkjhOId443jF?6~1aBPpJC8}cH zdG7Us=idf0c+F!33Z4dsM|4BasdX1v?D*c(EGzvwJY(bPhjT|~_baGYJlk&c`yLWG zzWQK}a?AO)d1@#!A-`LnB`8(^fmBN55x8kFQhvDU;rkIBL0_}Ks&RP}4C>f9oCyjO zy>z|EMQ|mb3$K2vF<*V}LG+2e??~P0jNN6ftzXBEzXSdgo3#0`cooJ9Y@+K&a825Q z6E!H7p5^IuG-EJE{+ZUV>T1QbmR$Luu!qSt%++OzO9?IQO@gb#CZY-Kzpb67<*$a^ zTx5+KZ7Dz3(4ZKwtgp_z^B|mXMXoRWCi}yWDsJ=HX4x+bK?!cd?K*oIedeDFZ#gY< zVTzhkH!E%V(WRmf3TZV^YiY*ICeF20s@4ke`wAb4(m+`=j$B(@?5RU~$BcT<&sgje z2G`0hw45lp+X)=idc5ztZ)DSoCgtAg*C6CjdMj}!oA$NE;L;R~eU(Y&uE!>^{{)h4 z_+s(mQtd5#K*&*tMP6sIrqVnhHYCN)+-|B}^#~5<_)UhTP=V1`sw<|Yx=iO5a%mj3 zn(dwOvD@^aOE&Jv-f7#r)%lwH`Gedc(%;dj*RO=X&eHVu0!}FK#~Jn3{^qcY3HEOM z_rRhzv?l?b8zb}-*tDen21&{RQn`#hl?N#==mn8jtPBg7N*jwc{wYuQM+hQGYgjTi zjA%J}F$JK7wa2<62RAvcft&5_p~79=t;}JlOYLBZ4&1iRmq7{puf_Dk?S6epmC_7; zqEwym6df$R4LjZEC+D{Ui^(jv3vP|IJ^`F}X>OD_j#DWXRXS2C|aoPpShkP%%l&ZeAW<|%-b&hV2Chl+T zwfk|++vdmgm5S_jEFdvBP-WjG%V7FW9DZND$LJ6Xd@x?LZ)0+Kn^f zUo91J|F!i(Wvxx4ADI_#2d-~(sYG<`E8|nEKp)-sc2%*A*RK7QoA9(VuFnwJy@U2% zp0LkXCGxhxR}#PyyuCRt>RrV}gcr3rP;D2NsEU;tuU>?&y^nOLMVg@K6k|%tFTJ^+ z+d?*aipbflGzQkKF6hc8=N$$HJPVW;IHmFth)+%Yvg>Q)`sTA}q8mBpY(eYkdoJI@ z<-HChC~SWa-ZLx$Pn(BzfrgdyR3Q?Bjxe9>IHwZzdc89E5Vod57QvyeI=F*bhr0`W?Aj&cSFF)iyi z-(0q8_q(F78$P&7zke|goIRP&yR6qY-8AkkQOkqBcg-Bv$5Ws5oL8nU9{1e(C!S@RJ=t;yxd^$YHaDfIlI}0=Z3{&r@^8v}o~z5kkM^2l`i6}* zdZTPdr)*Nm``Yx*Tq>R_GRG}SR&;I+$grnWdzc^uwwj~D=h*YurA} zRsGfD=%GaD;(CBd;6%&$4+0nWX2fZdO2gqEc~G@r>)7Fv1LHwjo<6pdQKCKn);hL1 zUfmb$7xOV(-@tr#^I7lb#kKA5_vK0lFs5wr&wl$mqr{lc^=WUtI+_+68Wib?eB=Rx zMBRIl;78MNK~|oAypanA7C<6ZT7)1*`H8CYzL-dTECCtAJo&EMcNG)3u2Fw31~G*- zHE|)4;iMwN1XfhmM18%5dA^o$ri@LTx{Kci#ZSq>ca^QICN6~?8zn{Q=jha+^Lf_y zwkNkX9M8%!Y51Ec{e&!5bAhAe;V*L zT4ctNPuLroG^1LVebuUWxFtzc*)76fMJ~)mpi4^`iIXbvXBajs!y?_iz)2*0 zUDaXUalZ>HxLS&fSM#MelZ2&C##IWejK~EQs*#J7Qtv7GQcV|DdN1sQ9#rS--oMX9 zcz#BX-`l%cF-xR@+MJQ9!&eh4D`Bxl5@GSDQ`9F@$EPEs4=cs7CwbLXR`;_aTu+Km zr16xSZ{D*yjMXwzB=~pjbD;%=h6<<$ey7CjQ3k*0DkX3@$u;T^(P=n5x|w$+piA;d zYW8x4;LRV5ugOdr_O~rti08xz$zi0o9`2Zw}5LZx6}z&AA(|NK)kS_nc+91_$NVOmr9tU;tgnT-S%gL z7BOI%Cfm=hkW6|BZX=mhn}fOA80&#RZQ~T2C~i={%lLPI8vNmV!h)^I7!mH^%FU(N(<4j0E(+~jAKZIz`^#rBpT!>zXywbr2(0_UM3s#vUE zOWSiUM%&r$C9W~`_rj3CBl)hh@MQ}7;I%Jbgt=_<@o2?RwBr$tIdRw0VIhmeWO!PR z7^OB-Q#Bi#4=?p#HsmMFnqu1EOg(-0(QylpjH-L#acx@kO*=03jjheRsckuX=P^X> z+gTe+bdCV4^;IU)AwRuqb=2=}?Yf7T#@=InCU0vhUO9momx4|09j!%k_Hz_LrM-i?6=wSt2-gJUe_vSO4TM9T_1Y6 zo}cp7aTtl4=D;6xp^0##LOs zD+)2SHP~DZq#u>=6ooS+*bSG8Dud!Xh9%$eK{)v*!5!Em%CFe9X$YirHF|%Ct?q(y z@w~zFZQI&6uU+NctMlhB<(5H_pb9lYED;$IjcNp(T=;g%is?|$`Ix`e86NFT=u%ie z&6@YAGxs#Pd~o-bztrCz?nhIYRSQu`LQV1KpJ7CMH$x^RD0E?bX@uL(yz-`<3a)6hFTYKAUJ7? z8AvCBxMzpghaT4<=e3ud2dmT^Cf4)5B1~^(CIR>AG+4^ue-Y`7|74U@EXW9n#nw>7)3nj9E zvh!5jE{uZ8(c2jytW=q@nw?&wf+-WpGaucCkAHiThmdy5ahHc?#Gu$EAn>GoczEn2 z+WOX?hx9B^ns2wwcfp(8ewEZf>&XCSVVG{HUG-3rXPoKYCdSk!P0 zD7wl$>R%q|j}7I35>_f6kMxRH!xynXE4!uXS;mlEKYH;^HOJ)t&@7>G+k(m;{Z;PTi{C4NXAz+nBC znrq~f-Di%&9F4vWR#> zNmzXqtL18n5prcO5~5kkICA}8t5X!=tX?2++!ld$Jq;9Js*M7uvy=-j0N9q!oBzJp z|37WV2O;)Ik$^EdNI1_KB|MxrtzD^f@f1|Bj~3ZQf*E%dGizUHgZLp_K=1s`F9H;p zRW@r1rjignes{qktcq*jLIe0Vxa70G6r7sg5s%xWn$3Rz=@4JZRgGq2q>%cfc{$!f11gpIbzr(-)2a!5>Lx7 zRRK^wo}$r#BjI5_M{w_m>(^!2DLFLOx4h!KMo8sJT4Ha>-|p{E>OStXT}IoUxBIMM zpvBFVS*4Aje}9AI*z+EoOYTK!$hxz3B1526J7`_q;X2bvD_ zchnDbe%y9xA?zzlaG!DI6A#^J&ayWusywG-eEM$~j`z3&+_Bf3*fT$$-60W0_$h-M zbO8QEpk)8)%M`LGLA7|pkcd}ew`o$T54%zXiv;#Id9+o7Qr9L^yF`vY4kCQD?vfF; znyUfEDKt6SDWq^$mB=Bf1@>d?e{)RtwQGL6f+fb+wI2VC`WDMX-KO-0o>pVn60gJ-@)k3@OmEX+M! z{Px!hLHlzXfDo)x?2scs1HxFb+?D3dPin9npzN79jDCMeQo&(Sc;Zg{V!O5W87qCJ zYL$WcN2sE@4^$jjYypf5!28p^sj{+qO{s^bX6M=J>RKWRdo7iU_FZLnHb_@V^74C~ z#y@(4`FiQp-OT|%461Koc^_Gs?mfilBLd7P30p#B9uyV}Dy?7je%M|L zb^4cIE5CMwYNP0!H+VO2THBlVyHau47x9tci1jDXl^U11S2``e%i!p`H`nYNYwKTE zdJl*jYCCzTzstZIKfYf6K(_9MnGwU9C?_aQrf2Z$6imiAW3f| z#|(Kg=#$(%RmT@~Mx7z^b;2%fn+b%*GPf zXZd^mI=F@~r$?Qw=`c4X2iMeG6_Wyi$vu#vgE>DbFy3?^EW}g{OTb z23;YZ4hx`S$*FiW-I=n<^_sBYqDNCID836f={f;SF8s+3XJ~}PL7eZ#&ehdP*f+}k z>l#5E7=}u%qUBO*cz4fC5fb&ekAfluF{H#VHbgE`*^>6+Wog-$AwAD?|8GtV#*1+?29ZP2AaG*^Q+j$u~~``Y@D zrsu;3JI{{Gq`IbSFkALi#~mmAl-Js(V=Qdhps7YO`Ng5?Jt{WyAec{~eJVYIi)(^> zB2doJ{`G;*jsYBNX`6FK+T-d^iE{GyAZxE7_UmzzhpL-Ss(*@Sl$aC0YZ^%FEh6IsqiabH32H(DsI|KPoR; zODhE-Kdb{|{7d8)o;3qlbW3-c>RZ7qY$AD8M3!x2HtJ77FKNxY1DY$*>OEWDdihR% z4Gk=Cnv^3u=YU9DIme*S_#aDvJa%e7IQ!73I>_-CZ8=AgZO#6RiuAsyT>_h`&&AP7 z@Xn02(*1EPH@BLEfVjdN;7K$TV*N(z-o2>_1-d36^umj~IX-K~#&AF?A)7;wKn=#9f*u&c%C6??E?`UN}&y1)E=VcEY-(1F>eDxhvY@M-eP-i#>0 zkyj>dF;$Rz8M*~$e3S#|XZsuxd$i&4Z_Ql@Ipc??P{;kgy|f_2P@{nS99X1+$OFJ| zlS!+@MRQQJNYK*ujuB&TYJ|z~A{fh3>KPti3ZPDCO8EDRa1KHyS`f7g=b7iHUqqy? zp}7$rec*kuGbOQShc{KAJ!sR9<|NEunUsk6R_4dwlVhANmSHbq)A?YoetqpB5FDXT zn0VwamO|jz?(jaX1BgheH%Ib;5BO#0qr8fctk2U@P=;Z0?mkXe=QB(Bg$KcEq@nc& zX#mka!Bi9JvpS@QKi@e%qxub6ECY^V&Tqsr76unC z6NS#MHJ>=GGg~$IQFuyLbj6*3ob{Np(W=A*^fm37yCZ$c@LbY`v|Pe7qilAWn8J$I z^L3X05!d5hy?YtDQptXOoM^Z3D233dT>g08!~V5!xq(NPJLGf)QFpq9bB6?KTe_$v z{uslib@qO|I(0-UqXIb9d5aQowpt*LnILF?q-A^^Vn}@c3a0HW0${FCmun9#@b&x@ zB9-lF-N}>qK45j;y_tvI{`FuVS{0X$Uf5cMv8Af#0Bb?Tj#JJ6C{)z7+*Et6l8|TA z-X$1t?+1-T_@e3^F$1_Nz&?;qHsK!c4Q{}DJWkxnb(9WW^6KJ%w$vp*QW=vMeP0wt z7=Sx^5WK=t4K23;e+mB^?_A)^8nu6L(R}b$0ahW_#|0{(B-!asiinB9w< zj%nV1ayrm0{#S5IgGNOTH5K>&?+f{c4Sl<}zLx7*F;*}QAi(Jspye+AH0i(jD1YZ> z`~!e9e~c|z5ecwgQ5Sm75^5*_R*piWdFLG z6g_#mCw9Qmrg94Kc{sc`9IZ|e50)E%MB61RUb~jycL5?DJ9%OHvtzA+&Nbte)H(q#TpF zz&>E^EuN=+YHKA8Cm8Wrm%ivDvoG}dx;{Fwsl^JwWvi`CkKXiUVlvnEG>mmWA3AeH zzO;HG22ck5`aqa}kO4dRPEUkRtP&Ax>*)#ez~^uQT5B)=x|L$!y8An<@-Ifl1RF)a zEy3BaGc_Ri_1jmBq_qRm$Qqs#sR=o?vDv=zWx@QyShBp9u&Ad2G%0>A>Sk7FxGa?v#KGgk0ZJ#^lcM?*4bHPI^4>*2XVmnDqA+C zZN8P2_;-L%Bkut$%Y^hbi?;3wvYmxK2gZ!hCQa(m(vIcKyx`0=h~y2)x8G{BQ&5sp z0KfKP&jqj~+Ac=SM37KV)@%JCDjlM6>2Bg2&==@0AJ+7cOZvn02FX;iBd~XAI1>`JzX)5a!!(BkgVoa!f{EhTF#PlQC6$sMo>RFPp z8BsLbY$AwU;p+ZVd*rSPQy*ie8@uSmIzv_pB zrEmKoXyBRfHp)PaFtdmLJT|? z$c_pvY~kXqfe-M#Z|OD9jPDF#c67@DEGX6PI`^lW_3 zci!*pAF$Z$So>aeuj{(*wbZZ{PxyjfI_M76M15b_-SHfnNm&>wU>jVVWGn7kaw_|BVXde@>0sy_k@eg6U*y zH?tppE5`;_RsHu9BZeC{U&b7|(sMk1tkcGJ54uy2QC3t`K8)k?q-T0Z+nAD);_+M? zOG`A|;ox8#NliM96R-4vWI7}`0PS>r{raZU)qir}HCACglg_8MBho|7ZB#gRBAqBZ zgD9>zDb?uXnK|LlfzsquVG_ZCbz7gA@~o@}CMG70Y?f3-{~~7=7MknoHN!H9RdnS( zj0IWv*6Ew3n43(meUy00K`k}1>qNG{-F5d0rn;(k z??g%;(0k@8ZAyBJUUFr<3hNvdVhbXjg7v3`6hInKKdX1Pw^xS>W3RZzIiG0y&lg+e zYqy_?xw}?0EA0Zs^-P7_0(YTUywT_#RPIxkZMZ`9zZku-=KF~istcJeu(Rr)+ZHs1 zCjxJVvG05htgN=1EwxQlM28J#$@F`99X35t^8*WZSG9$+ck($Cv1g~JG*jZ%bC@wR zXALi-7i%tA`&2~|B^u%saUvojeCk>(k30($Y!nwK6t2aTcjd8<69w}iId4>`hedj2`N8MlQ}<8WjEO%#bKZo#{f%8vDT7mz^~>PjcibCx6StTl_1-!u%PW zuf%;b_fL$=KIytog%I~)?=>-r{kgZ5vS)0nb!o2OaOVVJAnXf~2tp)+HW5PDyD>-zNLu}=%> z)!V&*k-lJYkKNWUZBm4s?p#~#^ea<--^2hXGh3fh)p_M{q9;{ZbEEqZev{Le_cr*_ zcb|Q8(i6P=SQ_WbN`7MGzR^y7KwlBExy}Zh;?WO%=auxD+5YbHg1Udnwd8O)Y__ozxXUL{QfTo_9vK`WluNuiu8whw`zTBcK)ip(z;I}#0A^^;?l2mW8*7Fw#^mPB<0U? zA5Ey&TXz^tmK0TOQ&>`QH1n;rv8>g5-MS_K%`fn*AZ(=i?O%m1Fvb1N?32rpZO^R8){3-cf!UY(#zgl zi*!~jDIW4(a#BdojnU*oik7 z^~o{LvJYojB(D9Sy`-zdP360IP)Z@g`twK(pR+aU`+Lnl%F7lyPp;LixIx@OF;z7U z4=?@RX}gx>gRSBd^xxVo{tKjZbo9DFd0A1=GfAPiowV`i|Gc$Lp@GmTl=Y zNq*U)kdj>g3S9GLi$+pP9Y4|C#rzoxxlj@&X7aVi=0_J=7UeKQ@mJCcFgKb4@!unv zpnraQo?l(H_w|L87-n-7>HR+s?>~iE6?Fb;cjymsd!0o+Z-dDxJsS%7E8qeSQEZTA zRsAA`w57Z;Vb#kjn~l#g5;j)>#sqZ~FIj55#>p-bgBj`a3;k~;v~O0EU1tus4%u=Y#GyDPvm%BOh6%JxQ$!L0&>=nLDQPU?rv3lXIB7W8(Ez~`}D*f?= zZF7HTNG8QOgVw&#^^_;*6Y>B=9|71|?@r7RZ!wj!v7N?^o}a778-t8sO;5eMRR!7x z4-i3^f=k!C#~yAS8cU(>49f1G3&K%%XYZeeYl^iHe#FK)8NzD`HJ(oTyVVwij!(S& z>nzO#qnn$>g@lC@X{Ffntn-|?wk@773NhM?MA4!>}zSVd8HQ{fj zek!rsq3N1#fF@QIB!U%mvWs3#)n;O5<;Gk>UvgEE7z+bFwCx^Iv?|sIx+c_S<}-og1%Ri3+0hd1J3&?XTeB_e=R-PsM!1;wz!j>kjW5BUD2-;|{ldGAm3{6EK(E?}m3C4k;3Apa(K+%9_h(ft*h z`uwBJiB|4(+`Y1xhQRK3aQkm80WtdiU z2o{u)=yq1{1Nx#V!^eH97wq*nVp-nR4f;R56Q!?I@-OatiGp<9N9FOVzLo#`-vj=i zOepCvNIanc{9)m3+LX?dIJ*O`#-}vBfEcD!RQ7v&18k_NjU#ScEboPR6ZX5oOs}`~ z7eSzY0(|}RSV{8Gu!r4EGT@B;f1e;Tk<= z9*buK7!MIiZs4u^l~I-dKyG%IcDytq#-IVBRlf*dyh~5w3ec;M{!TSdl+RSXPJ~Dv zUHz>~@;cczTppu(nyD6d{@3B|`#%HRZN}VX% z9173jGPR*L^v+F(CE8=Xnxa0K30vc44aJ)enzIg(UHRq++5Pv=YRtFa!Z+|1L0RVQ z74PI}r3~@L=H>=(s%h4wWU_AL(GOsp%5Z>rc`1|5QWrSY1_qkflr@(&oIxPEU9&X} zSKa-!Z7y?9SWJd&leTzoI7<1XnabutckZzN!mI=Nde1twS6`Zt<7it_W)3Y2x#?FU zj}cdZ&!{3^Tld~(X}@E3pkC!X6pk4!jWNenuwW{qg=0Lbk3t>3!_BS&RvN$UQ}1VW zc&#O1r~6UVnx4}Cy`)UNad9MH;m#eapD{f}5Wo2N#PUFVTzD)*29MKD%AmB;#LIpBIsFe-;qNdAghobdODi!E4 zv!8+ob@Hm^a@!J-K92drr>MvkqJ?AKCGzwBgJhF!*wkzAK+a=Arb0{Ky}zA`Na_TzsFz@kkcr z7m5zE85vaFR{4NlwR3H%cA5{Sv#zdS7nO6MyBZd%RPH(&IDkW^<(rsGt>w{MCt8UER%`!_|wBU62K3Zzoe(vKL9ZgC`Ee~FT z>o8ofvX^dD;A$RA}4KKwYh|wCT1T|9D3=#+1|+E49{@`>{2guMejfE@UmDq zU}?id%dA^v&hbg-h)f4wrxJhaJ^;pZy;u z@f=iLdv6Xo%ACEup8NLgeCf})N;YoX4wc!wK2i~DA`Ep!zKTYR5@~-kx924B;s^i> z`!CbCYic!bhgyZZp30Gdqeg#tl0wDv<8bOr4M>yVpTytn&sA{EeTGX6Azc)^8(Q~n za9CUVGqC1RsLQttQ^Xo7N9IhpC^sadkRx|56wat~A+Y^kyNfWwu&lhX>%x4w5G)ga zit}&_XKb<8bwrgmHuXgv*yuB8Ydr$ms9(5G7$HGdxR3OV@zAE0JQ(&vM+M~VqfVkZ zP8{kM5BZ!oU+gEYkf)h{3r{+mS(Ecjg*i*O#WF!mXwXSWS#*Zuk@qNUKKu2y10aHvRzYmlB1dlSs*_kJ^6E0w^A~eD@?x zR^HTwIwAz%YQNF-wLLIoBdUo>5lx5SGxT4++Ylbt7vC-9NS?<5BPWK}Zz8+I*C%VQ z+2SWl%0nF~;&jhNa3qdC-K0|Iajfwex~LuK#K%RZKCt zMaf80UJGvf!p1np9`Z@63&%iTtwS(kM`lC(F_DL`mf^!__-mQ~W;;^Es1Oy)_=9cI zj;Ot?^^wTEfoIGT05I!5z*3l)~r(aD`TUMo3q2QZPPaaJ_S~Roa49cqieiguh2lUD>X)ZRJ zK3t@i8b}}Yf>`h`a*F^XrtmhFG>0}CZEX22NFYHD05f2*@D}=RH?2RaKLbPv-XraZ z^o(W{W}6JS=E&w#F1=cCe6kFZH!9+Yw&*d{D8LcMdx{d?+DF#EY}r9!Gn=LM4coqT ztNjjxk1a$88jv#THfMp#8Y}od(+t#ol`;KUN0RmCYLID^w-{%&QT?0*r_U5LGzc_E zqBuB_Krvv|TmyNU5*#h@d>odHat`3WdofUl(Oe)k9smMo)(dq4^@}iK=6DYE+{?(2 zG?Y=I;30@4wz~ruJTY=WLV?|74>ILVcJRX9i7F&Auzz%tcOup#G zf%>03<+VKE^<2+T81Tg8(IxR%nsLE_D0KbLQw+2fMj8s^V;q;Dd)2t_M1$=;OXnGN zy(>niLCSXqYx{yCK!tV>EdP-jXzOTt{mW+#f~eucT(Ek}67W8A=bQI%&Zp`Nd4svi zxf~mm+qvX4C$x1OxrIQt2zQn+BrOCc4MHUcBUf6_6juMCB!ohx&n_=~#@2ztSiAAv z@~x_x3T`Wv9@8@xJHT!ROcyvyxE;;kiq;3NeYW$s%I^y!q_?@iQs|O9r`%wt}V60bK z0ZzUNGDw)F>ct^bY6o5ForsIfGF0h8FQXP4&eVOqvbjGqxZP!NrEK>ge#{p&SfJ zy<8D%ad04VF+Mr5tVjQ|jOkpw`ENu0^$`ad7%l`N229Yk4vtNKz}-@L#BSiLwcHUu z*STp$e;5@t+3b>HJd!;10=l)?z?)iZeV_}G2VimrYeB%D8sI%8FVxXmBB6Wiw+*^FRMZn%f$KGF)zA6!gzzcM>YXKF1qx&mwLt35#o5JmzKr}GJh=nyNpd} zT4Rr^k$}4u2z9Um0p6NScVyWU+=x&;bY7PEb!a@A`_{vn1zynw0>I?j%r12W6IM{0 z^1+x#^+8~u%<#zcK)dsx8igaQ0p_2wM1GlRp4w)zs=h%>R*uZTI%}Nm;zpFFfB?i3 zAJ?f^1T11lrM)`hunj_iUby%Qiir1K+Q(_qv`#SwWMR7;_-Uxw568Miu<#j{h?%O4 zf=QMkH8-_6D&WR%GF(k@MW7Q<-l5q#$$8^uO*UiIx6vGYg-M%8^EKW9)C4>V<+Sm6 z^`Px_Qbyvz81|S0q@F6ymSyadgVn{5ulGjF{CSV4WUvA;TPGt_5gM>;aY@7l;Pb>{ zKeI-}K#e1ZlFn;_9w3a#ZP0n^a=jH}Ip1Loolq3jjy;QaZ%-R|0>-CTUT!r5-b#wbl+UwwSFO{iC{y_X^BEIcWn zxig7Y{Jm>@3ov&jZ*rPgoaq){cBM31v z3Z3Y3<#D9}<-+@ERzW_Lm}_2m-lEn?%}vI$>3wP?pm8t$5reZ}cB6S+{}!fpP^Ms7dxI{WEv4J#{clbyVXW!2x8c`Jx+ z@1*0aHvoi)SS4$d)k394I{bagEu&yT^A5|v-x3St)b&|dyOPNk6}wL*sii(Z5e*B? z477~n%Qpyc=RWP*-rgpopkAM){T`Wn&cR?LD8L zUrj)Qpk={mwZPihM8=ogC)3o#j|YP#4Wyne;PU;nFMZ*|90`kj9^AM`L3BL+s+W{&2cZTi_+gFBTs+T8SHyTR0tdH$f}%KJu$Bka|n;qo-cWmJW!TX zKBG!oUEp#uR#jB*E$WcJ@c@KKmHsXB=b7uelMrMn#0f5*KbP{a=ZSF%#A>oB;HEO~ z{uL9jRhiLU)|`}RO-t=lFU>;>JeTpH-J-(dlne}t0@g4ir#mfV4c@29gY2d?YDl|V zPWq`DBG+Ae!Q%m@Gk)uF6@nMyVUJigcu~fSvCrzEWq=)K5 zifnh4iADb_SEU$vp*i@Ts zh7YtVYw-WXBV-t z+Cp)I>d9>(3JUdBSx#0~b_ujP5Pd(_xAzyKHI^eQXw`UeU45;qV8ntgK(RSBw3+$a;PSOkWp9PqX8yFxG5%07NUjQa;8{z$D zH>F8-fMuy57Sd?M`=_v&#GhG-B-Tn!2eB)Oe#?u13DISNNUJiab5nPut>00IuKWMk zbJKWMwSw_$sD-VvsIg*4WM3aC(n?TdSm=q+P9YvdWYfd=b8Zd#c*nf7*I&l{;mSU> z%-+=>oDvg*rID13LE`_5rT+ajjN6zrefCkEpqQvhgEUso<7TrTFIsCXJ+02uiFPF| zlG~sjOOybYvd7}Qw=l)ySb#GW>Clk1h5VFlc8k{{CMAliz&afq<4f8|;#h9!o#&en z#I}feJ$N?Q{8d@8dmw0#$@r|-Q@sl{z{)0LtwxgEba!N8+OJ(AMaER=-eSFP#|AI3 z?tjv1+>6x2fdF%YAc&_gmk=npH2(9P#~QL`i>WwQ5)KvPal)wsw)kaq;A^S9YZ_Cf zqod<*_fZHabdy7o=C)~3uDhs;)5C&seSTe?;+%mx^Q-4cslo0;G^=?*IBlray5Swt z3knX-CKchH8TZ0_cevBO_9{tzHY3Onnmx}qBZv$e0nHCZ0IDLuI6^PK$OSM;w(Vy0 z{JzGA#jHJvD7J{1&@sep>_so>MZWDD@2p(8sq4gQvx(N8e+tc#nVk2=w4%PrAwPWl zLX}Ry^F74~DP=i>J>NEo141scYwtGQND6r!a{S%|2Q6V)2uj)spA*D{o<~zP?*?#+ zy6&bCF6#MdDWj?>=szyHtsw(U$~!8lIO3zol+PGjFQx)SJ!mcd4C^$D=*QYw9GPHl6agj<(h05 zU^oH5$>*L=tOksq{?%a@SoY8Fd*|kj|H_!hifI2A5(ZMdfLIc&th9RGDY~&q+2Mrm z{oBNy(>Hy1W+5!cmQ&#DRjii4;+nonsJXYd9qV8+eY0a`^`*KJ@RTPb;e;ECOu0u{KcCa=wz|^ksi*xgfscDA?h5;5}R6 zTI?>@(_rLu9YLlk=@BTB>!zodG;F};tGwcR`r&{K$F)}_Ew8SV!lR?7ecuuKU$u=L zJfPTKg|p##(SJ(*wf}w3zfCcWq{y6avaN)hy1B>#HWKR-x0^skbZVuv7^)uscHQ*A zi9L3?XjJ#Xec(8KrKi5Ene=Z*!6Mzom^m!+4+VlcVawou0quA04EzFwhH*|c=lLsJ z^$eM2Xs2aYFRvF+Ja&(gPdt~#AcCY`usbEn(zLwBZZW;FK71dd=*}xB;99y(S=Kd( zA|b*Xuz@u+ho6Mujg1LniMwzV6nc8t-|H#AlI~(S_oQ1@JB;9ra5{`Tl~eBRkyM5A zcQG(rkdTt&R^F}m{^Gx$m(dVM$G?sDG??|=aD?8PG)D7~_JA%UrvI4EuM+wYEzHeM z8pghB;GcbyWRAfIgX7a8OOq!w?hRdjuB{kcosMp_IT)rM7b&=H3%|raSWz?h%c8;+%9?w52OFT>6B7;?D6*&Ga#M^?rJu2@NwDCNtq_0JOIwZVC%SO0#CiNK1&+LeS&s|3iiZn(I?s%eQ@Z#Bilkakdq3e=GT< zwfg^C;*nN>sc~B<(9?@isx6Hq`y#u1v#?i9RS^(S@21;6cJSg+uD(1BEsHuU zcOI})8X}u*oek%U7V2r-m6d!_biiiZun+wXpN$M85bdq-->uzu$xQ2TIq1Jw;1_$d z5MUmf(m3h0Y$HQ~DW%?Q!Wkm4M(g@U2lCM_gdg7;<%^;mdUnl_#m#4NgavZTY7nnm zgpD5*o2Pt*((GpwJuAun>{-h_&1EaV_HMogiXf_q$=S;&wSkWUP76DhKKIHc+`RX! z7zAdq$`G;RM1Elf2hSp-RvPiQXSBra^bybWAY21HUw{P=l)x58tzc8%H6pNc)TY+FXuBtmK zhO-}nAUYV`Bb$_*vt9b3N_q9@l@CBjY9B1jJx`0!l+%c%D-N|JN=D)o8gY z2zwSl89)(lQh6k9=aB<&!7r0GvO|S-+aLw;SvY~fYJIu9I1Wf3Rnfz{J}WZxV<c*uW0#@$kOoFjv;A=Vd&qT8YlQ4Pzw(WrCBL>y$HwQZN8*v9& zrQD!*94T}m8>6ch2cX_YwZT3U<0HyBh1QJvo{ujLo5LBeLgAbB^<1Z_@knVn8fwe{ zCekXvA*2!I#O89mmRF0^)%F);j}bAPW{5z_g5(*)I`Oa^08*TJIx!hQ5h0X3`2lLY zp&l4>(>BbAjzCJUXVr5J@#clZI?~6O(d8BY8zdYNr#j8agqLE6H6)0bkzFa{aYQ&E zScsu%`&UT-@6-{AsbA z%oD*+VCO5|xN0_D&^5C8v8_n+NJl&xXhO#~>CP1#LM0Uxy4)q-&(VwDH?c$ycKLfu zhr)RFA8wXyKe_ZW?pZzi1pfg~T79rezW%LEx6tEwus5Gm+AGAE91pg`G?`#PS`O~b zu-Y_KBUgftg8c5u@pDL*^!SmZsta`A(4; zvXU6Np|8b%Hb!}wGQwrfmOK+r$~*)HkD7n}Kr}aHiKt&H!Y^I=KZ|dp<+widuXzKc;t=9m|A&3EG55o3m6LD}Ud5 zKV;%WP7()?M$B>c$lQd_AcDxj#W?x;bsTEI_Bwh-U)wPGN(j9cl?4Tk3^z#p(O1bK z!T{dHOpq$&Xwz47Jph%2P&`F6hpIuI%beyNZpbzkYPo4)BXuEPtw|UV8l(hZjtm|= zVMWktJr`!Af+Z&Ml6*UrCxTiKUhm!ueFt)D4uvy7TZNK#bC;NBlVH)YI|_D8(vD*8 zi>0L+(s@mA2ovnc(?XFy4<`luOr0EE|GlqgR<(5%4z&DcjWFZR=ZrjAUJC|^)2O?R6$ipcYXA^l5nH_83r*`MEODidILa)+NnpHKD{T%P6?%!* z9*Sy5*8lWKSVfneS!hAHS6H3SVW0Y=u*w!T)q){ON12U%(087xD;St_I1I_d0#}2O z)zokgRW`*~^Z@+Emup!w?AMMTY!<)MR}Xp0xf~v=krNN)`^qeecW`rLaDx$l2~u*nk- zvScXIbjsL15^i)q7rl}$t*!K}*|vix|HK{YAN&MWx_l*LlIk#3Zr1=;OFp0NOiD~_ zLk3$wtYsGPJoV9X4p>lc4Y48Ej+2Chgzad|^D2e$Vk4PqZ-2jg?mBsdKM-VfRt^lP zv$lw2M)d{y?REtP1!(|o8yl?%15SG`EDb-WO^pUwSq#@TE$JTVt{0hn{P+)HR1^yc z#TRYd2NJe*E}3&)^E#n%Bg|ksV4LsLLgYn+S2#K87#LI{quOKPjvlV?%UaWg^K+r> z?3}_Qwu`j`7qsU#z(gXA^@wnIMttMcZ+Z+0#R`pleOMfeHVG;~;XclO02ez7V z9yOSo*~2IggC8sUa=;Ks{-1y3#GXl=8m1V<*C2UuXS*ua)B|gR7`q3s3=9mzlao0i ze@>5a;eigTrFGjb!GfZKAtNKI1)yH@SwXq+u)cCc_-t#% z+7&y1Dxa3`C-2G+5k!Q?!rTDH-Yr!G9IW1OS|Oayk0=6s8SwrrGlD3`&N)#q;ix|+ z4UiTvx6ih!vt|GnQesKsNU|Kxi<}LIc$Fl{7g%o5f4fIRdXU26;&S1YBeOZGp(%6L z+td3Dc2JwJp`?k0V%@dg!zN2RQ#U|QYAi5QvO!MOJ(GBG+Wda&pMU-w%YAsKK`UgS zb&>X=Xr}G@u9s&wZ4Bs(0Eo}OYMdXUI4dB+<69M@38bVwVK+s~5%HGe3{z{PhFv)? zCW6+df<|q1ye-*oL;fD}Mga<*$=JBqsj1JjL##J_Y5!3ORu77Y3QVny8CrXWDRq%o z+A4%7#HS{q0BrZz(9??1iNS3$6c>N{(@ga^nphF6wE1a9AQ3yHIJ9w_xD|JckyUL^ zZRFl+Y3z=t$*(rrDR)v#I9Iu3-O31W0(O25BxwYgS{Bz7M*Ws=nX1OCMm{Xxl~b=F>E z{p@vILWWcZlz@-vP)W0gT{sRS|46@C9D^~cGC*Syt}));W_|-Ykg4n%5!~6 zq2U?sv;6bQK)l~!;^N$CD=3Q0TR7LFs)R*G^rtsD=O*Wt7rSxTK!C+UhxWaK^E1+^ z^Na1k`qIYITL0k<`p|Ijk?BB)LZ87G2D(Tcaz+Vq(nq@K@^pg$`t~WRVp#O$4gYr- zYe9j>>!yy;v~ycZw1tGj5 zt6Z%51}5U4ww$UU%69?ST$?b7e<2%p6N3Jl*Z1xVoCT1f^4*(=Jyd$|wXnB5L|pMk zFkfJn11Y~NzbNc7QoI8p)JiDcnr-qu`jUQ-YZ zwvydtLSq?3@-NN^bN3?ya{!P*QF*l+HOb8-P`qyPW=;!3jzjUDhxE6b+C!NzE&N*fr zHP7rCYQBfFtwM?>rSttsJDEyPPREN+0qi~>vMDM9#I;OmHUyVj5**vU$-UtF>Ni~M zN@iQ`LDT1~34nudf1|J2k5BR2P!ji>JpCSr$VoftGt!7&efs$2ehD4HcZB-akebv_ zX0`~Yd+*cB8q1M?$TPb8o+mf_j>qW}^OR&Nv0P$}zq$%q+E|V_d~&&*YwCQ4SL)nQ z%QfE?z6)srmdTcqXpjN0M7^1YbAmq?7Y~|8YrQ|lm+;t{u3tS0;_e=FJvq%NE{iGg zWk{=UF2kdqZ`#<|Tum3eL7j5DND#@Q(!+xY{k{MCs@7voCPV-+5n{gvwW|Wce`~D-XipPU{$O>(s|uRFaZ6qyP-$? z*j;fVc6)HAc(uKWQv__ZUp=8I6f>Y) zaX1VssV@cbi}|Gv0b&swLKaK9d_ZIGaV9Z>F!a&MKo?oZy9vmOz zuSluTUk&T8SSTtgwzi%;Ff&`P{l`Fcz6Z6rP1|N-P76@D4lmC3)LrM?c8~!JgrxiB z$22eBRQzLJBH>$L$0dHX$3`08m%nxXbW1;C?s?DN)!6QXW(hcTq(k2M@-Yl&)x&pHhwiJq~wKv?Poev1hI-{bod zD!J>Vp+Jgr0H;qPrOxNakscpk%^|H8T}Bb7_{}L_vzWt!;^ub-2Tk_dPmK5#-I-Ve zO!cJJHpqJdObIgObh2;aEljbT=60=Tn)F789@~*PThn4cc#oErR)QFdIiEi#xQE~J zvWvQnR3gQEaw4O)kV3NELBev5)??+br&w!UjZ z7{%6N@>Nc@n=qEcX8#>pc989@oGCTwk6DrW<)s~*#b5S@n7AD`WC@pglop$7np+_b z9!e~idjEs1I`fe}tE%WoKz*;RMp$K9X~n}V&oGdo#JC9|MYh`ocd1xN2|;><$Snfw z_iR5_1H|;?-GIF)$)uLc1ISGi8G=mn#D>utLDs#(Jax_`sazuquzC2CF~9tO$48mlRSPDb zwuVJh4A~vf@rI>i+0xy!kUdM%@0mtzcMZFyrRCg()lfZtBkO*Zv{h zmC(S(Zl0`7>gR#u6KkW>1j4%JrT%)wOWBTgfkm5h>b?6yS+ zj!eWq2F+NiWo~8oU~lxWvNE~mBbb}pLmZrtsi~co`sVIA};? zwCtYtf$&@mF=}ph>>(B#;^7{`$iX>0H8Z#`C4F}4@dEk449RPgR#sXY8hdK%|KZIM z?Gqw1%P|9bHg|!{Um3#Wh(bCW!Lh$s`>%I_*N=qQTMOv!-O>Fm`v-0Eq2AC(8;8|g zzn(>VTgA%hf0GUD?fJJ$rRek3xEjOZny#368&8vaVxITnlZ?hv%I0ManqgPM(%lR| zaJiWSv+jWhIa11D`b+A1WwM~hEFM8+??SQNlBNz7X+q3OEmu=-Te)NBf8ro+S}W-8 z`SdRIobP%1UoQH&Ysa#H|3B`>9jJ14H8&(>vDNdi$!!ZLPtivK0lmYP#p^>X*`ezrw41bv3&qS9Bv0DXUAp=1t|TU z1Qs1_)Cz)xiw7$bYvLHY$KkOa?gJUC6EL;83SPnzllkw51MZLU9RGE_=IDRtb6ICyqj`zs!4harIXcuz6S}Yn-96Gg}ZA0GQFonYE^f zH;c;HIf_jtW6{xy4iqp6XS?uX9ZHEC7a5v39)qbR!(vgx?L0%tLn1?b_*)=UDL;Z} zQQi&6^Re}E-Z_!y6ajFhi!Wm*JN8)oX~CkxR{NItDi`%)!1`!x@ULM;*{dx(81c?O zIfJ;G2nU^DJAANr^v7=i+8qaCZYD-_Xs(Wos8P7LqOKI-qpB(9JL-Wa7E?bE_h(_* z@IOTWyv}1S7Pi=>em0Gq)e}v;9D_SM*Z7!Qx$O@|tq=*EG>HPUayP>i;EZT{)XHs1 zG%8JtcDqp^4{Wj41F3IlsZT&6cHxWx>=)1Og4^sAR(~E$O=Tus6<{mJ7I2fW##!K} zv$0+8R`O1a`4M?T032dx2MhF^0s&u_SxQvX57e?Jh~3o-K(FTMI0aOLKoRgMH3-na zCU39Wr~P`=l9ZAX@bABG`Ugf9CM&+OGW(;FWQB-=+UkVva&$(*)TkaZLe80SBv_xW z8XrZ0!_EqYlG_skAkLs^#(;MCx$t^k&O2in>WFZ#AgZE2qqgpN!;2{UO2XKbuRn?? zn}=Yij_Iy4Zr3d|7fKYn-4?%|zXX72o2>h$NZu1w9S%Bl*vbUV5yIq&EN$j^y`(~f zE2E`lLQ@rHOr9mei_WX55djZ2*npJYtculPF;m#2W9KoM|SX zA{@y>5aE%1Ho6YU$6*#jx#vv=92pX2i(f}qv0rQ;FfgKQx=u6?i>EU!GuwDTN0bMc zC4FffdheUjHM!yMvx7{QSZrutE?Dv@;Tn$~2DqPl{|PH&SbH`A)osXbs_IoAWY&N0 z5>!VtbFjsz=Hul3VS@hv(`H}yK+O^Zi5O_BYShz?4SBkGIWp3~Pf=Awv2f=wVVbP8 zLIBm&190WBs{mm{70+nHyFH1C?bp6Rc%EuHEG9xNIaT#9Q=2(L_um8nxG!uAt~L=M zzVB>wvTKWpoF)F?VK9OW(I*I&pK^WH+FY6}2Kp(qIe#ij^$=&P!lj@1kHA0;D` z0SNO%*E&FFpFbXu?3y5BlYdMO6wXhNjqNrnfIEl=DL~)tQyekF9U)|k3eN!Sc0JUS zD4UN-q9X%nm>T9?XFrbUvHg<)#tSDm3bCtf=M zwqknY0Sdx{6R=6>sOY#5SRNti@R&Bp6yZRjrsHO=y1;h0)`${b$wSLwRJ}H+Vx|ua z9jA`TRafPpuMXFMYM{DsaTQp#9o43S1G*9X;YNP4Yr+adg?T{8&OEoFuh5X*jMC^p zV@N4ag-eWQHmJ_1XA=PT8S`;&cwe87u7Syyrc zYPx~>Xif8SQ)u6p4O9@CM{jjR6*JP%O9i&ILnf6)v|*4;SlPI=GC53MOr%HGW-rK` z7v!rUeZt42*j;o4d>DH3DqwDb0aV;1yBI^HJrQ8+c6lM*IWQUEHE6ws3VNbO&VE=p z9&lWwu+F3mM`7txc@!4~H4IrYfQkUeY`t%eTRwXofOi$k43G=`bgA4CN9@?#xnr+J z#IoPwNCf7|W1YK2I)+AzZ{7E~%t%N|E34Ckza=oU6|&`BRtAprI`p$Al;E(ZRn$=P+qA{0a-ur0xPzn#9a&PM%8A933I(hS*7l7eXTM|aMWz4Yrd;S=TWuxn zTa(eT>rmj?WaP9`+C~vTDn34?ZK>xwkoqb7XKADKHgOA+0rx$$oU|2?(ZE{ZVXglv zA5$l|DulYbmpjKzHCtj!OB=rkI(--&+i>6eS;>la(mvH8aXARHa zpwL(U{nRGG>-ngM<`<-NkaTHTbul12?ULy#ZNAh30?rS`8*OP*U~V1+RxafczdJUB zVlgDnWhoU4J=#5gPCffI;x-3&nwucHoh5dH&fGS$ZT(bQByrB%c$EA(DUJHQxqoIP zX|peuN3RDX6t3E)+<~Zm#gGat870j)fRNg0PjCtHX8RO-?(eR2VZEr;hn^#H=!~Ko3_Eu#V;6Z&kKZ(u3JBs6e2NeJS`g z$>P#Fh6Gbq{W~^DI0)X`QXHb+el)8&-tzB`%mHy<-{~P~Mfd_ogRUoPe9^C0_=<`3 z#Q2i6=C&-Uce;g&bhLDJ3z$ofp!mn~tg)`;h1P|(Zkxe#C4a)xkm+It+InTy_yuBl zUKZ#9rXrmQ7%hf1c6V)FzBG=w&jc0KaKy=cdJkClgVc#ZfCMihBE6yn*twLzXF>3u zOZlgS%MwVTj@eBtCJ@kSZcUQqLN<-e@_`afl$k;Wn^FXkPFA-3AGY2)E~r`@WxN@BKdf;b)v! zYt5=z>w6yOap@x53z~5`oYK?=2rpIvvQH~d+KUxt>@>z&$nu= zC(5#O)VMbvViT|(OK`g>(0MyHR8Bq6BUnwL;B|sjF5?@?cT}f}_@&SCOCQ|YQEa!& z6~#QQwg^A)nUa>}W=?R-^=t54d{qw%t=@X8+OHRl$)PkEq z3ZrGZh`9-2A5-bd%;hgi%dxAkzV8~a`@ig;QePqIKE`8hti#21T&wkk$&f(h?^x=n zJHP`%p#*mA;V;;X*fR5PGM3LRTRnJ~1?W~IDjngy_@~tyO(2osf-cYHF|M7GQ?XAo z-jOAVH2l0~wG@hXj^kTcQR0;pYTeDoY;$1mqKn&Mjy5P_8mTp zV)$E!XIX9h-FW( zt!d{~|MN7Z>CbD1Ypazie1~=a|CzmCWV!73~yVOrwi5#xR z+E|ymOMRbEQMTb$`?xSMWpAHzqj0{lv9jpx?5MMvbpD_YrIpXiNV9E@FgHe!T8@ns zmZi-x9q*_cw;bV0%}uOvgWS;SoqjM!IT+P(3*xL^Cd8Vt+jyosG7UhdVzsKOz1IY6u<}s5zh@W+Ez@?kcA|QO{3mph@^K>#+h4fH5aeTeMfcQNYX>u_S;`x z%ni$nb(-m9@d zUU3Cp^a)n>UoP4|C$a3Cb80NFU8j7~*fmejyy;dNf5u{-V0BC&s;S3>CVkwi=kpt9Bi!tlA`oiX3kib1c zxq&gS*iZ+^p`H8M7RepSKv58@f&Fp-GGyox8RO;#jCxqu?l(Zp_%CriLTonin&-}l z>I{hX%}D;fhF!UT|7w5n=wP;iSBvXsT3w93LEU7u(yKpq=ls*Io+0WgK4rZY@zn>> zd-c;|y0#%&Drv3(Gp?SPZ@Oyc8XberbjpzjtaENY@g5)RzGHSDI@;Nt(g?l4vk2T< zp>94)jhha7M!t(xH0k&9lH zPY4w))rRRyi1s_z(@Z)%Hnhu&l+_<4KZEyh1o^l#LDuF2Yy>nQb0QXNU0}!;hNJY?T{4d-m4r`cBt3$md+%-3WLxa zmXTb$0o*I#04&HCd4}!^BoV(@(Q6ih+)CV3VdcrT{!hja2QYr--qx3kl)sl;^Jy3R zM}~aEyImB}2Gh=)!4?j|UQ6GAq6}rT70UJN?PPjy<3vRg=6ZwH>Z%TJQou=eY}lt`!+6?dJ}^Dc&E*{j zX>MaL8zc0i6Du083*ggDolYbmZQR!x!_!fnal0aJH_P+Zmgjd-AKL%Pa^p9pDtrRf z(d3r90qI_1&IznH>sq!p-B;Sk`PaD%r(~xk`=+D5%c;;$FrY;?O{gU@sr5h6aH<^K zu7_drX9wN(pct@FSuHH|`}{eos&;uwvjTJT0Gk`K4mmtbbalLKm@m{gJj^8wbAJBi z_m%49@euVvQzp5~mj9-j1mMNV++m;2Rtb;!5R%TcVd7USeI!=vQ}Xn=IiAUFQkP5Z z?3V}0d*iM+)=Np8eQhh%eP<^WbEt}M`EHed!`&`*=P^pm&=>koh4}Ci3!R4u4+p4v zsn|S1qa!^_xi_HKj0xA5yCHSCZ5yV92SiebiYkz~fQg6*88h!Bi|5Sg+#|n=g-CaE z4&hucECv3Rr-8%C9cuW};~8bB{W9B~)5=@OGA?*&O4fhDpg81SE5@v72fO0~#g?Uq z@*2{!XUEEQEjP^ro=#02+wUeO#Em6{mdQlNB&?~+^gn)hib5p)NO=H$!8y#V~GHxbGY4Sn&o3Xed=>TQEg!lXUDSt3g_ZLI2U#%z{MXNp=cbjXIVN>c$f8&<%l?Q zFH_d9#l_M57hAie^TLiOCjy|N-FjqbD$96wUUtvcu{d=~7DnD-2 zng!#$h>vqtoGxdev8d?(`761b-B_d)c+u|SfRbO;>nHo$9q+yNDD^3SKlDgWSeS^*?!-pF z_wSGI-M1wae5<*xW2#B9%wHVtm};31ZyoP&-f={+JD{~L68<8sB1-^il^kz8G?rKj z_>lkTV#%?@-iyrWkACUlp2ytx$No)wPJ)`{g*r|w3A`U{#a80KQh^SbPz~j4QCY8F zkGB3wzGC^--F)Dp$RRZvu`1XScDTw_X zNCFQ_W*{BVHT^_W%^Deq)W*Nw2f$LB*%zomLwFDZ<>X`nIx4GRxDVTus9L_@AZ!qqFTBx1%hC=zwwmDbjrXPTpT-c-_xLq6OFZMp4sfj2>`sfbU%j_*?AadF7%5*JN5Drih{lXxq*_(Q_1rYZyMAf05=q zcI2lAz#BTC&+vzaz>6$FzHpIq5SULBoC}boTx>7wG+0vVV;#Xh7ZCg@Axwn$aw6$U zK`@faL55DL*a7{UWPcla8;c|9_{;=BX8Ui?c0tA_;gEd)Rt&`QGA}v##`Wuw{h&7@ z_~c%Vv|mevtl{N@-*=Q7+tV;MIMf-Z35IM_;k-u15%F1#6e*0o!oMC3{~S zOmvcEG~hvDg} zr2eKV?>o}*yX)U0&(2fW{CEuP^2$rF$Mrx3N&ga(C!7*>Vdg_CW-RGz#fay9q0SN*}Cva=vkKA%b zWq?lZP9R>e(G)kZlUoo3nWOgl;qF(wq;3*M?>1eIy(}1BW}rCVQ=`c4N8BO)am^bR45pw8C(tUbMAFvZlTQN&-4mAt3 zZ8ra49p@e<@q;4huoet?bbI=;+>E@YtiaY3u%? zfG$>UY>E!BsW^qVn%~;{oPk%Lu0awGokbc@Wk=bDJ7mOhIgo`P_@mky71Hfco1ug0 z99qZ|kHgfx`}+r9el;902DiM99ljM2I{3O{$hnL(4UoJZD56mz+*#Ggs3~Sxy6Rlg z+FLS#R6~Dsb;nSuqYotvs2wWe)4Qs>llhmfJVw%|*)k|>$Rw#o0M(iC8y^9)x2F-L zwQ*)TY;NPH1nHFtl#v7z4)H*fhEBd#kGY*EBoATCd?~ zd^VO7mW!0@2;1~Hu(MA(>d;{n2;x>Sv`I|6{D|>~>THfFtZ~ggM2>mmA_v3Uh^yFw zpsm2CV=rQ!X9j(N><}bU-O^ z53A-8QEl3_$Vn|+c@X!CI-RUICp<&#l5N61f=wR2rOPS!I1PlLM|DXyj8k$!&^@v& zJgxU9E**%UMfbr@3LhrPgngs})(Xhx#kt|z*scyl6xd&66M5jULc@qw2SHdCo+Nl@ zp8RY;W4Lw|;Yt7;t)knVTr&hW(jfUrR>e_t;EjG>?+hy{6jyy81Ks(n7;rk>cP`{l zX8#7z){mqawaaB;gJF%$VXbdh1k}H<0p!BFWDk&?^dRO7?5_ZtjqYUA<;qYEl4j2Chg;b>GJU?{_Srdj7_IXfkbr-Ap8|4V zc92r?Lm>#rBEnE73-p=GlHgLM(g0%Jt`Ceeu0e7eq6CZ+!2JPYU<`t6+g0LNdPnBa zugh%qZC`={$v0;r;`@~CAx?9Qh;z3j=RYCH5dll; zUd~OD_;iqZ3$L1s*^AiTF`)%XKVFZ-O4V!P&0ptrzUQv=93fYO6s!LUXqdhhn3rfy$$bJ%&^QK0ytVi;rtUQDrPozPvHr{ig2toI5GG7w));heZ*9H1D|I$+K5(h$E6Nh`YT>&be zR5Y|W?jSz|>p57XTB6SQY-&+o%}pwR0H@~shL^i5@l_(Qxa5<=>5TD|1xghcrR z@FTt();Oizx|1JJmUmCOS6X!$d!aJ*o5LcPb$xtfC7<`0@u^CLWT?nI9hF-2AKW9FC|FZQJgkLuzJ(3C(0%uIC zL5-*bTa`3HB*w-ycvM8C+e1sFY{sWgJedD}b9D%{RAE?r7SK*!eqX5JjG`@=uvjzg6SVZut7Qpmld;}ei)?W1NYsX{1^;!0VK1PXLJZfFu{5*l z5~*+M*-7{S88CYA8*UdzK%?X1-WxiSJdRAch+c|G15%Q|E-|IZf$?%;l+fO0O{F&i z6aX0Et9vg}=~~K@K><1^LhhdWQV$F3K4PdQPqXLXL|)U#32@C*rnR0ARkV5QNsc$s z-&j*z)#J7Q+16Lz4NcO?$=~?$k9-#o568E1rm4f^)QcIcvm$QJS4)bAPslwY)$xL8 z-1GAih(4p^##$U&)m#(goX*La?aKig7nIAAue-EU1<2#LxR@5S2j%6j{oBrklLIiV zzX5GcQAN$t(x6)*R$SpaA_UA8#kRm)F@U9;>tbSJu?h>zvC&rog4hsWDN5-Ki!%pF zaY0M)^su($3C{t6Hmz123kNPJ#OUzlUoGc)8-cnL&MOYyppA%I!5uBC3^foWgHMCM zTww19T@&Nrw!0jbCKBJ&McbDDQG4k$z&}vFCpR$_m^NThB6E^`Uh3tMhC57HW?Gk{ zP{+%nm_cp?y%_$=2&A(`N`*qxuctFH4yk3#7TF>)U$R%HB081Z&#eq#L%|WH=Em1w z^jSXpb2Mg@!6JIG?S~DiugV;L5Dn(P^yrBjzEry&5rH)wmj_bg6Rec~FwTi9&jlq2BdV;T&hb45&8iWHYRxeegi1;<#l%r7pYm+i@R7RnS4>Qv zU@_oEkVZfw@MPW?voYWSWlvYkP#^xso!_V+>v>&ZKjv4S)ju)hi^06BajgypSmhBRfu6N7sVTD%zmPj<$=!`Z z#mqbk1S$V3F8*&ZF?=_nFMpO4-6QAMQr>$iWq2P%JZBNVCze>r{5$z9CFMS9c^-5y zaFsfIg4c#4pv)n{ETA@ zx3WGsAwQ1e-4!<7FH31G6ne}`aB%$s_b%gF39d6^wxGz-g1Ly^^>~w?L|`en5=)?6bo|3j>s2#6})R^x6HXsFKFW+7WDuUmpOp=(1XoLK8$=S~B$ z{op8a;y;B={DT~m5ov^_dX(byonMFW2o>4RumEj5^jpYkS|WDuwK zCN|uF;sCwE4+FRRGDEdlMyTDTHf72Q0O^oC7+|qmy5~nUOFgp?8`$6b`Q-35#{SW#F$Zv=>MeA%h;dm|h zZ%F|g%3=d23^Y~0;jGTz+Y*Q9)-XAul8UQI2)1W|q+;KdxTCV!_89NIjw&~*`l6{} z1i4oDqvAT@xP36{8YHN9S14S0%$CZ(3zV4JyO~6VmiU}*6+up(^3g`+t2rFF^;|Vd z|F4x|O&9%;knVZZ%FoXwH;(0J{G7vj`y%Ydl5H{~0=h}^wMEq4T_clti`rO%>T$_P zt=*U^o*xLmnZNo73#Pfd-tKcane97)ZWh9bF6N)RWa%wTMCNt=XYBa$Z}jh&x}N$! zOmpw_8wmspS?m-BSGNdjq^P{0KzJJfBgK1(cLc06h&1&=h!=@SsD{eRxaj!C7IoPC z4t4Nq8LPq=x1Ou3CtlYaMZHH`uaMt|_Fp}|tn{q;BCJxJ)jw|DdO_?b)$0-F_;ixr z*=jl6)}_VPT9tb)cBy*=dUn!G{5)l4KD3yP1UMuP`6y!@ONB6w}2$=pSe)4!|L2(_^W1;1NZ zqlY%!LI3H~hKCz-U%svzt}Q4={nIzfrTCvt3Lc%mPKsfkk{>BWK7aaWnwzs}|G6KmUE}-Ze2Jzmp(VTj zwb$F1&xBs!NOg6&a33D~ez=@15o}!?d_bXbdB$iusq4v1!;O|3aP$sa?@j zj@c*lU&+q!jv*^GRy3po9TIYa6Yl8H$Km(5epb|9GZ5>^AhR@Vdr6gtTA$B&V!pEG zFLe;x@xdXNVfpYH7*7?;50B^XuXn$d9p?mTA?LH1yvAY%Qmucz^fxjD{}eE(5J%Fb zr(t7%P=y0S$b1dRWAjYLj6Q*BT>YDp;$Fbolx)a95^l78}YFdeq^9uR(o zPgwscCpT|lXHq>9#pZI+;A3M1SH)W2wxsauk3!ygXWhFqkD|52eL-7$z) zRtQcBgp`yx9_(;2W|0@3oUo95-6B)pcW_Ox43blw`g+SDScx?K^9t*N?V(U@#AZ>k_t+` z|2d4$j(CYKY_8L{zlgS^N(voR)O?&wEP&!lP6>=Od-al zZ2s-~k9c{|VX`?~i$fSd{?<)a7G@>{gz0yJ{>cZvnA&kZe%J+9Vuc-Hlit!L&NXAH zdwkTOp9}H-GKP^TWsxZU@Rm|HkS5n*F4x z^7y56kGRT-nYcUDmII;+eNaFMFU?3Kx&NB}2T9^2!acVkm-Zn$vhV5Eq43jJ4V1ex z6Il@V1o!neP)xcY&<)Oz86UZ54L&c3h8jK6rFc9}3nWBna~n3|+FyG{5#ap9-S0MT zOfa&a1@ocXg3JanP-w{jYo8v6Z&n|@*+9Bf(`TxgQ%Z!^Ui*|6F$$6Rtb2b7@xAXe zDhQFDY^eABktGM36cE8Nkd4Ok3Q{Uhnm(=|^R+_SH8~7@_Y&jSI=n1uV7QzXa$6md zhKTChg11`RE|_E85B_bR8uiRKI)ZJ03c?gB*cS-9SG?o^sM{Pg{&_*r#z6&3%_De; z!PAolh7{K;<(n^oRe`fBq%HXIP`|g#d4eifB8pY(N=;zpHtT2ue6spVVRE;kmf?f4 z<*=qIhn1`G2S`AfE*FS6lVfIs3}@-Q?X8(0ROuX(jhsuM)zv#a+t$<3;~lUwk}6ey zNUeD}7IW8<&T{J9TTOGHgDgRLDbtGu6Rz_xk=1pn;00DZt#C}5P#)f@1cz8K^#uYW zM3)esG*o@CcsZ;QpJyKq0AbR^9>~lS>G60bHF4x2bE+XH(jA^9t9W2K7l_(T1<59p%>8SpK*1@Y>73L?0MTR+sotn=p@<%4A+;rxjl z%wX1;7@nrl!2)iW65@g3#o*8Z&r%s05YYuP5OQ?gU9e(i9RP0oH9g?s6`bqkqFR!$ z8!tEat!vk$qEV>U<>g03OpKvg>R!vOqWZky&&rd!pHgTi1eBbM{=MNg4r;-F*REsj z!OoVQJN=E{95ll4X7|LwC;WkbWvrFZ)>y@(rin%3nQPiqQZpNDD*Ok zN*V}pY<}b2Gw4o66S4VvuYlOvAi7ihSfoaS2?SfMLb&o1^m`jYFCa)01lG{IC_hbx zoP1XDn$(!vGGvVYQ1Ue_tN0lujAicu5}lBijaLO&zsXAP(U z{%!c=AY2Hy>&l~74pLqC=zHSI^=5QWKK3l!ATJykgVf? zZ9)zW6h?2Y$ZaIQ0#QNgD{$lfPCTRgokOl&ZPDJ4eP@llc4(80^TWQ1Kn|EBh;0Xp z^`q$+a+s4f3_G1W7VK^z2f6w<%`MR@ypgm&xd zZDFnGr31HyL14rNYtX%s3ndB4V(`SzLYdm(&oWu5Gwr=!Lii;O!r_2R7TO>kC{6Z& zo^paEOzKUpYuoaOXejATsl@lryay+>-w~$(M~!>}kd!*pjXi!k!wyrYyo4dA^c zJy&7POL`UEL!}86FHuK<1sp|dc88!C6C}}`TmmQU*-%(5F3WBgb@ ztnJ}2dUngNO5E!*7zT_m>IjlqyK(g#bL9Hof*O~6%o{M-9ro`L9Bs*`85$(U->PKM z921As$_bucXfq)yrY`!qfJ3_tVC|O0SY#BMr8{!UkZ`nmqoRr>>Q ztN<5%xML@8KHjM1!*R&7y4Rk_gH~XP=r1ql5M(4j$iO$T7ZDQN3;M~5-<7epQI7{C z8QP#K^A$cE>;pDF&z482DdR;X9+M1r1xZjsO<*AHSPbYX@E0>kaR^T&($ji?Hzc>FHjG#`%FFx0&cJ3JfDT*4g4NS6EYZoQr#hcn9I}{2{g=C&nwvSu^>9E)d3W~ZN{IB!cBy@ zfv19Sm1H%>@+x6a-sa9!2j>y#YTsiNKHu!z9I_I_mknuh&Ly|Ha}kif8>jCIH#YW9 zlou5Q{v$G22hH}azKU8L-`kio{Z3A4G3rsAPBpwE1vvyJYWY)!eBNWyG!bC1Slm-G#R@-MB`+VN$e0hhF~gg>I@az@ zz-}}=IJL{M`v}H*c!bX)8?CUPk__N{A2Q|{Dbli5&J%_v^%YWK+5oA5INO()8ZsD* zS#P;KLU~aW{_x?$^_?xw{VrK47V)z(U;jT2K!h z6ByE%mBk)5=1+gU7I)R*t#!F*{b;Er%}tM0pW515CB#kjLE7;~F!QNX zaI>pJ8h$%S>gvYT?F|OL2QYrMDiR$5L~Gs7d~Qz8r@)@LaEP9Yr01uu+B+t7jw>;T zs*5ZIjvuJWeaB|=NUiQf4$A8CV#hGqS5i_gXkPV0BU1Z5j>p3MuNrA(f>vdQ^Hv96 zeb_5U2Nn`j1u@kRnI|$yM=NfT>fbnu#Zc>LsA>&(mslR!+KzuB3=tgfpMR<}fj3EI z28WMZoF6noF7{n7uq?GqLB|Su5Iaf>xgK>Lm(Wi5h+wV%W;ICxKYN-$v13_P_sb|# zQ>@$A;qz^&Z9VO+6Q){a-t9Ht@G;dtFN|g)ACoxRX-vZ2yN**$hMVa)+)Fl_)h8@# zU2Q0q9|9i?I^UZ<3Iuad*97Bt^@o5*$qoshY~NNFXn$$B?9O5RX`bvDTpQRltui$k zz|z~ZC5qG3joW28msjjC<xy?_Y;nQ9i8pgYPepYEPp)e_*-eHWkrshx7p(Mp zNE?@A!uO^oT|Qh(Q*%X!Wqf;^+4=ppSa>pV2ta^8iJ93*WW!H8dBzWmKJ<05ell?) zlgiNqsbbUpIIEuCp3HNuTcclY-^Rh1*x_c|xZMD4bwADr6o-W>-BT&6+LT`L3M1d0 z)Bp_I$NI!A0Tm+$Nc}Fe-GatdToWM{kMn%NqXkkP!$rW9S++H_W)kygtADyO3GGpJ zBpbrRi~d|8&=aw!Inil5x35H|J_;W8XI1Av^)+bu#dmCWF1jBin zS685&KqsAtn4qNcVg$~m#Q8T%+*@kMt#taa5KK+9qpl01?2Ouu<}p3BMcsOnE!fI*1E zf?kGB=>WJCGP4q)$h^^6{A+VXv)O?qnwdF2PeOMS;>-u2yr)7!D7;pE5fPF7(^IIS zA>H)!^!&z#e`O_~orB#|UOL}H3!Kk8-tp(X&$Cqw5 zN;?od!C6=eZ|Lmc$R4ByPeEwKrUj(|+S@RB&O7)4o?ooEgoQbH+=p|n*EQ-pSfG40 zU9@Z$VsdhmaV9V?RMefjygL@rWFQMWP((}_ggaR1WR@)Ix!$mpWGXCrb~jDwhK9FYG}x+so~Pm z(LEw2J`je4M@22o&Qxm{p<)JFg>#?jAlS+qRSZtG+%6oH`zNLXVlW7h~bRfxcIqyht~PUZAtcf3}Emc%l#5zpcVk#Y9=| z29j6`wqzHm06judZZQtv^ff{(_BL0Z?XI6akDcNN7KOT=HxKc~c*_sIJmza3q|@f@ zdYCH-6u&D>*(6bss;Em97oULcUZH#hf4HG!RGB^i+o7h;ysN7u1yyA}tD_&N5>YWN z&C8F}R4Uh<9>5raLNcC%h`jOe-7AyLxaj&Db@|Wk-zN+B{%x`cJrO21Q*v@o&qarb zv#aY4(qF{JiJt-`C^k0#^s)Gxyqve6tX^fs#olkdBw^KfWB5fFJ(2Qzy-*KM`N*p< zhP1noCt7DmH;`&|D>_zm?b;i2ZR$y&Ug8$a-JD~vW9JG+E*Y4!XpH-Q7sx(LXkDs- zRD?%1CTB^G&dxoLod~fU1vDL?lyA~oxIy((olkz^bM+>#A={U}AHR@{rcf;Kk!cWoEU|{?R z3?uqiSa5laC+TOEyQODgL4nt-JI%C%l^C!%>ptY%XN25K&l6e}wF1?JY3-Xd^o-W> zaG5UFUob<9AKBH&{AX^PyGW9J+J$XOKSPV(XY1KZ8qI<|gIMlco3i#M&}npTivA z+cEK{y?6C>^6HdG|J8>=ekUz?TGteAu5BuZ3pZ!~+6?vEY&@?H-D876W^+f2lJbsp zu-N%2HBILVQB54#!pvma-ynV*_QUb7*!6F{fU64Fo*+*=6QytABpimIsl3VZXK#LhThZ|;{k2>0Xn7Br^%8(SUudOK0thX;920>#*weD~;M>ZV&nKU*M3)?%-0f0KxXRFX z{o!DOJF>LYZe;Yv!j$QolankvhsV*RntpMw;@})odbR6wLXHU-u8vu291MHY%0l|& zO;7Vplb3Y7a@hjs1*Vi+n`gqx)2E+S z>#yox#mNuzlRZK)BXjpR4g!Nja_WoNHG}@MaYPfu)W%GK$!nHL$=M_fstAbI*m$S% zAFb*=uR3=f)+(T?T599uWq-}psZ1OOCw~x@GbK+78XLqu88N#FIpP5$flt7&&Va;g z>jPF?Nk%yht)R1Evy_!bR)tYF4ITtg^I;kVp5iAjExAY)jT>9QJHof-%d<6mowef>uONhU2+uC}k zVacZJ?4(kGq(($11Z;eE^F}suEM8m?EVk~`hW>1^^RNBNFid5JEgvO#Kn+Pev@f1r z^zRYvF5x4~c&ag;VgDZKex>38gYUN4{F%Rls;He8)?eFv=#@8ntqu&IPd!JN+A&j2gapVoze>2K!JZ%C4YZ~ zD)TnF#)n)W|9BTfq4w9;@Be4kP3ge}>1sqD;RkC~1PvVAW&Qb~_^h$FE$kQpmaj9}%`n~WksBk1yT|8u5dQ9F0VGyww29Xj@E3ax*rW`_Eu;l0L zoAZiKr;fDC%X7x5YxHy5&4mtFU)rs{bh_|86Kr3Htms*|g<1xQTxT~o7P)vP&tIb0 zcGOKFJm}WXZQrv``0c%_J>}=sRXCr&RLf5nVCwz}nnI%dck7!w#a7&i9(l+5jP~S; zY!QVzwI|LoM$9F?+7S659S{#7aaU+?rd zIp|?{{+p-7&Z^LX>HTF{o>q;fHW+bJibO{{WB+{>00EshQK z``z3_JydL4#rb_+nkm0WGub}O+aTZPJgk#+WGwc;W|I=@BKgT#Kr#!IL-Pm z=$#VJE-)C;>l&+M+5L^iQfTVHII#PqX_Q3=g$aPy3qjCRMHLHY85= z$pHv_JLrJrx1<^CQ#1$Si5=p;SlC?_G*gid*lNV+^J-L~s zFGU`BJuewmGtDg>{eIsIJh=Z4cRl-I_dnM=+HZ<`FcLZRmN(IE~j z<7_DL%AuR;X_;y7YI%x%o4#5-&OE$#9Y^hDf{@uA>Y`w3Jl~{XAFCg(0apEx7wdJ} zgt&>xY_pHhHTWwRNn7pao#XknSE6I6%V}Ayy)e3`TTOehQM-bBCNPq{?jeNM+ytr@ zGX)0Il!X|Z@zXm$z&|+JxEFg$c66kpxjlxWK?%*^EbXxKkQULjiR^>dJlcTJv}&!2 zpHJxBZ1v=8Bj>8K`!%(#FEyQg>})7f1hqX3p*R+biVKOOV`E98-ZT)WqdTUiTkU2> z-cWPO_^qvlcl$3Z?n6qAl|ABkdYncX4x*c62Rnv#ZceZ8w@TrhNm;Ct+hOqF+P5M)B8q_q&_h6(;Ub9}p0~k6+0qP3TOk_9+cL5n) zoorTeykR?u4_q|;xHz6}1+D(V*~g%igG28?KL z*k;Nyo~HA~!7WdO&nEpEDPwi>RDR#lh@7NtjD6cnO)72PWjrBtC3fZU!N99}2{crm zZN$Zkx>rn*iWwoE%FKj;J)i7t@zncJ47%3##N;p({bnG6t&|k}=&bOkMLj&nO6IN) z9LHSDpO=frCjyE*S(Z2pfw)#(q3zf?*xgf)?L&FMd}|3ihSG=HmV|1`Dl4Vvd}+vS zT)sgxXU308o+O?uGNcl0oOBJfTr3BD_@L`xZ5^fMLF0UG_c8X%{ZscH^I{)>yDj_lh&CcIwp&_eft0|)SLCzd=lyUk6z31HDzKNPeF?6MMd=`QpY+n;hoMk z_4}6d@XU5q95LY5D-(9b8@t*Qa}EtnaxOh~o6BKlG42agulSS4%4P~4z%5?O%<+M_ zYpxjw!=HGq5kV~Z@f-Kzn>g-yl0c|_@-41`s=$q|tZk{+1rQECBpoc#G{1&5&iA=h zQ_*|EbKCQOgzz~!zRUq%>b<^e_+{ChYYdX^1`H~+rCaOk z^gt&4R^8S~U;k!b#txrsn+Wr$_1D2C=k8$IALMRywKAA|!pwMkcJ!RGCQXgq?JE}w z5`N|u_zNxN^hGd9Vn=Tlclm~{&uk*zQBr;i=gXX-v#vj0iV}u_^SK&NB>D9`N{D^1 zn_gYVZ>Q;zUF&UQCj1u(g(8!DJ><_~0zt?pUzb|inUL)}@4<77vI=k5xlFOo_XYP8MMJ^jkH)Q5R8!PpQa*`8ToXEuQFxA)ag_V_C!otD_OK!|MIywc##bTzW zOuKXSgkQdVA?h|ZH5HSV4yaNjgd@{?#mNyFj)Dqr1 zalI--vtRF`9FDrKt~Nh0d^2%%mGJr;4&l6#I+I&Qz>p+`p1ZPM^4IUZPZlQnpZ-YU zd~B7tQrG1=K7PUGd68dO&LBn>MZv@rRHs?#wulpMVsh`DX5}9n%?PlLGBqig7#|&D zA0%XDfd{v#d_ zQH;3zisA5kJD-{w$fL)P8%IWn0|H{dJQf64fVQ^w@Q~DGXD6<|zyD%#y*vM85IJv1 zT%0MFJM({TkJjbaoB4^qjMM^8I@_X~Ods5U=0)OE2TBOs*unOh9K8RPq&u75Z^ zMMI6KL7Q$*wy-hAI?k?JqK~0snXyPdDurlY0 znAz~Gl0?aMXUB`_%F3z*Wi;b2M=1oD6IVH%FDw&#SQPcR?^O&_-1MUJyWqRi)3Dp7 zAEm5VUgkLDyY{#UEhVQkmk4|M00(DU1CDNTr#}8qUK&*L!o#d3sJ+t@b^W&8VloCMZaa?_OJb z=M(+9f=lab<{e4D0#g?_;z9h{XcWcI1EzEQ4 zexVtAXA0i@nWqP=Wy_}Ky)v8qlV$_?K$#E8MP;P-s6@^d&J>CKR=*ZzYggPE^<`McEBN0`U&(`OAz|qiP zxh5SFg2I9J-3Q)+1*!>_%nVObNN;j8d68SQQ7kB4jbv-+Kd;hK8-d+{e|BtaZkB9PY|Nko$MTDfX zOjMT0o^_BUMQD?q5R!d27(xg!+4r$0$-XnjZtP_2W8Zf(W8Z(L?)!Ux?)T^Sczhq< ze=OtSnrn{hyw3AFp2zEWof@_EepDf$pReKiF(0so$Q*Lm7>EPjfe z&^8r@7OP32-M-b>#$HqZk=k=!@xO=Z{clVMl-yJlh~&&-5-LrJNm|CBFGbpi&cs_I zhjk6DW66`34s9lLCN{3q@Syc$YluzPUvMWhD$KPGv)OM`d_kb zuSH%($Gbd%ow>+ivayYRYS_D73{Bf z->c8e3}KCJr$&0dvfiZd&9V|T2rY25D7I0TyUg9@fkJqeY%B5#=tK{qFu9&lmXmy#~+kdDV8t z_fi!9UUdErAa|#jOdgp&LN32XbY>Ni0G=7L{xzxnYj$h&!yr9p8)uE;(Z;?p<*;2J z%p`7{cZz7CMGZxN`s9}$@$dodjhl%L`5UE#12I~l=JYhoWBf3qT2mcge!&%Sn=lPG zvDEah5jeSxbg~wDx`^Ho;pP{G27leP|EBa}a#Pjr(E6}IU7wLL;@i-k+=vr_)>X)E zB1%o=;LDTg1%ETLKqc9FZ^txa`T)qJmW~#ERwBg0JiylGGp<(fS@>w91O=Cw8Ef?6 zMht_&xCwea3M*pMR(BKFkrPGq8+=GN3?XtS(oevjifz|C_myMl$758 zoV9)g6uctf=%cwi|LE@Rf=H?UdyfAbj;VS>i03R_ekoz1`3u=_Coi{u5?|X~f4>=* zbClY<#u9p7y*2ImM|Z43@{d1~WDYfox?(lYduR-@<(k8vh@<^>OpK40mc&8r#^<;t zEQ2*MI~(IHqdhhsQ~GM+Ge2qk9`o2c?_5FKK(0T-e;$;D;sZYMR2In#kS6TKlX!KJ zkq0WKP@wi>cXa1Imqesez5B_Cf^3eQ1N*F=OLz6ZrtbcWJ@3W&_RjW+J(f${xw+Ys zjo`bAlJZmw_}=wGWtsrK+d!K{UGAR z{CC`1zdVipXK}s%meFA4ruy;7m-?En#A+O(&ZhfdsIZ=z!%fSSA@&ibozW#Svb(B` zqdQg7@d0;ItW=SNu}SGxsIo|Qp!dWgwu)C5yTAcr-kmi;es7^L<6o~n$PK;ttt6B4 zPmYzL3Oyt=LnWhOdS7*GJH^5Fbw1THa@|NJQ5hskxb)P08;E6M%ur4itBT6-cgt$1 z4vLp~AlLZ)nFqAAxUMWIhKg;eYbx|sZQuxhMB6R0tjt|#U0+u?*^vj;A~}w>$GcyD z_a6&Vl0&YQqffJ|&EeF2LgBEm5&!937FR5&knV zP37HrHW{0*U+wS~p6|W0T3DKIwSesMHz6ZUhyu`MXMM4Dv_kxlHn-yKIV*|UmpxUS zls%C&gTkb~9VqYO`tIeYQyM<1-bH ztq_OBB3`@jj=8T^Q6WQ>74%Xn*8DK0vf@(2J>Vb-6vW|B z%Yh^Owwa1QW}+xmd7#N1rcfaXdpiIpT9;1|tK z!xrm*W#7`jmtYx-IG9Yx{{8rCZYSeK}^xl_5jaC6(vw={p4kDd!bj zoRN{W8~)4~6{Ie!ii!EW%DId^4iykL(RTy-ES3W8GC5nVfN z*gl&$;$XvKmHD&9D(7#A#%Vim=xSN+&#?48=c~{rnT=gHJ?N^0i3)N>o3le+_U}uF zO3sH;<5VhY84Yj1iAmj>;-`$o%+sjEa{)ew)ZXEN!o`)>F-?`kwEX8&`N|;~VUZj5 z4pwd0jOn5e(>l)kb7>V&m?nsInvfl3Y=#QPw57>!CSMt_4nT1dgR!AOh{n@{&pm@8 zNz00hCynJU9GiapNOu42jXFG@&-bF=)z}zBoDD%V0HVrSn8yHCjZgdHF=*~BZq*)I_8aMZ|n z`=c-%{X{;jOw>k6gqO2pHqxzjb^sIRmaoQiPp`SHv!ZfXXdoz8??+J%U~Db)ZXfiT zmz@)8Py=qY4)>mk`?K$PEjK&Pz*=D1YvlGb;tJ^R^Y_w+s8WK%qh80P6^+nWh%4)1 zf8=(Dz-x`(Oy%pYkxx3cYFT^BD*LZTe%D@K36fQhS3#m801A z9)FS-LoC}z)IfFg^42c*^@ZQ=(PZAalS6*+cq;!&3-dg9_pUvTu0X7tbW{Q?ly@+P zN9EU@gKx_%=!uf=t#{`MgRDC~s28s_*T_c;HY7)a5n?06t#+>k&N9DBys#r9ep&BoG$3Ej73lX2J0DP$_R`W(uU!QZZI}uR zW~La7A^X7#qR$7}seF|odipo7Ct-W%X-@XXCl<{8-ej8Mpq=sq^xE>z+2>mhd_F?N z6~uW2OC<*oZFhqbUgIn_$l{Il;_pcv1eOy40L!7(laQCs)O)toGn)_Di(jsR!gS;3 z#0A!k4On^D*{79X)BGk=;iO=^^|$hd{Jf%A3v=NWyeq$F9!`jNa3VJdc)-!Z=J7V9gOFp1sI;OP@@?t)2Rl9u z(*?E%I!e!Lb;M1WqawE24JiTVle&uTMkj@hYqc5nI<_rmCQt_o0_i(L?(gJ}gl`w(FL+{xycQnOH4EjT9SF%)L{Eq-2;0L}1bGA#6~U6|8h1qaz7*I`Im37^~NM=UpMms{e5b<{R5$V}NV&7vprVL1Bu ze&S&84EdbDiE73RForMdb-&7)c3lH+w_y)wS$q;xwDVP*MxN-C7S==0(ZQGr;sBVm zp7l)!*zbXPa(~P~`HGtk(ML#FQFw6O7^;^pG+*!dk~TD|q%Ef3vy_?L;hhN=?{F5#b6@bmA&r3^!~0461Ag zyYagEeZpH_bWU5CTe6v~g4KbSXnWsmJ`x*Gx}3Hnl5uZT7?ES=8fS)a$tfK14UatV z+N*#9z`Xg54={8P_f^&MN*Qgq?#It}(9Se>$13L@R_1*!4r0zLv3DV96dm0BgFN%wiR{3bF6teqn?$Si>Go9BubTZe~{P~T+KSoqEY!O;Aw@TGX;X6$c6j>T~2EOt8FhzQh0+_wG^O>)BPiR!gN8r*@XpX1C`jdUv}4ck ztj?&iW)J_m14Hgc+D3%@@;O^(yBl!=$U|nSg44y2Vgt#TS2Y0pjni>NLU{Bo^>x!` zp?h$J#VX=dYO;VukIlxVQr=<_Pb`J<#zP%YY>5w)B8scDT-=$I<45qdhh^NfYRA6$ zG2lF$D#e_*9+i<5hm32y-9ar@6?KKPiXK78cXmU^$sfr}JjF8_7`SL6f<}*49x?3Ib#vF0$wb=w+EwRFbC!`@gx!x{F@tljs+_gwoT8!G5=g~Gk;&)c zI%6X}G#7pS^stMC8CkAcNGYa_dkntLMAUZMw2kTaxv!u`;y_ya#@uSvrprB9a&1k^ zcapAxZO zc?v0@=}w)2^+fOdLrj${o+Lb17nOA47Vord7d!6u(cIkp6361VOI%!LU`N4sy;Z!> zJ8s{`r{<*G)SJ@fm(8N%V*UUSjvujhFw$@}9;rKWf;-58ABZb0)3R7UJt+_0^gY;W zObGdv<7G3_6WRX6lvC=xsm}tLZafb8F#V_2qpL~|&8^$EJ%q}g} zD*w>y7W`xEMCuUbf!W7@2IYmQjt(Ud2oEyNRK#INkUXdyL`3l-r~BHR4*2IvLw@;9 z=LKeZI%#f@`k2^y1EQ-w5q5lL&ELUV@h6?>z0QNriUuU1_g(n-%D>cR8i}JlD3r64 zTt84I$O^J%H}GGlcy*-d^7Iw9=S~m6!e4Caxoy}4(=Bp9Guy~A^*UNUP9jW zFwmCe9Cl`!F3O#dZW1t$*9W~mY5_2xY~@Cs4K(PgmG>`3ioGub8&#SN*W4tf83b~Va80uEJzi=tCza+2d zSU>M@fxlwkmtV5li>_14(~x_jVw>Wd!6(bT`u>RF4NfJrR1q{~etVBaL-nDwG$Ol0 zX*I^C4d5E-bV5$!(#2cr@tCHW=+meJV(WgmA{In9wA>(D|jOgDY9e}jhQG< zcWCF8rU9{)@!rr#H+*KvV0r#sopdRw)KJ2G%3B(m9E)SLhjx|v4C7zg(CKA!dOxOW zUIk~lr6=vO?xD{u^JDHOm${|;E=KC1-8@%T%r`eTlTuQ= zf=8RXy69!*>TfSEn@v&iL0%g#8sdb?7^6^uHWFntY%+A~Or_pj*7eobO3$^)Y5E&- z@7{2jbyKdGNlwzg+J&sXIz1mqb*9rKrfDu4qavk_gpg}j$HZt5(0ktm({^WiG(UnwR%JFZ4ZrZt|pgUGBEbs~u#`-rlTzyovDDajc=y;Au6rQx$XMSj-GraoGl2c%Epu7h$>J?5twgZAs; zi4cPR0S)9KD4Qf_XWj5qy}=-rA=PfAO2N&`lRL5EKu-O{k$6ewoy^S?T0wrG^9^L{ z2L=anK&3wQ#?E>v;AUi`8sUr7n%iT8McH+Jq@*il;)MF$AG28gi;_pOfdAaeGDF}u zhXmEdfM0nY<7B?6^Wcy?#J3Co(U2CA2&FUC9pb*QDvEEHQKI~89%{ka;ih~#>q_Lk zuxP9E?90pJbB4icM@N~kSS%S86+IUTmABhBy0%n7t}#+e@Ws7pb**%x=oHc!%r+ziwr({6+3_h2-y~VSUu2fcvh6-I!b&hCa3s z^J?s)s#b7u*`HA3w(5M5Lg*BO+UGZ5RX!qG5cvjTVd^u!)zPHo8DmSyODm;AUfgUa3VNSaUTDHsos)Ep=!DQ8hJ07&01NxHl{ zb?!cVzy-h`OLf}o-{Q$p+5Th&}No_2H~)CtD;B zFf{pbkac0l%Rh)M?{M?xTIH_)?X8hI*2{`nA+b8=wFb^OUw9gL+fn6&50p9@;pK94 zH!==U-l>yo5dYQ+W9@P?Qc}e2{hv@q>84FiGSWy_-wgipGT*&orEkieDd_SGC6vne z%`JH?6W)~RP(D84pvEosXsuCaLwky@NtqK0O;RcN+fvHpawnQ>@4|q664F_~guhlM zt6D31e4VJ1@*&l1oF_xtk0LC-XgqnqowD?vdhhI`z38@{+{K_vDLKWl`|e2(%eAowarH56}9*N1s6O51D8`E~HZJcRqLCy;v{7cTU4d z$$A?vYpZ*2sUoAhTf%!Exd@k?0s?IY(ncaN!{X3!x@`({G=l&4!la5Qf?@`)6XeXB_Pa`fk z#&=*zFW+tL$35RBwwKt!`z58$gMEHw;f#!u4ouiW@~K-VHRJw@PW%$393>gnge%yK zks>x7y}`~K9GSmm$0ye4+CVi3w3=N%yRa3c^yLY=zJmi3tdZ`{(48{v@^Y zMKD*o^!Yt_twh%HBMe*Dh}4%aACmC9JI~72$yCtDQ4pH$-5b++yh=#01^s^m*`K1^ z6IQyE+~ZdSud2^gg~P}%kJ%a+*j|i4eG+|eTIb2;R~LQ8cs%%SdwPs}}QJs$XYEDp(qJMo1U zUT*AX;C~*ou*UFMb(F;I~}CFr+V!mqxA-oC2YTMeIC zwjy^pNv}%Yd;|&^Q`j#(f`{cSNgv5x=`V7KZ(pHFKuxI3dtUH^aWT)9fa&UgDr5om zUhoT%U88x|YH?r}wR}=rQ&mZjUNv6+pqtIz(mH(STKHR_;ys5IjD=WE-@Z$lE=W{( zInc}F)i`f8nsG4j1)W*^=6tlquHU|RCF%EA)z1Y>7xCy8Ap13t6F70ceUbz@3H1asJOjEdc zP_jjua z>!SWE4!us=gY*COGvzL$`gYf<7sP>;l4sdVBC5xM zE>Ywh(SVlHtsT>U%zb**3h9@QL-_u zp_ez}?s5!;9p1(GO>owJmxOO`5$v%QFQ=I7nW(%l;(L-6FAGW`35*ITs#S8?mjxML zjzDtmesr7+s}R5BI`lmWk>T1^IgIs@Las>y-6tw22nf{(VjKVZD7vUs;r>oPIZfBM zbuzPDwO7I0H~;6a^X>nVdL;^~B%W4381EwHbKQp$%II~yJ;0;A*JV22JQV6%W20Pn zZwX6o0h5Mm0>|&wM>aZ`9D7Yua@+fm03kgrrY&>r31tF3p`0f72g$wg&U?Bg4cL4Z zf@p%?sQ!11i!%MyL|BE<6l&K68HsT$yzgXRff~6l9{Dh2l<8D?=-$qiA{3LJ5ctiW@W8`D^ca+_T&&Yk7tY?a+a>~_~ zjh-KNKw>B#qdaA?Lq7Ek;1|wpf{!l%g(0Q#OyoabFYRqLbDPO< zraNts#{g_yDl(qPE2*e?Pyx+J9WepAPiLHz-~>6Wy1Te`wcb?8)l3wsyFk4BbKLk^ zA4^r4#y2hi#;Wcj0fKt0mhl{G*FECrc5>#!(Wct9FTSZoM)-%!JMd2VC3>QGD{Lf~ zczlPqvLOsXk3$ctvMI&FYuDpZt?vplGcjugWA69jKHQZrv)0tY#O6}!! zbo*1Dnp$8TyWBiqM~_=AOAT`#*|~sd8f))iOS>k`*G${>wI2!P<$U1rRMZNNve0XG z`_V96k*`ej(Z-ni;xB9|)?)Wf=@G$hJbSFEsDwG{)m*}Ev+#`6^!@^I``4X$j45nf zq#e7^AmQn3oAB0AxsWQFy;uYnYX4eun*55&Crmq0*t6hby+dztDFit~&flcq(7WVF z_^=8DxTP!ck;8F74g7M()SL`hLAQly?w={2Rbu6>oh~o~1%Mf0(T)losZ=vtrVOXP zS8aw>Pcy`#GMwC!IjeaPn7hgViRR1t17f_KMDUqIeX}2;TYbiBhHEs`<3nIbTYN{5 zIlSSmJUc$UV+v4a5+P_%u08B^Vx(J>QPe)@^l$C7(-$w`EnBhG`+BTm5gV_@m7|Cr z%sR!Ftqtp%quY_gPmu3UWwtI)pD=CVot0U3e1J+Bk$BP@`VKe05BXeLC_bj}7z z6kh_Y4oI#ch+KXEBBhvj$b*z6o;JfSqrc+-5>MFBXWsFrh~3Db@9o~RbX5S#bLIi1 zHF6~T!ti(JoF5U<&yCRlYM()5erx&AjsFSh#rY~UOs+)Prv|JALvN$iZctT zR4XIf--;6*c^+i6rA1#lpy;FZ)N6W(t;|rE*cdWH8$(s=8r+eMnHsI22UT;V@Nb|DwnOVxS97jY zZ|V6;A?|JO8CVFEY)Qek@qI!ph0TYP6DYii{9R>vL6>vO{CX&I%O+ zU_~XZ*HYJR7#!S1qL`R6t}N=#b1pmf_yPI_$m+HBac7%0a85sDkjGQZ<92~rnz)*q73rg6m1#uPvhe#-Dm~~`Ij2`hW zjgpkDIQ{=OQv|4iyZhurB>G@17+kGm=gKa<_ugY-)6+tf(yqpzcU*?S0mmR+-`6@| z`}QhGXlSN_+sk|o@PYJQ zr>_MDlKUCE#U{q3BK#ayhiaQYxZnDv?B?y`tFRiOB8!xQy;x5(0gN%SxLDQP!t!I+ zH#OZVx7rgxORG^y$8CI$FjO&YV!9{eKJQ}H{^9rb7|`^=Cn1maQcSx zhgn%%ry^%01JS8d|Ei@L@(%OGNh^D#2-C$$@XAfUOe3m3MuJ_O$l?`lyWYJ%u1_eE ztGcVLS-PrwZaxQf%`;GDX&74%#c|f3X$(RRM+}5nSOg94&z2l35vJ}<&zg7wYqWgv z1H1bhI0Il4%MceAF1%fVt^?+U%ogTf|MDA!P5tAnb^V{qo9*2F{R48EF^1gEJ}sH1 z`2|}OOZ%5oHJ<+zKfYqTbibioU|n`PLY=Oxy!hTJ1FGfX=H~JDp!=}m0DrM@xua55 z!%Exv-hM7&XHw0ec)m7RG4Z~x|IU(rjNk*XIhdOPNEF4I&UG9ZTe{1f{^+HaaspI7 z0slIaLoT`FPBF&SihFZkTU`w6xcCthu&{!$=p@)YUbH=5!YG(9u~=y0XB^y|^|`V7 z?IHK@7M(85HIg=Hi&D$|G*VlQ@1@KezixN53hUZ-&5z`9GYYw<2T3nqMC>K9@Z}b# zlBP#&v34-JpDBCuOmRqcZ_|gQI>9^aM!aTSL*1Qk?Z0a<0}vUO$)9HK&oF$~B31S6 zW7%RhmT$yq;Y6B>F##p~*MzSmm%(5Ty(xq3Czo&Nob(5&&v;B_jE$n6aoLPrlUv1d5VmAn*7cG_dFbS* zOs>How?-mIe!v{yekoKLQ5(m`qfhnJn8PmLx_Hf@>7u3LT6NQyU%BN_->8AM!1i(5 z*0fZ-n#th?nLFmgTl)a9DVZuODOGDN;sIOs%4G6F{fNh2g58a!*40+{u62cTUOeZI8z%j!(DV zQ376P1F zS~EO!LL}#yT~>l`{B#$k)Kath(qvLA2uMb{68=)KjE0>wGX-~2zLVql$0aOd0!^I$ zbzSnd<_Z<&>miBqVpQj@Qy0J0GfK#xeAySVpQovIM>ZU67U-5z#5#Y)hBxN|%iK1{ z?iRVTgkKLV4rDf;ac@`an|$hfe|)Qdt*0bOg+VQLZ|b{`bQ#Rw`cNGL2Iru+hE5l;26etSNF)b}a>^KDpP z@qJ$(lD2Gk*hdD&85duAW{0b}lb*;t0{u|FaLxN$f zp}IZx2ZhITv83aTrZZpgB2+YrM%ROiDz=_ z^nst=4!I?^z89f-1JZkJ=5}>DRNP8Hf$>)b^RIQr+2tm(Vydj&5rWvJKJyz}Ki3B2w5)mUhm|{{ z{36v~f#d7uCe`%e1Eu#dKBYZ*j)caMDb}I&8YMw_ZNXxBS2by6ZGN9rldHii*OMjGp!lrJ@@=3%$i8{ zRN-9+M|}o{$!1<*7#lVr;*)~=zs!W%7(NL z^{q{3YeNVeR!dJGKV@OwR8DrX)v?|VL|*FP|7CymxO|kXef`y6WRiI1Q1NNVhk37* z@ng^Eq`SLO!JPj;DDddzSvc36W4+MtcY5z(bS75nUst(@C0t*<)V!cb$~$xI-2^6V z;7e!!gEPfJ*}F$07N-oduZdVw5R=V*eZj@yh@{|8hDJUrA^_NU!2adCSy_8YwgHz~0-WS|DlT6pV zX`^27i%BZZGF`{nN2`}76=pzujQZZr*}ghHPNu#eM(Pf=xw5KLWsRpuL3!(cTIN~F zGEi>_m>qjwMEU6*cPTc%Y@4O^R%Lgur2kX}rI3Aas^QEQU5l%XWN*=qzwVdM`;$@zZg1W)oYp?AB_#_4W zfZX~CyYW=Bf0lv7rDF%}<9mIIr51bw;-0g856kv_0xkHQyJoYTRvWiaQwp0@L6cto z9oqp$l-wHuhPr$0S%3qP6OyvYbtFmh?D4fLhpgxB&;WHR|8tFnRmjtKGGcSruiK3F zo~3VjXY9@yt0h6m%c4?S8#XX@WcHlA#41hsc0=+)dLLlBvQI7jchAaT57u@G4G!O4 zR{@pwE6u*!+a7Z+KMmAH^R$P=y*4ZKKL~$g3H<&_nl)G>Xc{;0@CKag%eBoqX|;0f zuTx+ZKt-kWen{hg>5F|XdjjSLLl}+KN2^h0%wD_0CPr?gdPUTu?H1SYqm@8^?pW^bP~kk8zw&kI{rQ_$eU6h~#it&m)ez_UugAMR=98%Yyg%od50`WM zMCmKfKDor;3mjISG?~12x4Fp~b75f_a-AzFl}6zG`t{Gi+4&15{n7!W`rJ{xSl$W~ zqjysCU3IbDuYLVzCodW386UqAtL|1;7k3U^6?AqGv_jMh0|TQ*s>{DlKX`j}!_DXc zpUs6WyKgKB)5>)@vL^tTynu6@G{{^}()170i7rX)9EF9KIJglPukGx=uW7d+g z3CN#m3m(yCj!P%snf0`^v@qEDu3|NoZEfA&u>lFbZ*5Mi4Zn=9qdk@hv^H)sJ9h4% zFz$Rjb%7bX1$vkKAvo9PF2^>~b8JR4fskF=oscV?K!J2yc)oUaV*0+$JQ36iU(cL; zS<}3*_*CVY6Xv8|jlYuTMohi(`#r8Fq!~aU z{ZIHiGbotXUOTd#BSrmHk}M`h3p8W=BzsXEgg@?}dl=*{VF^*YmX z_Yf(HmvMux5U8v;r^T}jC99oDNoUukBGcSDmb+t4PyXbdJbLmdMbyI#w09FX-JQ=J ze0&44o7&SHY5e=n80H6%$kuhkZEt|jD7;PS#g1`by;;YD^mH7x(mfTTN_<2<8W`JP z`_F&*?qo`5RR9$*XLi!GFx_eesS3ZvvmJhz%X-+BzD~lJt9_?5I}(*sQE@c9%k6x? z7zescyS^(cF!WSeA<2(jnn#OmW=H?=)T&k8&5%bh%RoT;(Ip1Z5&5#Wnsbm6_qJ!1 z)XI)`yfB|ddfY>2W+Xd1TgP#mBqw*KGCO;8wmaU;Ub_i{C_O*3vtaP1YwPGyV#m?v zbsasAFMuUE|LCp1mrp&$c?GX*@!70LdH6v-GjmId!##ckd@}SU`)&n*W-m40$Q!w8 zOWy;NfMR)ft67TA95K7=O1JM}q^_l(EB47563p!y3=B1Je1<&kML`{E2VUHsNm%LXy2V!yk5!nCc^O$Rvw$mu>zTq@O_pc&I6w1v}=zrdV6 z6dBK6n%w5vL2n-f)4qtf`-@j+-Yhplr)|3Etz$_g1o<=7a;Ov*TN3VU843uh87u(( zeYUtGHTA9h++w6Z7Ajo+M#o2z1ggAYQyHwuG+@TAbR?L?lz)9E-;^3Tp+zJJ7Rk zAd>s435zbIAPT)_u6ETaURT!vJ>Lo9Yr8Kx!%BC8c^zBRfWob+@`a1@@6=@+R9wI* ziZ@MQwHC)Cv0MVX#kBFIYd7ZI#LZ2gb1K9OQTpt;2}M8eq*uLuXw-{&^K04+;I#w`ag+utplS*p&-d78b8)ZtPVM|{mTj+C#x__jLubqmW zb8yPoBO1gizMMuy7w7=@1X*_)d6)mB$gM(K5%m`1TXbi6?Fq80gUJ(T6y5V^6SkP*)gVrH!8Hc_KxDo{#y&5@-U`9JpIolk*`OlJ`M6=obRdIf@;hYa%y#XR zzPkHusU380ZGKM{8^0zlWpcv9%@YW@Gjlko(jG#-kyh}GRi(`*x6L6I^2iMZKf!%& z6XX*P1cJ)^tuHIo%w~vlh(rT>H=1Pzt;$^5nfZf0_!9J3zfC@_72RFT;&`&j3&gCej*5i=!@K`;3PD4A7bpc1ElQvl1AVA?^r^GFU3nL-!6^yTJ}D0^N~iF?erh%er?MCiML0nm`haSrQ7B}>EUF=xXU zwP6fBq8NJ0$rM z3co%IxjQ4C|NS1w9=gv+DWTmio2*}bq1<(uX<(p(mjZZi)j6u0-|y5dZ78nX{%E@X z*v^a;*)6Fp#kqU<^Xlo&ehFz5A8*H!OTszbQXJz0)gi z@9LPE4NN!;(hz3Op6*jTLi4f3#31VmGgOKI%q%Pvbl#tN?_RX|hJLM{7rFkeyoo!I ze8U-4oC#=TOsdW9pZ(bFmG>XGA6|@LN7ueqOxSMCU{PVVn%pa_C#0gyvbY9EoYN!) zbtlCd^kJn1)+dq_aOc323lnD%iiyAQu3LGhfb$){pkVgD0Vgr^FHv1z`ZwwH#cl!w z^#vDE-ACn(hkDH``N`}i*r_+^e;Sm1D1SIIr{qG?rr4Gx3h!gQWV(kZ`})Yug}DR? zrRK7leq;Oc6_(@O)hIQQ+xJ;WESMypb?`LQgJ+3t9d7DM7@XTsL)wA~I`l;4i{rwP@(!6sZ6=uDmiR<>l55667+NR4| zQQ+*VE4W2%z6!Y|`}*lw(0MDDB%J$`<`flnx5~T|sU~~T)qW?pjE36A6i*e1Ss6K3 zKx}(C-s`)DmVwe}nVTmCwbqF>kW*P;ge#cgkk zgmsDywiT41J&~UJ)XwfQ6<||!>X#meyZn|~<)PyRauacltu3U$`SODY$=MKpumvAx zut7*i@rkm`P2rX*XnbpwNye?(zfe2RdudtMKKk(-vjg)7bC(LBpPDF1B3JS6|!*6`Bu&_9wVr}9H z3kyr3f?SM2BCq4d7%xsr9c}_SZfi$JhyMdOr8iy_RZ;OvQsTx|WEYQylKh zkjXB@D@IX(LcQ4VaafHZT<&6_Y^#j$Iat?Us7GZF%lywMdH3!e-$MscFWW=3hPHMu zP#0UD=xB;F%Gm#tfy2&s#ep}J@Wbc_H{PhUc3TI26Jnjs8$Y@-b+#@>?j_a$4>JEV zxjt3&DKvs1kLN*8`d7sk&p;=#UrUgQ-Nwpio%d^omanr;wAbqC4lUC%1}6Rd00cpX zZnl@z)&~QYU-@g~*^yr>nR;C~$v{JHvi@?U$ohKiSorV9chlxsSRPQVoeeRF$j#1@ zo_+PzwS?K=VXlWdlO`E{|1CzBea&mok2}`a!%K!t48#y#cOmdCcBYE*H_v!{HsM!tri^+258fT$NlJ zcvyxaLivOQf=TT?IQFvgiY{|yEsNT;gdaw*co7-#Qm|R({fqJwis+!PDt<8u>^x%? z2z;54P2!bV`h;*!ui2G5meN|KXNsJ*0_fU+!^p&6`;ve6>>gSQM8^EQ#4YmHG}rCc zXR~rv;*obdM#yq0IuI}6kLa^o?3|$A1g{BeODeB+_QN9)TNzH7W~d=RTKK>YYckdsycI zXie#8k8;L6J&!G?FcoV|K>~}8?{8l6cy*&5Tp)$N5g?bFh=I?pK|JG(g8|=By>C*j z?$hqdlZg6o{~d=syGgQ>_4$GIp=lXc`rip|`YN!P;j-zv>;s_4qRDC`S1{|wihOGy zc@4Jt3GC~n&&+v1RoUIspMEit>g9i5jCD5Ja?_tsP^ekHU!*2=<r2cuJq`JrDTggeG90R4Z|Z>=fUL5r7J`S5r+p-kWiFrOsps!UleB8HQ{EnU zSR7!%)wCGz@$K$y)>psR=H73dpH)?K*(NzK_7SfaSNf5i01wgA4x0G+A>XG_tva4w z>tovdwfcyq2AQ?9t%BnGisnYOGM|q5J!zxX0xY7hRrsvuo zrVn!^`kvk>wEw&i|K*)9B-;4#Tw4`MJ^pgQbyp4%q0-bel=68Y$-_I}->7>6NcrAn zTxlg^h50IrS01Af-Pyh(?RM;+k$zgW^bb}WVq$W^~15uaMdewQ6vBU{^mow{Krvk`o_ziVNvUoGFnmUXW`RG z5_6qH{aUVg|1O-Cy*<_Khn3F`$yi8B!3AoF$(qC8!J(u#AHH!NDY3tPz`n6$LTO<4 zD8U;GC?`vGQD|$-SKG15vVvf?W0l5V7L5pc2`Emxq?7}tLpuW7X(Z5ekRQn=XyTle4CaM@@W*Cg?$ z=Pc7dhj4p;c=FWX0Bg-5r#~34Qvdx|;5G1H#xy~1M1SlIkw$9F&`sPX$h`gPU3h3{ zt5fAY%ymFZnZ{gXExUS;F)e~TSJa)Be@4LlHpO1J_g+PTTFrK&)Y2wT-K;7}o5Vjn zG(=*oe#y)da`{x_v#W@v;1>J8pTRe_y!N_?1;`B*eojJTH5O@+0cX^lfd)Pc=JCLE73lx#dr~qsxA9F+N%Yz9Ao91mtzp zg}Ix_L-IfE>-a#(j{iuFP06aUWtemiNqqi>>d`r1sdhd-H<_PlkX{sOeFUpE)~!86 ze}QLQjCA_vdRnlVccITD_`T2rW!G8ksYR9Be}B^dIDP$lS-qk99tMY#nB;2QW_h5p zGSqf(!LG4PM(lHojGol||Hs%{2DSBu(Y`J2PH_!IN`WH9AxQ87MOtWaX>oTi9yA0g z?i5NX?rtesoZ{|Ia8GXjXXebDbMDN&=UXPpm+YPWzR&ZnXZ;orm2hJNtUgO_r`+Oc zg5CE%5|rl?TA{WmV%;#}twP)-=+gPMEK<*00z1M`zaN-(vw2o#?qqH(HsW)kgpDN0 z+v$Ini{IMTqCZD&GjdJa7Ke#l)XX@UGpf0_GVEo)wnG(+8tvEmIBJp{a|E1P8D9LB zw&)ji{JP2T5fB8VZw>h*UZcDi===%RKrZy&ZN*SzB_wpXXntWcMcK)TPVUPF)1!nO z>bgGLTH{}&x+-X6Xb;iSH%3QRc|)mI$GW|*tLtkaa|k&%NS~8EZA0(?{Q`5?LS-3CGO?g;pg)uQ&y-?&;I*E{!c>M|5}dxx5}F925&bvE6lZG zv+%T1qXe>^c@7Fx`rp7`zTj+wXDDVFN=%HhyE*zp{FL(HZP&t}((kNorj1Re!I*ag zT~Y>K6v;DPeJ`Kg7(Kq9oeNnTuxxrz=*qI67H*gf=%}i?dC{#)R8aA|ymx7Z{F<@* z_V9)SMvO^>Qd--JpDS1%HvGV!zmWIw2)#9HMRb!cz3~dG)kDQ5y+X}3<5i*v!_}UY zWl5Dw)#Sju{$NXlERc6m-Hk(E+_$heUtuo8M4zGoJF=gIF*V-c`{>@@K_unB!ESDh zpr`d@9CtTU5pjNL}q@(s~m~?mb&!BOl+yv^mrh9xpn&y`q{W#@WZGUX-^j4kI-aq-g zY(`a$Oa6dy5z$zQEdb(7ZZ!8MYsXXs=#Tvpb$=TF*JpoKUAUxg!u{bjqj=`#;CabK zb?N^_&FEI>aYJNg>P?Sox4@bsvb~{^RW5{GOjIW*Ko`mwH0c`cvQfijdtflWEE1Od z8|`<66j_<)qPQ>U*?08jDZvZtfVt4yI(ihgXX7M5@14d7PIhxPRU2C2+B#D>>{1fO z{)I)X@Y%YHjrkw=1i2npE*XX1bk9E#0*|=zpT&>GR#X^ce6NYJrJmpf;GVrX3Y46e zkYf-FzjY@)%1O%!byEI~)9`WTtr;r*mp@s_>{A@)rUSR$qwmi5@scl;QO~N%oG>af zP{}1+x5g{9n*-HlV7AQC`S5|FLsWpQsK-BoeEw3@t}f@GQ>L$#W%8LP-ca#0kGeWr z(N8ZIM@YgKE2`^ClcSR5Z5at_ZXY%2Kq`C2c)l9ipy7T+*p>9?vfn`1*H;3{`QSlp z`gNB`(117$RMIsxsJG=a55q#G)v~Sytj=rJ#ROTm{qz#JbM>}2Tr4={{eR!3obt;2 zfA{PMPFb+~xdfD(55;Ku|5=DoN_u00^BEEOb8RBqomAa?FH;PWkt}%cSs5#i!N(7f zqaN4lj2Xc-TM)WOYmGg}L;p zEIkSI8;St6^+IoB!-4LSFrJl-9aWdszNvPl>|VI7Geo&=P~>|#4Cf$m4|KuWi-I=R zsw1jk)OrTZ(TR3`#dnBO{dsTO$kO!aE)GnAugFuIe->bU9PQX+VpOnGYMh%fPd<0K zBq06r+0d92XgE+7=aWe|%J+s<3nS&CH0w`_N0rAJRq*axSI|>!Jwnoa<5Wn`Jz3u*c=r2@FkhhCE7Gbm6i8+3W0%oIvnL?L( z@KBZtDEf?o%!Qd3lWWYY2~_)<55*-Q^B%@F{&%!Pg-T!&n`^p_`7re7OFirD>nBqN zCX1w66ibh@p?giH!9+O==baneBNz+sM7K>`l!ZqxxjexhZrtZm+RVDz9IjA(o{Ij* zrBrP1#{&wxR)rem2^noWXe#}YG^E4Xu(y^1V?;pr_L)HL+Qs_nOCoPVs`e;Q87b?< z;Yo9dknkIYj=(WvlwYQdkf?&{`)u?x(OrHqL5_;lkN>pV`xBJEY?=DVfLQz3i(&2U zPx1o;Tzvz#6to768xiT`sH|^(HIMDbB!P2&1y6r@i;20%gaal3+Bm~9y0y<758CEm z8irg&H#O`Kz*~>u!j}Dq>RzvuiBe3-fMTG&l!SzzHKQk@Yq$IO4Nm88A~kpfhhgM) zXu<>B>`s3C@v-feQ<9)(^9^!hEie2=kN5sQmtRjW9|iLYN8-5aBSd?i(-V!-w8H5( zs@e=bH6a-zr2lqj-thAVME9Kj>lLutfEXh}AI(StSLwf-a-*Q9WXYS&>t=VGIE~z6 zr2ogE7*PY`cQID%WMHGu6wqaJFNEVdgXxc-2Dxz#vlM0a_aN%{&|m(eHXVJyf}3dC z^dOmdmH-NCggFvKpWe?9j4r$pd16hnYuA>M8YBwA7MD&vx8hyg^<$c_Om;Yz`uim( z89TRDs-w>aK?*#x2+1^%8?$Ms4q)TOZvPWdz?gNTW0rY1=&=qs^d7SqjdV~E=Q6>< zu70~cnVdA-RaPHPsA_jI<^RT+VGhg0f)P7V;jSLBAz*!EC%jsA)~g{#jA!p=?f>2XR<{nqn+CvSPPxQ>j_@1dzF!^I%W(UyS5wE9 zXzW~nbAtWX3L3w#1Pk&)mhVx1oYgCpDuT$CTDlf@*kzQd`bPb!2}nVzetD*PC2Ae3 z8EX-_a3~bM6}n^S_X=cK*pP5yvCcG@JUMygU?5&lv?+@U*eG}GoEz0#1SWTt zy|_h30TJ!jaH$}JD90)~vilqQ{(mnZy^pd#QNy#bJ8b!vyFiN?HqESyIqtlGnxb7b z!LPPC9^H$G-0M54o0F_l=dBxD`3yJdd^>^>qf3*PzFComz2){NixArQaVMmn+ZIyA zC+bn?l}cgwW01tnpn_rQ0Z$}RY9%}Mab(E9KmOVQusI-a@;%GTIAfYb4-UE z&a`d}L)d;>O?+2C*^4r`e=k-ZH5B;ex>wY35rhfu`KJsY=Gh*}vLUMqjsl zAMjhU0@2wmq$~7J7$%*M*NNdX;TDjb+qD$fP$9JTImX;W6SOm-RSe;XTEKmUTFq>L zf3lmg=5S?Og@}6xK$6(_hZu5kz%gbr-BntZ^>d8>0MM5w>d{f%&la*YLk9bxQn`;k znN6F$G!!pccn}jL^s_(b3`5k(me}zuc zzOF1cS8YYpHs4EXzpNZy@j7}V#HDU9SgAVucC763Z!|JWc&4sa)OOLxcjYCti4MYO z=Az>DrzUw;BS*pkHd}NJ&GQ>Io$%s4`{X(L)*{P2TVZtmutl0EhJ9o;QO)=8{_FWy zufaKO*N2}rTt~O~au}t8D)d@9 zOrT8?aJL5NeI{GBv(MR`X{l-L$oihwY{kKntz6Jte3z>$ zzHeCQhe+IX$nfbb9;r{rv7up`uV%lCy}UGuJ1X*=oYdNw3Tix7nROSNY&I zxvi{#w<_0~`!q6CoW>8FerTw53up}FyEg8TTy8*cAn+r}ZgYt)puhnuT>q@hOv>3m z_4D(`c7HeBBHTN(0J0m(!aMt%Mw@Q?#(i1Wv~ITpclL`@u3I;@@ilh#@-2G9W+=bP zO@~8HY^R%gZ)R?Zn?nbIOGUeh+tL}-J>VhZd+qS|?|}FPJNwkbE`JpczQ}2!48NDH zv?jI2=TW+Sp=h(2p_GI?*_Y?pWM3vRcNZrnSkT;5@4fn87c2Jjiw$k(U*|uvEB2Kd z(gNd&A<+(?zQ}%l!O~`7G4ZHRJFgb}7?J=}Y1BD+n{4b6?3_~J`?w8)3bT7zm4sR} z;Mv6qH6L|T+c1x*G`5pzYKDEo-oj1z)`^|_sFGRkq(5=0){s-;f#Bd>lA~{yKTtaA zY>+D!daATHK>b6=BJ5F8`iG6vj~05i&jz3Qrxzigh9JYRr}vZU8ZPa9gPKQf2fdrR zs1Yf3sR2I0X=$Bl-pMPP8h$Z>h^TJT7L8*i2XTpVo63nZGXe;aslPK0`BN|La%^#6 zqGQH^w3uXs%By~g+ibU862nbBg&E>SL-mNtp z9UZ~o@T!SM?pesgo5o|=8IM38n)V-<1BfT?I#`5R;1|rKsmIZR8{xPQ=8~IdG5vzH zg+6Ur`Df9m+x!-`v3>noEsA46U}I8ICVh!Z=qleOZ)QdwKcvs0n`QYgK^%8dp?mf{ zN8EGr%O%ZsP=`r%lG|SE_`b~U9O=ueOY@N2<3St#j~dR#7FisSVWI1BiJ0zF{*i~o zRVx@16FEI&D`>@?cs9I$m5W#KN6AlVa@}HF+FtLa4PSmQ-^7(#9Smu*Vs^0FUHoL) zTa7d`CKLlc_IN^neYT50tP0= ze7i!7hChfxz_y??X!DdhZX%hn@J!p;`Zr@?3uLN2M6Dx(n&w9fndTh3p9KIzHL0@s z^`>s4%Q+JSxfK7GhOR_%Q1~Ix-ko|Aupscx`Xc`j&>Kok!%!qSAibZ?@kTgIs|UlR zq^(bJe}!czcQyNw_ea~jRZ?<4+g0}2pi8Xw{M;%)9&q^xvGpH2h0C^R{-Ud&#mGgC zvff3m?#n0Xdevx3=Va$g|8-D*3VVRD&94PYt4n{4bz$7Ha&*f9#-2Z91*mo~?lv$# zJU%cLZbkB+Z*tynoYOUuo6sE{_sWbh->Ggs@c)|PykXdJk#O$JlP)>qp3jqpJ;@i{ zG1}@~Ux+UEI}F|Pzl!W@bO&yuMspl+iSEopR$P{tngadlcdgPEz{4C@KX4tnhmsb( z6Hlp7BS>d&hk{%~>}v^++Y8>gpR%ovjXjTRB%fAX`ndEpV0n4(pg@duSwy2jNhvbS zF>4X(1DNg$Q#sL_X6obEqYV{JGW0w^FBIwnS4S+^W<5&v%?{2`pDE6>r?_Q_7PggV zO|MKlm3Xg+DqQH&qJx%wev@7B{>ntH@LUHV3(Us)7n1DGelgYG7IGcnwL)^zIkd$s ziK|M@QUfJNZjJ`mvuj zq2KMDxyc1JYaGC^!{t>!HPC9IVXdR*!gT_xfM<@Vp3r0yu>H1gtiZcNR8zX7I{cAq zA^qV^{g~&XYiD8GoevX$DNg5eETN%s_d23LEVroUvd$x~x*~q`ZhlH~)?&KBViUtr z!uE86-(gWZQ~4OE;UtuDd`xv`9-;CUmDa5j=jDSdBr`( z-QPTxve)i?b}eP8Yf}LD+1Q z)Lqv7^K3zk$N=Ue*G084=|--rM*b5eU1NtJYP$St`8xc0(&NE~IcXqLmv>an)&Sbs zVEDJNfh-_=Sk|XT^DY3DFL!-aSXihg`CuWRjNK{NBq`Yd7yUCq?mmma3U;5^LP={$rp+^@ zw$9u1Erb|5qFw-ksq+}8xX(4@7V!|?q-aPx{0I7g|IflUy3hWuH8XyxA{4#X+GkvG z_wx1GT-SCU0;qc29XMIX(1@Pv<~IsP^q#t(RqV95W+pK;w}T{H#cml!#-y%NqgYNh zh1k!$Wwv(_y%vm+!HrMkW6vRk+7dMmJ5VN!$a~gCQsAzA=uuSlr%RsFfIH*S)XOEM zrt;F|zNX{bc~&BbT6sA!imge0p1nu@C^dpIVRT&&vTsZL2>9x?pdpy!hOn64DWG4P z{mBQXmeT0h+BK5goOBzzS{ME*6}*cwbwMoR{n{L-|YX6KPEq|sJVdxzyEnme(aMxTbeS24v*ek zG>wdv!!x~SUHy_wnu!y690hamZFXcHv(B4_153^Y_p%H|Kp$|2;wA&oi`9gY7$osNP?A^6M^v++cWm}Ok|ZND zGt6l&)zFi%(I>v#M@h#xt7MOEx>z?yB?Az37VdDd6uc1Q5Epfpx~uiboA2KgD|EAQ zXdYWA{7-T>xu0TWa~?Hp(K&S|wks_lr7rB_PvXYy2=sM|7T2MBHz^6p^~$NdNCP?i zMd>NFo4A3M(Kpq_$ny(Hm06g7POjSlx<%-gPT;kTf7-^K=$&fpYR&HFzr*`JjQRKQ zrk-lrk=CT$kB?c2Qm;C_rLAL4ffv+0fxDjM$HO=0QcF}nffu)L1~-eX`C4*wr8aCY zkI*YhuJ6{ZvT`MA01J>DAU`olKvb?0qr}@MB}tQ|l?^d=rs~`#d-v?-Wg{cY+=?@| zS51aqCwy7OexgBvO0G;h0^r@)`)3e3$*;~5{ElX({+ zL}9`U>VslfK3zXEQsMqt^ILYloWc^B5f*!Dkr33(q@Xu6aU>D;sB_2JG#Aq*c=glk zRAI23))J8w{nx}U!L5zJ!_ocN_pNK72Egybz`YpJA3fCsx8EdpR0~>Pj8z+A5`2V+ zC>whc9{lj;|MvF6dEFzn04VWPgZQ&cYYmoHnXPkY1JTE@n3rF0Y))aX?hHzKv7>S_ zzET)D%Lch}wXnKXON(`ubN`HyKfmL=WE%y4_{tDmI)I!Ha!oZpDR;BJQI}D& ze&HHa(`9LdJyhwLTTU8eef9h+=lb97i;)wGurp0QSwvr$Jg90v6zNH z$S&h#Z7t%6i+Xp|nW427ybNqDli>+As;*RMR zQ(b;*F7)d!-g_It=nb_qYQA!+8&8D~d84JIS43j^jwhhyO)Jh{zZ4YgMHOu(fwcnh z#bE*j+oSp2(uA8Y9nx}D6*Q`8Yy}0*%zX(bEkc%n+7sF1VTeoi*OK&I8%H?b_W<<`!kC!+j6W}q zb1L|mK40j?(z5y#b@cFQz`exfIFTE#vbeCsl4hBbZm%*h ztfJuUrLIH1R0q2H$yJpgp?re+>%P+oiEcXr#`WxL1$Ggormzm>BU32(|X3+lu zrudIliUmtrn#b8AQyy?-UgfK*%ik<(UdJ2OOmu=CpwiE81d}ZlezmH{y(o zRh)CGz>#(#-0${O2A3-+YO}xEH%hW6k4yk4CG2g7hCM{VfnTHQIO!~XBDx+v(-!ms z5)uhlhFrF${DqR1ts@9J+R5gY2K{s-h#5?cQCwBemwy;sv8U>xBV z9*>xciw)yY!O-smj$1kLpl~C8#$t#$^B0N=u9Pa`k?y7u=0wfyt_?@7#KJPD@l3dL zB@ygXSodTt<&K7mvnzgN`3I~?hPJhRk?2-oEgT6Ktek%BH5UN2*=hhb#Kg#KQwUSD z)}F1&4^Z2LPoqFSpz))Fj1)VSE)eWG#vWAMH6=i_-c5;9{aS|Pj&;wATr{%@+Af4) z+#VIn%u&=N%q$>;nT{~VLCh0BSE^tgy_Y5fs6lh6zZLBXz#>qpGYcjnCtq397o42t z%%-@cpsI~t;PCjKIxBoD4C6rOg>qb_VpGs7*C~G}nL$_+Sfk~8$Q$4Wn`a?2)PAB> z;`Y%=`AvHSGqG*2Uq94#H|!a*6@1+hp73qBs`~CZi=!Utv1y2CZ5d9x50P;rLZ9dXItloytRINSei%A@FM#9gx7kiGp=W~mkXaT zoh+5b8ay0VBd7k`zo=(0!!en5BfdUcW7B{lVzCW zh~~ZvYgWgT;<$ExQx@E4hwpzBNfIQ2+x>CE88;|C?c2LKD8vEXAb~MA1_slrSwQyT^bg%&GroW z&_d4$m1ETM9$J4sg^-f(1QYyHQ;p>yE3jQ#e;>JLs%CpAS@cr4dt^s?{WTeDC^TgT zKZqFH_S8>V(*cwwPn+nN)_dxS)#jMYavzNz9b*Sg`lxZeCl<%20Fogjt5GFASOM2C zIjs3!a<)B=<-b`XcJ$;}w?N<Qb^e_zp+HBJ(oTvso2V7@-*aj0!U_P=_*spS z4vCY>#TC0}ldC-_uqG@X-g*-9OlLx{t^%Awe&<2NNr@5@BPb%jH0E2m*g zefBCrakC-j9}}3+L*b*cp!ul;U`m2$beEgd8mci?BzTpsTJ)gMvpbMW8W7x{BP-sP@S`H&3?74Nc1Y_5z2g)T3fyx-V|z`W@! zv737C5F$8_PeLKRl>okR@*LqH=Jm!Hu)CPzm<4BmL<-Asr?p|{Mo69 zR&7m!{z~W&954CF412YVQPd(wW|a>2XLYGku+gjfe5$@DLFkp5xGjCed*4<f)|wbxD4c(+I#(m81q~0F^~VKS-+x}O;F)I39Q@wWv2@O}Y*>+pnLMDc1MjEOa-IiK(KZJ3n3Df{xw5_S$-P>s ztI-jBKTi{=S4d)ZA{W4d&!Q(tdbdmi(*|-4>=$3x%W5cc_n?XI)0A|iQEQ$ae9Zuc z0}w?LsCY5J0ec(=snCijFwfU}qA3H%DODWfp$-5PL>-IB{wzO{`zR;ruK{DZ|F zoPm0M1h-0j01|!pi1<$C4UGC`k@klmNldB-KGM4lTp_@cCG4P~NLIID`E*v5lgkrWY1JT~vNpU9kutpdn$ol4ce=M5)6<@k;(N7REF1 zK|7G$XFwt{sGszroko)Ukn~zf^gLb8zLATte zMXjrL`caTT$i9HbizfTZZI35MaeZ5#!dNrks-0okgYKtOsr>E>RH4A z0Zem{=Cd@zRrF=d|2~tNn#Y0v@N#>6t%~PILYW*sr!S%(smUxBvColdxx-|Q?;#IB&r>TSsg*sg*A3ll=;0B zyW-x%l(1MvPsJZkGMI0R$yLt}$7dBb<)-CZW+U%aNClGimubu+5<>#Fw)?uc)B5B~ z{Mja#x_eIv+OgZ$ZO+lPHJ4>S$-YUM#X55oG26c5$*On?a~+epH7ekjek7Re&DQ!% z6$PDP5A!qr7P`%+JY1)AdsnvSs~>Vn=aq2o6=dme0@+)Qc9y8Yv0>c*$#>E1fJDV% z+shbQGH7?y29Knsx|~tOsRv!=t?7#W$~u_HA`5X@74pTt$)E3}qTCr7khpnvr^h~S zBpLqLMo_mqQYaWeO{`7zW*Uye5N=2PyU?n|n*5lsw&`R)`j#mazNU@N`ZG@QC!|Td zpd+CC>LLRS$W~nDp=|h76fFHdP`%TSdo!<_a#5Bg*kVU-Wm-m=0!1>Gsq8m ziNWtil2%-1tr5vluswTFi6~mc5=#wVE63A)=t;W8;NWu{+Ior07icnYcatC600%xK(5ldhXVI&N%D@piee3S@q^|e#j4N zJW0zoAwk9_e(`vMitZ9Gru_4$_B!jCjP^W?;mO~uV{5C&$i2W8Ivs2K{lwv?nIlaJ zT)9b$k2I3LW*olyZgx2_8~j67ok^{YI%Fn-OLEye8V>w>R&F6K7ev@YK`5%Jms@aY z%koj_8fn4*M{fao=D>=lvBk2@r=|SRf}71>#@YD+#e#KFM!v%0LQ+N?kv|OpKdACm zvsg}HYm8PKTR!Q=e10&dm@ImI6@yU}_(3JqhTnECv>5&lQ=sD=o8Pwb11lOP$9~~s ztE44zBKn+8!BT>$G$=-9-zUg&l1==f|8*Uvdw#D7UEr60Rkpt0)V`!NX&XmLe0ckY zg`WF$gp(ciOl~_;%GJ-#ni<*q;^~rfo+c}b@Blk;YZ}CSeM52y8jB7pUpz_qcEsn% z`d}@NR~c)5-7WcfxnTSxHR5mQDoocyLRCYYdA&1Nu25a{*WRCYY00=aDu^lLEq9<0 za&`S_wG%XryztXaJlQYU5fi!rMmsqoD)+2Qi->6qEW@n|zj#nWR!!S%F5ZDo8jJP! znP!cBj6|Q6o>bfW_mp}4lls1@ZamRiw>(JjucV`QbDdGwi5Ye zW3uV{oOtm{<^?}LF3nPEN7I)1PJgyE{ZWnnZ_JprvkmXZ<@3?t?fH5aArPenryHZk zPE;DFeRq#LngCu!;j5P^j6+Jw*1r|q)wzah?V#V6L-MOBC5sOoW+vX;oxkqMmWO69 zKc7{-AFnNyiSZDoUAl+fIiR%^(vIgYef!h!{PjqjsgEtihYx21xNb6WI#lQS#3B{078IdC3%vKq^O}-ZCK_9 zz$8DVS*g?jr>#d4-u6Nz$V{nz7m~~xDH~RgYI*xmY+c*uI zuRe<)>;>-*kojoK26V4OqkYQSeZzRS!OpsT!p!o(Xnv9-Ki-_=+nXWIipi-TFMWHM2tSse4x|S&gYMJ*SBVN_@c->T;$@ zb+*{3=aMOHF4cLiG=t0=ymj(|9{FM0cm*Wf1~rdMfh440yw z?RtWiF8g^(u$#;%(Yae?mIPH~Yr+NTmz7+$9dXbCA2BsnUv{nkCVoU-0N3FuJSU&k zd(V8u3yzEuK97edKdKaQyf?v({xy|AhB@pq8AB+Vc3?n=Kb7jMens|0sej6y%P{= z??n=-7vJ{sxWO@{@;^%@&iyAz=qMEe4vKM9F}>NC1t$ny*6+YL2YGfba4!xGcM;cu z!58hV0f9(bEj`WN#dS8riU0`c;^DH}lQMsFcm2=@&Fd6F)8Sb{V(appbXK$bbjitC z8p-3Tu_W&e^S}UQ$;upky7e)XNe>11S3D8L4C}5`szEPi-NTGdztzT|qsdivNgas( z?WtV*>@D5~3Gd!8;awXT6EQnS59rEPkuCqk*Y_$o4k~TA)Eon@ea0!9go+O$N4Rj+*S(pZCY3lJDjp-FZ5rmzyDYn%^)-# z9M2o_P@M_B)6;>i;K=IBU^)8ePGEb|lI;QBysUmcW1L+@xUcZZQCdKdk@<}))~I7T zn7BEnY3@~;{upzb^e8!?faJxT!trkCn;`6a>v9GEG(dset94VYxc9jR(=(qgSr(s3 zOi6_0l2RUp*1?RuMfKnNnaI1!Nj>tAk-A-DE%E*6y0hn()BK#5mxo6a^>UgI)!Mz5 zOR#!bFd4mOWfGa#xg7eGYSJ^fNwtO9)H`~F6Q_gx7B`!_hmN2Y*t9n@3&POoha~2X z{9F}feFJB0Lks#=GRvgw))<_*snwJP3~5r+g9ePzA~=xob%hnm4>c%1UNq=n@IB~L zNf+`(93hKULcj?5euE3RP2u7SxGFb}NvtoX$GpzB&)F&s{=WAW)chE0%FQuU8?v)J z@zc!+WVeU+>hvA!rZFyFO>}8_Zox}OYRdRH>u6dflRNf%Zjm<&_h

    7T``=JU-vb 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 Vd5+73;9I~SSxH5SQn9xI{|DQr6g2<< literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/perfetto-trace.svg b/docs/data/how-to/fine-tuning-llms/perfetto-trace.svg new file mode 100644 index 000000000..80c676cd0 --- /dev/null +++ b/docs/data/how-to/fine-tuning-llms/perfetto-trace.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/data/how-to/fine-tuning-llms/profiling-perfetto-ui.png b/docs/data/how-to/fine-tuning-llms/profiling-perfetto-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..09262f8a7f7cf3ea7a47b0c16213f26d765a05f6 GIT binary patch literal 75184 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 VD0qbxIBD^j{09~3D#_15{|6mp7j*yt literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/vllm-single-gpu-log.png b/docs/data/how-to/fine-tuning-llms/vllm-single-gpu-log.png new file mode 100644 index 0000000000000000000000000000000000000000..1d00b91902e91948fe882b5d64e7586a81d84191 GIT binary patch literal 44310 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

    {&bB=6Nqp25Sj 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 FV1m(k(K7%5 literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/weight-update.png b/docs/data/how-to/fine-tuning-llms/weight-update.png new file mode 100644 index 0000000000000000000000000000000000000000..d8f2b9b7dfdd6ffdf152596efcd7c3fe5bcaca83 GIT binary patch literal 25668 zcmeFZXEdB$^fo>cLL{Puh%QQ^Bt*1`s1aRsq9=OqB?uBE(OZZz(FTK2MxUq?Eu!~2 zhD2{;B7?zT-rMs$zjwVK-mm}le)*4OxmovF=iK}3d+%#s`#Pd^UZ_w}GE;&;ASyLg zB|Q*`R0RYgX`{FT{KYH6`3U$y;-jac2&x=n-2{Fibx_b!0D-C#ubsXo1Af2iscPZ_ z0x?Zpe3RTB?ZbdTHnVC<3I=a1F=+Cy29sw*VnjIo`yw@A$}!UCrO8|hML$O98Ll0M z$1HYH-0lt=u!_1As`6$B#=`y~2&5`xO;3MCgfdA|0Pry2 zBVU-zO7hQDva&bnKNm{Oy|n*a&^Yn@Ke{PxE_V<`o+Pi_Ki=9pu{po1YNFljZNn+a6#?`7 zWWS~8$=;KL@(O7R3NH+nlVNn3bjD56(!R3IGl@zFihP2aa6%2&VMKSn7cHBlX9mc= zbc7?r=2b<%c~E2TQ4cd&NN0o=2OK8oaZ?NfM&?nDQ;fS*$dbY>|IR|n_Z?bb<6F?a zh5w?q9qddPc`W}&WGzexR|(vz%5F^$+WfdeL8HT*TxwKQGh5@P(vjDRJrTL-HtYOZ z`2aI-wLTY1j-u-;#U~yNt<-r==}W2KM_2Ev)WKtiVw>gIBumWtPlM+|?9m;Whw})I zmal)jVhB=E%DHQ8PmjObxRfm~F{c6VV&kIBa zjVkI1={dn)(6_q7)&?X+7vC;kk%oj=_%6WT&ep8OJ7DYE+ff|%>k1Shboyl6pSY3h zdEeDn8{=7~#Bp+GW0u7g3Aq`*((U9RklMcn;06pJKM6M*cTcZ;>4Z2oskd)M8^PYx z0h9c!&TMF$nZi_4hhVlLxX>+SqQuxwX2u~VFJ?g3!J8`kvJ^qg#fe_wJx?h{|I^end^wo2hnSy~Ei z$6pWm=2?yA@SbAw2W!eaLEsLp*@J>UvgHScwR2&w1LN;nr*=i@zVqagxlw)w&FuMH9gg$>+*gg=nc^F01UjQ!n?P7B0 zgSmKrRErmP^PqNTP(8+fomy_rt!Zo{vCn3bEev&-Edd(U3x~_#0#JW6wPt{q@-IyR z;4GISSuS=&_GJHBvrP5sop%IU8O9vQ9$&foirM<$L?#0MUW<#hEa9&UFi$lyRi7Y$HBiB~ ztW1qs;EO@uwGkN4zgPX`aC@8ng577VPY@n9>C4TBOYIAp5q)VgeQh^D|Gd<|Uij)e zhe>#F$X{Z5pp8G&d&cpHk!sf^{p0wjt)_Tzi%VRoe(jIxRbH~kJj*^F+VoNwx+7q6%g=MilF1KW4IUf0Rc4X#Jg)gEGM1QKBj?yTz zkH`1~u19?EpM8R~eM){dbm7XU8)VGRRnQ(C$v5IM8fpJWNVQJw;8Z60tGr4<<9Sjg zLx7DQUbf(vIPvsjB)j8$GPzgYPj`jw(XYSB_U8~`x6QIpsI#&i&i^pPNyycm4J~eL zlxWObkiteHRp3I7&ALrSP3hZUE5~60|7a8Bo@LC!;j8K;Oa9QZ&2{q2+5})gxn$eXDE$I7} z_3d|``L@~`@HyPlWPOd;)I@rWZ{M3cyCM$Dn4)sYG@^3O6nemHXO&RDP6Cpz+QgZA z#aXk2eAyP2$#(KosWyvXW|A-($AWi7SZMrtRNm3+zRRN?jOa}~n0?>5zQWnQW- zy%B1B56jnzmOY@t{bAtrKPhK(V?I6{F*l80 zb_vV(7Tgg`Qp~zlAfNwGES#oWokELS;652W-g3|E(lrn$CfYg)Vk8>J>S?+n``M6R zpZ;PH05%IVlyxYVw{qB8TOD=Z>C8Nu2iHbCgie4!IxYJjtkS4Hz%uFU+E_4-fR6rdJD)0iC0`GpHR?F^0$WqL-<2= z2gvhQfOxE@X@Qf)mqZ&{t^`}0i<7f8su1bVlk%ldio zSHj5$hKA#}O?_ojW#AX0_FF7u%wm^yP62qt{|olq{p}8M#~?FZnYxxE=EOSJ(Le!_ zPq&me&kW{&Ur0KhO8abJGc0IAC=E!8G3jy%OyIN3uc%)M){HRa8)MtaX5mT<9Wget zIgdNo5geIL&_NShJV|Pt9-%gn08)P^z)Y_RxIMTE)qLqjNcHes-5`6Jx?=CmmBQ(t zR&0>M6ie-NC2x4GB@%M~GBC-F)kGU;+++Or^j%mE7a{aZlxXz^#Ruc876!x2zp*^7^+0&~$;6JMS3dPh4@g0xF zZfOn3(G^XP=H8|yW6pxrIgdB6_TB}&Kn(VCzenVJ7=1*-VbPQNt7{2ddv_}h`dHbJ zC#V7iydxq!?^d4tO#njBJ09IbtJUKEX^)1Y;^N#lEdg5ATH6y3V{0X5F!9LErR)#6 zmS86zInkmTJV%>GUA4F8=y?yHYg;ql>-3fZQ? z4s`mj@~3?^3QHw)=?+#&0dM9Lx0nPyThz~5XX$YSS@-O=+Akk+XsxB4xpk06`wb=R zEts}+7|pNXpKOXxztW!FL2b4kh4v&$RFdelY)D<=iB>iNT*$DNJJ@WbXgA3`NW1Py z(wf?M4;kp){H7=_$9O^92Wje5Tyxj?b}q{SJO2QtKppO-d!?P;YD?VcZRzAY5Ir^U z5OgKYM_oJb6w3xSp2cn@z8a;!M;4rg(-@-!z58nL00J}C`aH_$xs>tCi^|N~;Z!I6}0Ddt3>t`X6xPnrNEn~`|Ypi$UYaDlr`?TwCwALJ@=6;L_CntI%gM>*y zQOsK8Q?C@(*Ww3KY1bb;=e9L}T3{E(Fzk5p@LdNG&RDM)#%?@Q?M+How$g;kM(!^- znRLh&i-}@X?C0?Gpm%(pm!BpMjNms3!;1#u8463iTMgPB-|-l|OirY~Me zUvSaN=Bfnnls73K$S{^KLudI#c(kL=!~7ri7-joM4vZk0psYtQXxWKtu+#p-D{r{E z7OM=sr~rTHdfCVLGXnN}H*nQLRFu%a_miY}mN#e|J&-9n*ot4+W?QWb#M#%rYQNNM zRqt##UTve&%mMdW{;~F+oc&Ki$KV5e**nD$H4up6X7{5l>Eud{{S(^Gm0?3gVaxjW zc46-y1L4>FoA|P*K&lquRfk7M9qjnM_&(W3FN2b4TQgKvd`o2L&mU)NEAXs*EC z8sgsY9*KYdyqjy)^^mNXo#&=i;Pk!=YTl^-(koLcPl|M1e0q+uQ!6np?z#tjBTLL_ z2~$K)_W4A5V+@jPv1=R+M2+yi?nmlzC4a>QH1_E_>A$AfInM})xsq7}f$!~pk+I1> zUuw>+?ypilnh1CFPAGPvb+Fu|b|*CT+qo#Soo>}tkbKg&zG(n#RMW*%i)il7(_5ca zJe9Jh*c0Z8?W6s^%$(-uzQE@_$;I~=umaTHbT|E@J?LGYPJL9YUFGg~W8 zUlwc&4BJ#^S$r6OTlbkaX)^RUtJdE1-8N(A72ags`la zSGpB1%WK;c*-B4T$D>M9o~I_UD)2aUSxs_{uM5@q2o{W$T<_KnlQwN%8yi?3j7(qL zyYNNx%1u~M5p93ox6%{G_Ac5(Y~06+D9RM>DAxEtE`^KnRaI@$H`32P(#sE=*k&?` zo%3Vw1L)(oHIr_5&dV#kdA4Af?SUke=PT4*B<=QQ+zJKPvrLb(;z~Qr?bixkxfmJSDyc-Oj0#Nm18MBbaJZrD_5v-TdD&O3vG_`J2?! z1TtZUWpii#n7P>p-gLJFe)2&QY{ z4laB7vCo(^8oXBjX7b9FJIS|zC%}Ajrj4&DiKZv&a!=O93>MU`XYzA@%n*8zaByL6 zX{x^^+F4)Xru**j%+MN`z6ctakSzJ~d;{g(9TZ1AH*<-8f(L70^lye>;Vs zVX~vAp2#=4Ao&?!Pfb1FcMW{daN}$b`$@rdmJJi}1i)c<) zDzHbU5Lj+i+?dT%W@x64BIQSe*tHEFi8kr>w-ECbT+{4waeUW7)) zr4CN&vG*=Buo#mH@5}#;_<}Tz+{I9^Fp8CgN2WM|qJ+9dD>nrqo~qtELHSdeG0`aA z1{THFm?8svPGj%hXeExaF(3m$dJfdbIjOab$5A6J9wNdmhaOly(*)S;NUF!o{0^#S zXvegAMmpB#B*zK55R3?j)hk@j`n$jclBXAge_Om>a&Rp=Icg;R7j7u#@DV~T^elSz_}CoFH@A~ zb^%!*r{~?W&<{uJ8aF+l!`X>o!QHU-Q%tVUz^8trK*S{w=bO-g;|~itA_NJzxEyw7 zhwYBVrp#0@=JY%!wnc`N3g9l~OI+VB`PbgZQQI#>(%P?O^bgKl3(7oad-2dLY{soJ zY@b2YZ-@)~1t8M<`72B_Vy_(H5=z*kFA;;w@s?qiDeeNC^t%!M00SodB1I{ExT)QE zn_7ry-tyJ8;dOjnKbM2s+!`8yCBOEJZ|tC2hE7{TJ_khl7T}Gr)z2nXtALbuQ4rF3 z>&4pJ&-_{pQZYy@6eR|i;mxr!;j#a6->G@v(@Ac#DSergkFJxdhr!!Ni$0_`|7BnK z6e_aBMbdM|7p3(+v`a3qk9{D@Oa@orS=;|3YSm{rDqChy`UgL+)Ow)s3$z_Cutf{{ zpJ2(Joc|Wdyyee7FAp%RQ~gbdo7Ff_o%@4K4@xv+U!0LvO!{w$^xrnUt+2@zEEuxi zw}`TO;&kl)vc8;TS>o=tmFz(c0ZIp|PyQf31$ltkrhiH+j{MKi-fHjoAVXJ~nX*g2 zA^4$1>5stNcmAE5f2>gVvgj$qr_6B_r%uC;I*a#eY2y*yeJZ2c4@Oe+ht zEO3X(ivPTx>E?|xLv101fsa%y1D`lT9d8L+?qpLHv&#f!?4p~&Y|{Q2YM<{0I_P_J zMbSco4z~Ei;1R!ir|^Nn^5;S(ZzB-t$g9Fg8$`hse}oyR^ybR&9a1X;VyF>((J^6r zYFPRa)Vemvl42TQUKSeFdRG6n>_AjJ=KgMlw2#W+*O!P>zyg0{i1f*N3TJvh9AzrwTN6L1H>w1aY=}z?x1BIgklnXk3cBVZWbe6|4fdhB7vJLk4%Rfku`` z#q&FW#4rY_kL>y~USvNBbReNGwjqce0K4^*MP>q0IwT_QEw(?;vb2?q4LEgV&z2GH zu{+i90Jqt2NG6^+v;_#-oaBrRpsq0zgA2M;(OEq}nBfjeAXQSs=l{g)nOnsT%Mu0# zGDJG>s+}BST)qfdILi`Gea0)yB=yUT9^mF&;IoueqXwC`9++nIr3s>Jv|M`o`X1>Q zzo_q7+Lg?K?w5EMaV8dQKK9$1koxnuQoC6(i+^U)@E8xgTszu6cFCpyAbvw*1dd zK5pc-E}hhC$D+_T4%aGIKe%c3$oY#(8@Y=LpRF-rT~7c8kLE@1Icp#0e7q>pbRxKf zOe%r@DvN|$b*swZ*=eneY}4~#AA@+$`&8RlsYlzN?d)e-$1$N?8loN&hJs%Z1aaZ! zare%pVl9_}M5_l?1UvQghE`?g$rAfS+7|{1oaDUMYzMOvFvqVuKV~MdNoS4C67TR;=f?(xIBvzsKFwb3Pe*O1zN85-%f|O(yeeD%_FW$L znjaSUqnn$G8Oy@vjCylM#5bBHyh-<%?pU{jZ=T$B=jb-)+s}_B%M%D{M-&!L+R0nLc<8V2-gA1787E#`U z@rvTianZ14HWK+D-Iia-LJbb_ppxg{Hd{im!;hKAIZR|iThT{?ZM$TGxuT^(b+Kpg=7ib|W>eEnAlKXz+ z&VNs>VD+t^-7ghQJpSaiR*W@9o%!k&JM%VAZi&B!;1#ja8#0h-)gS=4=)!{jSSiOd z+X?cleAbo~K{a%rS4*FG!-WZlJz$~`&p!s<58n5!c<(<=n7VfQ^CzqBmh{eOhlJ^TqkhITg?5o~@=^4P3qV_0{LgyO11~EUtpe!E=KC zJ4kLcF$5R%71;baAFHsl`moa`Y z(bUp2r8H2T4To{D3PwbYPGm1?vRQw=zh$ztvDdsfj`AI7%WaT6@2hKTsc`bLbkVQ2 zv?Dx424h&jNm6Ttb5Ki!vcKuj76K{mAUh$~GtBB^UBQ|twPD3LyAEByALQP2#9?K~ zU#zuZHWd$t-&b5^mpCPk5oR_Qyq2G5aS`S z?!~b=Dhlk+^u2&g3v_Vl=-DCH_Bd~Ke0;vydh8s18CA0>=0l0Cuf*FN!T+Qm=4PMy&)UM4^ zJFwta9kW8Y+Ml_ZxvX{UZHE!*i0?~|(t9xw=4A(N43S@ZuCKkH&mNY%v{jo=y@7IX z9=rnDny>7N6yg;zEaC~3ON|?}a;-ycRd`p*VPQ&Bp-FZUZ(F7$G!4fM<+MCX=lP5* z{-Vnxu0~mYCeOOX_|-PyzS-Oh^yu^6Yg#tC-du9(abJ%;!}RL|scN?t`v+T^7ep5a zj>cHiXf+&55YaHp(>{BvfGMB#*>&7m@wVG#lTjQ0=H_B_dcBWvcaHX<&n^6^ujT%X z#gClVgp!R=-|U7bMl~PP{6LW=YIt2-KSpFD|6>O%OINC=PyBTmyY3^UL6fs|xqYnt z3rC&)opYyLw;5QPO9zk21$-^QQ*6Fpp}2usJU>J{OL?#hDeV8PXRX9BV%Fd)qWyF) z5<~pG#y}|3OW~bGa;PV`KwwIdR+IMCX{o8HG}A4HXk^Dn1!W%>p>KTEQvD58#I*E^xg3e$I#sPb*L) zCO3`^>%Wldc3r-rmJ zx;;q~i^C2^|81*T=x!<1j{kD;_KuPH=kcRW(Z73zcua#4;TZvZ#AZ^&nYrbxz4p6}-4+!mlI6J$*PtB9K7-VaoK9kecj|VuL)k&&Qwr#cFuxF=Q zM&fSDgJx$MCooE-Q?={q-*o7nYpk9K!}^ja#c}5&r(S4k|82M)tzl7AvnY-$_l(e*LhhCD)QG0A1h8W?~2s@)vBRC3=p(xYe5T;d{%`lQuVGAxy~0k0y0`z zto3a>w>s_01^_%|H}q{;7tEOqCahbyft`Z}59T!9c2HjUZH%TNt1}JI(aXYb$vUP{ zJjM-(V%%;CnL8p9!1yv{+a@ullQPcR!McUi6c z^e)0kNXD{%b+{>_4lS{YO5vJoI6EsnY^l_~W!QI$o8PqWmP^mdZRkni*~%ST?`?+? z<8W@d3?PaoC4I|?ITbB0Qke-IdWPENelSoHO81>Z*dbfVE#*Mt@$J4}xwkq4k3uE; z9&$}RZbL>P=#Er)CuEe`@a4{YBkudBa-*c#8oOAwYA@cLp*SYdofgx0^^FEHCjLj#-^-?yyq-b~t_Qf-e6Luroqeh@I zuuMSHymM+En%Ob~IG*h`fzC3=jhGZrHqS4TuhA(A&PWK`u}4T7yNMFp)(lac5}B!- zy715I!x`3L)D_kRPSRP<6Sz^5g^G?M02(f^gXmv8BE<2FKprc4kz72h^SQ~O%lYx5 zh4kRUfmAV=J8<80Tb!|#T++hpq3(x$1#cef`A@GDHv5t8aO&OpmV+rX3I1QicY`in z%08ZcEX1=l{9|<(UsMz_4DWLuh=|@5L=vX`nt1eP7PW`FiRR*R#yAEI4mPSD#@Do*pMjML@fIbiG0=`Rr3_Que_fC(0f>6$NsK|x3NFb#T_F7eMsGN?qINvH;-#7suIXy{&9srb2sx5~&I-LVB-|Z9YP|bRn zKM~m+_Aq#Q{p&4Oi7e%U)zIe}1lcFjf#cD!>hNkymr~t&%2wsE+d#dZyqpCS;J@R3 zb@5H5TABO$7yN;KjncSIo#KGWaCShRo>IKlq^MF`s8=+4&Azk4PhtI<{$sWjmr7V+ zq*;e#4pObmYyqg^^6v*Zw$0Y>k(+(U*O*)rclBP*23yHhb-BBTibI>FYFwS9)1C`< zeT#)o4zS@kg2BrtYvo6L_Ydez@V}jT`G{K!X=!l;#R zg77Q0s8|DGLKc`!B0rDW~fmv=X zUbVcKDkhOAKIu|1&ANG^1uYyIxMo##CZlvFn@Z#K*2u@l7Zc;(G$=Qmo#UcS4~SeW zkj z{nSQ@JM|3I_mxe339Zu)e-P)m&i*67lA1zi0@uD>IoLTDmc!%+tvsB8CGSk@>}PG& zKlcT?W*1}$O>^&buq}4WBW_mvKsDbEX@6LcJF?RM-|MKpV8yb;oL}L?W)YGq&vfbI zEJa)WA=7$re#nP^$*#zGj<;p7nU$Zy$TuoKjSpQ`wfT;%G?Y|I&t_Xf3P;!i=6_>I zy14;H*%Wq*ujC&BdDR2(n+&}o^~~hUFK|O3RR(~*y>T8I12u%#4%T=W2dVJI*!PG( zvTE6b1Vr)y@*!ZspfOO$qZ=IX*S-LK|Eta&JqL&?fkwHG@mI;8bx+%>10p-dT#Bb@ zM!V{=-sSl|gsLR6Lxb_V_B{z~_G5)=3$x+d6Q!RwQ3&{KOJHs9z`*{H^38GQBq2aT z8L2;E!$Ng<-x5euimz!|F7r77q=F965wQc%y#qjQVY2y|&Q1kSB$xM>&UjzTNledZ< zm+2Mtz1Hq_8Y_%;T4-quAdNIGHq#a@b~yhbt*C2IW;AG&>)7l#%7t~^wIBNGcbCZn;teh8930>E8~Mc``MS^$!e&6ZE{N)xE2wIbMi0s*T5^kUXUD+gl{fL_fW zM8``mY+#sbfv&R$wS20`%w^DTpvBe5Ec^D`gH6qS1sUfFzF-T;Xf(i(%x<4vy%uj< zQfIL4H#&UpWOlw!l||gy_U0V~+8^9%X@<6{Fs&aLE7BNj3BAh=7~#v$7p6F|{xhMk9q3>a9n&w=Jg|Gu`75kTCG(NpPE<6X$=Ek98#C*y zv^2Zn$r9bpyF5!Q#dn=cU_H$nkeL)yjW72_T&Bva<%0Y8i)Va>pW@<78Xq;}G!p`4 zzSM@E1vR??)K`dQZpdL~rijf)nc_teZthM?<9tOjuwya?g+K|*ocB!m7)O`ycA}>N zj7KwL@1k%D_70y&s{bEO%futZ3SchlN1`^Ux13P7wBE?!eZZHY> zYxQ(Nw?lW7jYMdT(C?6FXv@UYq6B`kqOUUNp`$@KAmnHbtB|w)eVh;qJ-OPGL0K;_ zx15VVb!`wr+sfwbx6S_9GYuY+8GaL#@DGE=CxL0VQxOenOR3|zp>(5 zcQ@z+v9oTS5wH;0a{)gNzgmC#-+UwE;!&6c;>uo(V9?=?Q*P`Mh2#PB?eSlUg|X*` z_s(;}PBx3(h;+o^4gd3=@w^0C>rI3Uz!r#Y#b09TCzVPd>FU0= zmrKY>DN`yI(2;bTOZ~HWH$1wJc4g}fzlbp7eRMik@8W=9k#Mbg|6X>34I}t{#1BFp zK*n(5ne*^<_!;N)bB>8JV|WA6gzx9iSR?r8r*AolDa@42so#$9NTS>D_Q{)|8NH?c>5 zD#HY7xoiTA4xn~k2T&8*=xSzxi*X%3pP=4F6m4o1QjcRDhc;~P;X|R;X!XM;ph%tF zPTjfS3$y?J>Wi*D;#K&A-(RI_?zyVMo!&!TPhBK5WuwgsmNM2^;4 zQ20+ONSzyM%AJi7p_=`~Z)XY)L>P(aUv%8+UmSmx_->9#WI|%Cqrx@qyei4Rf4d@tHhQ+!0aZb4yQypU>D%`%FOtaS1#P0prW}u4K(OSP{%rv`emsP~ z%Cr3zL~W8$u9DcUx&36;$g;(2wSO&l{RQGGC9iM-W_+UAu6#~u-8b940JY_iBWDxS zN^RWx+qlfaf*=YzAHnzrTi9D3g=dDV!NyStsT zqZ^$7jU$PADLC3K?miexceAO^b#_dGZ`>%FDNJ66zK3<=%8!IbH)P!eoCzhT?Vz&=LrKvShbAnn7JS3i|Yos)vfq7 z?QsY2otwGhfPg7$O;S^g3f_p)3_6g(ej!`$vql@pH{ut9F-ATIB$3Z*$ln6#45GGp zZC^$;f?v4ph$}={F>ccNlA>C8-dI$W?EXQ11+_03<>!0a4bz*Q1{%Xol^AWgGuz8o zcxlWzlS}%Wb9c?mdrK~TINIGk88PyPaz-a9$zj(m*N>)Aeu0T{a9xIY`tJ0)m~D5C z3A_-1s5a|Nja|tG3Uj8f5$NMuMyRP2aPVI05A?SuWl#d@$ z7{}hpu}mNE^rrS6*!szt6%@68__&mQ8fN3Hwo;!|O1>b_70bR<3&^j9i_X8 z`DiGSY5ku0^B<$bUGP5;2ImB+#s)OeTHQ6L>8-Tr6osL_&1oXH`q!0%$5cULhlket zw=1<(-A@Hqe?rLDXWhmX9#99qT{&uUgqJ|Cu=cGW7VAeEOtdV7An?qBwv zBP0QC5nRQktwz($!b}fP4KdQE5l<>1O5P8Js0k6S`v zk96g$fo98PoHxT8zQ%m@_@kJ(Hz$|$08OT}H-wftV3aY{*fOwtVa;=T-B_FU%mGSy zTShKqk5)!fMn%S0{FTqJRqDQ)*rf>1Q3D3UcO|d40KUONP}rC0&(;U1t8!yx+0VzO zU+_om_hw+!hL(K2qjoz?P~XO}2H-Rfa~yQcF(@vW)zEvx`~0gQKtm}dE*q6PiMB+v zhT(6cv72reXb>KY*u>4Gd}dSjuSNv)vdAzRR`6Xd=)o^qp%!zUJ#YuH8auZ>dAB~_ zCnhLIId)M->OcB79F=N;CG1a+_9SFSQq3Y6$DJ>QkF|H1o0Nusnx~@;!gvcx$JcNY zwaA=I<4aPO>Y`gQb&R@W&-(YAW7Hr{0_RTRxwfIUFPfUNFWSDXFVqqYi6+UOTXB4M zbaAOqB-8*eNL_gou(AzZFStzi;?t&ofVMu|rQkARvC$cP(H7D=-eRCTWToY`FldGF zXq`@QX!SU~Iq@RTffHqsV84w=NClcmCviw%7f>Z22m-l=fvuf&%)fLL&RD(2ZRomh zxC>N2-Rrt}wHV3weiZWjn)C>_dlnqbbw3)~?RXNSnenjQ{p?gf!;b)YQAT?f$~>Yw z)=9(#T|bj6Qi`j*X#pn=hkrBGN?N`xzqI^8HsoYxfg7<9wgkkWg3e88%(N2%`311F7gncMOhqf}z69#pt~NY5T7N6~cj zMuFjFC3$Z!w$-7@ALBgC{WQZULVi3do{mEx%y6?XHzhya8o=r zjC4$Zmn?pwDCIev|9wrA;X9nn)ix216h3cwina>?4j4goUE|E9?z2$j;-lET7iign~ z6~4GHJ(3c+t%qL&B1`_KZ2xXEZp9_yeS3dyQ(Q^xKZ-)^;b!%WUJc(9%gzmJQ!RO& zCs9j3>X-|!K_@}Km0Tk_+ZVNe%RF)W*tmO$oH^68OL%1XWM5*9;z!4|6`&Q`a0~~Z z5khM|QO^gKHEx}@`*V!8BY`6gKtbL}%s#C{IA}Ho^?bg~AGb5z*JjU7bcx>hWd*4C z0S(H`vte0}FYtjHf=VhscsW*6UDLv{^I!!;S_%GX_IIwuH!1Zi7p5L%fTJinA z^vFmsPtd;`dckMClD>b3Shp^k52%fE z@A0r7$A=Qx?lObYmqDs&VE3lp%9^nP6>982zI!u9A{Y!5?tupjq0-zsA>cOAQdS*<%m zx%r#nR-X8?z%MG@O@R6jt-mF{Bay65RW^fR)R(O`1Icf>&eiq0vxqsqLhL>9+p_IT z<+s7ROv@gb(85jYo&5>t1T5-75?F0da3b&JkySr(ESTpJAk?IxxSJ$oa1~PcW6G`? zxj9eAa#2Skn0mTXSoWCr9}l_Xfoi$Wh(EpR(&~(?7RCnivT^Vf0N4SyKuH1`=|c4= zW^p>=;v%5@X-3z(q+e)QoF+<=We#1?P4)4C5*`b#4Q{c#WAByD507f?4^HC!iBUBS znzK#u7}*=SmKv?llzR7wkc#B<|5*@o4!ef)+p{G)FsH8dGege33)pnpvhJXtZ`2+6 zf0F>%`!{dmsQj;iR4Wo?Pk!#85W@zQ=2EZAA&*t62bQ{HF<#C7n4KwX*G=s@l(>sE zmBf3cL+oO10p$IrSobgy;NPZP67~V1+&`P3Q|->HUvEMMp3wPgGYPKVN?JYv4o#SpA6hAJMX?&ay#cTqBLtY)N1xKPy0DXT{G}8aXQO_ zCA3P7Q4Vdjs$9L5g0&C9WRrmk=YV1!)8LN&YWUv$mBaDhRr}SxvN)jLt(mT0)Jb?< z(>^_RK%p`kmU1t&Qhf!?WHndevan?}yLORUD>S+Q33~g1Ol+dz{NBCXu5)a_+0^Oa zhPD*%p-J@x^Fv0bOV;^O%WUVIb~RDLZo3P*4>{Td_|*GBgQe_hKn|d}O?s0;RFXm2 zkR5jD*_O>zwpD^E%157+M#J3UE74hHPyXwUDwbRKA#1eI`Zj~HlA+9IZPXx|>s!Il z_pApB`f_3_dvQqNxeL5CwHVi?_IZZS&&cQt`qJLv`TkA8iPWm2G?#sLP8p!Uc}1hi zIWV8ny1l->6Iigoopl1?e;CaSZ$e2P9aQ^o|4;XF+~-tqapPP`KL7-3|BDW&w$vHS z>SlImCSeP+5;JUqEoOx=$Rf5D%sg7{5b{q$q!#PMZ{6fDX@l^aN#By=4BThluK$8X zxE2NR!~+xO0TY*-FImsxss*U!BoBB;V?--6o#SuXFz8i2;c4rILDwBuS%98kFC+wE z{?J>%5SEG{2bKOl$(<}?1iNou@m(T7N*A+?evjuR1(iE39=y7|gjuMS>|w;!7{sUE zCc0GM<*{UA)V;K%lcUL#Ei*M?MWw1lrGRiw^yd5QM=VQRAwX$-@n~`8#Kid&26f*OL{!;n)VhF16B<3fpnRsh)VNjwdkCD- zK|cZx!~F6J8M#8u?n>@ew`KWs+CwWsv9c%2ER*^V;f^%>jo`_jE;d4vEVXdf8vYR z%GI+@=DuVZnP7+FBu#Vtj@C9b2tGUQyHOTH6waICjpH zRg5LXEwz&Al%^zaT?@iI$C9l?CwZl#E#D0BOO0*LP1$D2 z)PG`$ToIjp5RUiUJ4nnjK4m-F*SDDkR6alqW_{D?X=6{_JOPCijU7JP=(N3FB zA|pMXhJ7}g?jZ%ym{)RSg-y1;Id5}ze=hr7+o~hr{5H75Yh{#att5-w*!6ns&;#o; zU0KVv9~a6Dv|PQ(H<*z zYJ)F_0XbsUI^R`{vp0noQ?k>LzWzu(r5>R$xTR#cZw0tYO!056z7G+oKxoLSH$5n5kyxM9}@(%p=f=P+BfaTY=&7? z<5*3q)%nVl-4CzaHxPMrUW6D#S(R7yq&PNdjm&N(@8A{p7XW?l$$zaIl3J(jhHsYK z)ju$=eXKj@{0Vkb%FTx1U0M}h<8B>4h?bgJr*R>0n$Z8`&aYB$&l1M9{gHJr<%CiX ze5dWJ9wVr8_h0`-E0HBSUcWM`}W$cHAo1?)>*yMd6$6r8?OSYZR2U2aG=@lGp z49+WAmf1T~TBTm6(R7lSyRN6$=mo)62MVBozPOo&bIYb0yPk^)-BdRm)D^d;((D8} zgyNVf!hYq> z1rcRhO`DRh3;vbn76kFk|2GO$ZiyT{#q2o%y6qUcAy_hSm_@VsZgr{rp1$)}6^CKb z3k^LUy$^o)7pbD2upy)L_&=-(`eV$VT4|0>Ew${CrcB=^z&x`@U6`xF?z}8o z$WgJc566NF@qPJ0JT3oC7*kqjkQ#cV2c=4vB1I`@ZQl3$#{cSE zoiWZCCzp(5wLRBdd(Jg~5B)qByB2UiK*e`WuTRz%GklK%uYtD43E9Nnvr-yy^FK_Q zruB)4_*01fPk*^Dn^|H_-EBUyUM)qP7Knd&3gum}@lkpo{Pf>);l2%Y$UGt&uAux!Kb2Yn8zl~OC;n(`ZE^VXh22^7#HR7;8 zauHFTmk>jFLbsUnz|Wo-a(ntHC%inx;@!1D2A#3|_}3b=t#;Zju6GxAfx_o}MARGS zKUIk$eZGyds)54cu4pS?M#@%a@uyXX_~>tCC_Fi{{Xn1+wS7x{D2 za@TlxGjQTn;N&Vin)J`$#x7n3SNoImtj?82;eO=T1Frd+du0|G9#511w_Dy)x3CAZ`eUizt1jd&AEn`>g+$)p@Qbpcocqm z5%a{QxW@9+xXx_AdAX&fb1naA;E%S-EuwQM^3|I|w$bp>jGuEx7T7B~4*qtAJ9(z-*AELzZc(5stg zKpqVsK@uhQ?1!R`F0(xhFKIzjD*CI#Z%~-FxIOMe1odOOKA0;dSyN2$4g9A ztCJ{psvEuGz9&87Ve?q34*RXU3fzF#ueY+A#o3sCoa5AzVy52TGFYkEr(x7Mlngx4 zG^obb4At7dvNK2vw|fozJp_HZKZv&M=s!q!u+^?xU@ug*cz-L3>~A1G4&))1n z0hn)!BuEguONczdyWO1hH0%EZz`Bk)l z>SflweLac2Bxg^R&`;}~^AA4mESOdEQc(kqm0nd;+)=y={Q^%RXVCjO#Bf%yi^|$2;Ttb!&_Tt%LJoabn5Tf(~$(%&VW z3taN&NMVht^1Hv2+!mvA<()RRdVa-M)$l^9m&4W8QnRn(-(e^pbZ=*(iS5fJ!HTg~ zH*HP{D|7PQYPF1EZk%-H0n#LetkY%QN;+6wsV}4C`?l^4N)pbyv^vwaWCp%6#{sUs zhq}0XaWqh`mOqKNqDQ{#cG_hD97UkTt!dg@j*H!2o=&U8GK>APAFI$rq% zti23W+$*0w|JQ>OniHy;BPTAOc$di@^ z^?tC33F1>_S!XG0qk=R=C9RZ=G$#~^hNmjrY%jAv8r>euaZjR;{=N;gByM|Y1@G4@ zKTIX6C4wpdFQ4qR48(JHM@w9%Axo&0DWmDByk3_B%#n_Qc&Uv}NZxxGHfrxZr4>Q3 z2{uUeBkxKJfJmieOsN1Ny7eml1UZh4nvwUYJAwDotWCfi$KNl;Gpz*H_`bUi76CNb z8CLSsi(BR@?((#jK)2ELR(ef!eJg-S+)v1xPK>;Q3HdD>vi1;~D=>-cwFYAInaSxe zVWAi{FTTHS7LVPl)2`6~FoXJo2M?AC%<5`AXrJouhTe8+-^8}w@T0>>NX#tqsP0QT zmhHIyM!DVEi-+}C8$g7Z%0rlEIK}UEudjk2P zR#cX^5~%>u-SfEe_oqZvIwI;DCygMw}eSv zU2SA?r<&Q2lf|AXFj~2HB>kn{gPw7|oMK4+(GGh)wov6X&nl)6sD-Xxj;tL#xskO%*ky^v2>WYqQ{; zR>%1lG~SYa+rb&ajvQ%I*P-N}i`unS9xG)><*#dUM{P5`tIpC|7}$DsgVCgL>azCq z&rd3GW}62VFGW1wg4zj2WjvQw5MLeHHr&G$A=|Mboe^gzC*Iew7ar~c3F3LN1Nn|Z zx>?^jDSM`Zj$OKtLlyRpfm+?DLR9rA3#6G8L#@%dha8XD1sbTfLRRzo>Z7U9fZp3jCtU5KVnbWzg;m zpob_kfOSpRHZ(N+yD(6&!b$1!mLu*jN!<--J4-15OG=*27W*G1>Qsd{H}pN3_dGiO z(Q^XB=UKo$ct5$IdsXo~x>Pun(FBy?h-!B9=Bvq$1gAU1_2T?a(cGdy%4KX8zr6hV zd`t!z>>J>X-Pfl=&sB(IA7#-4k$uOvJYzI`CkSq0fG%h5$|n%_gT+ryW@#{i#kxu2 z6Qj5CW{yHyii&zjZhF3t9VZ1#qS3%x=2`_?q&0?KG${P6k#L2$+}!6l3ZQ&~#|ele z+)?}N@ur+_J_8Ump(Rbp5)>59&JC)NkZJE=j0)LMDGD{Yu~ld}VA=<(fgOIl6~eSh z+VwVGG^-ue%`+nT?)@HsRcPc=vC7C_W>V01myW%88426nKKHQuQprc5DJ3ADr1Q2r5M`((Wc}B$Bj$|7PIO8duFLjt)R04137WI#GeH+)ocYS>Ol(rutME3>JOR=u(Q>|) z2@Jafvr;?KX}t8R3Ns&5jIjMsV`}FQ_tvPRT%MoxUi0C(V0E9M6Jjc^!XT5D^v1GpsObTQ8HS zW^=+#qh@|32%tI_m1xwg;TNp+o<&DA1=YM;>CMxkF5am($R{`KjNRo zkKaEM{@fyZB(t+j=Yu3hfH0_Z4C>g!X4Lot07IjwJOzjZC@tWEL=Zz3n~lJVUW=_w=#*PVrX*+w z`TM=K&b9ot(qy#$Ka?I-O?*5XJX@+a5%)?qF6Q8-IxqE%RGMF6pVYcUnN9@sp zbobdjn#)W*XZlhNOdk3|lq+8ciWc4&wqN?S;<5-@F0dmIE+@JwOKh#)@Xev>sle1A zRc@^W>&bUNF_wPl2%HhsKVQ?LR;!Fe6_VvZ3g-fSp98>T#DhY`;fR}d@_}ICdtXG; z#aiFw{v+RD=B*C**ZU^HnpX$)Awe$~slKn#@$x~IFZCCo%y|9GB$?@(bzbfk10-Kk zZg*u~G5RE_z{pTDjOkB01svzATIL%rBm~q7={|W@SuR}P;C%q%ljk}9n7c0v1z1?> z1UHSUu}9GQPhJC4N|%m#gm-;95A2umk-A70Ll|DA;hWV*T+Sh~5yW$hf`$oYAx=hx zLS`Xg!2hN=APAw|QC0mis284kK1eOk z16G0KokXR(=-!=`Mb6VnDFd&>jLVip(FoF2!kA~A#}(@@j=UPBLNP=c?u(KPvLN#c z`hG2E!3u=|BW5%}7)A*{KY2~lAO8tMElGbfpIf5mBWRzN(t;HUr;sRSXEOHz?NL0QJh5h9ShLNS+yLBbp)u~am z#6)!Zf9R)jfa18cCzqBy>9T9n=_^CfOGCnZRMY+!i~A3G(UZ>}FRhav56^FhsS#MO zwRF=)a4B}}keXMD>e?qVggeT8l72aX6hctwV8|df?J2OuRBfpy8bTt74>M0n0x;~5 z>Hh9O>tYG38$ODI`fOgp)tl)@ZU6u)L!$_!4O~-TdN*xY+x<*H+;teK?V~~Hn_X+E z-s~86w3HaAmzBeo;gT?g6KzJ$<&RXK1aLu6GBWgDpe=C9N`uR?a$Y{IDagtB9*?+p zvYirnU2Iq`uT6eqiyWr6`dnQB7i6fJ4((UUW8iV%fa(jB6$md%7^@&vkgJiW`n}LI zle8M^hc(McuaLUq zHc{2=;WYkL#5`7zR#1O4>j=8dH7&`FlYCnD8oh46vZko{K8ivc5eQ+y@q?tARn7>BKG zr85_eEC`dRd-mK7)RK4WuJt(`Z2T2oLL5}yVI9llI#^n4?urmr!-%FNe{lxnSPsv8 zL<+FgxhMba`rB&Vep#4x`(~m$pVIUPtSD}$*oYuU4s2J6--)O#;T}bVWXEd_(NM;F zBp7db65BC_+Wa!KJ(eGON`qw!w0ql~D*HstGJCiVfu@tOo9jBr)Y(GMIeK;tK3B!f zm5ivfk=>f9^dLcj1S=_Yn1!RTYPa>OB(R$P`OF!xaKioRt#zxY8zZsRb4wJ^Yeb_6 zfS0l&#r}7gYgv`RYjdK`to+ZtssOHv*ImIJJoGRSksUhm|7(cyl7GmFhl7Yxoc{ll zlm2-aXhWp;wiA`j>_M;MMeC#V$Y3vqXoZj$46#iZCEkR+Y~2!OH?fF>Dotfo69@cty{ z^+9<>R?Kt3K-ISpENdC-{3tsD`|Rk9YdGp-I>8j8c{G7&&yD4=k&bw&b{V(V(Mb9; z!vtsNXUET4boqho(5A^70d$87x1SZP;pmd_8si48;h~yjqCVYAr?JY@*Uy+^MHw9d zZI@{lrFvMd?~gyO#jI4{1o98WEUmP~X+WqG1tnEEoY`u+=Tb-NKr}`Magh9~aHn1U zm;U?6Vc>6>2;RT3Rm7H-LgTtb8INJ5=8Ra=`9$d~P~YKRg(V3A%))4S(U^!)NeeuQ zaAW_zAZ1xKUFsY>Bc=>b2*n*c|KG-DquGJjrOdbv;0^{|`{C$I@4f9)6h(;0!S1YF zjWOr^pyjJlV}5d^`qE<|Hk5_v&TEESiF_ph0LXY4@AdBG)n-F%&tf3IqI>GtIs zD*|*VY|3$+ZUYB{`cvByWjBxJ7iTTWzUycotz{2EzY z)7vkB?t69$Q!XyW7AgYl#5JQa6r~RW&bpSXu zu&akO4S=r?wIBMFF(zVC-tDwEDkL>riOR*^cVBBgKO&GR53)xZh8*LL;cYAl593*UOwrCb48XwZ>I;{;9Wb8z||sjqKfkaHkB zpNvxBDvA-L0v9Am!?pM`i-KG|kG_NL!SNn33TmZfkdGGf2wc4mrtcBQl|Vupa>o+E zHS^NXHjr?sDGs@6)5%dawZgss>nKcEmtSqSH!75{YGGXeX6zg%fQ}!WtH-nT?DuEu zFc?ng!>t%+@8KhkGJ2_pOF9nskGi&Bdae<3Aq%c9T!P_-pb`yfsJrUDR5~zhYTKk$ zgr8^T*9u?Qhn^k-12|gF^d^;t3eS;kOmO-l4uXupiS#Fl2r2B~`~aMkk}-Y+b0o5j zO7U@W0kz<68!!gJlYto3=Xq1@>S5GJB34Hi@qO-FUP7X48tD(D1YaeAPl_%_Urd`9Jt?FK8uZ4k+xK^XXp1&`!X;swv-5%D;6# G=zjqSm5)UL literal 0 HcmV?d00001 diff --git a/docs/how-to/deep-learning-rocm.rst b/docs/how-to/deep-learning-rocm.rst index 49c0b5d99..d638e1cb3 100644 --- a/docs/how-to/deep-learning-rocm.rst +++ b/docs/how-to/deep-learning-rocm.rst @@ -60,6 +60,9 @@ Find information on version compatibility and framework release notes in :doc:`T For guidance on installing ROCm itself, refer to :doc:`ROCm installation for Linux `. -Learn how to use your ROCm deep learning environment for training, fine-tuning, and inference through the following guides. +Learn how to use your ROCm deep learning environment for training, fine-tuning, inference, and performance optimization +through the following guides. * :doc:`rocm-for-ai/index` + +* :doc:`fine-tuning-llms/index` diff --git a/docs/how-to/fine-tuning-llms/fine-tuning-and-inference.rst b/docs/how-to/fine-tuning-llms/fine-tuning-and-inference.rst new file mode 100644 index 000000000..0c0251fd1 --- /dev/null +++ b/docs/how-to/fine-tuning-llms/fine-tuning-and-inference.rst @@ -0,0 +1,20 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, inference, usage, tutorial + +************************* +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. + +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 +sized datasets. See :doc:`single-gpu-fine-tuning-and-inference`. + +Multi-accelerator systems, on the other hand, consist of multiple accelerators working in parallel. These systems are +typically used in LLMs and other large-scale deep learning tasks where performance, scalability, and the handling of +massive datasets are crucial. See :doc:`multi-gpu-fine-tuning-and-inference`. diff --git a/docs/how-to/fine-tuning-llms/index.rst b/docs/how-to/fine-tuning-llms/index.rst new file mode 100644 index 000000000..c197158f2 --- /dev/null +++ b/docs/how-to/fine-tuning-llms/index.rst @@ -0,0 +1,37 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial + +************************** +Fine-tuning LLMs with ROCm +************************** + +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/fine-tuning-llms/llm-inference-frameworks.rst b/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst new file mode 100644 index 000000000..9da634d5c --- /dev/null +++ b/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst @@ -0,0 +1,218 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, inference, vLLM, TGI, text generation inference + +************************ +LLM inference frameworks +************************ + +This section discusses how to implement `vLLM `_ and `Hugging Face TGI +`_ using +:doc:`single-accelerator ` and +:doc:`multi-accelerator ` systems. + +.. _fine-tuning-llms-vllm: + +vLLM inference +============== + +vLLM is renowned for its paged attention algorithm that can reduce memory consumption and increase throughput thanks to +its paging scheme. Instead of allocating GPU high-bandwidth memory (HBM) for the maximum output token lengths of the +models, the paged attention of vLLM allocates GPU HBM dynamically for its actual decoding lengths. This paged attention +is also effective when multiple requests share the same key and value contents for a large value of beam search or +multiple parallel requests. + +vLLM also incorporates many modern LLM acceleration and quantization algorithms, such as Flash Attention, HIP and CUDA +graphs, tensor parallel multi-GPU, GPTQ, AWQ, and token speculation. + +Installing vLLM +--------------- + +1. To install vLLM, run the following commands. + + .. code-block:: shell + + # Install from the source + git clone https://github.com/ROCm/vllm.git + cd vllm + PYTORCH_ROCM_ARCH=gfx942 python setup.py install #MI300 series + +.. _fine-tuning-llms-vllm-rocm-docker-image: + +2. Run the following commands to build a Docker image ``vllm-rocm``. + + .. code-block:: shell + + git clone https://github.com/vllm-project/vllm.git + cd vllm + docker build -f Dockerfile.rocm -t vllm-rocm . + +.. tab-set:: + + .. tab-item:: vLLM on a single-accelerator system + :sync: single + + 3. To use vLLM as an API server to serve reference requests, first start a container using the :ref:`vllm-rocm + Docker image `. + + .. code-block:: shell + + docker run -it \ + --network=host \ + --group-add=video \ + --ipc=host \ + --cap-add=SYS_PTRACE \ + --security-opt seccomp=unconfined \ + --device /dev/kfd \ + --device /dev/dri \ + -v :/app/model \ + vllm-rocm \ + bash + + 4. Inside the container, start the API server to run on a single accelerator on port 8000 using the following command. + + .. code-block:: shell + + python -m vllm.entrypoints.api_server --model /app/model --dtype float16 --port 8000 & + + The following log message is displayed in your command line indicates that the server is listening for requests. + + .. image:: ../../data/how-to/fine-tuning-llms/vllm-single-gpu-log.png + :alt: vLLM API server log message + :align: center + + 5. To test, send it a curl request containing a prompt. + + .. code-block:: shell + + curl http://localhost:8000/generate -H "Content-Type: application/json" -d '{"prompt": "What is AMD Instinct?", "max_tokens": 80, "temperature": 0.0 }' + + You should receive a response like the following. + + .. code-block:: text + + {"text":["What is AMD Instinct?\nAmd Instinct is a brand new line of high-performance computing (HPC) processors from Advanced Micro Devices (AMD). These processors are designed to deliver unparalleled performance for HPC workloads, including scientific simulations, data analytics, and machine learning.\nThe Instinct lineup includes a range of processors, from the entry-level Inst"]} + + .. tab-item:: vLLM on a multi-accelerator system + :sync: multi + + 3. To use vLLM as an API server to serve reference requests, first start a container using the :ref:`vllm-rocm + Docker image `. + + .. code-block:: shell + + docker run -it \ + --network=host \ + --group-add=video \ + --ipc=host \ + --cap-add=SYS_PTRACE \ + --security-opt seccomp=unconfined \ + --device /dev/kfd \ + --device /dev/dri \ + -v :/app/model \ + vllm-rocm \ + bash + + + 4. To run API server on multiple GPUs, use the ``-tp`` or ``--tensor-parallel-size`` parameter. For example, to use two + GPUs, start the API server using the following command. + + .. code-block:: shell + + python -m vllm.entrypoints.api_server --model /app/model --dtype float16 -tp 2 --port 8000 & + + 5. To run multiple instances of API Servers, specify different ports for each server, and use ``ROCR_VISIBLE_DEVICES`` to + isolate each instance to a different accelerator. + + For example, to run two API servers, one on port 8000 using GPU 0 and 1, one on port 8001 using GPU 2 and 3, use a + a command like the following. + + .. code-block:: shell + + ROCR_VISIBLE_DEVICES=0,1 python -m vllm.entrypoints.api_server --model /data/llama-2-7b-chat-hf --dtype float16 –tp 2 --port 8000 & + ROCR_VISIBLE_DEVICES=2,3 python -m vllm.entrypoints.api_server --model /data/llama-2-7b-chat-hf --dtype float16 –tp 2--port 8001 & + + 6. To test, send it a curl request containing a prompt. + + .. code-block:: shell + + curl http://localhost:8000/generate -H "Content-Type: application/json" -d '{"prompt": "What is AMD Instinct?", "max_tokens": 80, "temperature": 0.0 }' + + You should receive a response like the following. + + .. code-block:: text + + {"text":["What is AMD Instinct?\nAmd Instinct is a brand new line of high-performance computing (HPC) processors from Advanced Micro Devices (AMD). These processors are designed to deliver unparalleled performance for HPC workloads, including scientific simulations, data analytics, and machine learning.\nThe Instinct lineup includes a range of processors, from the entry-level Inst"]} + +.. _fine-tuning-llms-tgi: + +Hugging Face TGI +================ + +Text Generation Inference (TGI) is LLM serving framework from Hugging +Face, and it also supports the majority of high-performance LLM +acceleration algorithms such as Flash Attention, Paged Attention, +CUDA/HIP graph, tensor parallel multi-GPU, GPTQ, AWQ, and token +speculation. + +.. tip:: + + In addition to LLM serving capability, TGI also provides the `Text Generation Inference benchmarking tool + `_. + +Install TGI +----------- + +1. To install the TGI Docker image, run the following commands. + + .. code-block:: shell + + # Install from Dockerfile + git clone https://github.com/huggingface/text-generation-inference.git -b mi300-compat + cd text-generation-inference + docker build . -f Dockerfile.rocm + +.. tab-set:: + + .. tab-item:: TGI on a single-accelerator system + :sync: single + + 2. Launch a model using TGI server on a single accelerator. + + .. code-block:: shell + + export ROCM_USE_FLASH_ATTN_V2_TRITON=True + text-generation-launcher --model-id NousResearch/Meta-Llama-3-70B --dtype float16 --port 8000 & + + 3. To test, send it a curl request containing a prompt. + + .. code-block:: shell + + curl http://localhost:8000/generate_stream -X POST -d '{"inputs":"What is AMD Instinct?","parameters":{"max_new_tokens":20}}' -H 'Content-Type: application/json' + + You should receive a response like the following. + + .. code-block:: shell + + data:{"index":20,"token":{"id":304,"text":" in","logprob":-1.2822266,"special":false},"generated_text":" AMD Instinct is a new family of data center GPUs designed to accelerate the most demanding workloads in","details":null} + + .. tab-item:: TGI on a multi-accelerator system + + 2. Launch a model using TGI server on multiple accelerators (4 in this case). + + .. code-block:: shell + + export ROCM_USE_FLASH_ATTN_V2_TRITON=True + text-generation-launcher --model-id NousResearch/Meta-Llama-3-8B --dtype float16 --port 8000 --num-shard 4 & + + 3. To test, send it a curl request containing a prompt. + + .. code-block:: shell + + curl http://localhost:8000/generate_stream -X POST -d '{"inputs":"What is AMD Instinct?","parameters":{"max_new_tokens":20}}' -H 'Content-Type: application/json' + + You should receive a response like the following. + + .. code-block:: shell + + data:{"index":20,"token":{"id":304,"text":" in","logprob":-1.2773438,"special":false},"generated_text":" AMD Instinct is a new family of data center GPUs designed to accelerate the most demanding workloads in","details":null} diff --git a/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst b/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst new file mode 100644 index 000000000..f1bc7c704 --- /dev/null +++ b/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst @@ -0,0 +1,249 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, Flash Attention, Hugging Face, xFormers, vLLM, PyTorch + +**************************** +Model acceleration libraries +**************************** + +This section discusses model acceleration techniques and libraries to improve memory efficiency and performance. + +Flash Attention 2 +================= + +Flash Attention is a technique designed to reduce memory movements between GPU SRAM and high-bandwidth memory (HBM). By +using a tiling approach, Flash Attention 2 improves memory locality in the nested loops of query, key, and value +computations within the Attention modules of LLMs. These modules include Multi-Head Attention (MHA), Group-Query +Attention (GQA), and Multi-Query Attention (MQA). This reduction in memory movements significantly decreases the +time-to-first-token (TTFT) latency for large batch sizes and long prompt sequences, thereby enhancing overall +performance. + +.. image:: ../../data/how-to/fine-tuning-llms/attention-module.png + :alt: Attention module of a large language module utilizing tiling + :align: center + +Installing Flash Attention 2 +---------------------------- + +ROCm provides two different implementations of Flash Attention 2 modules. They can be deployed interchangeably: + +* ROCm `Composable Kernel `_ + (CK) Flash Attention 2 + +* `OpenAI Triton `_ Flash Attention 2 + +.. tab-set:: + + .. tab-item:: CK Flash Attention 2 + + To install CK Flash Attention 2, use the following commands. + + .. code-block:: shell + + # Install from the source + git clone https://github.com/ROCm/flash-attention.git + cd flash-attention/ + GPU_ARCHS=gfx942 python setup.py install #MI300 series + + Hugging Face Transformers can easily deploy the CK Flash Attention 2 module by passing an argument + ``attn_implementation="flash_attention_2"`` in the ``from_pretrained`` class. + + .. code-block:: python + + import torch + from transformers import AutoModelForCausalLM, AutoTokenizer + device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") + model_name = "NousResearch/Meta-Llama-3-8B" + + tokenizer = AutoTokenizer.from_pretrained(model_name, torch_dtype=torch.float16, use_fast=False) + inputs = tokenizer('Today is', return_tensors='pt').to(device) + + model_eager = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, attn_implementation="eager").cuda(device) + model_ckFAv2 = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, attn_implementation="flash_attention_2").cuda(device) + + print("eager GQA: ", tokenizer.decode(model_eager.generate(**inputs, max_new_tokens=10)[0], skip_special_tokens=True)) + print("ckFAv2 GQA: ", tokenizer.decode(model_ckFAv2.generate(**inputs, max_new_tokens=10)[0], skip_special_tokens=True)) + + # eager GQA: Today is the day of the Lord, and we are the + # ckFAv2 GQA: Today is the day of the Lord, and we are the + + .. tab-item:: Triton Flash Attention 2 + + The Triton Flash Attention 2 module is implemented in Python and uses OpenAI’s JIT compiler. This module has been + upstreamed into the vLLM serving toolkit, discussed in :doc:'llm-inference-frameworks'. + + 1. To install Triton Flash Attention 2 and run the benchmark, use the following commands. + + .. code-block:: shell + + # Install from the source + pip uninstall pytorch-triton-rocm triton -y + git clone https://github.com/ROCm/triton.git + cd triton/python + GPU_ARCHS=gfx942 python setup.py install #MI300 series + pip install matplotlib pandas + + 2. To test, run the Triton Flash Attention 2 performance benchmark. + + .. code-block:: shell + + # Test the triton FA v2 kernel + python https://github.com/ROCm/triton/blob/triton-mlir/python/perf-kernels/flash-attention.py + # Results (Okay to release TFLOPS number ???) + fused-attention-fwd-d128: + BATCH HQ HK N_CTX_Q N_CTX_K TFLOPS + 0 16.0 16.0 16.0 1024.0 1024.0 287.528411 + 1 8.0 16.0 16.0 2048.0 2048.0 287.490806 + 2 4.0 16.0 16.0 4096.0 4096.0 345.966031 + 3 2.0 16.0 16.0 8192.0 8192.0 361.369510 + 4 1.0 16.0 16.0 16384.0 16384.0 356.873720 + 5 2.0 48.0 48.0 1024.0 1024.0 216.916235 + 6 2.0 48.0 48.0 2048.0 1024.0 271.027578 + 7 2.0 48.0 48.0 4096.0 8192.0 337.367372 + 8 2.0 48.0 48.0 8192.0 4096.0 363.481649 + 9 2.0 48.0 48.0 16384.0 8192.0 375.013622 + 10 8.0 16.0 16.0 1989.0 15344.0 321.791333 + 11 4.0 16.0 16.0 4097.0 163.0 122.104888 + 12 2.0 16.0 16.0 8122.0 2159.0 337.060283 + 13 1.0 16.0 16.0 16281.0 7.0 5.234012 + 14 2.0 48.0 48.0 1021.0 1020.0 214.657425 + 15 2.0 48.0 48.0 2001.0 2048.0 314.429118 + 16 2.0 48.0 48.0 3996.0 9639.0 330.411368 + 17 2.0 48.0 48.0 8181.0 1021.0 324.614980 + +xFormers +======== + +xFormers also improves the performance of attention modules. Although xFormers attention performs very +similarly to Flash Attention 2 due to its tiling behavior of query, key, and value, it’s widely used for LLMs and +Stable Diffusion models with the Hugging Face Diffusers library. + +Installing CK xFormers +---------------------- + +Use the following commands to install CK xFormers. + +.. code-block:: shell + + # Install from source + git clone https://github.com/ROCm/xformers.git + cd xformers/ + git submodule update --init --recursive + PYTORCH_ROCM_ARCH=gfx942 python setup.py install #Instinct MI300-series + +PyTorch built-in acceleration +============================= + +`PyTorch compilation +mode `__ +synthesizes the model into a graph and then lowers it to prime +operators. These operators are compiled using TorchInductor, which uses +OpenAI Triton as a building block for GPU acceleration. One advantage of +PyTorch compilation mode is that its GPU kernels are written in Python, +making modifying and extending them easier. PyTorch compilation mode +often delivers higher performance, as model operations are fused before +runtime, which allows for easy deployment of high-performance kernels. + +PyTorch compilation +------------------- + +To utilize the PyTorch compilation mode, specific layers of the model +must be explicitly assigned as compilation targets. In the case of LLM, +where autoregressive token decoding generates dynamically changing +key/value sizes, limiting the key/value size to a static dimension, +``max_cache_length``, is necessary to utilize the performance benefits +of the PyTorch compilation. + +.. code-block:: python + + # Sample script to run LLM with the static key-value cache and pytorch compilation + from transformers import AutoModelForCausalLM, AutoTokenizer, StaticCache + import torch + from typing import Optional + import os + device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") + os.environ["TOKENIZERS_PARALLELISM"] = "false" + model_name = "NousResearch/Meta-Llama-3-8B" + prompts = [] + + for b in range(1): + prompts.append("New york city is where " + ) + + tokenizer = AutoTokenizer.from_pretrained(model_name) + model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16).to(device).eval() + inputs = tokenizer(prompts, return_tensors="pt").to(model.device) + + def decode_one_tokens(model, cur_token, input_pos, cache_position): + logits = model(cur_token, position_ids=input_pos, cache_position=cache_position, return_dict=False, use_cache=True)[0] + new_token = torch.argmax(logits[:, -1], dim=-1)[:, None] + return new_token + + batch_size, seq_length = inputs["input_ids"].shape + # static key-value cache + max_cache_length = 1024 + max_new_tokens = 10 + model._setup_cache(StaticCache, batch_size, max_cache_len=max_cache_length) + cache_position = torch.arange(seq_length, device=device) + generated_ids = torch.zeros(batch_size, seq_length + max_new_tokens + 1, dtype=torch.int, device=device) + generated_ids[:, cache_position] = inputs["input_ids"].to(device).to(torch.int) + + logits = model(**inputs, cache_position=cache_position, return_dict=False, use_cache=True)[0] + next_token = torch.argmax(logits[:, -1], dim=-1)[:, None] + # torch compilation + decode_one_tokens = torch.compile(decode_one_tokens, mode="max-autotune-no-cudagraphs",fullgraph=True) + + generated_ids[:, seq_length] = next_token[:, 0] + cache_position = torch.tensor([seq_length + 1], device=device) + + with torch.no_grad(): + for _ in range(1, max_new_tokens): + with torch.backends.cuda.sdp_kernel(enable_flash=False, enable_mem_efficient=False, enable_math=True): + next_token = decode_one_tokens(model, next_token.clone(), None, cache_position) + generated_ids[:, cache_position] = next_token.int() + cache_position += 1 + +.. _fine-tuning-llms-pytorch-tunableop: + +PyTorch TunableOp +------------------ + +ROCm PyTorch (2.2.0 and later) allows users to use high-performance ROCm +GEMM kernel libraries through PyTorch's built-in TunableOp options. +This enables users to automatically pick up the best-performing GEMM +kernels from :doc:`rocBLAS ` and :doc:`hipBLASLt ` libraries during runtime. + +During warm-up runs or offline profiling steps, users can create a GEMM Table +that enumerates the kernel information. During the model's run, the best-performing kernel substitutes +``torch.nn.functional.linear(input, weight, bias=None)`` with the kernel specified in the GEMM table. The +`Tunable GitHub `_ +page describes the options. + +.. code-block:: python + + # To turn on TunableOps, simply set this environmental variable + export PYTORCH_TUNABLEOP_ENABLED=1 + + # python + import torch + import torch.nn as nn + import torch.nn.functional as F + A = torch.rand(100, 20, device="cuda") + W = torch.rand(200, 20, device="cuda") + Out = F.linear(A, W) + print(Out.size()) + + # tunableop_results0.csv + Validator,PT_VERSION,2.4.0 + Validator,ROCM_VERSION,6.1.0.0-82-5fabb4c + Validator,HIPBLASLT_VERSION,0.7.0-1549b021 + Validator,GCN_ARCH_NAME,gfx942:sramecc+:xnack- + Validator,ROCBLAS_VERSION,4.1.0-cefa4a9b-dirty + GemmTunableOp_float_TN,tn_200_100_20,Gemm_Rocblas_32323,0.00669595 + +.. image:: ../../data/how-to/fine-tuning-llms/tunableop.png + :alt: GEMM and TunableOp + :align: center + +Learn more about optimizing kernels with TunableOp in +:ref:`Optimizing Triton kernels `. diff --git a/docs/how-to/fine-tuning-llms/model-quantization.rst b/docs/how-to/fine-tuning-llms/model-quantization.rst new file mode 100644 index 000000000..18d604b3d --- /dev/null +++ b/docs/how-to/fine-tuning-llms/model-quantization.rst @@ -0,0 +1,257 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, quantization, GPTQ, transformers, bitsandbytes + +***************************** +Model quantization techniques +***************************** + +Quantization reduces the model size compared to its native full-precision version, making it easier to fit large models +onto accelerators or GPUs with limited memory usage. This section explains how to perform LLM quantization using GPTQ +and bitsandbytes on AMD Instinct hardware. + +.. _fine-tune-llms-gptq: + +GPTQ +==== + +GPTQ is a post-training quantization technique where each row of the weight matrix is quantized independently to find a +version of the weights that minimizes error. These weights are quantized to ``int4`` but are restored to ``fp16`` on the +fly during inference. This can save your memory usage by a factor of four. A speedup in inference is expected because +inference of GPTQ models uses a lower bit width, which takes less time to communicate. + +Before setting up the GPTQ configuration in Transformers, ensure the `AutoGPTQ `_ library +is installed. + +Installing AutoGPTQ +------------------- + +The AutoGPTQ library implements the GPTQ algorithm. + +#. Use the following command to install the latest stable release of AutoGPTQ from pip. + + .. code-block:: shell + + # This will install pre-built wheel for a specific ROCm version + + pip install auto-gptq --no-build-isolation --extra-index-url https://huggingface.github.io/autogptq-index/whl/rocm573/ + + Or, install AutoGPTQ from source for the appropriate ROCm version (for example, ROCm 6.1). + + .. code-block:: shell + + # Clone the source code + git clone https://github.com/AutoGPTQ/AutoGPTQ.git + cd AutoGPTQ + + # Speed up the compilation by specifying PYTORCH_ROCM_ARCH to target device + PYTORCH_ROCM_ARCH=gfx942 ROCM_VERSION=6.1 pip install . + + # Show the package after the installation + +#. Run ``pip show auto-gptq`` to print information for the installed ``auto-gptq`` package. Its output should look like + this: + + .. code-block:: shell + + Name: auto-gptq + Version: 0.8.0.dev0+rocm6.1 + ... + +Using GPTQ with AutoGPTQ +------------------------ + +#. Run the following code snippet. + + .. code-block:: python + + from transformers import AutoTokenizer, TextGenerationPipeline + from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig + base_model_name = "NousResearch/Llama-2-7b-hf" + quantized_model_name = "llama-2-7b-hf-gptq" + tokenizer = AutoTokenizer.from_pretrained(base_model_name, use_fast=True) + examples = [ + tokenizer( + "auto-gptq is an easy-to-use model quantization library with user-friendly apis, based on GPTQ algorithm." + ) + ] + print(examples) + + The resulting examples should be a list of dictionaries whose keys are ``input_ids`` and ``attention_mask``. + +#. Set up the quantization configuration using the following snippet. + + .. code-block:: python + + quantize_config = BaseQuantizeConfig( + bits=4, # quantize model to 4-bit + group_size=128, # it is recommended to set the value to 128 + desc_act=False, + ) + +#. Load the non-quantized model using the AutoGPTQ class and run the quantization. + + .. code-block:: python + + # import auto_gptq class + from auto_gptq import AutoGPTQForCausalLM + # load non-quantized model + base_model = AutoGPTQForCausalLM.from_pretrained(base_model_name, quantize_config, device_map = "auto") + base_model.quantize(examples) + # save quantized model + base_model.save_quantized(quantized_model_name) + +Using GPTQ with Hugging Face Transformers +------------------------------------------ + +#. To perform a GPTQ quantization using Hugging Face Transformers, you need to create a ``GPTQConfig`` instance and set the + number of bits to quantize to, and a dataset to calibrate the weights. + + .. code-block:: python + + from transformers import AutoModelForCausalLM, AutoTokenizer, GPTQConfig + + base_model_name = " NousResearch/Llama-2-7b-hf" + tokenizer = AutoTokenizer.from_pretrained(base_model_name) + gptq_config = GPTQConfig(bits=4, dataset="c4", tokenizer=tokenizer) + +#. Load a model to quantize using ``AutoModelForCausalLM`` and pass the + ``gptq_config`` to its ``from_pretained`` method. Set ``device_map=”auto”`` to + automatically offload the model to available GPU resources. + + .. code-block:: python + + quantized_model = AutoModelForCausalLM.from_pretrained( + base_model_name, + device_map="auto", + quantization_config=gptq_config) + +#. Once the model is quantized, you can push the model and tokenizer to Hugging Face Hub for easy share and access. + + .. code-block:: python + + quantized_model.push_to_hub("llama-2-7b-hf-gptq") + tokenizer.push_to_hub("llama-2-7b-hf-gptq") + + Or, you can save the model locally using the following snippet. + + .. code-block:: python + + quantized_model.save_pretrained("llama-2-7b-gptq") + tokenizer.save_pretrained("llama-2-7b-gptq") + +ExLlama-v2 support +------------------ + +ExLlama is a Python/C++/CUDA implementation of the Llama model that is +designed for faster inference with 4-bit GPTQ weights. The ExLlama +kernel is activated by default when users create a ``GPTQConfig`` object. To +boost inference speed even further on Instinct accelerators, use the ExLlama-v2 +kernels by configuring the ``exllama_config`` parameter as the following. + +.. code-block:: python + + from transformers import AutoModelForCausalLM, GPTQConfig + pretrained_model_dir = "meta-llama/Llama-2-7b" + gptq_config = GPTQConfig(bits=4, exllama_config={"version":2}) + quantized_model = AutoModelForCausalLM.from_pretrained( + base_model_name, + device_map="auto", + quantization_config=gptq_config) + +bitsandbytes +============ + +The `ROCm-aware bitsandbytes `_ library is +a lightweight Python wrapper around CUDA custom functions, in particular 8-bit optimizer, matrix multiplication, and +8-bit and 4-bit quantization functions. The library includes quantization primitives for 8-bit and 4-bit operations +through ``bitsandbytes.nn.Linear8bitLt`` and ``bitsandbytes.nn.Linear4bit`` and 8-bit optimizers through the +``bitsandbytes.optim`` module. These modules are supported on AMD Instinct accelerators. + +Installing bitsandbytes +----------------------- + +#. To install bitsandbytes for ROCm 6.0 (and later), use the following commands. + + .. code-block:: shell + + # Clone the github repo + git clone --recurse https://github.com/ROCm/bitsandbytes.git + cd bitsandbytes + git checkout rocm_enabled + + # Install dependencies + pip install -r requirements-dev.txt + + # Use -DBNB_ROCM_ARCH to specify target GPU arch + cmake -DBNB_ROCM_ARCH="gfx942" -DCOMPUTE_BACKEND=hip -S . + + # Install + python setup.py install + +#. Run ``pip show bitsandbytes`` to show the information about the installed bitsandbytes package. Its output should + look like the following. + + .. code-block:: shell + + Name: bitsandbytes + Version: 0.44.0.dev0 + ... + +Using bitsandbytes primitives +----------------------------- + +To get started with bitsandbytes primitives, use the following code a reference. + +.. code-block:: python + + import bitsandbytes as bnb + + # Use Int8 Matrix Multiplication + bnb.matmul(..., threshold=6.0) + + # Use bitsandbytes 8-bit Optimizers + adam = bnb.optim.Adam8bit(model.parameters(), lr=0.001, betas=(0.9, 0.995)) + +Using bitsandbytes with Hugging Face Transformers +------------------------------------------------- + +To load a Transformers model in 4-bit, set ``load_int_4bt=true`` in ``BitsAndBytesConfig``. + +.. code-block:: python + + from transformers import AutoModelForCausalLM + from bitsandbytes import BitsAndBytesConfig + + base_model_name = "NousResearch/Llama-2-7b-hf" + quantization_config = BitsAndBytesConfig(load_in_4bit=True) + bnb_model_4bit = AutoModelForCausalLM.from_pretrained( + base_model_name, + device_map="auto", + quantization_config=quantization_config) + + # check the memory footprint with get_memory_footprint method + print(bnb_model_4bit.get_memory_footprint()) + +To load a model in 8-bit for inference, use the ``load_in_8bit`` option. + +.. code-block:: python + + from transformers import AutoModelForCausalLM, AutoTokenizer + from bitsandbytes import BitsAndBytesConfig + + base_model_name = "NousResearch/Llama-2-7b-hf" + + tokenizer = AutoTokenizer.from_pretrained(base_model_name) + quantization_config = BitsAndBytesConfig(load_in_8bit=True) + tokenizer = AutoTokenizer.from_pretrained(base_model_name) + bnb_model_8bit = AutoModelForCausalLM.from_pretrained( + base_model_name, + device_map="auto", + quantization_config=quantization_config) + + prompt = "What is a large language model?" + inputs = tokenizer(prompt, return_tensors="pt").to("cuda") + generated_ids = model.generate(**inputs) + outputs = tokenizer.batch_decode(generated_ids, skip_special_tokens=True) + diff --git a/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst b/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst new file mode 100644 index 000000000..b567c60cb --- /dev/null +++ b/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst @@ -0,0 +1,236 @@ +.. meta:: + :description: Model fine-tuning and inference on a multi-GPU system + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, multi-GPU, distributed, inference + +***************************************************** +Fine-tuning and inference using multiple accelerators +***************************************************** + +This section explains how to fine-tune a model on a multi-accelerator system. See +:doc:`Single-accelerator fine-tuning ` for a single accelerator or GPU setup. + +.. _fine-tuning-llms-multi-gpu-env: + +Environment setup +================= + +This section was tested using the following hardware and software environment. + +.. list-table:: + :stub-columns: 1 + + * - Hardware + - 4 AMD Instinct MI300X accelerators + + * - Software + - ROCm 6.1, Ubuntu 22.04, PyTorch 2.1.2, Python 3.10 + + * - Libraries + - ``transformers`` ``datasets`` ``accelerate`` ``huggingface-hub`` ``peft`` ``trl`` ``scipy`` + + * - Base model + - ``meta-llama/Llama-2-7b-chat-hf`` + +.. _fine-tuning-llms-multi-gpu-env-setup: + +Setting up the base implementation environment +---------------------------------------------- + +#. Install PyTorch for ROCm. Refer to the + :doc:`PyTorch installation guide `. For consistent + installation, it’s recommended to use official ROCm prebuilt Docker images with the framework pre-installed. + +#. In the Docker container, check the availability of ROCM-capable accelerators using the following command. + + .. code-block:: shell + + rocm-smi -showproductname + +#. Check that your accelerators are available to PyTorch. + + .. code-block:: python + + import torch + print("Is a ROCm-GPU detected? ", torch.cuda.is_available()) + print("How many ROCm-GPUs are detected? ", torch.cuda.device_count()) + + If successful, your output should look like this: + + .. code-block:: shell + + >>> print("Is a ROCm-GPU detected? ", torch.cuda.is_available()) + Is a ROCm-GPU detected? True + >>> print("How many ROCm-GPUs are detected? ", torch.cuda.device_count()) + How many ROCm-GPUs are detected? 4 + +.. tip:: + + During training and inference, you can check the memory usage by running the ``rocm-smi`` command in your terminal. + This tool helps you see shows which accelerators or GPUs are involved. + + +.. _fine-tuning-llms-multi-gpu-hugging-face-accelerate: + +Hugging Face Accelerate for fine-tuning and inference +=========================================================== + +`Hugging Face Accelerate `_ is a library that simplifies turning raw +PyTorch code for a single accelerator into code for multiple accelerators for LLM fine-tuning and inference. It is +integrated with `Transformers `_ allowing you to scale your PyTorch +code while maintaining performance and flexibility. + +As a brief example of model fine-tuning and inference using multiple GPUs, let's use Transformers and load in the Llama +2 7B model. + +Here, let's reuse the code in :ref:`Single-accelerator fine-tuning ` +to load the base model and tokenizer. + +Now, it's important to adjust how you load the model. Add the ``device_map`` parameter to your base model configuration. + +.. code-block:: python + + ... + base_model_name = "meta-llama/Llama-2-7b-chat-hf" + + # Load base model to GPU memory + base_model = AutoModelForCausalLM.from_pretrained( + base_model_name, + device_map = "auto" + trust_remote_code = True) + ... + # Run training + sft_trainer.train() + +.. note:: + + You can let Accelerate handle the device map computation by setting ``device_map`` to one of the supported options + (``"auto"``, ``"balanced"``, ``"balanced_low_0"``, ``"sequential"``). + + It's recommended to set the ``device_map`` parameter to ``“auto”`` to allow Accelerate to automatically and + efficiently allocate the model given the available resources (4 accelerators in this case). + + When you have more GPU memory available than the model size, here is the difference between each ``device_map`` + option: + + * ``"auto"`` and ``"balanced"`` evenly split the model on all available GPUs, making it possible for you to use a + batch size greater than 1. + + * ``"balanced_low_0"`` evenly splits the model on all GPUs except the first + one, and only puts on GPU 0 what does not fit on the others. This + option is great when you need to use GPU 0 for some processing of the + outputs, like when using the generate function for Transformers + models. + + * ``"sequential"`` will fit what it can on GPU 0, then move on GPU 1 and so forth. Not all GPUs might be used. + +After loading the model in this way, the model is fully ready to use the resources available to it. + +.. _fine-tuning-llms-multi-gpu-torchtune: + +torchtune for fine-tuning and inference +============================================= + +torchtune is a PyTorch-native library for easy single and multi-accelerator or GPU model fine-tuning and inference with +LLMs. + +#. Install torchtune using pip. + + .. code-block:: shell + + # Install torchtune with PyTorch release 2.2.2+ + pip install torchtune + + # To confirm that the package is installed correctly + tune --help + + The output should look like this: + + .. code-block:: shell + + usage: tune [-h] {download,ls,cp,run,validate} ... + + Welcome to the TorchTune CLI! + + options: + -h, --help show this help message and exit + + subcommands: + {download,ls,cp,run,validate} + +torchtune recipes are designed around easily composable components and workable training loops, with minimal abstraction +getting in the way of fine-tuning. Run ``tune ls`` to show built-in torchtune configuration recipes. + +.. code-block:: shell + + RECIPE CONFIG + full_finetune_single_device llama2/7B_full_low_memory + llama3/8B_full_single_device + mistral/7B_full_low_memory + full_finetune_distributed llama2/7B_full + llama2/13B_full + llama3/8B_full + mistral/7B_full + gemma/2B_full + lora_finetune_single_device llama2/7B_lora_single_device + llama2/7B_qlora_single_device + llama3/8B_lora_single_device + llama3/8B_qlora_single_device + llama2/13B_qlora_single_device + mistral/7B_lora_single_device + +The ``RECIPE`` column shows the easy-to-use and workable fine-tuning and inference recipes for popular fine-tuning +techniques (such as LoRA). The ``CONFIG`` column lists the YAML configurations for easily configuring training, +evaluation, quantization, or inference recipes. + +The snippet shows the architecture of a model's YAML configuration file: + +.. code-block:: yaml + + # Model Arguments + model: + _component_: torchtune.models.llama2.lora_llama2_7b + lora_attn_modules: ['q_proj', 'v_proj'] + apply_lora_to_mlp: False + apply_lora_to_output: False + lora_rank: 8 + lora_alpha: 16 + + tokenizer: + _component_: torchtune.models.llama2.llama2_tokenizer + path: /tmp/Llama-2-7b-hf/tokenizer.model + + # Dataset and Sampler + dataset: + _component_: torchtune.datasets.alpaca_cleaned_dataset + train_on_input: True + +This configuration file defines the fine-tuning base model path, data set, hyper-parameters for optimizer and scheduler, +and training data type. To download the base model for fine-tuning, run the following command: + +.. code-block:: shell + + tune download meta-llama/Llama-2-7b-hf --output-dir /tmp/Llama-2-7b-hf --hf-token + +The output directory argument for ``--output-dir`` should map the model path specified in YAML config file. + +To launch ``lora_finetune_distributed`` on four devices, run the following +command: + +.. code-block:: shell + + tune run --nnodes 1 --nproc_per_node 4 lora_finetune_distributed --config llama2/7B_lora + +If successful, you should something like the following output: + +.. code-block:: shell + + INFO:torchtune.utils.logging:FSDP is enabled. Instantiating Model on CPU for Rank 0 ... + INFO:torchtune.utils.logging:Model instantiation took 7.32 secs + INFO:torchtune.utils.logging:Memory Stats after model init: + {'peak_memory_active': 9.478172672, 'peak_memory_alloc': 8.953868288, 'peak_memory_reserved': 11.112808448} + INFO:torchtune.utils.logging:Optimizer and loss are initialized. + INFO:torchtune.utils.logging:Dataset and Sampler are initialized. + 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 `. diff --git a/docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst b/docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst new file mode 100644 index 000000000..cac5493dc --- /dev/null +++ b/docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst @@ -0,0 +1,388 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, Triton, kernel, performance, optimization + +************************* +Optimizing Triton kernels +************************* + +This section introduces the general steps for `Triton `_ kernel optimization. Broadly, +Triton kernel optimization is similar to HIP and CUDA kernel optimization. + +.. _fine-tuning-llms-triton-memory-access-efficiency: + +Memory access efficiency +======================== + +The accelerator or GPU contains global memory, local data share (LDS), and registers. Global memory has high access +latency, but is large. LDS access has much lower latency, but is smaller. Register access is the fastest yet smallest +among the three. + +So, the data in global memory should be loaded and stored as few times as possible. If different threads in a block +need to access the same data, these data should be first transferred from global memory to LDS, then accessed by +different threads in a workgroup. + +.. _fine-tuning-llms-triton-hardware-resource-utilization: + +Hardware resource utilization +============================= + +Each accelerator or GPU has multiple Compute Units (CUs) and various CUs do computation in parallel. So, how many CUs +can a compute kernel can allocate its task to? For the :doc:`AMD MI300X accelerator <../../reference/gpu-arch-specs>`, the +grid should have at least 1024 thread blocks or workgroups. + +.. figure:: ../../data/how-to/fine-tuning-llms/compute-unit.png + + Schematic representation of a CU in the CDNA2 or CDNA3 architecture. + +To increase hardware utilization and maximize parallelism, it is necessary to design algorithms that can exploit more +parallelism. One approach to achieving this is by using larger split-K techniques for General Matrix Multiply (GEMM) +operations, which can further distribute the computation across more CUs, thereby enhancing performance. + +.. tip:: + + You can query hardware resources with the command ``rocminfo`` (in the ``/opt/rocm/bin`` directory). For instance, + query the number of CUs, number of SIMD, and wavefront size using the following commands. + + .. code-block:: shell + + rocminfo | grep "Compute Unit" + + rocminfo | grep "SIMD" + + rocminfo | grep "Wavefront Size" + + On an MI300X device, there are 304 CUs, 4 SIMD per CU, and the wavefront size (warp size) is 64. See :doc:`Hardware + specifications <../../reference/gpu-arch-specs>` for a full list of AMD accelerators and GPUs. + +.. _fine-tuning-llms-triton-ir-analysis: + +IR analysis +=========== + +In Triton, there are several layouts including *blocked*, *shared*, *sliced*, and *MFMA*. + +From the Triton GPU IR (intermediate representation), you can know in which memory each computation is +performed. The following is a snippet of IR from the Flash Attention decode ``int4`` key-value program. It is to +de-quantize the ``int4`` key-value from the ``int4`` data type to ``fp16``. + +.. code-block:: + + %190 = tt.load %189 {cache = 1 : i32, evict = 1 : i32, isVolatile = + false} : tensor<1x64xi32, #blocked6> loc(#loc159) + + %266 = arith.andi %190, %cst_28 : tensor<1x64xi32, #blocked6> + loc(#loc250) + + %267 = arith.trunci %266 : tensor<1x64xi32, #blocked6> to + tensor<1x64xi16, #blocked6> loc(#loc251) + + %268 = tt.bitcast %267 : tensor<1x64xi16, #blocked6> -> tensor<1x64xf16, + #blocked6> loc(#loc252) + + %269 = triton_gpu.convert_layout %268 : (tensor<1x64xf16, #blocked6>) -> + tensor<1x64xf16, #shared1> loc(#loc252) + + %270 = tt.trans %269 : (tensor<1x64xf16, #shared1>) -> tensor<64x1xf16, + #shared2> loc(#loc194) + + %276 = triton_gpu.convert_layout %270 : (tensor<64x1xf16, #shared2>) -> + tensor<64x1xf16, #blocked5> loc(#loc254) + + %293 = arith.mulf %276, %cst_30 : tensor<64x1xf16, #blocked5> + loc(#loc254) + + %295 = arith.mulf %292, %294 : tensor<64x32xf16, #blocked5> loc(#loc264) + + %297 = arith.addf %295, %296 : tensor<64x32xf16, #blocked5> loc(#loc255) + + %298 = triton_gpu.convert_layout %297 : (tensor<64x32xf16, #blocked5>) + -> tensor<64x32xf16, #shared1> loc(#loc255) + + %299 = tt.trans %298 : (tensor<64x32xf16, #shared1>) -> + tensor<32x64xf16, #shared2> loc(#loc196) + + %300 = triton_gpu.convert_layout %299 : (tensor<32x64xf16, #shared2>) -> + tensor<32x64xf16, #triton_gpu.dot_op<{opIdx = 1, parent = #mfma, kWidth + = 4}>> loc(#loc197) + +From the IR, you can see ``i32`` data is loaded from global memory to registers. With a few element-wise operations in +registers, then it is stored in shared memory for the transpose operation, which needs data movement across different +threads. With the transpose done, it is loaded from LDS to register again, and with a few more element-wise operations, +they are stored in LDS again. The last step is to load from LDS to registers and convert to the dot-operand layout. + +From the IR, you can see that it uses the LDS twice: one for the transpose, and the other to convert the blocked layout +to a dot-operand layout. + +Assembly analysis +================= + +In the ISA, ensure ``global_load_dwordx4`` is used, especially when the +load happens in a loop. + +In most cases, the LDS load and store should use ``_b128`` as well to +minimize the number of LDS access instructions. Note that upstream (or backend) might not have ``_b128`` LDS read/write, +so it uses ``_b64``. For most cases, no matter if you use fork or upstream, +the LDS access should have ``_b64`` vector width. + +The AMD ISA has the ``s_waitcnt`` instruction to synchronize the dependency +of memory access and computations. The ``s_waitcnt`` instruction can +have two signals, typically in the context of Triton: + +* ``lgkmcnt(n):`` `lgkm` stands for LDS, GDS, Constant and Message. + + In this context, it is often related to LDS access. The number ``n`` here means the number of such accesses that can + be left out to continue. For example, 0 means all ``lgkm`` access must finish before continuing, and 1 means only 1 + ``lgkm`` access can be still running asynchronously before proceeding. + +* ``vmcnt(n):`` `vm` means vector memory. + + This happens when vector memory is accessed, for example, when global load moves from global memory to vector memory. + Again, the number ``n`` here means the number of accesses that can be left out to continue. + +Generally recommended guidelines are as follows. + +* Vectorize memory access as much as possible. + +* Ensure synchronization is done efficiently. + +* Overlap of instructions to hide latency, but it requires thoughtful + analysis of the algorithms. + +* If you find inefficiencies, you can trace it back to LLVM IR, TTGIR + and even TTIR to see where the problem comes from. If you find it + during compiler optimization, activate the MLIR dump and check which + optimization pass caused the problem. + +.. _fine-tuning-llms-triton-kernel-occupancy: + +Kernel occupancy +================ + +1. Get the VGPR count, search for ``.vgpr_count`` in the ISA (for example, ``N``). + +2. Get the allocated LDS following the steps (for example, L for the kernel). + + a. ``export MLIR_ENABLE_DUMP=1`` + + b. ``rm -rf ~/.triton/cache`` + + c. ``python kernel.py | | grep "triton_gpu.shared = " | tail -n 1`` + + d. You should see something like ``triton_gpu.shared = 65536``, indicating 65536 bytes of LDS are allocated for the + kernel. + +3. Get number of waves per workgroup using the following steps (for example, ``nW``). + + a. ``export MLIR_ENABLE_DUMP=1`` + + b. ``rm -rf ~/.triton/cache`` + + c. ``python kernel.py | | grep "triton_gpu.num-warps " | tail -n 1`` + + d. You should see something like ``“triton_gpu.num-warps" = 8``, indicating 8 waves per workgroup. + +4. Compute occupancy limited by VGPR based on N according to the following table. For example, waves per EU as + ``occ_vgpr``. + +.. _fine-tuning-llms-occupancy-vgpr-table: + +.. figure:: ../../data/how-to/fine-tuning-llms/occupancy-vgpr.png + :alt: Occupancy related to VGPR usage in an Instinct MI300X accelerator. + :align: center + +5. Compute occupancy limited by LDS based on L by: ``occ_lds = floor(65536 / L)``. + +6. Then the occupancy is ``occ = min(floor(occ_vgpr * 4 / nW), occ_lds) * nW / 4`` + + a. ``occ_vgpr \* 4`` gives the total number of waves on all 4 execution units (SIMDs) + per CU. + + b. ``floor(occ_vgpr * 4 / nW)`` gives the occupancy of workgroups per CU + regrading VGPR usage. + + c. The true ``occ`` is the minimum of the two. + +.. _fine-tuning-llms-triton-kernel-configs-env-vars: + +Auto-tunable kernel configurations and environment variables +============================================================ + +This section relates to the amount of :ref:`memory access ` and +computation assigned to each CU. It is related to the usage of LDS, registers and the scheduling of different tasks on +a CU. + +The following is a list of kernel arguments used for tuning. + +``num_stages=n`` + Adjusts the number of pipeline stages for different types of kernels. On AMD accelerators, set ``num_stages`` + according to the following rules: + + * For kernels with a single GEMM, set to ``0``. + + * For kernels with two GEMMs fused (Flash Attention, or any other kernel + that fuses 2 GEMMs), set to ``1``. + + * For kernels that fuse a single GEMM with another non-GEMM operator + (for example ReLU activation), set to ``0``. + + * For kernels that have no GEMMs, set to ``1``. + +``waves_per_eu=n`` + Helps to manage Vector General Purpose Registers (VGPR) usage to achieve desired occupancy levels. This argument + hints to the compiler to reduce VGPR to achieve ``n`` occupancy. See + :ref:`Kernel occupancy ` for more information about how to compute + occupancy. + + This argument is useful if: + + * The occupancy of the kernel is limited by VGPR usage. + + * The current VGPR usage is only a few above a boundary in + :ref:`Occupancy related to VGPR usage in an Instinct MI300X accelerator `. + + For example, according to the table, the available VGPR is 512 per Execution Unit (EU), and VGPU is allocated at the + unit of 16. If the current VGPR usage is 170, the actual requested VGPR will be 176, so the + occupancy is only 2 waves per CU since :math:`176 \times 3 > 512`. So, if you set + ``waves_per_eu`` to 3, the LLVM backend tries to bring VGPR usage down so + that it might fit 3 waves per EU. + +``BLOCK_M``, ``BLOCK_N``, ``BLOCK_K`` + Tile sizes to be tuned to balance the memory-to-computation ratio. You want tile sizes large enough to + maximize the efficiency of memory-to-computation ratio, but small enough to parallelize the greatest number of + workgroups at the grid level. + +``matrix_instr_nonkdim`` + Experimental feature for Flash Attention-like kernels that determines the size of the Matrix Fused Multiply-Add + (MFMA) instruction used. + + - ``Matrix_instr_nonkdim = 16``: ``mfma_16x16`` is used. + + - ``Matrix_instr_nonkdim = 32``: ``mfma_32x32`` is used. + + For GEMM kernels on an AMD MI300X accelerator, ``mfma_16x16`` typically outperforms ``mfma_32x32``, even for large + tile/GEMM sizes. + +The following is an environment variable used for tuning. + +``OPTIMIZE_EPILOGUE`` + Setting this variable to ``1`` can improve performance by removing the ``convert_layout`` operation in the epilogue. + It should be turned on (set to ``1``) in most cases. Setting ``OPTIMIZE_EPILOGUE=1`` stores the MFMA instruction + results in the MFMA layout directly; this comes at the cost of reduced global store efficiency, but the impact on + kernel execution time is usually minimal. + + By default (``0``), the results of MFMA instruction are converted to blocked layout, which leads to ``global_store`` + with maximum vector length, that is ``global_store_dwordx4``. + + This is done implicitly with LDS as the intermediate buffer to achieve + data exchange between threads. Padding is used in LDS to avoid bank + conflicts. This usually leads to extra LDS usage, which might reduce + occupancy. + + .. note:: + + This variable is not turned on by default because it only + works with ``tt.store`` but not ``tt.atomic_add``, which is used in split-k and + stream-k GEMM kernels. In the future, it might be enabled with + ``tt.atomic_add`` and turned on by default. + + See :ref:`IR analysis `. + +TorchInductor with Triton tuning knobs +=========================================== + +The following are suggestions for optimizing matrix multiplication (GEMM) and convolution (``conv``) operations in PyTorch +using ``inductor``, a part of the PyTorch compilation framework. The goal is to leverage Triton to achieve better +performance. + +Learn more about TorchInductor environment variables and usage in +`PyTorch documentation `_. + +To enable a ``gemm``/``conv`` lowering to Triton, it requires use of ``inductor``’s ``max_autotune`` mode. This benchmarks a +static list of Triton configurations (``conv`` configurations for max auto-tune + ``matmul`` configurations for max +auto-tune) and uses the fastest for each shape. Note that the Triton is not used if regular :doc:`MIOpen ` +or :doc:`rocBLAS ` is faster for a specific operation. + +* Set ``torch._inductor.config.max_autotune = True`` or ``TORCHINDUCTOR_MAX_AUTOTUNE=1``. + +* Or, for more fine-grained control: + + ``torch._inductor.config.max_autotune.pointwise = True`` + To enable tuning for ``pointwise``/``reduction`` ops. + + ``torch._inductor.config.max_autotune_gemm = True`` + To enable tuning or lowering of ``mm``/``conv``\s. + + ``torch._inductor.max_autotune_gemm_backends/TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDS`` + To select the candidate backends for ``mm`` auto-tuning. Defaults to + ``TRITON,ATEN,NV``. This also includes the ``CUTLASS`` tuning option. Limiting this to + ``TRITON`` might improve performance by enabling more fused ``mm`` kernels + instead of going to rocBLAS. + +* For ``mm`` tuning, tuning ``coordinate_descent`` might improve performance. + + ``torch._inductor.config.coordinate_descent_tuning = True`` or ``TORCHINDUCTOR_COORDINATE_DESCENT_TUNING=1`` + +* Inference can see large improvements on AMD GPUs by utilizing + ``torch._inductor.config.freezing=True`` or the ``TORCHINDUCTOR_FREEZING=1`` variable, which + in-lines weights as constants and enables constant folding optimizations. + +* Enabling ``inductor``’s cpp_wrapper might improve overhead. This generates + C++ code which launches Triton binaries directly with + ``hipModuleLaunchKernel`` and relies on `hipification`. + +* For NHWC convolutions workloads + ``torch._inductor.config.layout_optimization=True`` or ``TORCHINDUCTOR_LAYOUT_OPTIMIZATION=`` + can help be enforcing channels_last format throughout the graph avoiding + any additional transposes added by ``inductor``. Note that + ``PYTORCH_MIOPEN_SUGGEST_NHWC=1`` is recommended if using this. + +* Extracting the Triton kernel ``TORCH_COMPILE_DEBUG`` creates a + ``torch_compile_debug/`` directory at current path, in the ``output_code.py`` + the code-strings for the Triton kernels that are defined. Manual work is + then required to strip out the kernel and create kernel + compilation and launch via Triton. + +* For advanced ``matmul`` or ``conv`` configuration tuning, the ``inductor-gemm-tuner`` can + help. This implements the Triton ``conv``/``mm`` implementations used upstream + and allows specification of inputs and configuration tuning search space if new + tunings are found that can be added to the auto-tune list. + +Other guidelines +================ + +* Performance-critical HIP provides an environment variable, ``export HIP_FORCE_DEV_KERNARG=1``, + that can put HIP kernel arguments directly to + device memory to reduce the latency of accessing kernel arguments. It + can reduce 2 to 3 μs for some kernels. Setting this variable for the FA + decode containing ``splitK`` and reduced kernels can reduce the total time + by around 6 μs in the benchmark test. + +* Set the clock to deterministic. Use the command ``rocm-smi --setperfdeterminism 1900`` to set the max clock speed to + 1900MHz instead of the default 2100MHz. This can reduce the chance of clock speed decrease due to chip high temperature + by setting a lower cap. You can restore this setting to its default value with ``rocm-smi -r``. + +* Set Non-Uniform Memory Access (NUMA) auto-balance. Run the command ``cat /proc/sys/kernel/numa_balancing`` to check the + current setting. An output of ``0`` indicates this setting is available. If output is ``1``, run the command + ``sudo sh -c \\'echo 0 > /proc/sys/kernel/numa_balancing`` to set this. + +For these settings, the ``env_check.sh`` script automates the setting, resetting, and checking of the such +environments. Find the script at ``__. + +.. _fine-tuning-llms-triton-tunableop: + +TunableOp +--------- +`TunableOp `_ +is a feature used to define and optimize kernels that can have tunable parameters. This is useful in +optimizing the performance of custom kernels by exploring different parameter configurations to find the most efficient +setup. See more about PyTorch TunableOp :ref:`Model acceleration libraries `. + +You can easily manipulate the behavior TunableOp through environment variables, though you could use the C++ interface +``at::cuda::tunable::getTuningContext()``. A Python interface to the ``TuningContext`` does not yet exist. + +The default value is ``0``, which means only 1 iteration is attempted. Remember: there’s an overhead to tuning. To try +and minimize the overhead, only a limited number of iterations of a given operation are attempted. If you set this to +``10``, each solution for a given operation can run as many iterations as possible within 10ms. There is a hard-coded +upper limit of 100 iterations attempted per solution. This is a tuning parameter; if you want the tunings to be chosen +based on an average over multiple iterations, increase the allowed tuning duration. diff --git a/docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md b/docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md new file mode 100644 index 000000000..6196f9d76 --- /dev/null +++ b/docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md @@ -0,0 +1,484 @@ + + + + + + +# Optimizing with Composable Kernel + +The AMD ROCm™ Composable Kernel (CK) library provides a programming model for writing performance-critical kernels for machine learning workloads. It generates a general-purpose kernel during the compilation phase through a C++ template, enabling developers to achieve operation fusions on different data precisions. + +This article gives a high-level overview of CK General Matrix Multiplication (GEMM) kernel based on the design example of `03_gemm_bias_relu`. It also outlines the steps to construct the kernel and run it. Moreover, the article provides a detailed implementation of running SmoothQuant quantized INT8 models on AMD Instinct MI300X accelerators using CK. + +## High-level overview: a CK GEMM instance + +GEMM is a fundamental block in linear algebra, machine learning, and deep neural networks. It is defined as the operation: +{math}`E = α \times (A \times B) + β \times (D)`, with A and B as matrix inputs, α and β as scalar inputs, and D as a pre-existing matrix. +Take the commonly used linear transformation in a fully connected layer as an example. These terms correspond to input activation (A), weight (B), bias (D), and output (E), respectively. The example employs a `DeviceGemmMultipleD_Xdl_CShuffle` struct from CK library as the fundamental instance to explore the compute capability of AMD Instinct accelerators for the computation of GEMM. The implementation of the instance contains two phases: + +- [Template parameter definition](#template-parameter-definition) +- [Instantiating and running the templated kernel](#instantiating-and-running-the-templated-kernel) + +### Template parameter definition + +The template parameters of the instance are grouped into four parameter types: + +- [Parameters for determining matrix data precision](matrix-data-precision) +- [Parameters for determining matrix data layout](matrix-data-layout) +- [Parameters for determining extra operations on matrix elements](matrix-element-operation) +- [Performance-oriented tunable parameters](tunable-parameters) + + +```{figure} ../../data/how-to/fine-tuning-llms/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. +``` + +(matrix-data-precision)= + +#### Matrix data precision + +A, B, D, and E are defined as half-precision floating-point datatypes. The multiply-add results of matrix A and B are added with a pre-existing matrix D (half-precision), and the final GEMM results are also half-precision floating-points. + +```c++ +using ADataType = F16; +using BDataType = F16; +using AccDataType = F32; +using CShuffleDataType = F16; +using DDataType = F16; +using EDataType = F16; +``` + +`ADataType` and `BDataType` denote the data precision of the A and B input matrices. `AccDataType` determines the data precision used for representing the multiply-add results of A and B elements. These results are stored in a `CShuffle` module in local data share (LDS), a low-latency and high-bandwidth explicitly-addressed memory used for synchronization within a workgroup LDS for later use. + +`CShuffleDataType` denotes the data precision of `CShuffle` in LDS. + +`DDataType` denotes the data precision of the pre-existing D matrix stored in GPU global memory, while `EDatatype` denotes the data precision of the final output. The CK kernel supports a fusion strategy so that `CShuffle` can be added with a single pre-existing matrix in the same GPU kernel for better performance. + +(matrix-data-layout)= + +#### Matrix data layout + +```c++ +using ALayout = Row; +using BLayout = Col; +using DLayout = Row; +using ELayout = Row; +``` + +Following the convention of various linear algebra libraries, CK assumes that the input matrix A is an M x K matrix, meaning the matrix has M rows and K columns. Similarly, matrix B is assumed to be K x N, meaning it has K rows and N columns. In computing, row-major order and column-major order are commonly used ways to store matrices in linear storage. After understanding the matrix storage pattern, the underlying optimized memory access manner can be applied to achieve better performance depending on the storage ordering of these matrices. + +(matrix-element-operation)= + +#### Matrix element operation + +```c++ +using AElementOp = PassThrough; +using BElementOp = PassThrough; +using CDEElementOp = AddRelu; +``` + +CK supports the pre-processing of the matrix before calculating GEMM, that is, `C = AElementOp(A) * BElementOp(B)`. It similarly supports the post-processing of GEMM results the same way, that is, `E = CDEElementOp(C, D)`. + +`AElementOp` and `BElementOp` determine the operation applied to matrix A and B separately before GEMM, which is achieved by binding the operation with a C++ struct function. + +The above `PassThrough` denotes no operations are performed on the target matrix. `CDEELementOp` determines the operations applied to `CShuffle` output and matrix D. The following binding struct `AddRelu` shows an example of adding the `CShuffle` output and matrix D, and ReLU (Rectified Linear Unit) operations to the addition result. It then passes the results to matrix E. + +```c++ +struct AddRelu +{ + __host__ __device__ void operator()(ck::half_t& e, const ck::half_t& c, const ck::half_t& d) const + { + const ck::half_t x = c + d; + e = x > 0 ? x : 0; + } +}; +``` + +(tunable-parameters)= + +#### Tunable parameters + +The CK instance includes a series of tunable template parameters to control the parallel granularity of the workload to achieve load balancing on different hardware platforms. + +These parameters include Block Size, M/N/K Per Block, M/N per XDL, AK1, BK1, etc. + +- Block Size determines the number of threads in the thread block. +- M/N/K Per Block determines the size of tile that each thread block is responsible for calculating. +- M/N Per XDL refers to M/N size for Instinct accelerator Matrix Fused Multiply Add (MFMA) instructions operating on a per-wavefront basis. +- A/B K1 is related to the data type. It can be any value ranging from 1 to K Per Block. To achieve the optimal load/store performance, 128bit per load is suggested. In addition, the A/B loading parameters must be changed accordingly to match the A/B K1 value; otherwise, it will result in compilation errors. + +Conditions for achieving computational load balancing on different hardware platforms can vary. + +### Instantiating and running the templated kernel + +After determining the template parameters, we instantiate the kernel with actual arguments. Do one of the following: + +- Use `GetDeviceBuffer` from CK’s custom struct `DeviceMem` to pass the element values of the matrices that need to be calculated. +- Allocate device buffer via `hipMalloc`. Ensure the device buffer size can fit the matrix size. +- Pass matrix elements through the `data_ptr` method in the `Tensor` object if the matrix to be calculated is of `Tensor` type. + +The row and column, and stride information of input matrices are also passed to the instance. For batched GEMM, you must pass in additional batch count and batch stride values. The extra operations for pre and post-processing are also passed with an actual argument; for example, α and β for GEMM scaling operations. Afterward, the instantiated kernel is launched by the invoker, as illustrated in Figure 3. + + +```{figure} ../../data/how-to/fine-tuning-llms/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. +``` + +## Developing fused INT8 kernels for SmoothQuant models + +[SmoothQuant](https://github.com/mit-han-lab/smoothquant) (SQ) is a quantization algorithm that enables an INT8 quantization of both weights and activations for all the matrix multiplications in LLM. The required GPU kernel functionalities used to accelerate the inference of SQ models on Instinct accelerators are shown in the following table. + +:::{table} Functionalities used to implement SmoothQuant model inference. + +| Functionality descriptions | Corresponding wrappers | +|:-------------------------------------|-----------------------------------------| +| {math}`E = α \times (A \times B) + β \times (D)`, where A, B, D, E are INT8 2-D tensors; | E = Linear_ABDE_I8(A, B, D, {math}`\alpha`, {math}`\beta`) | +| {math}`E = RELU (α \times (A \times B) + β \times (D))`, where A, B, D, E are INT8 2-D tensors; | E = Linear_ReLU_ABDE_I8(A, B, D, {math}`\alpha`, {math}`\beta`) | +| {math}`E = α \times (A \times B) + β \times (D)`, where A, B are INT8 2-D tensors, D and E are FP32 2-D tensors; | E = Linear_AB_I8_DE_F32(A, B, D, {math}`\alpha`, {math}`\beta`) | +| {math}`E = α \times (A \times B)`, where A, B, E are INT8 3-D tensors; | E = BMM_ABE_I8(A, B, {math}`\alpha`) | +| {math}`E = α \times (A \times B)`, where A, B are INT8 3-D tensors, E is FP32 3-D tensor; | E = BMM_AB_I8_E_F32(A, B, {math}`\alpha`) | +::: + +### Operation flow analysis + +The following section discusses the analysis of the operation flow of `Linear_ReLU_ABDE_I8`. The rest of the wrappers in Table 1 can be analyzed similarly. + +The first operation in the process is to perform the multiplication of input matrices A and B. The resulting matrix C is then scaled with α to obtain T1. At the same time, the process performs a scaling operation on D elements to obtain T2. Afterward, the process performs matrix addition between T1 and T2, element activation calculation using ReLU, and element rounding sequentially. The operations to generate E1, E2, and E are encapsulated and completed by a user-defined template function in CK (given in the next sub-section). This template function is integrated into the fundamental instance directly during the compilation phase so that all these steps can be fused in a single GPU kernel. + + +```{figure} ../../data/how-to/fine-tuning-llms/ck-operation_flow.jpg +Operation flow. +``` + +The CK library contains many fundamental instances that implement different functions. Familiarize yourself with the names of various CK instances and determine whether they meet the target functional requirements. + +Second, consider whether the format of input data meets your actual calculation needs. For SQ models, the 8-bit integer data format (INT8) is applied for matrix calculations. + +Third, consider the platform for implementing CK instances. The instances suffixed with `xdl` only run on AMD Instinct accelerators after being compiled and cannot run on Radeon-series GPUs. This is due to the underlying device-specific instruction sets for implementing these basic instances. + +Here, we use [DeviceBatchedGemmMultiD_Xdl](https://github.com/ROCm/composable_kernel/tree/develop/example/24_batched_gemm) as the fundamental instance to implement the functionalities in the previous table. + + +```{figure} ../../data/how-to/fine-tuning-llms/ck-root_instance.jpg +Use the ‘DeviceBatchedGemmMultiD_Xdl’ instance as a root. +``` + +The `DeviceBatchedGemmMultiD_Xdl` instance realizes the batched GEMM `BMM_ABE_I8` and `BMM_AB_I8_E_F32` kernels directly by using the proper input and output data precision types. + +Based on the two batched GEMM kernels, GEMM kernel `Linear_ABDE_I8` and `Linear_AB_I8_DE_F32` can be implemented by expanding their input 2-D tensors to 3-D tensors. Then, the 3-D output tensors produced by the root instance are squeezed back to 2-D output tensors before returning back. + +For example, unsqueeze A (M, K) to A (1, M, K) before assigning it into the root instance and squeeze E (1, M, N) to (M, N) after the calculations of the root instance return back. `Linear_ReLU_ABDE_I8` is implemented by adding a ReLU operation on the result output of `Linear_ABDE_I8`. + +### Developing the complete function + +The inference of SQ quantized models relies on using PyTorch and Transformer libraries, and a tensor type is used to represent matrices and vectors in `torch`, the C++ data types in CK need to be replaced with the `torch::tensor` type. The data types of the input and output matrices should be a `tensor` type. + +In GEMM, the A and B inputs are two-dimensional matrices, and the required input matrices of the selected fundamental CK instance are three-dimensional matrices. Therefore, we must convert the input 2-D tensors to 3-D tensors, by using `tensor`'s `unsqueeze()` method before passing these matrices to the instance. For batched GEMM in the preceding table, ignore this step. + +```c++ +// Function input and output +torch::Tensor linear_relu_abde_i8( + torch::Tensor A_, + torch::Tensor B_, + torch::Tensor D_, + float alpha, + float beta) +{ + // Convert torch::Tensor A_ (M, K) to torch::Tensor A (1, M, K) + auto A = A_.unsqueeze(0); + + // Convert torch::Tensor B_ (K, N) to torch::Tensor A (1, K, N) + auto B = B_.unsqueeze(0); +... +``` + +As shown in the following code block, we obtain M, N, and K values using input tensor size values. This stride size information is used to reshape the input vector D and allocate the storage space of tensor E. Stride reflects the exact size of continuous elements in memory, which are passed as important parameters to the fundamental instance for GPU kernel use. + +```c++ + // Return the batch count from the size of dimension 0 + int batch_count = A.size(0); + + // Return the M, N, K from the size of dimension 1 & 2 + int M = A.size(1); + int N = B.size(1); + int K = A.size(2); + + // Initialize the stride size for A, B, D and E + int stride_A = K; + int stride_B = K; + int stride_D0 = N; + int stride_E = N; + + // Initialize the stride size for batched A, B, D and E + long long int batch_stride_A = M * K; + long long int batch_stride_B = K * N; + long long int batch_stride_D0 = M * N; + long long int batch_stride_E = M * N; + + // Convert the tensor of 2-D to 3-D + auto D = D_.view({1,-1}).repeat({M, 1}); + + // Allocate memory for E + auto E = torch::empty({batch_count, M, N}, + torch::dtype(torch::kInt8).device(A.device())); +``` + +In the following code block, `ADataType`, `BDataType` and `D0DataType` are used to denote the data precision of the input tensors A, B and D, respectively. `EDataType` is used to denote the data precision of output tensor E. These parameters are specified to `I8` data format (8-bit integer data format) to meet the kernel's design requirements. + +`AccDataType` determines the data precision used to represent the multiply-add results of A and B elements. Generally, a larger range data type is applied to store the multiply-add results of A and B to avoid result overflow; `I32` is applied in this case. The `CShuffleDataType I32` data type indicates that the multiply-add results continue to be stored in LDS as an `I32` data format. All of this is implemented through the following code block. + +```c++ + // Data precision + using ADataType = I8; + using BDataType = I8; + using AccDataType = I32; + using CShuffleDataType = I32; + using D0DataType = I8; + using DsDataType = ck::Tuple; + using EDataType = I8; +``` + +Following the convention of various linear algebra libraries, row-major and column-major orders are used to denote the ways of storing matrices in linear storage. The advantage of specifying matrix B as column major is that all the relevant matrix elements are stored continuously in GPU global memory when a row in A is multiplied by a column in B, which can help GPU achieve data consistency access to improve access performance. + +```c++ + // Specify tensor order + using ALayout = RowMajor; + using BLayout = ColumnMajor; + using D0Layout = RowMajor; + using DsLayout = ck::Tuple; + using ELayout = RowMajor; +``` + +In CK, `PassThrough` is a struct denoting if an operation is applied to the tensor it binds to. To fuse the operations between E1, E2, and E introduced in section [Operation flow analysis](#operation-flow-analysis), we define a custom C++ struct, `ScaleScaleAddRelu`, and bind it to `CDEELementOp`. It determines the operations that will be applied to `CShuffle` (A×B results), tensor D, α, and β. + +```c++ + // No operations bound to the elements of A and B + using AElementOp = PassThrough; + using BElementOp = PassThrough; + + // Operations bound to the elements of C, D and E + using CDEElementOp = ScaleScaleAddRelu; +``` + +In the binding struct, `operator()` performs an addition operation between `CShuffle` and matrix D, a ReLU operation on the addition results, and a rounding operation on the output elements. It then returns the results to E. + +```c++ +struct ScaleScaleAddRelu { + + template <> + __host__ __device__ constexpr void + operator()(I8& e, const I32& c, const I8& d) const + { + // Scale AxB result with alpha + const F32 c_scale = ck::type_convert(c) * alpha; + + // Scale D with beta + const F32 d_scale = ck::type_convert(d) * beta; + + // Perform addition operation + F32 temp = c_scale + d_scale; + + // Perform RELU operation + temp = temp > 0 ? temp : 0; + + // Perform rounding operation + temp = temp > 127 ? 127 : temp; + + // Return to E + e = ck::type_convert(temp); + } + + F32 alpha; + F32 beta; +}; +``` + +The original input tensors need to be padded to meet GPU tile-based parallelism. + +```c++ +static constexpr auto GemmDefault = ck::tensor_operation::device::GemmSpecialization::MNKPadding; +``` + +The template parameters of the target fundamental instance are initialized with the above parameters and includes default tunable parameters. For specific tuning methods, see [Tunable parameters](#tunable-parameters). + +```c++ +using DeviceOpInstance = ck::tensor_operation::device::DeviceBatchedGemmMultiD_Xdl< + // Tensor layout + ALayout, BLayout, DsLayout, ELayout, + // Tensor data type + ADataType, BDataType, AccDataType, CShuffleDataType, DsDataType, EDataType, + // Tensor operation + AElementOp, BElementOp, CDEElementOp, + // Padding strategy + GemmDefault, + // Tunable parameters + tunable parameters>; +``` + +Return the address of the first element of tensors: + +```c++ + auto A_ref = A.data_ptr(); + auto B_ref = B.data_ptr(); + auto D0_ref = D.data_ptr(); + auto E_ref = E.data_ptr(); +``` + +The fundamental instance is then initialized and run with actual arguments: + +```c++ + auto device_op = DeviceOpInstance{}; + auto invoker = device_op.MakeInvoker(); + auto argument = device_op.MakeArgument( + A_ref, B_ref, {D0_ref}, E_ref, + M, N, K, + batch_count, + stride_A, stride_B, {stride_D0}, stride_E, + batch_stride_A, batch_stride_B, {batch_stride_D0}, batch_stride_E, + AElementOp{}, BElementOp{}, CDEElementOp{alpha, beta}); + +invoker.Run(argument, StreamConfig{nullptr, 0}); +``` + +The output of the fundamental instance is a calculated batched matrix E (batch, M, N). Before the return, it needs to be converted to a 2-D matrix if a normal GEMM result is required. + +```c++ +// Convert (1, M, N) to (M, N) +return E.squeeze(0); +``` + +### Binding to Python + +Since these functions are written in C++ and `torch::Tensor`, you can use `pybind11` to bind the functions and import them as Python modules. For the example, the necessary binding code for exposing the functions in the table spans but a few lines. + +```c++ +#include + +PYBIND11_MODULE(TORCH_EXTENSION_NAME, m){ + m.def("linear_ab_i8_de_f32", &linear_ab_i8_de_f32); + m.def("linear_relu_abde_i8", &linear_relu_abde_i8); + m.def("linear_abde_i8", &linear_abde_i8); + m.def("bmm_abe_i8", &bmm_abe_i8); + m.def("bmm_ab_i8_e_f32", &bmm_ab_i8_e_f32); +} +``` + +Build the C++ extension by writing a `setup.py` script that uses `setuptools` to compile the C++ code. A reference implementation of the `setup.py` script is as follows. + +```python +import os +from setuptools import setup, find_packages +from torch.utils import cpp_extension +from torch.utils.cpp_extension import BuildExtension + +os.environ["CC"] = "hipcc" +os.environ["CXX"] = "hipcc" + +sources = [ + 'torch_int/kernels/linear.cpp', + 'torch_int/kernels/bmm.cpp', + 'torch_int/kernels/pybind.cpp', +] + +include_dirs = ['torch_int/kernels/include'] +extra_link_args = ['libutility.a'] +extra_compile_args = ['-O3','-DNDEBUG', '-std=c++17', '--offload-arch=gfx942', '-DCK_ENABLE_INT8', '-D__HIP_PLATFORM_AMD__=1'] + +setup( + name='torch_int', + ext_modules=[ + cpp_extension.CUDAExtension( + name='torch_int.rocm', + sources=sources, + include_dirs=include_dirs, + extra_link_args=extra_link_args, + extra_compile_args=extra_compile_args + ), + ], + cmdclass={ + 'build_ext': BuildExtension.with_options(use_ninja=False) + }, + packages=find_packages( + exclude=['notebook', 'scripts', 'tests']), +) +``` + +Run `python setup.py install` to build and install the extension. It should look something like Figure 6: + + +```{figure} ../../data/how-to/fine-tuning-llms/ck-compilation.jpg +Compilation and installation of the INT8 kernels. +``` + +### INT8 model inference and performance + +The implementation architecture of running SmoothQuant models on MI300X GPUs is illustrated in Figure 7, where (a) shows the decoder layer composition components of the target model, (b) shows the major implementation class for the decoder layer components, and \(c\) denotes the underlying GPU kernels implemented by CK instance. + + +```{figure} ../../data/how-to/fine-tuning-llms/ck-inference_flow.jpg +The implementation architecture of running SmoothQuant models on AMD MI300X accelerators. +``` + +For the target [SQ quantized model](https://huggingface.co/mit-han-lab/opt-13b-smoothquant), each decoder layer contains three major components: attention calculation, layer normalization, and linear transformation in fully connected layers. The corresponding implementation classes for these components are: + +- `Int8OPTAttention` +- `W8A8B8O8LinearReLU` +- `W8A8BF32OF32Linear` + + These classes' underlying implementation logits will harness the functions in previous table. Note that for the example, the `LayerNormQ` module is implemented by the torch native module. + +Testing environment: +The hardware platform used for testing equips with 256 AMD EPYC 9534 64-Core Processor, 8 AMD Instinct MI300X accelerators and 1.5T memory. The testing was done in a publicly available Docker image from Docker Hub: +[`rocm/pytorch:rocm6.1_ubuntu22.04_py3.10_pytorch_2.1.2`](https://hub.docker.com/layers/rocm/pytorch/rocm6.1_ubuntu22.04_py3.10_pytorch_2.1.2/images/sha256-f6ea7cee8aae299c7f6368187df7beed29928850c3929c81e6f24b34271d652b) + +The tested models are OPT-1.3B, 2.7B, 6.7B and 13B FP16 models and the corresponding SmoothQuant INT8 OPT models were obtained from Hugging Face. + +Note that since the default values were used for the tunable parameters of the fundamental instance, the performance of the INT8 kernel is suboptimal. + +Figure 8 shows the performance comparisons between the original FP16 and the SmoothQuant-quantized INT8 models on a single MI300X accelerator. The GPU memory footprints of SmoothQuant-quantized models are significantly reduced. It also indicates the per-sample inference latency is significantly reduced for all SmoothQuant-quantized OPT models (illustrated in (b)). Notably, the performance of the CK instance-based INT8 kernel steadily improves with an increase in model size. + + +```{figure} ../../data/how-to/fine-tuning-llms/ck-comparisons.jpg +Performance comparisons between the original FP16 and the SmoothQuant-quantized INT8 models on a single MI300X accelerator. +``` + +For accuracy comparisons between the original FP16 and INT8 models, the evaluation is done by using the first 1,000 samples from the LAMBADA dataset's validation set. We employ the same Last Token Prediction Accuracy method introduced in [SmoothQuant Real-INT8 Inference for PyTorch](https://github.com/mit-han-lab/smoothquant/blob/main/examples/smoothquant_opt_real_int8_demo.ipynb) as our evaluation metric. The comparison results are shown in Table 2. + +:::{table} The inference accuracy comparisons of SmoothQuant quantized models on Instinct MI300X. + +| Models | Hugging Face FP16 model accuracy | SmoothQuant quantized INT8 model accuracy | +|:-----------------|----------------------------------------|---------------------------------------------| +| opt-1.3B | 0.72 | 0.70 | +| opt-2.7B | 0.76 | 0.75 | +| opt-6.7B | 0.80 | 0.79 | +| opt-13B | 0.79 | 0.77 | +::: + +## Conclusion + +CK provides a rich set of template parameters for generating flexible accelerated computing kernels for difference application scenarios. + +CK supports multiple instruction sets of AMD Instinct GPUs, operator fusion and different data precisions. Its composability helps users quickly construct operator performance verification. + +With CK, you can build more effective AI applications with higher flexibility and better performance on different AMD accelerator platforms. diff --git a/docs/how-to/fine-tuning-llms/overview.rst b/docs/how-to/fine-tuning-llms/overview.rst new file mode 100644 index 000000000..90330cdbd --- /dev/null +++ b/docs/how-to/fine-tuning-llms/overview.rst @@ -0,0 +1,104 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, optimzation, LoRA, walkthrough + +*************************************** +Conceptual overview of fine-tuning LLMs +*************************************** + +Large language models (LLMs) are trained on massive amounts of text data to generate coherent and fluent text. The +underlying *transformer* architecture is the fundamental building block of all LLMs. Transformers serve as the +enable LLMs to understand and generate text by capturing contextual relationships and long-range dependencies. To better +understand the philosophy of the transformer architecture, review the foundational +`Attention is all you need `_ paper. + +By further training pre-trained LLMs, the fine-tuned model can gain knowledge related to specific fields or tasks, +thereby significantly improving its performance in that field or task. The core idea of fine-tuning is to use the +parameters of the pre-trained model as the starting point for new tasks and shape it through a small amount of +specific domain or task data, expanding the original model's capability to new tasks or datasets. + +Fine-tuning can effectively improve the performance of existing pre-trained models in specific application scenarios. +Continuous training and adjustment of the parameters of the base model in the target domain or task can better capture +the semantic characteristics and patterns in specific scenarios, thereby significantly improving the key indicators of +the model in that domain or task. For example, by fine-tuning the Llama 2 model, its performance in certain applications +can be improve over the base model. + +.. _fine-tuning-llms-concept-challenge: + +The challenge of fine-tuning models +=================================== + +However, the computational cost of fine-tuning is still high, especially for complex models and large datasets, which +poses distinct challenges related to substantial computational and memory requirements. This might be a barrier for +accelerators or GPUs with low computing power or limited device memory resources. + +For example, suppose we have a language model with 7 billion (7B) parameters, represented by a weight matrix :math:`W`. +During backpropagation, the model needs to learn a :math:`ΔW` matrix, which updates the original weights to minimize the +value of the loss function. + +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/fine-tuning-llms/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`) + and matrix B (:math:`K\times N`) is :math:`ΔW(M\times N)`; dimension K is a hyperparameter. By representing + :math:`ΔW` as the product of two smaller matrices (A and B) with a lower rank K, the number of trainable parameters + is significantly reduced. + +.. _fine-tuning-llms-concept-optimizations: + +Optimizations for model fine-tuning +=================================== + +Low-Rank Adaptation (LoRA) is a technique allowing fast and cost-effective fine-tuning of state-of-the-art LLMs that can +overcome this issue of high memory consumption. + +LoRA accelerates the adjustment process and reduces related memory costs. To be precise, LoRA decomposes the portion of +weight changes :math:`ΔW` into high-precision low-rank representations, which do not require the calculations of all +:math:`ΔW`. It learns the decomposition representation of :math:`ΔW` during training, as shown in +:ref:`the weight update diagram `. This is how LoRA saves on +computing resources. + +LoRA is integrated into the `Hugging Face Parameter-Efficient Fine-Tuning (PEFT) +`_ library, as well as other computation and memory efficiency optimization +variants for model fine-tuning such as `AdaLoRA `_. This +library efficiently adapts large pre-trained models to various downstream applications without fine-tuning all model +parameters. PEFT methods only fine-tune a few model parameters, significantly decreasing computational and storage +costs while yielding performance comparable to a fully fine-tuned model. PEFT is integrated with the `Hugging Face +Transformers `_ library, providing a faster and easier way to load, +train, and use large models for inference. + +To simplify running a fine-tuning implementation, the `Transformer Reinforcement Learning (TRL) +`_ library provides a set of tools to train transformer language models with +reinforcement learning, from the Supervised Fine-Tuning step (SFT), Reward Modeling step (RM), to the Proximal Policy +Optimization (PPO) step. The ``SFTTrainer`` API in TRL encapsulates these PEFT optimizations so you can easily import +their custom training configuration and run the training process. + +.. _fine-tuning-llms-walkthrough-desc: + +Walkthrough +=========== + +To demonstrate the benefits of LoRA and the ideal compute compatibility of using PEFT and TRL libraries on AMD +ROCm-compatible accelerators and GPUs, let's step through a comprehensive implementation of the fine-tuning process +using the Llama 2 7B model with LoRA tailored specifically for question-and-answer tasks on AMD MI300X accelerators. + +Before starting, review and understand the key components of this walkthrough: + +- `Llama 2 `_: a family of large language models developed and publicly released by + Meta. Its variants range in scale from 7 billion to 70 billion parameters. + +- Fine-tuning: a critical process that refines LLMs for specialized tasks and optimizes performance. + +- LoRA: a memory-efficient implementation of LLM fine-tuning that significantly reduces the number of trainable + parameters. + +- `SFTTrainer `_: an optimized + trainer with a simple interface to easily fine-tune pre-trained models with PEFT adapters, for example, LoRA, for + memory efficiency purposes on a custom dataset. + +Continue the walkthrough in :doc:`Fine-tuning and inference `. diff --git a/docs/how-to/fine-tuning-llms/profiling-and-debugging.rst b/docs/how-to/fine-tuning-llms/profiling-and-debugging.rst new file mode 100644 index 000000000..4371fca4a --- /dev/null +++ b/docs/how-to/fine-tuning-llms/profiling-and-debugging.rst @@ -0,0 +1,217 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, profiling, debugging, performance, Triton + +*********************** +Profiling and debugging +*********************** + +This section discusses profiling and debugging tools and some of their common usage patterns with ROCm applications. + +PyTorch Profiler +================ + +`PyTorch Profiler `_ can be invoked inside Python scripts, letting you +collect CPU and GPU performance metrics while the script is running. See the `PyTorch Profiler tutorial +`_ for more information. + +You can then visualize and view these metrics using an open-source profile visualization tool like +`Perfetto UI `_. + +#. Use the following snippet to invoke PyTorch Profiler in your code. + + .. code-block:: python + + import torch + import torchvision.models as models + from torch.profiler import profile, record_function, ProfilerActivity + model = models.resnet18().cuda() + inputs = torch.randn(2000, 3, 224, 224).cuda() + + with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA]) as prof: + with record_function("model_inference"): + model(inputs) + prof.export_chrome_trace("resnet18_profile.json") + +#. Profile results in ``resnet18_profile.json`` can be viewed by the Perfetto visualization tool. Go to + ``__ and import the file. In your Perfetto visualization, you'll see that the upper section + shows transactions denoting the CPU activities that launch GPU kernels while the lower section shows the actual GPU + activities where it processes the ``resnet18`` inferences layer by layer. + + .. figure:: ../../data/how-to/fine-tuning-llms/perfetto-trace.svg + + Perfetto trace visualization example. + +ROCm profiling tools +==================== + +Heterogenous systems, where programs run on both CPUs and GPUs, introduce additional complexities. Understanding the +critical path and kernel execution is all the more important; so, performance tuning is a necessary component in the +benchmarking process. + +With AMD's profiling tools, developers are able to gain important insight into how efficiently their application is +using hardware resources and effectively diagnose potential bottlenecks contributing to poor performance. Developers +working with AMD Instinct accelerators have multiple tools depending on their specific profiling needs; these are: + +* :ref:`ROCProfiler ` +* :ref:`Omniperf ` +* :ref:`Omnitrace ` + +.. _fine-tuning-llms-profiling-rocprof: + +ROCProfiler +----------- +:doc:`ROCProfiler ` is primarily a low-level API for accessing and extracting GPU hardware performance +metrics, commonly called *performance counters*. These counters quantify the performance of the underlying architecture +showcasing which pieces of the computational pipeline and memory hierarchy are being utilized. + +Your ROCm installation contains a script or executable command called ``rocprof`` which provides the ability to list all +available hardware counters for your specific accelerator or GPU, and run applications while collecting counters during +their execution. + +This ``rocprof`` utility also depends on the :doc:`ROCTracer and ROC-TX libraries `, giving it the +ability to collect timeline traces of the accelerator software stack as well as user-annotated code regions. + +.. note:: + + ``rocprof`` is a CLI-only utility so input and output takes the format of ``.txt`` and CSV files. These + formats provide a raw view of the data and puts the onus on the user to parse and analyze. Therefore, ``rocprof`` + gives the user full access and control of raw performance profiling data, but requires extra effort to analyze the + collected data. + +.. _fine-tuning-llms-profiling-omniperf: + +Omniperf +-------- +`Omniperf `_ is a system performance profiler for high-performance computing (HPC) and +machine learning (ML) workloads using Instinct accelerators. Under the hood, Omniperf uses +:ref:`ROCProfiler ` to collect hardware performance counters. The Omniperf tool performs +system profiling based on all approved hardware counters for Instinct +accelerator architectures. It provides high level performance analysis features including System Speed-of-Light, IP +block Speed-of-Light, Memory Chart Analysis, Roofline Analysis, Baseline Comparisons, and more. + +Omniperf takes the guesswork out of profiling by removing the need to provide text input files with lists of counters +to collect and analyze raw CSV output files as is the case with ROC-profiler. Instead, Omniperf automates the collection +of all available hardware counters in one command and provides a graphical interface to help users understand and +analyze bottlenecks and stressors for their computational workloads on AMD Instinct accelerators. + +.. note:: + + Omniperf collects hardware counters in multiple passes, and will therefore re-run the application during each pass + to collect different sets of metrics. + +.. figure:: ../../data/how-to/fine-tuning-llms/omniperf-analysis.png + + Omniperf memory chat analysis panel. + +In brief, Omniperf provides details about hardware activity for a particular GPU kernel. It also supports both +a web-based GUI or command-line analyzer, depending on your preference. + +.. _fine-tuning-llms-profiling-omnitrace: + +Omnitrace +--------- + +`Omnitrace `_ is a comprehensive profiling and tracing tool for parallel applications, +including HPC and ML packages, written in C, C++, Fortran, HIP, OpenCL, and Python which execute on the CPU or CPU and +GPU. It is capable of gathering the performance information of functions through any combination of binary +instrumentation, call-stack sampling, user-defined regions, and Python interpreter hooks. + +Omnitrace supports interactive visualization of comprehensive traces in the web browser in addition to high-level +summary profiles with ``mean/min/max/stddev`` statistics. Beyond runtime +information, Omnitrace supports the collection of system-level metrics such as CPU frequency, GPU temperature, and GPU +utilization. Process and thread level metrics such as memory usage, page faults, context switches, and numerous other +hardware counters are also included. + +.. tip:: + + When analyzing the performance of an application, it is best not to assume you know where the performance + bottlenecks are and why they are happening. Omnitrace is the ideal tool for characterizing where optimization would + have the greatest impact on the end-to-end execution of the application and to discover what else is happening on the + system during a performance bottleneck. + +.. figure:: ../../data/how-to/fine-tuning-llms/omnitrace-timeline.png + + Omnitrace timeline trace example. + +For details usage and examples of using these tools, refer to the +`Introduction to profiling tools for AMD hardware `_ +developer blog. + +Debugging with ROCm Debug Agent +=============================== + +ROCm Debug Agent (:doc:`ROCdebug-agent `) is a library that can be loaded by the ROCm platform +runtime (:doc:`ROCr `) to provide the following functionalities for all AMD accelerators and GPUs +supported by the ROCm Debugger API (:doc:`ROCdbgapi `). + +* Print the state of all AMD accelerator or GPU wavefronts that caused a queue error; for example, causing a memory + violation, executing an ``s_trap2``, or executing an illegal instruction. + +* Print the state of all AMD accelerator or GPU wavefronts by sending a ``SIGQUIT`` signal to the process in question; + for example, by pressing ``Ctrl + \`` while the process is executing. + +Debugging memory access faults +------------------------------ + +Identifying a faulting kernel is often enough to triage a memory access fault. To that end, the +`ROCm Debug Agent `_ can trap a memory access fault and provide a dump of all +active wavefronts that caused the error as well as the name of the kernel. The +`AMD ROCm Debug Agent Library README `_ provides full +instructions, but in brief: + +* Compiling with ``-ggdb -O0`` is recommended but not required. + +* ``HSA_TOOLS_LIB=/opt/rocm/lib/librocm-debug-agent.so.2 HSA_ENABLE_DEBUG=1 ./my_program`` + +When the debug agent traps the fault, it will produce an extremely +verbose output of all wavefront registers and memory content. +Importantly, it also prints something like: + +.. code-block:: shell + + Disassembly for function vector_add_assert_trap(int*, int*, int*): + + code object: + file:////rocm-debug-agent/build/test/rocm-debug-agent-test#offset=14309&size=31336 + + loaded at: [0x7fd4f100c000-0x7fd4f100e070] + +The kernel name and the code object file should be listed. In the +example above, the kernel name is ``vector_add_assert_trap``, but this might +also look like: + +.. code-block:: shell + + Disassembly for function memory:///path/to/codeobject#offset=1234&size=567: + +In this case, it is an in-memory kernel that was generated at runtime. + +Using the following environment variable, the debug agent will save all code objects to the current directory (use +``--save-code-objects=[DIR]`` to place them in another location). The code objects will be renamed from the URI format +with special characters replaced by ``_``. + +.. code-block:: shell + + ROCM_DEBUG_AGENT_OPTIONS="--all --save-code-objects" + +Use the ``llvm-objdump`` command to disassemble the indicated in-memory +code object that has now been saved to disk. The name of the kernel is +often found inside the disassembled code object. + +.. code-block:: shell + + llvm-objdump --disassemble-all path/to/code-object.co + +Consider turning off memory caching strategies both within the ROCm +stack and PyTorch where possible. This will give the debug agent the +best chance at finding the memory fault where it originates. Otherwise, +it could be masked by writing past the end of a cached block within a +larger allocation. + +.. code-block:: shell + + PYTORCH_NO_HIP_MEMORY_CACHING=1 + + HSA_DISABLE_FRAGMENT_ALLOCATOR=1 + diff --git a/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst b/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst new file mode 100644 index 000000000..48da84446 --- /dev/null +++ b/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst @@ -0,0 +1,509 @@ +.. meta:: + :description: Model fine-tuning and inference on a single-GPU system + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, single-GPU, LoRA, PEFT, inference + +**************************************************** +Fine-tuning and inference using a single accelerator +**************************************************** + +This section explains model fine-tuning and inference techniques on a single-accelerator system. See +:doc:`Multi-accelerator fine-tuning ` for a setup with multiple accelerators or +GPUs. + +.. _fine-tuning-llms-single-gpu-env: + +Environment setup +================= + +This section was tested using the following hardware and software environment. + +.. list-table:: + :stub-columns: 1 + + * - Hardware + - AMD Instinct MI300X accelerator + + * - Software + - ROCm 6.1, Ubuntu 22.04, PyTorch 2.1.2, Python 3.10 + + * - Libraries + - ``transformers`` ``datasets`` ``huggingface-hub`` ``peft`` ``trl`` ``scipy`` + + * - Base model + - ``meta-llama/Llama-2-7b-chat-hf`` + +.. _fine-tuning-llms-single-gpu-env-setup: + +Setting up the base implementation environment +---------------------------------------------- + +#. Install PyTorch for ROCm. Refer to the + :doc:`PyTorch installation guide `. For a consistent + installation, it’s recommended to use official ROCm prebuilt Docker images with the framework pre-installed. + +#. In the Docker container, check the availability of ROCm-capable accelerators using the following command. + + .. code-block:: shell + + rocm-smi -showproductname + + Your output should look like this: + + .. code-block:: shell + + ============================ ROCm System Management Interface ============================ + ====================================== Product Info ====================================== + GPU[0] : Card series: AMD Instinct MI300X OAM + GPU[0] : Card model: 0x74a1 + GPU[0] : Card vendor: Advanced Micro Devices, Inc. [AMD/ATI] + GPU[0] : Card SKU: MI3SRIOV + ========================================================================================== + ================================== End of ROCm SMI Log =================================== + +#. Check that your accelerators are available to PyTorch. + + .. code-block:: python + + import torch + print("Is a ROCm-GPU detected? ", torch.cuda.is_available()) + print("How many ROCm-GPUs are detected? ", torch.cuda.device_count()) + + If successful, your output should look like this: + + .. code-block:: shell + + >>> print("Is a ROCm-GPU detected? ", torch.cuda.is_available()) + Is a ROCm-GPU detected? True + >>> print("How many ROCm-GPUs are detected? ", torch.cuda.device_count()) + How many ROCm-GPUs are detected? 4 + +#. 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`. + + See the :ref:`Optimizations for model fine-tuning ` for a brief discussion on + PEFT and TRL. + + .. code-block:: shell + + # Install `bitsandbytes` for ROCm 6.0+, use -DBNB_ROCM_ARCH to target specific GPU arch + git clone --recurse https://github.com/ROCm/bitsandbytes.git + cd bitsandbytes + git checkout rocm_enabled + pip install -r requirements-dev.txt + cmake -DBNB_ROCM_ARCH="gfx942" -DCOMPUTE_BACKEND=hip -S . + python setup.py install + + # To leverage the SFTTrainer in TRL for model fine-tuning + pip install trl + + # To leverage PEFT for efficiently adapting pre-trained language models + pip install peft + + # Install the other dependencies: + pip install transformers, datasets, huggingface-hub, scipy + +#. Check that the required packages can be imported. + + .. code-block:: python + + import torch + from datasets import load_dataset + from transformers import ( + AutoModelForCausalLM, + AutoTokenizer, + TrainingArguments + ) + from peft import LoraConfig + from trl import SFTTrainer + +.. _fine-tuning-llms-single-gpu-download-model-dataset: + +Download the base model and fine-tuning dataset +----------------------------------------------- + +#. Request to access to download the `Meta's official Llama model `_ from Hugging + Face. After permission is granted, log in with the following command using your personal access tokens: + + .. code-block:: shell + + huggingface-cli login + + .. note:: + + You can also use the `NousResearch Llama-2-7b-chat-hf `_ + as a substitute. It has the same model weights as the original. + +#. Run the following code to load the base model and tokenizer. + + .. code-block:: python + + # Base model and tokenizer names + base_model_name = "meta-llama/Llama-2-7b-chat-hf" + + # Load base model to GPU memory + device = "cuda:0" + base_model = AutoModelForCausalLM.from_pretrained(base_model_name, trust_remote_code = True).to(device) + + # Load tokenizer + tokenizer = AutoTokenizer.from_pretrained( + base_model_name, + trust_remote_code = True) + tokenizer.pad_token = tokenizer.eos_token + tokenizer.padding_side = "right" + +#. Now, let's fine-tune the base model for a question-and-answer task using a small dataset called + `mlabonne/guanaco-llama2-1k `_, which is a 1000 sample + subset of the `timdettmers/openassistant-guanaco `_ dataset. + + .. code-block:: + + # Dataset for fine-tuning + training_dataset_name = "mlabonne/guanaco-llama2-1k" + training_dataset = load_dataset(training_dataset_name, split = "train") + + # Check the data + print(training_dataset) + + # #11 is a QA sample in English + print(training_dataset[11]) + +#. With the base model and the dataset, let's start fine-tuning! + +.. _fine-tuning-llms-single-gpu-configure-params: + +Configure fine-tuning parameters +-------------------------------- + +To set up ``SFTTrainer`` parameters, you can use the following code as reference. + +.. code-block:: python + + # Training Params for SFTTrainer + training_arguments = TrainingArguments( + output_dir = "./results", + num_train_epochs = 1, + per_device_train_batch_size = 4, + gradient_accumulation_steps = 1, + optim = "paged_adamw_32bit", + save_steps = 50, + logging_steps = 50, + learning_rate = 4e-5, + weight_decay = 0.001, + fp16=False, + bf16=False, + max_grad_norm = 0.3, + max_steps = -1, + warmup_ratio = 0.03, + group_by_length = True, + lr_scheduler_type = "constant", + report_to = "tensorboard" + ) + +.. _fine-tuning-llms-single-gpu-start: + +Fine-tuning +=========== + +In this section, you'll see two ways of training: with the LoRA technique and without. See :ref:`Optimizations for model +fine-tuning ` for an introduction to LoRA. Training with LoRA uses the +``SFTTrainer`` API with its PEFT integration. Training without LoRA forgoes these benefits. + +Compare the number of trainable parameters and training time under the two different methodologies. + +.. tab-set:: + + .. tab-item:: Fine-tuning with LoRA and PEFT + :sync: with + + 1. Configure LoRA using the following code snippet. + + .. code-block:: python + + peft_config = LoraConfig( + lora_alpha = 16, + lora_dropout = 0.1, + r = 64, + bias = "none", + task_type = "CAUSAL_LM" + ) + # View the number of Trainable Params + from peft import get_peft_model + peft_model = get_peft_model(base_model, peft_config) + peft_model.print_trainable_parameters() + + The output should look like this. Compare the number of trainable parameters to that when fine-tuning without + LoRA and PEFT. + + .. code-block:: shell + + trainable params: 33,554,432 || all params: 6,771,970,048 || trainable%: 0.49548996469513035 + + 2. Initialize ``SFTTrainer`` with a PEFT LoRA configuration and run the trainer. + + .. code-block:: python + + # Initialize a sft trainer + sft_trainer = SFTTrainer( + model = base_model, + train_dataset = training_dataset, + peft_config = peft_config, + dataset_text_field = "text", + tokenizer = tokenizer, + args = training_arguments + ) + + # Run the trainer + sft_trainer.train() + + The output should look like this: + + .. code-block:: shell + + {'loss': 1.5973, 'grad_norm': 0.25271978974342346, 'learning_rate': 4e-05, 'epoch': 0.16} + {'loss': 2.0519, 'grad_norm': 0.21817368268966675, 'learning_rate': 4e-05, 'epoch': 0.32} + {'loss': 1.6147, 'grad_norm': 0.3046981394290924, 'learning_rate': 4e-05, 'epoch': 0.48} + {'loss': 1.4124, 'grad_norm': 0.11534837633371353, 'learning_rate': 4e-05, 'epoch': 0.64} + {'loss': 1.5627, 'grad_norm': 0.09108350425958633, 'learning_rate': 4e-05, 'epoch': 0.8} + {'loss': 1.417, 'grad_norm': 0.2536439299583435, 'learning_rate': 4e-05, 'epoch': 0.96} + {'train_runtime': 197.4947, 'train_samples_per_second': 5.063, 'train_steps_per_second': 0.633, 'train_loss': 1.6194254455566406, 'epoch': 1.0} + 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████| 125/125 [03:17<00:00, 1.58s/it] + + .. tab-item:: Fine-tuning without LoRA and PEFT + :sync: without + + 1. Use the following code to get started. + + .. code-block:: python + + def print_trainable_parameters(model): + # Prints the number of trainable parameters in the model. + trainable_params = 0 + all_param = 0 + for _, param in model.named_parameters(): + all_param += param.numel() + if param.requires_grad: + trainable_params += param.numel() + print(f"trainable params: {trainable_params} || all params: {all_param} || trainable%: {100 * trainable_params / all_param:.2f}") + + sft_trainer.peft_config = None + print_trainable_parameters(sft_trainer.model) + + The output should look like this. Compare the number of trainable parameters to that when fine-tuning with LoRA + and PEFT. + + .. code-block:: shell + + trainable params: 6,738,415,616 || all params: 6,738,415,616 || trainable%: 100.00 + + + 2. Run the trainer. + + .. code-block:: python + + # Trainer without LoRA config + trainer_full = SFTTrainer( + model = base_model, + train_dataset = training_dataset, + dataset_text_field = "text", + tokenizer = tokenizer, + args = training_arguments + ) + + # Training + trainer_full.train() + + The output should look like this: + + .. code-block:: shell + + {'loss': 1.5975, 'grad_norm': 0.25113457441329956, 'learning_rate': 4e-05, 'epoch': 0.16} + {'loss': 2.0524, 'grad_norm': 0.2180655151605606, 'learning_rate': 4e-05, 'epoch': 0.32} + {'loss': 1.6145, 'grad_norm': 0.2949850261211395, 'learning_rate': 4e-05, 'epoch': 0.48} + {'loss': 1.4118, 'grad_norm': 0.11036080121994019, 'learning_rate': 4e-05, 'epoch': 0.64} + {'loss': 1.5595, 'grad_norm': 0.08962831646203995, 'learning_rate': 4e-05, 'epoch': 0.8} + {'loss': 1.4119, 'grad_norm': 0.25422757863998413, 'learning_rate': 4e-05, 'epoch': 0.96} + {'train_runtime': 419.5154, 'train_samples_per_second': 2.384, 'train_steps_per_second': 0.298, 'train_loss': 1.6171623611450194, 'epoch': 1.0} + 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████| 125/125 [06:59<00:00, 3.36s/it] + +.. _fine-tuning-llms-single-gpu-saving: + +Saving adapters or fully fine-tuned models +------------------------------------------ + +PEFT methods freeze the pre-trained model parameters during fine-tuning and add a smaller number of trainable +parameters, namely the adapters, on top of it. The adapters are trained to learn specific task information. The adapters +trained with PEFT are usually an order of magnitude smaller than the full base model, making them convenient to share, +store, and load. + +.. tab-set:: + + .. tab-item:: Saving a PEFT adapter + :sync: with + + If you're using LoRA and PEFT, use the following code to save a PEFT adapter to your system once the fine-tuning + is completed. + + .. code-block:: python + + # PEFT adapter name + adapter_name = "llama-2-7b-enhanced-adapter" + + # Save PEFT adapter + sft_trainer.model.save_pretrained(adapter_name) + + The saved PEFT adapter should look like this on your system: + + .. code-block:: shell + + # Access adapter directory + cd llama-2-7b-enhanced-adapter + + # List all adapter files + README.md adapter_config.json adapter_model.safetensors + + .. tab-item:: Saving a fully fine-tuned model + :sync: without + + If you're not using LoRA and PEFT so there is no PEFT LoRA configuration used for training, use the following code + to save your fine-tuned model to your system. + + .. code-block:: python + + # fully fine-tuned model name + new_model_name = "llama-2-7b-enhanced" + + # Save the fully fine-tuned model + full_trainer.model.save_pretrained(new_model_name) + + The saved new full model should look like this on your system: + + .. code-block:: shell + + # Access new model directory + cd llama-2-7b-enhanced + + # List all model files + config.json model-00002-of-00006.safetensors model-00005-of-00006.safetensors + generation_config.json model-00003-of-00006.safetensors model-00006-of-00006.safetensors + model-00001-of-00006.safetensors model-00004-of-00006.safetensors model.safetensors.index.json + +.. note:: + + PEFT adapters can’t be loaded by ``AutoModelForCausalLM`` from the Transformers library as they do not contain + full model parameters and model configurations, for example, ``config.json``. To use it as a normal transformer + model, you need to merge them into the base model. + +Basic model inference +===================== + +A trained model can be classified into one of three types: + +* A PEFT adapter + +* A pre-trained language model in Hugging Face + +* A fully fine-tuned model not using PEFT + +Let's look at achieving model inference using these types of models. + +.. tab-set:: + + .. tab-item:: Inference using PEFT adapters + + To use PEFT adapters like a normal transformer model, you can run the generation by loading a base model along with PEFT + adapters as follows. + + .. code-block:: python + + from peft import PeftModel + from transformers import AutoModelForCausalLM + + # Set the path of the model or the name on Hugging face hub + base_model_name = "meta-llama/Llama-2-7b-chat-hf" + + # Set the path of the adapter + adapter_name = "Llama-2-7b-enhanced-adpater" + + # Load base model + base_model = AutoModelForCausalLM.from_pretrained(base_model_name) + + # Adapt the base model with the adapter + new_model = PeftModel.from_pretrained(base_model, adapter_name) + + # Then, run generation as the same with a normal model outlined in 2.1 + + The PEFT library provides a ``merge_and_unload`` method, which merges the adapter layers into the base model. This is + needed if someone wants to save the adapted model into local storage and use it as a normal standalone model. + + .. code-block:: python + + # Load base model + base_model = AutoModelForCausalLM.from_pretrained(base_model_name) + + # Adapt the base model with the adapter + new_model = PeftModel.from_pretrained(base_model, adapter_name) + + # Merge adapter + model = model.merge_and_unload() + + # Save the merged model into local + model.save_pretrained("merged_adpaters") + + .. tab-item:: Inference using pre-trained or fully fine-tuned models + + If you have a fully fine-tuned model not using PEFT, you can load it like any other pre-trained language model in + `Hugging Face Hub `_ using the `Transformers + `_ library. + + .. code-block:: python + + # Import relevant class for loading model and tokenizer + from transformers import AutoTokenizer, AutoModelForCausalLM + + # Set the pre-trained model name on Hugging face hub + model_name = "meta-llama/Llama-2-7b-chat-hf" + + # Set device type + device = "cuda:0" + + # Load model and tokenizer + model = AutoModelForCausalLM.from_pretrained(model_name).to(device) + tokenizer = AutoTokenizer.from_pretrained(model_name) + + # Input prompt encoding + query = "What is a large language model?" + inputs = tokenizer.encode(query, return_tensors="pt").to(device) + + # Token generation + outputs = model.generate(inputs) + + # Outputs decoding + print(tokenizer.decode(outputs[0])) + + In addition, pipelines from Transformers offer simple APIs to use pre-trained models for different tasks, including + sentiment analysis, feature extraction, question answering and so on. You can use the pipeline abstraction to achieve + model inference easily. + + .. code-block:: python + + # Import relevant class for loading model and tokenizer + from transformers import pipeline + + # Set the path of your model or the name on Hugging face hub + model_name_or_path = "meta-llama/Llama-2-7b-chat-hf" + + # Set pipeline + # A positive device value will run the model on associated CUDA device id + pipe = pipeline("text-generation", model=model_name_or_path, device=0) + + # Token generation + print(pipe("What is a large language model?")[0]["generated_text"]) + +If using multiple accelerators, see +:ref:`Multi-accelerator fine-tuning and inference ` to explore +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 `. diff --git a/docs/how-to/rocm-for-ai/train-a-model.rst b/docs/how-to/rocm-for-ai/train-a-model.rst index f9c585445..d7db257ca 100644 --- a/docs/how-to/rocm-for-ai/train-a-model.rst +++ b/docs/how-to/rocm-for-ai/train-a-model.rst @@ -107,7 +107,10 @@ for more information about running AMP on an AMD accelerator. Fine-tuning your model ====================== -ROCm supports multiple fine-tuning techniques, for example, LoRA, QLoRA, PEFT, and FSDP. +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:`../fine-tuning-llms/index`. The following developer blogs showcase examples of how to fine-tune a model on an AMD accelerator or GPU. diff --git a/docs/index.md b/docs/index.md index 3a9c111b9..958ec8a5a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -92,6 +92,7 @@ Our documentation is organized into the following categories: :padding: 2 * [Using ROCm for AI](./how-to/rocm-for-ai/index.rst) +* [Fine-tuning LLMs with ROCm](./how-to/fine-tuning-llms/index.rst) * [System tuning for various architectures](./how-to/tuning-guides.md) * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 827dfb050..e3a86aad1 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -58,6 +58,27 @@ subtrees: - file: how-to/rocm-for-ai/train-a-model.rst - file: how-to/rocm-for-ai/hugging-face-models.rst - file: how-to/rocm-for-ai/deploy-your-model.rst + - file: how-to/fine-tuning-llms/index.rst + title: Fine-tuning LLMs with ROCm + subtrees: + - entries: + - file: how-to/fine-tuning-llms/overview.rst + title: Conceptual overview + - file: how-to/fine-tuning-llms/fine-tuning-and-inference.rst + subtrees: + - entries: + - file: how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst + title: Using a single accelerator + - file: how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst + title: Using multiple accelerators + - file: how-to/fine-tuning-llms/model-quantization.rst + - file: how-to/fine-tuning-llms/model-acceleration-libraries.rst + - file: how-to/fine-tuning-llms/llm-inference-frameworks.rst + - file: how-to/fine-tuning-llms/optimizing-with-composable-kernel.md + title: Optimizing with Composable Kernel + - file: how-to/fine-tuning-llms/optimizing-triton-kernel.rst + title: Optimizing Triton kernels + - file: how-to/fine-tuning-llms/profiling-and-debugging.rst - file: how-to/tuning-guides.md title: System optimization subtrees: From 6e99bef8f48ed9a4fa2bf1ce2c5aafdb2aeeffe5 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 3 Jun 2024 14:42:24 -0400 Subject: [PATCH 084/175] change pool to BASE --- .azuredevops/components/hipTensor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 167d13c83..157c64c3f 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -27,7 +27,8 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.LOW_BUILD_POOL }} + pool: + vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: From 29f9b4ab2378257720bd5e6b02afcf30142751f1 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 3 Jun 2024 15:39:41 -0400 Subject: [PATCH 085/175] chang gpu target to gfx90a --- .azuredevops/components/hipTensor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 157c64c3f..93c02eadb 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -60,6 +60,6 @@ jobs: -DROCM_PATH="$(Agent.BuildDirectory)/rocm" -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON - -DAMDGPU_TARGETS=gfx1030;gfx1100 + -DAMDGPU_TARGETS=gfx90a -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 9a347aa16850ac1516d35e67ea0b07c5d6d89504 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Mon, 3 Jun 2024 19:11:19 -0700 Subject: [PATCH 086/175] Update fine-tuning guide: title, improve readibility in code blocks, fix typos (#3222) * Fix typo * Add torchtune link * Add newlines before comments in code blocks for readability * Update title --- docs/how-to/fine-tuning-llms/index.rst | 6 +- .../llm-inference-frameworks.rst | 2 +- .../model-acceleration-libraries.rst | 12 +- .../fine-tuning-llms/model-quantization.rst | 18 +-- .../multi-gpu-fine-tuning-and-inference.rst | 122 +++++++++--------- docs/how-to/fine-tuning-llms/overview.rst | 4 +- .../single-gpu-fine-tuning-and-inference.rst | 49 +++---- docs/index.md | 2 +- docs/sphinx/_toc.yml.in | 2 +- 9 files changed, 111 insertions(+), 106 deletions(-) diff --git a/docs/how-to/fine-tuning-llms/index.rst b/docs/how-to/fine-tuning-llms/index.rst index c197158f2..a966a9b95 100644 --- a/docs/how-to/fine-tuning-llms/index.rst +++ b/docs/how-to/fine-tuning-llms/index.rst @@ -2,9 +2,9 @@ :description: How to fine-tune LLMs with ROCm :keywords: ROCm, LLM, fine-tuning, usage, tutorial -************************** -Fine-tuning LLMs with ROCm -************************** +******************************************* +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, diff --git a/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst b/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst index 9da634d5c..646b99d4e 100644 --- a/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst +++ b/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst @@ -32,7 +32,7 @@ Installing vLLM .. code-block:: shell - # Install from the source + # Install from source git clone https://github.com/ROCm/vllm.git cd vllm PYTORCH_ROCM_ARCH=gfx942 python setup.py install #MI300 series diff --git a/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst b/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst index f1bc7c704..5a57a6b83 100644 --- a/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst +++ b/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst @@ -40,7 +40,7 @@ ROCm provides two different implementations of Flash Attention 2 modules. They c .. code-block:: shell - # Install from the source + # Install from source git clone https://github.com/ROCm/flash-attention.git cd flash-attention/ GPU_ARCHS=gfx942 python setup.py install #MI300 series @@ -156,7 +156,7 @@ of the PyTorch compilation. .. code-block:: python - # Sample script to run LLM with the static key-value cache and pytorch compilation + # Sample script to run LLM with the static key-value cache and PyTorch compilation from transformers import AutoModelForCausalLM, AutoTokenizer, StaticCache import torch from typing import Optional @@ -180,7 +180,8 @@ of the PyTorch compilation. return new_token batch_size, seq_length = inputs["input_ids"].shape - # static key-value cache + + # Static key-value cache max_cache_length = 1024 max_new_tokens = 10 model._setup_cache(StaticCache, batch_size, max_cache_len=max_cache_length) @@ -190,6 +191,7 @@ of the PyTorch compilation. logits = model(**inputs, cache_position=cache_position, return_dict=False, use_cache=True)[0] next_token = torch.argmax(logits[:, -1], dim=-1)[:, None] + # torch compilation decode_one_tokens = torch.compile(decode_one_tokens, mode="max-autotune-no-cudagraphs",fullgraph=True) @@ -221,10 +223,10 @@ page describes the options. .. code-block:: python - # To turn on TunableOps, simply set this environmental variable + # To turn on TunableOp, simply set this environment variable export PYTORCH_TUNABLEOP_ENABLED=1 - # python + # Python import torch import torch.nn as nn import torch.nn.functional as F diff --git a/docs/how-to/fine-tuning-llms/model-quantization.rst b/docs/how-to/fine-tuning-llms/model-quantization.rst index 18d604b3d..c79b4d46a 100644 --- a/docs/how-to/fine-tuning-llms/model-quantization.rst +++ b/docs/how-to/fine-tuning-llms/model-quantization.rst @@ -32,7 +32,7 @@ The AutoGPTQ library implements the GPTQ algorithm. .. code-block:: shell - # This will install pre-built wheel for a specific ROCm version + # This will install pre-built wheel for a specific ROCm version. pip install auto-gptq --no-build-isolation --extra-index-url https://huggingface.github.io/autogptq-index/whl/rocm573/ @@ -40,11 +40,11 @@ The AutoGPTQ library implements the GPTQ algorithm. .. code-block:: shell - # Clone the source code + # Clone the source code. git clone https://github.com/AutoGPTQ/AutoGPTQ.git cd AutoGPTQ - # Speed up the compilation by specifying PYTORCH_ROCM_ARCH to target device + # Speed up the compilation by specifying PYTORCH_ROCM_ARCH to target device. PYTORCH_ROCM_ARCH=gfx942 ROCM_VERSION=6.1 pip install . # Show the package after the installation @@ -93,12 +93,14 @@ Using GPTQ with AutoGPTQ .. code-block:: python - # import auto_gptq class + # Import auto_gptq class. from auto_gptq import AutoGPTQForCausalLM - # load non-quantized model + + # Load non-quantized model. base_model = AutoGPTQForCausalLM.from_pretrained(base_model_name, quantize_config, device_map = "auto") base_model.quantize(examples) - # save quantized model + + # Save quantized model. base_model.save_quantized(quantized_model_name) Using GPTQ with Hugging Face Transformers @@ -201,7 +203,7 @@ Installing bitsandbytes Using bitsandbytes primitives ----------------------------- -To get started with bitsandbytes primitives, use the following code a reference. +To get started with bitsandbytes primitives, use the following code as reference. .. code-block:: python @@ -230,7 +232,7 @@ To load a Transformers model in 4-bit, set ``load_int_4bt=true`` in ``BitsAndByt device_map="auto", quantization_config=quantization_config) - # check the memory footprint with get_memory_footprint method + # Check the memory footprint with get_memory_footprint method print(bnb_model_4bit.get_memory_footprint()) To load a model in 8-bit for inference, use the ``load_in_8bit`` option. diff --git a/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst b/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst index b567c60cb..cb7dc01c1 100644 --- a/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst +++ b/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst @@ -130,8 +130,8 @@ After loading the model in this way, the model is fully ready to use the resourc torchtune for fine-tuning and inference ============================================= -torchtune is a PyTorch-native library for easy single and multi-accelerator or GPU model fine-tuning and inference with -LLMs. +`torchtune `_ is a PyTorch-native library for easy single and multi-accelerator or +GPU model fine-tuning and inference with LLMs. #. Install torchtune using pip. @@ -157,80 +157,80 @@ LLMs. subcommands: {download,ls,cp,run,validate} -torchtune recipes are designed around easily composable components and workable training loops, with minimal abstraction -getting in the way of fine-tuning. Run ``tune ls`` to show built-in torchtune configuration recipes. +#. torchtune recipes are designed around easily composable components and workable training loops, with minimal abstraction + getting in the way of fine-tuning. Run ``tune ls`` to show built-in torchtune configuration recipes. -.. code-block:: shell + .. code-block:: shell - RECIPE CONFIG - full_finetune_single_device llama2/7B_full_low_memory - llama3/8B_full_single_device - mistral/7B_full_low_memory - full_finetune_distributed llama2/7B_full - llama2/13B_full - llama3/8B_full - mistral/7B_full - gemma/2B_full - lora_finetune_single_device llama2/7B_lora_single_device - llama2/7B_qlora_single_device - llama3/8B_lora_single_device - llama3/8B_qlora_single_device - llama2/13B_qlora_single_device - mistral/7B_lora_single_device + RECIPE CONFIG + full_finetune_single_device llama2/7B_full_low_memory + llama3/8B_full_single_device + mistral/7B_full_low_memory + full_finetune_distributed llama2/7B_full + llama2/13B_full + llama3/8B_full + mistral/7B_full + gemma/2B_full + lora_finetune_single_device llama2/7B_lora_single_device + llama2/7B_qlora_single_device + llama3/8B_lora_single_device + llama3/8B_qlora_single_device + llama2/13B_qlora_single_device + mistral/7B_lora_single_device -The ``RECIPE`` column shows the easy-to-use and workable fine-tuning and inference recipes for popular fine-tuning -techniques (such as LoRA). The ``CONFIG`` column lists the YAML configurations for easily configuring training, -evaluation, quantization, or inference recipes. + The ``RECIPE`` column shows the easy-to-use and workable fine-tuning and inference recipes for popular fine-tuning + techniques (such as LoRA). The ``CONFIG`` column lists the YAML configurations for easily configuring training, + evaluation, quantization, or inference recipes. -The snippet shows the architecture of a model's YAML configuration file: + The snippet shows the architecture of a model's YAML configuration file: -.. code-block:: yaml + .. code-block:: yaml - # Model Arguments - model: - _component_: torchtune.models.llama2.lora_llama2_7b - lora_attn_modules: ['q_proj', 'v_proj'] - apply_lora_to_mlp: False - apply_lora_to_output: False - lora_rank: 8 - lora_alpha: 16 - - tokenizer: - _component_: torchtune.models.llama2.llama2_tokenizer - path: /tmp/Llama-2-7b-hf/tokenizer.model - - # Dataset and Sampler - dataset: - _component_: torchtune.datasets.alpaca_cleaned_dataset - train_on_input: True + # Model arguments + model: + _component_: torchtune.models.llama2.lora_llama2_7b + lora_attn_modules: ['q_proj', 'v_proj'] + apply_lora_to_mlp: False + apply_lora_to_output: False + lora_rank: 8 + lora_alpha: 16 + + tokenizer: + _component_: torchtune.models.llama2.llama2_tokenizer + path: /tmp/Llama-2-7b-hf/tokenizer.model + + # Dataset and sampler + dataset: + _component_: torchtune.datasets.alpaca_cleaned_dataset + train_on_input: True -This configuration file defines the fine-tuning base model path, data set, hyper-parameters for optimizer and scheduler, -and training data type. To download the base model for fine-tuning, run the following command: +#. This configuration file defines the fine-tuning base model path, data set, hyper-parameters for optimizer and scheduler, + and training data type. To download the base model for fine-tuning, run the following command: -.. code-block:: shell + .. code-block:: shell - tune download meta-llama/Llama-2-7b-hf --output-dir /tmp/Llama-2-7b-hf --hf-token + tune download meta-llama/Llama-2-7b-hf --output-dir /tmp/Llama-2-7b-hf --hf-token -The output directory argument for ``--output-dir`` should map the model path specified in YAML config file. + The output directory argument for ``--output-dir`` should map the model path specified in YAML config file. -To launch ``lora_finetune_distributed`` on four devices, run the following -command: +#. To launch ``lora_finetune_distributed`` on four devices, run the following + command: -.. code-block:: shell + .. code-block:: shell - tune run --nnodes 1 --nproc_per_node 4 lora_finetune_distributed --config llama2/7B_lora + tune run --nnodes 1 --nproc_per_node 4 lora_finetune_distributed --config llama2/7B_lora -If successful, you should something like the following output: + If successful, you should something like the following output: -.. code-block:: shell + .. code-block:: shell - INFO:torchtune.utils.logging:FSDP is enabled. Instantiating Model on CPU for Rank 0 ... - INFO:torchtune.utils.logging:Model instantiation took 7.32 secs - INFO:torchtune.utils.logging:Memory Stats after model init: - {'peak_memory_active': 9.478172672, 'peak_memory_alloc': 8.953868288, 'peak_memory_reserved': 11.112808448} - INFO:torchtune.utils.logging:Optimizer and loss are initialized. - INFO:torchtune.utils.logging:Dataset and Sampler are initialized. - INFO:torchtune.utils.logging:Learning rate scheduler is initialized. - 1|111|Loss: 1.5790324211120605: 7%|█ | 114/1618 + INFO:torchtune.utils.logging:FSDP is enabled. Instantiating Model on CPU for Rank 0 ... + INFO:torchtune.utils.logging:Model instantiation took 7.32 secs + INFO:torchtune.utils.logging:Memory Stats after model init: + {'peak_memory_active': 9.478172672, 'peak_memory_alloc': 8.953868288, 'peak_memory_reserved': 11.112808448} + INFO:torchtune.utils.logging:Optimizer and loss are initialized. + INFO:torchtune.utils.logging:Dataset and Sampler are initialized. + 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 `. diff --git a/docs/how-to/fine-tuning-llms/overview.rst b/docs/how-to/fine-tuning-llms/overview.rst index 90330cdbd..b4493f071 100644 --- a/docs/how-to/fine-tuning-llms/overview.rst +++ b/docs/how-to/fine-tuning-llms/overview.rst @@ -7,7 +7,7 @@ Conceptual overview of fine-tuning LLMs *************************************** Large language models (LLMs) are trained on massive amounts of text data to generate coherent and fluent text. The -underlying *transformer* architecture is the fundamental building block of all LLMs. Transformers serve as the +underlying *transformer* architecture is the fundamental building block of all LLMs. Transformers enable LLMs to understand and generate text by capturing contextual relationships and long-range dependencies. To better understand the philosophy of the transformer architecture, review the foundational `Attention is all you need `_ paper. @@ -60,7 +60,7 @@ overcome this issue of high memory consumption. LoRA accelerates the adjustment process and reduces related memory costs. To be precise, LoRA decomposes the portion of weight changes :math:`ΔW` into high-precision low-rank representations, which do not require the calculations of all :math:`ΔW`. It learns the decomposition representation of :math:`ΔW` during training, as shown in -:ref:`the weight update diagram `. This is how LoRA saves on +the :ref:`weight update diagram `. This is how LoRA saves on computing resources. LoRA is integrated into the `Hugging Face Parameter-Efficient Fine-Tuning (PEFT) diff --git a/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst b/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst index 48da84446..507bc18e7 100644 --- a/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst +++ b/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst @@ -87,7 +87,8 @@ Setting up the base implementation environment .. code-block:: shell - # Install `bitsandbytes` for ROCm 6.0+, use -DBNB_ROCM_ARCH to target specific GPU arch + # Install `bitsandbytes` for ROCm 6.0+. + # Use -DBNB_ROCM_ARCH to target a specific GPU architecture. git clone --recurse https://github.com/ROCm/bitsandbytes.git cd bitsandbytes git checkout rocm_enabled @@ -95,13 +96,13 @@ Setting up the base implementation environment cmake -DBNB_ROCM_ARCH="gfx942" -DCOMPUTE_BACKEND=hip -S . python setup.py install - # To leverage the SFTTrainer in TRL for model fine-tuning + # To leverage the SFTTrainer in TRL for model fine-tuning. pip install trl - # To leverage PEFT for efficiently adapting pre-trained language models + # To leverage PEFT for efficiently adapting pre-trained language models . pip install peft - # Install the other dependencies: + # Install the other dependencies. pip install transformers, datasets, huggingface-hub, scipy #. Check that the required packages can be imported. @@ -139,14 +140,14 @@ Download the base model and fine-tuning dataset .. code-block:: python - # Base model and tokenizer names + # Base model and tokenizer names. base_model_name = "meta-llama/Llama-2-7b-chat-hf" - # Load base model to GPU memory + # Load base model to GPU memory. device = "cuda:0" base_model = AutoModelForCausalLM.from_pretrained(base_model_name, trust_remote_code = True).to(device) - # Load tokenizer + # Load tokenizer. tokenizer = AutoTokenizer.from_pretrained( base_model_name, trust_remote_code = True) @@ -159,14 +160,14 @@ Download the base model and fine-tuning dataset .. code-block:: - # Dataset for fine-tuning + # Dataset for fine-tuning. training_dataset_name = "mlabonne/guanaco-llama2-1k" training_dataset = load_dataset(training_dataset_name, split = "train") - # Check the data + # Check the data. print(training_dataset) - # #11 is a QA sample in English + # Dataset 11 is a QA sample in English. print(training_dataset[11]) #. With the base model and the dataset, let's start fine-tuning! @@ -180,7 +181,7 @@ To set up ``SFTTrainer`` parameters, you can use the following code as reference .. code-block:: python - # Training Params for SFTTrainer + # Training parameters for SFTTrainer. training_arguments = TrainingArguments( output_dir = "./results", num_train_epochs = 1, @@ -228,7 +229,7 @@ Compare the number of trainable parameters and training time under the two diffe bias = "none", task_type = "CAUSAL_LM" ) - # View the number of Trainable Params + # View the number of trainable parameters. from peft import get_peft_model peft_model = get_peft_model(base_model, peft_config) peft_model.print_trainable_parameters() @@ -244,7 +245,7 @@ Compare the number of trainable parameters and training time under the two diffe .. code-block:: python - # Initialize a sft trainer + # Initialize an SFT trainer. sft_trainer = SFTTrainer( model = base_model, train_dataset = training_dataset, @@ -254,7 +255,7 @@ Compare the number of trainable parameters and training time under the two diffe args = training_arguments ) - # Run the trainer + # Run the trainer. sft_trainer.train() The output should look like this: @@ -302,7 +303,7 @@ Compare the number of trainable parameters and training time under the two diffe .. code-block:: python - # Trainer without LoRA config + # Trainer without LoRA config. trainer_full = SFTTrainer( model = base_model, train_dataset = training_dataset, @@ -311,7 +312,7 @@ Compare the number of trainable parameters and training time under the two diffe args = training_arguments ) - # Training + # Training. trainer_full.train() The output should look like this: @@ -347,20 +348,20 @@ store, and load. .. code-block:: python - # PEFT adapter name + # PEFT adapter name. adapter_name = "llama-2-7b-enhanced-adapter" - # Save PEFT adapter + # Save PEFT adapter. sft_trainer.model.save_pretrained(adapter_name) The saved PEFT adapter should look like this on your system: .. code-block:: shell - # Access adapter directory + # Access adapter directory. cd llama-2-7b-enhanced-adapter - # List all adapter files + # List all adapter files. README.md adapter_config.json adapter_model.safetensors .. tab-item:: Saving a fully fine-tuned model @@ -371,20 +372,20 @@ store, and load. .. code-block:: python - # fully fine-tuned model name + # Fully fine-tuned model name. new_model_name = "llama-2-7b-enhanced" - # Save the fully fine-tuned model + # Save the fully fine-tuned model. full_trainer.model.save_pretrained(new_model_name) The saved new full model should look like this on your system: .. code-block:: shell - # Access new model directory + # Access new model directory. cd llama-2-7b-enhanced - # List all model files + # List all model files. config.json model-00002-of-00006.safetensors model-00005-of-00006.safetensors generation_config.json model-00003-of-00006.safetensors model-00006-of-00006.safetensors model-00001-of-00006.safetensors model-00004-of-00006.safetensors model.safetensors.index.json diff --git a/docs/index.md b/docs/index.md index 958ec8a5a..98c2a12d1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -92,7 +92,7 @@ Our documentation is organized into the following categories: :padding: 2 * [Using ROCm for AI](./how-to/rocm-for-ai/index.rst) -* [Fine-tuning LLMs with ROCm](./how-to/fine-tuning-llms/index.rst) +* [Fine-tuning LLMs and inference optimization](./how-to/fine-tuning-llms/index.rst) * [System tuning for various architectures](./how-to/tuning-guides.md) * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index e3a86aad1..e31bb8156 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -59,7 +59,7 @@ subtrees: - file: how-to/rocm-for-ai/hugging-face-models.rst - file: how-to/rocm-for-ai/deploy-your-model.rst - file: how-to/fine-tuning-llms/index.rst - title: Fine-tuning LLMs with ROCm + title: Fine-tuning LLMs and inference optimization subtrees: - entries: - file: how-to/fine-tuning-llms/overview.rst From 1e55e01af33a54d21d37bf42ba89d1ced2456805 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Mon, 3 Jun 2024 11:04:33 -0700 Subject: [PATCH 087/175] Add "Fine Tuning LLMs" how to guide (#3124) * Add Fine Tuning LLMs how to guide * Reorg and refactor Fine-tuning LLMs with ROCm Update index and headings Fix formatting and update toc Split out content from index to overview.rst Add metadata Clean up overview Add inference sections, fix rst errors, clean up single-gpu-fine-tuning Combine fine-tuning and inference guides Fix some links and formatting Update toc and add formatting fixes Add ck kernel fusion content Update toc Clean up model quantization and acceleration Add CK images Clean up profiling Update triton kernel performance optimization Update llm inference frameworks guide Disable automatic number of figures and tables in Sphinx conf Change tabs to spaces Change heading to end with -ing Add link fixes and heading updates Add rocprof/Omniperf/Omnitrace section Update profiling and debugging guide Add formatting fixes Satisfy spellcheck Fix words Delete unused file Finish overview Clean up first 4 sections Multi-gpu fine-tuning guide: slight fixes Update toc Remove tabs Formatting fixes * Minor wording updates * Add some clean-up * Update profiling and debugging gudie * Fix Omnitrace link * Update ck kernel fusion with latest * Update CK formatting * Fix perfetto link syntax * Fix typos and add blurbs * Add fixes to Triton optimization doc * Tabify saving adapters / models section * Fix linting errors - spellcheck Fix spelling and grammar Satisfy linter Update wording in profiling guide Add fixes to satisfy linter More fixes for linting in Triton guide More linting fixes Spellcheck in CK guide * Improve triton guide Fix linting errors and optics * Add occupancy / vgpr table Change some wording * Re-add tunableop * Add missing indent in _toc.yml * Remove ckProfiler references * Add links to resources * Add refs in CK optimization guide * Rename files and fix internal links * Organize tuning guides Reorg triton * Add compute unit diagram * Remove AutoAWQ * Add higher res image for Perfetto trace example * Update link text * Update fig nums * Update some formatting * Update "Inductor" * Change "Inductor" to TorchInductor * Add link to official TorchInductor docs --- .../fine-tuning-llms/attention-module.png | Bin 0 -> 44574 bytes .../fine-tuning-llms/ck-comparisons.jpg | Bin 0 -> 114864 bytes .../fine-tuning-llms/ck-compilation.jpg | Bin 0 -> 192896 bytes .../fine-tuning-llms/ck-inference_flow.jpg | Bin 0 -> 141380 bytes .../fine-tuning-llms/ck-kernel_launch.jpg | Bin 0 -> 62929 bytes .../fine-tuning-llms/ck-operation_flow.jpg | Bin 0 -> 27502 bytes .../fine-tuning-llms/ck-root_instance.jpg | Bin 0 -> 87998 bytes .../ck-template_parameters.jpg | Bin 0 -> 50050 bytes .../how-to/fine-tuning-llms/compute-unit.png | Bin 0 -> 45716 bytes .../fine-tuning-llms/occupancy-vgpr.png | Bin 0 -> 295160 bytes .../fine-tuning-llms/omniperf-analysis.png | Bin 0 -> 156553 bytes .../fine-tuning-llms/omnitrace-timeline.png | Bin 0 -> 224582 bytes .../fine-tuning-llms/perfetto-trace.svg | 14 + .../profiling-perfetto-ui.png | Bin 0 -> 75184 bytes .../how-to/fine-tuning-llms/tunableop.png | Bin 0 -> 29108 bytes .../fine-tuning-llms/vllm-single-gpu-log.png | Bin 0 -> 44310 bytes .../how-to/fine-tuning-llms/weight-update.png | Bin 0 -> 25668 bytes docs/how-to/deep-learning-rocm.rst | 5 +- .../fine-tuning-and-inference.rst | 20 + docs/how-to/fine-tuning-llms/index.rst | 37 ++ .../llm-inference-frameworks.rst | 218 ++++++++ .../model-acceleration-libraries.rst | 249 +++++++++ .../fine-tuning-llms/model-quantization.rst | 257 +++++++++ .../multi-gpu-fine-tuning-and-inference.rst | 236 ++++++++ .../optimizing-triton-kernel.rst | 388 +++++++++++++ .../optimizing-with-composable-kernel.md | 484 +++++++++++++++++ docs/how-to/fine-tuning-llms/overview.rst | 104 ++++ .../profiling-and-debugging.rst | 217 ++++++++ .../single-gpu-fine-tuning-and-inference.rst | 509 ++++++++++++++++++ docs/how-to/rocm-for-ai/train-a-model.rst | 5 +- docs/index.md | 1 + docs/sphinx/_toc.yml.in | 21 + 32 files changed, 2763 insertions(+), 2 deletions(-) create mode 100644 docs/data/how-to/fine-tuning-llms/attention-module.png create mode 100644 docs/data/how-to/fine-tuning-llms/ck-comparisons.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-compilation.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-inference_flow.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-kernel_launch.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-operation_flow.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-root_instance.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/ck-template_parameters.jpg create mode 100644 docs/data/how-to/fine-tuning-llms/compute-unit.png create mode 100644 docs/data/how-to/fine-tuning-llms/occupancy-vgpr.png create mode 100644 docs/data/how-to/fine-tuning-llms/omniperf-analysis.png create mode 100644 docs/data/how-to/fine-tuning-llms/omnitrace-timeline.png create mode 100644 docs/data/how-to/fine-tuning-llms/perfetto-trace.svg create mode 100644 docs/data/how-to/fine-tuning-llms/profiling-perfetto-ui.png create mode 100644 docs/data/how-to/fine-tuning-llms/tunableop.png create mode 100644 docs/data/how-to/fine-tuning-llms/vllm-single-gpu-log.png create mode 100644 docs/data/how-to/fine-tuning-llms/weight-update.png create mode 100644 docs/how-to/fine-tuning-llms/fine-tuning-and-inference.rst create mode 100644 docs/how-to/fine-tuning-llms/index.rst create mode 100644 docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst create mode 100644 docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst create mode 100644 docs/how-to/fine-tuning-llms/model-quantization.rst create mode 100644 docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst create mode 100644 docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst create mode 100644 docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md create mode 100644 docs/how-to/fine-tuning-llms/overview.rst create mode 100644 docs/how-to/fine-tuning-llms/profiling-and-debugging.rst create mode 100644 docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst diff --git a/docs/data/how-to/fine-tuning-llms/attention-module.png b/docs/data/how-to/fine-tuning-llms/attention-module.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd983456696e486ac758d8bafb159a2cc1e23c5 GIT binary patch literal 44574 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 D-}D&V literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/ck-comparisons.jpg b/docs/data/how-to/fine-tuning-llms/ck-comparisons.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07db2eaba2b32a7e11169f1fbc6ae03e39b3a3c6 GIT binary patch literal 114864 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 z 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%0DC82 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

    @ zJGIbIvEs^~Hb@%1rP`+>9V<~0HuB=m0_Ecspg;9zm`<5hyXspTC zl4MATEJ;yhCtJu~S;j8aAiGgv6cU+ulu^r z<#T?{^JKrIj^a-|Z<9iJAp}Z@wsM7Y zh#^Ko7(?}g$`B!#R+>Mqz^-|gcxSsN{YvuDY#7YFt8h5~Q|!R!gTJ)pdog9p-&3V+pa(PvZ5DA1qp1CnRWN2 zZ6J#d&knc7U`GyumY+e=S8!Y zmFLs=>6Uc1tmRTS(oBmIUl1oHmo84RNYUGx{VXf0 zBCu%pVJ6bG)cfgsdq~^N`bnX2F63pQr8mQS<)2I#&8FL|#-CrFD)ELw_3OBWMXIHQ zeBZwDiJNXMLPMX# zhtIt%;ziP^U#{Uj0*E1Xv?yA=d&@~lhY-nopF#Ear#+Wbg(AnJ<7BU6Jv1TiNp41! zl`g2Vl7>5kgM$Evwb1tb_WPB-t^JY794)i?!+jSsF)r5{j9DmRzw$$>?PrXB`{d~3^Y9TEOf51wxmmm2MB za#Hkb*|b9H!$F-xpNe!z-q90-mBzYIQV0i+?1mGgjyJ!G3)Ngn$j2Ue8#!?4{j$8c z)Ew(IR)QO+hs??~y=qrLfoi$i3?=$?;*O5*FjR^t;p;s8>J_>1vCs8O>_Rf-AM`!@ zO8ed& z30omeXQPbfMzQl%p)irt^L(D^zPI~?zg?BraPMIA-bs(PqLJA*&5;iB$zb_lcxix^ z-gaAeropak*^}RzhuuBamOVt2RuXfPi={eiH0t+A4a@D2`E-RPo0>zxoTt8@5-q{C z)pnW=D)CC*w^!V2awk;Klt*rFI7>LfS5v=~7W@&zcXFd)cA#oc(YbRaPedM(hf+6k zSWnjp?CVLGk>zOG^W&%pWn=mJ115(x`c0!1x75dZFJ8Rxk*av}<&%~4zQ^%WiCz1% zKN>QMQ2Na&r+BUz9}W>esroMW(-o%W@WR~b`ypZ%?vO&r$gLvgEy!Rs>W7A`sJtC$@HCgiwkG zMnk>^$VxY}Tw=xuD%DWS&a(d~*SjQ&WKZlny+^k9jn8#b@SSCXL3)(#Sdylj8AS7~ zdlgIE=P%zlb-bOce80e<+uJ6u1(T1~O}`*v^JZE6No;K;ZX{g17tOfLzA>xR)qnqY z(w9N&KOXn6XUY}K7cqx6?JCn5z<6Pzh;fC!1u7+3&BdR_Hj+H7##+yLG(LSlzdh7n zjM@8#T&d0sf^#^o-)5F+sk{Gl_k7=}d7H;^2K-%8zxHSEzvazv|KwG$F(X;20xee% zn`)%;j9(^G$|FLw*;U!w(;+-5jw)B235Ui|h!_B3-BYYw9aXjMtP7wdH7iWA0H2YYwdB%ek(=9;^Czi7(A`IkBVQp?h^Wm$I01U5+NMLvcJAP zl{v>Rllv4oe&ITWrTN_WUGz3|s)z1O=e`{c8*H6>u zY;s&;E~X2_RnMGed@+;Tq7S6!xG)vhc_jHx6`rbFeuY;$*Q|8#JG&7AM|}4QhFkvRqK@}jQKpe5HOnamhY6A z`gHxEE$WLqNGz(`N(%)zxf(Y}jPk#3=jKxIF_S85{c~$UA~DwQUG}QPU3MZKL?AA1 zL0sKpLVdWdA5cu{ygiTN(zV;)sogJq;{~cg^mJ|C{Ox(>$0@sbd2@+}Ufj}t-GiQK z>K_Db8CoN>mA8 zOtgg}Jq7jV6B&^_)YCFSiiOm`Pu~q@OVIJ$Hm(k`X_j^aJ)*q#GOeF@qUvT@a;bR~ zdwUSxvek=xuG|H#=DPPHh>~&J?p@j&jc(}_iMx}@lo)z`WzOZXL1T#ci}x@3{olVZ zVW|~SHTQ>FhC~*XhftCDHe^0_Gxw+PRO(Dm`x0RiwhOb`)XUaLUc*J#Q%E@QJdy~6| z_VuG~cxX+X^?dme5`YXgm;PIjp5l{boXuj`AE@w;EJg{UK$*e#vBSQ8uC=%K{<5 zbp9)#oD?8-)gq{Xl-Go`aDgW!*UF?yV zoriMy8tQMI)StA;cGz+CbyG37i7wZ1xX2+y)29Pdvly%4P5zGAJ_pqB{>gPOH6roY zM8jdh=UCj3#+FN4r9I~#X)UMhT=+=Y*)p_(x%84ea3uZlMbukEFFNmA$r4*_o{pmA z4vdDNPSwGn&=79H&zvI#kIS_s9+KBrUQm)-jUn25Zh-1#)$1#+vu-urZ%5upFRie< z6q!a(5KS9#hA7{82(IGdC1j}UWj5o~6#CJ`r{_vy!>g;S{AvP&IQnFE$0&G9SIDpq z@9kvHVJMmMF2EqWy-n3O;V++d%`r3w8i9ruIbtb3HFBzI0*GPPTe^i(?(E^I(Fn&U z)h8B={hA7Lp)MSbCi)JtRK~YqHnUU=*63;9RwE%68qkfKcnsP5K<9@qi;qws~gG>?EWp#q5*;tbT@B?@`+$ov!S;InTJATrd>_Tb@%dwk2YUe zw8>8%ck{66kbMNd@l;cHOHZB#uSoZRC1p}a%H+$VftVo$c38GE!2)f+W_ zq54cH8n2XrW-}cLP-?REEpYiGj=t?DiA%oCS_@f8 zO(QQ_P;NG4HAo<%^&J|M6g)o&HZ^sqYxvk9qw2W|=zznM4bpHe5|}t*YrB@p@a|-z z-s#5|NTXJkehCj;un3{$H*szQcrWCbbjyDb74{1@1s6tWY9h&P{_pqRLh^i=i`x?+ zE4j{-Q4@UC^e}mSFMgM;D$;4K4L4QceDshsMYRnR zlM>#%bfAnTf7Ab{Ow)n+?oRQDv%~GL!r~W>#;*aEwZ@ytoudUtLo=%0maMblQ%+4( zd714da`}VGu(FL!r_9UBINvvQ-$hS}Zx^(kkf!lRwr3zQE@>_#&BofCD@3bAt}ks? z!wGNt$2&cCK9#XdK2XH2H$Kw*}rmjziXh~2x)>+)} z!dm>QaX;hvskW2jVMP1=;}#TwX_?a0jeF`HSCxAQTwMN0fFcYIAfreyYl zR-LV;e4EH0v5GNqAAV?&ckN!EZYYMNpZa6#7vaedH*(knsa8ttAE5DZ)s*EC-(=6p zs+{6*mvUL$VeH^mUO`?41jBm%7kTHTee?lE+@#7YN`|uYi#%DYk_fWnou?) zXPrMlr=w=Pb~x%Y#ii9lbuzuIG~lq0TPD`Z0P9wL=@45S+7D63S>B_dU$%E60q=|? zTCdnpeuAN+=}u7!Q2 zo8va+wT=2sf5<6mS6LNDn1XkggsLRVYmMRiN$oc?V6s%H$jSKaK@w!+Sj;4Q4fQgG zqs_l$N7>|~1A<9vx33*aeQRE=bu}lno33AW*GHS(2n$YL11be!<=!Xs`x8XHT(VM8 zeIo#tnR7VbflM=#9e6$cPTz+PM2=i4r6^MonxPw;^GboA% zZLH$n%dBkSKJaW5Evj+_+y)hQvr1=37JztJyKX1*!_@uYt!%Ax$o4UEW;hn5ql`$6 z>wZAnZbM=JP-DO8tb`?PPQU4F=X~|)9KY$1T{F?Z{azKx_K8N&!+>Yjp94V}`&i6; z&iL;b%^a->^p?>M0Ov0NE2SbHvR|GO4&aSv|59B4{>`!)0ar(I(>#$RpcO)mpsq{y zyE+C}Txen%BOrU*HoXcZhF3va)&MvMA~7PNqR|fx5ocrPoX|Gsp6Y_G0DPuk5K=7@ z&V?vQS`_`|VZ??pxED}d*B!Dk2lt|ZAP#(Fh6+648fpulfjAy(CTYQbP449HOH|~x zxDP}F86dPdKg?9p+lZ0US?ml6=^>C933d70A(8JyNeU!MGF!U$56rQ&CqGl~u0I7ul{RHgK%cK%1YfT}{Q6hnmllg1GV50&eU+q^9c!QwV}w9l z(=U2ic5>rh^#-OTquRPP&DbhQ=8rmVp3xqEsr=8UhD^@Z+%RFQz-Ey3mF`&cj*QJo z?4$Z*1%#R1HuRd@(6jyVQ~#JSlY_-YW7AgNd)G_lp(6z_x;rrf!3P71oB0S?R7V@K zN2T4I$FmRhR+JM5{n=v09I;%9p|$FJ8#-5BY{UgC(DdLvMVDN#C{a@Q z`KVS@?c&M1>W_j7V{<*E_^HGAV^jDY0d*@ss55&M3%>?pT06^!f;%RiUddFT=3@J= z$F78pY{;;{I^f4O9}c=S8PQvs+K%V?PD7V|KoAy)adtsb^mqq`r+(lbklwlaiI*NU-Z%XbS-$4NA@V6PwTnZzyOz zz_ipePgp->k8DIl|bqk zTS#@nW#5tuH=ht29>hxRbnqJ$-E-Nh`J$fO5s{zvR4K&x`W0JlJ2q1!m1I4H<5mn( zUDutJ;G@1LZNIc`+$>z3s(68=he-SwRb#$X@H4>Spc>ZE15DrUwLWrrEhT> zhvf^3C27Qlh&4Avk^F>tp9l1MO2;r?FMaivzFnNM<9dm^XT33b%z(0Qo;e^$)4x=3 z@I3F6ZMS%gd#64%#?({$y-0Yr;J3jl6vKBn(DD2|KB&G@K@ro#ZN^Wx8{Ke3f5Gp< zJC@!3Bm?uEa>1?UoKUsO!|No|A{)1mLlxDPOR6%;HwTIM<|peWY~eJajZh75N(RaJ zZoSO#5$qMTK7!pu?FRSUw^UtmXA53)Z(o`>hMHa%c=%eB7YK+ z{?C1^`QUm%c%bnk7hdhHcyUL->+bC{f-BI^PoDcOvc`TvBVG8m>tTTRrymn3TD21ormT%q$Tw=`IB&;#<84}j`_fuM41!3qwevt z1if846`9$s+-t&?N`x1#5OgM8u=l5jH3`!Ugl0XG=*fo4Fq`4r%Ewb`bfHK#VPWDa z;cpl0%7VMr=;7-}yC~>t#jP`~@4slrJL>AhZI z$n6XBc$ZY;m@?IHKOEM;(Z^?hOq(uqVbm_>@f#W6trKRE9QB5jo%HQ&UX1opP(-r0 zbxM|KsMXS~|9vmVRsYKZLQFR(9WpFH7;-5a(QC(5VM0pl&9|0MDzOK65@+V!3IpOz z*99Be#y{v1M>StIb?dn$bU2 z5xCB>qT8<}8^AH~BY?XT$%>AbprMDWRk>VNoY(zguOi(l^@a|L`UEd|6?D6`;3l$x z{!PGHPxiqYmdko9?rWk++1HhS z`kKmucDvJ!nTW&h!hGj|axo2B_(v#LdIn~KWW1`A-@(0p3(9XT8kbEoiG(QRSiG-s ztw5g!Qh~*1i-J)>JCQtK5^(S~x;nWJI=PEH29N3pkPb{(%p^^=JOmF*&`wlPP6gmL z*N3)Si?a$%84jDpospv1!A*<}oHIeYa}dMeU?0gZ24%QORRriw-T~Y=P4L{*7+#s& zCb8|Yt-w!r3%Sw!Vuz6ZTS4iCGm4f0p1-Ny0{x)+eBf0yz(rwjo;&5LT0xle1Ni3` zSMyn-@2FsP7>7^qaNRwcw-t~lfh-7}Gn_V-6ca$3BH9rKjSnCleonc8kTX<$`_+I+r~i>pZ=~vUnr%e=&Pz;2 zZLRQ$Hf#w&2Wd`uxHNz1j(_G#JeIhaDmv;>yWw|`pyN-9H8vTF$n!3oQ=U8B9R4}k zOtVQci;urf@|(^2S5*IQQFeGfeawVn9Obo;yDPxc*ETB0`}?!cB88JZ5^m|7 zaTf2Z8{G8tUmq?Br`5EWscpG+u=}ug`r~KO+uISI_;w`${bvWVgN#W!1-Z_Gbw_d` zwsf|~g3s$??U-8rd73rF?#uj6<$&V0A0LPjJcRuvSNo2Oiry*@D!r;4*3FjZ)Bbfk z0bxH(GcOD%BA<7Cm6TKTA+*ZyhVQ<%kU-CCMslI*Pm|hFHCLG0%MBG%j&CCMYK^kF z)AtxQYlv76gmuFqjbMMsR`-6J@>4yA(gFy6LuY~{!1<$@Oz8mNgXK!t-1Rz}$6(Vw zRd$YWbwnd1(Xd^uJ>^v0O_+~bcn&-pDHwe&!z5m$3P!Gl`$#6MU%}%_BOlYFaNarF zFCWOskHLZ+5foLCZJW*pyY}^nAP4%0E*!4_~_aBJJ1i} zKI{a!ka9D~Ubw6hKS7cNPLj)?J3P_2>~0Q39b?TU9g5{0@^lG^vpUg9D(%)#xFW{{ z!jvKjMqJjhMNaMjtcVKk6)BBn91mw$qXmLRCtVTG8TdDB-`_+e1`5->3APklFs>+v z4ILtFMbNZGGgqG~fl`@(&ZxLbZRl&e7&+N1}Xe;qX926Q<^*_3g@gf*0MS`@u2sBbz% zs#{hk!4$xmWhR-x^8>bD{TX{(IT}{DxXIVv{@4P^)aoh;FGXKy zh_o!pEXgpne%U3y#pByJU;Rl^87DU7Kz`}mT10#{*DK#x!dRD=!=acHw-=1mCaiWc zAl?zOeLNZ;u{JxXq4~@;P$IXy>iGATFALM#J{}2yJn9L>u@g^P~?VNGe#)1W0d+`ra3&pQ%d@Ll<+ zEiTy!`lfMB?yJ8iivDbC<5T3qL7K z(Z!Q6yAzQs4{6C-7Xs8i869DtR_)tKKm_V0tX~W|O9tBfWk-r~XOf@a9m!kUeBa)V z6BHM;&_YPuDxm7EWKiSD>xMTJ**ZTRd|x8<_`3v$_=Nz;>tbJ?6g?M>`kel=#RUZf zjH3(6D}~gw>#Hq`jB^S+g)!J*G7MT}Ak2+{~-K0IcI95z~a#ug0O3kLk7F&$6F4lfAd zm(*#HXV=`A{~yGgH3aRAZlP)M@_XDw{~}S=m==fIg8%0WuE+&GHpVdkAAjE^1f$Gb zbmbHN3>!@(e*FaZ>JvIxG!x^HQu3KS03@jyXc_R7l#`pG>XIvt7OIU*kzvH^Ajbwb zG008a#l0%l$cdX6gDXF?2f|Q_a8(D9Kh$Ute{8M+8w(o$u0D+=oQk#2Gk~Wo4(`pN zyCB2tsVW2bRpuv{iNP`=58Ne~>#w^YXd}7=karvV?WyP+E4PtLYBWfz`txoeWwrtX z$B}Up-0z!&U{oG5cpTPWcf**WfdlYOlp~vaV955gP$MMS&3J(oGkui`X)a|w$f@?0xsM-eQ5n3k}>0G|hd?O#&tN0ag7PJ07l*!! ziC>#nAIpbB!&7w3XD=!wOorKk>wNDD%Tnw)2yh0+!mXyJsK_6xG$cGhX%5T>>I+7QE zdYxd}D*Lw}X(Fx|T9^?qSREQQ<5yD~A#HA=|IhKvgEi=GJ^Ki5;TWum>m4IU!qlh4 zLxYq4NSf##$~St%_-%VCY5=#oH3V~%#rcV-;MzV$URBU_n7rCa#=2z;hnuQmJk_(o zh2I9N_RrD#ZzZT{$uDE*dmd1ipmBy*3+B(!Aj$6d&WttDVBUWXhRlYVpqBMc!U*04 z1t6DHXp%6WPdDe2agY!M%QdTV68ZaIW^(r+M!|sH;DTp!ZafM}furO^#_-`8c0(m5 z75}Lwn6lbQY4`#+{TO_K5sa|U!c#bZb>h}UwfJBYnK0fAh9tZQB#LE~ASuSb%z{^F z!L&LpD$sa2I07CmZ0ZHvsq)V|9fu5X5AOeR2RQ_7Y23g*3rFGN?(|~Zn(<(ad&^-+ zBFMOLxHU}M-?#p1@Wgu7o~ENm8K+0|+{VKUV^-Od>3edii!f6zEygtAIV3Gy8<~Cs z4C&wqTpKDw96#$ug{2*42=DwJO!6IU@KIdvFgf|pr`}`2HuH2zcWr}{aZU^9bTB1< zpM-bL(--8sIfqJ{Q*s=pL~}aPyR3Jd8j(0vw!xLL9S5%u_d`&crlU_8qetNX8XF`5 z{1Q>N&&r^1Ny8J0(ErO58viqU>3`1Nmy?^L#)(6&vHL&6E`<3|itD61|NYc(=eMN9 zcbkKVoT~lTAdvs(Y$9kB1@K3MBaw`^^77wr1L=59C{}wSmLWD!hx&isO z?$VvDn=*!*CNc*y#?XtZ!Z!5{_wFM(3L*2+bwH-eki3Pz!>k*j$>&kk3r3kc=Fg%8Wk^gCAYj2Du>_**p$+ z1Z{E#1hDY}Gw4<%w8Hf$#QoTU2zGmNZ?DJ1pb3YI+1cpOlE484Udf zyZ*PDM9})cfLVy%P=W`?t=z`^7X=6NwzY)b8~HCS33@v1Wx;5L+j19vVh~3Zi2t{~ z#KKFo#9VR5y`Cbwz?X@zt9P5QP1{!MNDhCk!!;Kns}3Q5s0ZzWN8D7&g2M0>hHk%x z`+SXh2>$Re{;d_oi8+2{{R~N&Lx0akcToZ?1D*u>{4l5BCI&D>kb&=J$o6o-TE>46 z^0O>U?79VM#mlSsiGHa6D6@Im_OH`lW8qU8{k;p_1#=5eRb|}BUK^R*JqRK6jpJTa z)bL7-Bwf$=?~`ZXSm#O%X6ZmX~fI6hIG1PsEU6+07zV^D@-+&Ig zO!nWOG0EdpwR^x5n9};k^|KMRh8|wt%8qmnaY`g3Fz?j=jWo#c{LFGJom`<#B;#YT zLvhY#lBo(8aGZ)_%{r)=9J_%EHOO2er~Nw?f70FZ4|j`#kxY(lBZa(0uQqc{co}|P zrY=Df&>~5P^b#OSXbgltH0LMuww|T0R@$xTpXbA{sglPc|=}tYpAH5Ps*`Bo3VhTIUJK ziI`>9W~j_NVttS~@jz21XyDja9TV1<1VITbxPGazqJ)E5vi`l$WMkS~l|i_nK|N6C zN!>|pZgAdYQ=tzP0&{c!lp*l?O<0!n&nOrQ6M%yR)Ej5-Q}zOgAHciGThf05>_^hQ zMr>ZWp_2BF{m@heQu#93_*1Y9AQ9Cl!=(Q-IaeChN6p-_Kcy$-xR0T8J3>|skc0%_ z431`Q0d8QbK+JNVw>A?%jeQLAN(w?4s&Hkcz&=E9jyzQc-vI(;2u8FFm@bt7C2k^& zu!*i9oB=sJO-PAi020r|DCvM)1qu2D#DhP^fZ z3)W}9M3(&k8o}r~`Tzdsf-E>L%o`1il6|bB8!13_!|>=Qk&N#Mx(%Zu+f?G4&dcf%|o0w9^WQ)`=N~vvA zic}f;6)e@iyZq&$ulj0McQm_VY?Cjx{&L&n9q}f%Brbm{zCBHK0@-Z8E8v^W>-V&s z*%!VIw~6s?dB&{)V0N8wS@$9+mC5ORlF~?I2M$?pDLoeCy{;E9Zcb6j3)JPj*X*rW z<-KFw%D4Wq`0W>B?1&9s@^B}HmD*1-YMA(l?2r%|thb-EjQUx!qsQvjO#?j}3zYNp z$Map=e0P`r6lUeMGYrWl)U}C1FdN?NT;B_#`U=h&IaW#13BXKxwKwc+3zlJDkVr;9oPO-{2ak{s zvt281s_U)Jw;w~c&vGFGlNY$wFVoPFM`19bDNW*zN^JGV@uPFei;<%EQ;YV@DS*Ou|liwNWg(@{tj_qDfM7G!otxP>Wk@ez?Z&TE$fDAv8>DB3?#c z)Ox_Q_{aa3ZT$aMR0ysrfs_ax+_};Yk32{3Kvr6`=aa`HT{1}icRY@L+|pIc-{qdT zLyyHc?O$msz&-(uS>_cGFqP3aHX|ps}vac9yNZnq~ytFbWIy$ z2;^8};UTT7t+sp+~aQfcXWYH?C=XcvFSCPc7K3N>zqzT+-c z5K7g_kMq$~pd*d=MC@scxUr5`<00=vSSKmvLzZcIm)$=*>^;R6y=F{j&tLaqc!0NX z!Ea-yVD*V;T#)K3`Dq*QhvBZXIyZa@=U!Y_9AZuWY$Kq%IL)WR3d}_AnPi$k&&tn@ zG8{I8x__~K_UHJ>Wtu3t_&ho9Lv3Jp1BJurNL+$z`D$_C+6@Jt)r19oR$JAr=b29t z5W!8&-jm~T_8fg@FF&UsZ`WVSi;O$##7CS4 zJ$|Zfou$77N!B*h5?7{g8(!D!WOd_H4R?G{^vgfV+J{;RJO%J(nhk_X3!HgX@m+y1#%D{jo1z9V?!nG${f6_bFuL z!QVkv&dje*c-+*`Cw)w5ce-vQ3>B4V^8)PqiMx%w5m?pE{D4TC+FIli zfotrv-o`JSm*6DkD3iY{T|{a>doalJv}r8arvX=M=d=|Nh*G=@oOF$IxNCp z6Nc*h>0E6a8J^G>j4El}d{fyZvTLCJSiUjoZiwT^>A9VJACDyr?(iO*DB?Z0d^bdGswiMq7`kCs3YX<)cg3SlNZomHCEcR) z(F=u=Cz+YtP!jLfDtwa$UgH*pjr%Ar`N^8Hr&xQQMu~v*vG!LYu7(wT^s|mhDxu?U ztPcA=FcjoYR$I9ru%IWPjv>!M{Haor^V&uQLWF^4F23!?Q!l?pG=uocFp?X z3q}R3_n+COzU6FsZb+zA>*{bj9-`$1Lp7rDL$jka5QcB4$0p+M2ptNz(bmXCerNTH z@GSY>yCl9nepmZXEby{(D?GFQ)W`rqE-Z7z$7x|UN^#hieWsTwWhBG4BL|j8v^qT$ z+dDps`#}I->bm;$hq$cDHNABw8W-54*s@W_&J1o1P14kargg_F)EX*q4bTZM545!X z0qe6tBXcp__;cj^-3j~K7k1tI@HL&IKWT7LWDozGsscf= zy2Ly5e1~>Q)_~%zwxKY)t2v{%b7E%uMH4Sy);BJK5Md*xA_5v$3+C=Q@9$ zgOkx%*|~YRIJy73{_iFKJ^tTQjDwSnmF>Sf{`cBxCxDmjOe)h6)0r!Pv%F`Rc+Z^n z0)PO(nR5(l|1o?Gku2Mvzv0?i;~=UQkF_L{vsr?&`JcYU&!Aw{C0c-!m{Y zGB&wy`S^*Iwarsorx!1sU0mJV{rm$0gJ8k0Bcq~YV&mcy(lg#=W@W$skn_2yxTLh~ zOL;|IJ*uIxskx=KyQjCWf8hJz(D=mU)HLSzA1n^Pw7jyq_IG`QxVL|BNID`PpZw?7 z835D&?biSD?EmE#FT=01j6Psy{m-v6XM-3g6EE|*%Qsp0?pUxs^Wndu63%wyTZT`nP3Y2+uHn^`hKoSRe!}rC&2tu2_Ol61 zpOHHO7Ij>sy`#!6L9wicjJ8h!L}V|bHnxwf<5iaY=%fel9WgJQ zGRQF~P>N!sNQe7H&9z7TBl255^Ar#fN$)=~j64M}?-Nk-GE-DDzbe>m&&w^X4(|9{ z#cnlD9`Q0_U&#tHPdj#4ZYD^DJ@INur!4Q1pPrboQysk^%jr!^0edcgFKNfPdEj_v zc%Rd<(Eo1A^F-Rx%PRk3G4Wmshl*y@M=m)W!5`VJx5w+*nBbMoA7!aT3q;qAC1P0= z+LecYos07|G*U_J+_yx-Ts)_wLY}hKza75cs~pt=yox1NSg!St3XJV*=+q$;-@l?WV<5i1sY&==`4@E{ERGTfZV6WMM-*jdLDI`Ta5EE7fb zO~y=JDxGZnA0RdQE+xU)+dTMDA^07WcI$F-SzoJMoIf}=Uu0U!l*`c6CVBQ~_+t9t z1#Od;PF)hO@l5=CI!ZroVvMA0$Zy6Jiq^&b4X{ zgwJo7-59uOGdX+rS;p&AfY5i?fjS1WqM(q4me9FLm~kXW zQy8oM8Dz3DDE&p6RVM)d(efP>xUve-gS6oxshPMz2fv`EC1tt+ZS9v9rnlT5$O=oe z&hEh;pnr2I4V%K4o3zqDF{`ohjI`Z)_zG5IN_s-8_D5g`?qO9Nz()=nxB= zE8q#}s@Tvl>U-#}aa23&{)ppRj`l03v$9^{&C>tAz>EM<*>9Bfu8=XL8lpUTxZf6D zz*Sf~h2rqiw9cBx&aWtNe!g4rYUuuA`LVf4zx(aon)W9GjscMhs|BO$CPo;L_C)F?ao`S6yg zMuv#7l#;{y^rv~h_kR8`k=`>=-(%etLSm_}$m;~v9uTjNM-AcM98qf6sZv5F zz{??Qq*3)b+JK_m6mAlxrfv_ zmR~ottSWNNEe;W6&UYYC520^FUF5Yg^}G@!8y|ukKqT9Ow+;zSkBEWI*}iT$*4b-{ zsE`%yWt)B$qdbPH*)oXJN-!C(lZ*TGcZ@^tW%q z7h)mZ?UsuXZfGu$YqC+#DS$^O7zrCTBr5j|=egJ=ELnw`c<#RGwUl~stZ*zfEZnbU zbsr+cn6YdvVX2UH_a(v%^0+UoZ2s^=&F0?Ulay@c*8$rb8$vAXGH=diIXP*5kOj{T zMK9@mMZO8+gd-w*=f!BL{vJ>vb$W|ZrIv?A?FN_hb{#h0Ws6vS&r@{EIqMahd zD7D6$YEEnRM?|4f8sUT^D?(ZF7}YeCCD*B@G&fJuE

    KY5yp6QK0VTZ%m{04+z16 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/ck-kernel_launch.jpg b/docs/data/how-to/fine-tuning-llms/ck-kernel_launch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3947a5615f8e59b2f80e1932e296dc83eeb7ef9a GIT binary patch literal 62929 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

  • )?4}Gabs+6(p#jlP7XqU?n^fIWh5K0*H(!eEj(a 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 literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/ck-template_parameters.jpg b/docs/data/how-to/fine-tuning-llms/ck-template_parameters.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8876965ef73af249afedf1c5c67edf8939059219 GIT binary patch literal 50050 zcmeFZ2Ut_xwk{k6q!W5CD$=Bh(xgR1KtKcpL1__C=|-tR0uhwn1Oya>C`F`;^dgbo z1O%klfb^D7Vt|yp+-IM2_Wr(o|L2_lzt6q*f1Yo_B*|p0tTEP{W6V+BIVj_lc@V3i zo`D|d#EBE2m%tB*G6m8Bojh^k_wU~iDjKTa$0=%RDjM2Tw6wn)9X%sG9UTK5EiD5x z0|O%yaM04TfSH+Ce!u_yCBHBKeHHM_L`O^a`;7nILHP<|qdQ?jO;2^=Ea)WL2`aV| zls1qE2y}u5p!PSxe?Lx~q@t!d1(3wR2%J#G3Xo4lbrK+!hMF2UI|%qch?HdR<&MvNQ-afv5{_udO&tHUvM?^+NCndj1NlknGCOtbRH}6CK z$AZGo6_r)hHMMp1Ev;?s9i3g>JwwAkMn=cRCnhlqi$9l^S60{7al3o_2l!uv!=vAP zod8k&8(aUu*&p~~1Nb@#i~%+6Z@x~P^amOh8#T=tg;VU>X0#4ZIL=-Sq2s)o_`bZE zUi8u}ESIC#AOrU~MT{8kH*0_6?7zlX=>IFu{)4gq_TU}2?{rMAZzoqH{9v0r&qt3*M9r0p3Osts$&>}L#;Wv|imc~GqR z4kNNzT|?-DzE)bm0tF;Y$a??ymW`LzvgirSITN)#)^1XTcGJ3>L%NS6ku-&K zSP}&^xk3&bnCPW|XpRObAhFTlDW*!__rFlI@?5HxaszxE_|MTqa|$S8hdc(^mkaKP z668mbhjIyoUf1Ei9}=z+W%0v z)T}dr#TB|fE_lOP<#SWn&@t+rqM5GfMrgF;yOaNyG;ji$8QJqdONIg(FQ6qy54mqL z5GbJeG2#dFg#l9ZOXO;ac+=N^qZfS&IbWE**`x$Kx^^N|1$7zwDDmCuWPpU0Eyo?P z#gMh*Zks)=s^dOr2nu`4Xs@?=zV$xC>c>7wPT*@1Qo9Y_KC+ngj-=9sLjhN z`K|EBd9#dsYq^Vd{1wNq&2B5%1$SyIXCL8*2DU0nN@`FSJMmE&Voo;_>-t$Zy&k*G zP^)%}iB~%4a^5;8Sq$bST4B+x4UrBw+9*Y42AdRl1~>i}$|dLH=}kB3`SwffIBY-T zr_!no?oS!L|6%fTjjeS_Wk_>gPXk;z(DqM zn(2Z#tsvOmg{~OH$k1^ z^$apY4fGD{9dF$YW%aBos^h074ys0uX*kVpIsT1`-<15lakUbI$MUce&x;#voI6V9 z`|Mlq4*%?D@^1GQ9?r@s@#k8BRH29&cr*p{hypq?=XzSl;jZu=wvw2WKKvtdUcrsa!Vkp)`$>wMX>LQ zz7&wY%CQ9!(_TvfEu1ICfe#M}7X#Lj@(aO}X3!|)pU#n_fWp9wWk;9MlQ|R+i)<$a z#HL^Vo&thEP6-}B(r^$@$+9*y!IZ2<0p(VBztQMd|Nu&^Ru#Y?5~O*63Ay0 z{zPyfzsTMm)?vW>5XpfbiY6NUE5`pwu;$+$;Dwa}B0B2WRX13S0{S!Ge;NtljtC-= z$m{)s3~eJ-W~12wpXE=C|CwYb9dd9m)8)Sg3&;7_VErXofJXUCvi_gc`~NvLC^1D8 zBBW#+%K4xt1Mw+F@>4*sdJsT#r~DR}#FaZX&V{3Zn#&Gv|_8^EFKF4ghFZ3vnJ{+lxG50?sf9`P%!6Y>- zYWMqF_JU_^C%pp7yh|AuMZSjMKAdn5T0pU{O}Zq}x5q_K&^3$m9e^n3Y)HPJbm{z9JFT}fu>j)-x zy-(5=rMa%bs_(WtH@>i71ACEXE!s8QiqZ5o`|c^`Xb>0}n0CER^Xi8Y;V!MJAvoG% zl+1%rcr`9pu^5M_t@+H+&d{wf)b!&LuT!*Q7(ETjrA6vo@+d5X0%AgA%n%C0J_d5Z zGl8rDJKJ5&jrA#$ck?Kqkn39s+98u!(aCmmKUHhZdfd%lC9f0++xY%8UrxzPx8F5f zv!{S&{5B*@C0d{-e2}Mz4{$2+vX6Z4D#5tgnN%M4J?5WOU@t6fpQKYY`}L;0%kJGm zgIkAz#CAiLo?IrKfsDrVNcNO_>X7SYX}h_U8E8q_eFOz`Y_iG|e2%b(dE?XTD(8!0 zB>0<-?eE8_XjJF~+?&01+!c-UqkwEiKL-olB%dP8lo1kcXU(G(fmSs4L8ji`onxN}^Y3$4(j}MavUF}#M2N^;i(aL>+*z2u6@FHu z@NIR?hWGYk4U@1thIb#GT~CjY$xT@*o_>4lsZyZfz)hzREV3hT3Kp-$JXlQBU)W)H zAxnp2jVT~{aCrY~2LeIpI$%^NSZHGaO95Hdk*XfOGZ7?wpocd1K9+N; z8NTr`ob>hCsYkg9Cj z!z)xr`$c#%J*{DK$`_r#D&-vDE2A&Rk$T?Z0lh(stoNQl{)3xpUb`QDaBOGBJL5xf zkZ27K+SWe#*2x8JWQqItH5LCc{FCXR>`U(Im+DXJP8-saW}9oB!n#VIw+b`if)k6~ z{nE&?bt8&Kz1KTXK{DJ0h2yq}g`1)^clZ>_Uwu}Xsb$rL;#69Spu8dsO*zN{+iAkh zBTYT}J$B9MZpQZddmnk2&N*H^&$P%ZXi2VckSoYDfzfRBXUcTlmMa-mPNgC(u}go@ zKQ`2_y0tcfS=YhUp+JvkEbAuQT-I8CZ{PireD@+BjSaj%POGYr@VxWL zvb@A@qX^RnzjJrmP8-JABI?QX8g^FoduIRiR_UdMUmayUL@q)iBrJ?nTBVX8tb{F@ zS+vn6J(un(H>^2xH7$fOBCfik!BMm>(rq6c0R_!r(9s7%mSA2&DRD#P;jvkDgE6H0 zOGXddDVW@d(Bs0lqLMwaD-yB|q&Gy(lGa7=R+O)h*J4M{*)Mfp;NPmhza#y);GxTw z>$z7(y>l4l)aQ|JVBwWobQ6W0Z3+|~k!h94dvo)PFaIlBhwYCxv$h3Qxd9%-8C7*- zwOik&15Fs$(w@pk6mP)}qz+=n&oXLm4(fAEqy41#3*|pig~Wex??Zd;94gO1$u0a= z-bXq6S}5};I3bnLcVu(6&8x_e#h(!^((!OBbe7rEq0(NC57EpX{8c}o0+Cif{I^OeuB4`h_Rb$D(c zzbxWYPN_6Et`d-T{rq{$X#nl&t~l5vLlhs~-@ksahA>Pw>WYaH|CCBU37--PI5pxS z_$)whOcqy$539xcMU@Z|uHZhPi%oLo3I!OEOm8$a)+H?5{TjHx=}@aWA6p%Le_Tix z73ADX0a0!4Q$PaNgk-Cc12mU=x{v%Rly{-V8K0kzuVq=7>T()xv+!RH>v`5tjkE1| ze=N9~9uZomA&1aiSVc&CYt$&XVC}SpzT_qu4rP{}*|XEBU`^^;OHRrS6D`a%luj|R zL81<(3J&f*bWhgCtU2ZNf6PVIr@yjYk`n9VGrBfptzEscBQ58FoT6%}nGA2h?k>o) zZ}=(L!aGfB;z#LmPq0p3Oh3n7GTfS{)V_H$2 zzRbGB(-SHUchZ0LZ1#>qmw&C;eY2%ZWE7y$J+!0=ezICeHobaP4dLXW?fxri+*WML zt4pz;9!!HD-lCH@J*pq2bxMB`M$?(Q5iE*hDSF~spi?-$?!|Z=CL{5pNY82a-Sx;@ z^oNTcJ03rs_|7LjiG48KOFr>)u8QJ+HU;J<#|u8BE}D z#lRwW7JB2n+til7$i1DsU$M^7X7>K#x#w*9{Q7(}v`1B@UhU5nX6)LX?M=NJ!IvTx zc-6)u2dInd9J8V%#2O6rr0t32O)uH)c><~)jjf8yXh2_*uH%qnqlNL|Hp{Ltr61&>s8fqRYHP6Iyw2N?R z@sAVlVv}7aV{0ByR`q=ubboj|*@xp?*TtSznwM0aHx`B5T^vu>nOnOelk0ZoYm;dW zFs?TRzZ<3(^%Xt|(^r?AoGG2zE=?)jNyZ@Q;lr&>m#fnE+Km>37#8}qk<2s2%DXmp z4-Az)hMz`ctAu{;+60-ri8qFqptjB|pm>R@wYb!{z(x8h=i2lj^;XL!=GwZUQrV%0 z*Fv^aN8aSY$7Ijjo|mpZiFq9SzD#SV2?RK~VoE=P1#$k-M3uZ5I|I04uSvOyJM3J9 zPnOlBY@Uy0P`{b2q_gLHZ^M*3Zp$hAYxzI>Jy5D&kM}ywBOrA!zw>g^8E+H|`unZo z%cK1g+Ul3rwdBT{#1Sry*wVBjJA#!7mYnAPac+8Ys#*5n+nBhSpy)vS^+8U(yYVe; zTcD4$nvGd}KeiG4ieot89Ofe;dUA9W-|N#Oa{3i~R%q!8(=`VJncL>4<)E>_%+`dA z4pu^Vr{yR@sZ0z#{5aBe0EG` z+lpy2J1EPh+s1F%Q7mdfAPRE6gG;-G+7#4(E5;~oS7Xy&n)w!|C0_@<iMp6^?9APw8uu$B@i*!{-d^&U@YJSaKA0vFqZ@c*7U&g}Tt` zk4>AuN<34M)j!oPEdFDEDxx-}cqh1n?Ln5#xul5j*~>bQ9(E2?K2jBAqQ~+}Zv`4O zj3SH|U~D$4R#$(Sl%oU9Xe!t9oL*L%>dVANf1`c9GbSP1=eA;$9+WkS{7P=fs=D#W z{NSx~>*l)h{34^Fn&DvdE5Tb0w!JeGUVV4kNgobMkY7`+mFsc{Y382{luA^LGj7@h z8pt}wyXVI1iD6uIxDbfXpbHl+z1>702_Xdp6=N(uBfC-gs4S-HqtBg3O9|h&8P?7v z-DJgX76^FK#$a=^>or@6(f(``xj^h z@Na!KtTc?VUSplYCnK(nDcM0SvW74)SzqT1%}CeBvDQ+HE>71+hE+uxnyHw0xxeXI zYzaTgg8CQqhPOW$%z5E^cpoF>EynCIw6y%|7E0Qqxd{784 zsJcwFD{xg-Il4Ezm0j*44@!Vb^S*gVlX~@92IHxd7jjRmKehTABk5~IGP*sgG{Cn0 zYn0tJCg`K$Nh5XVV_eJ2c0q&WP#XuwE8V9->?Y6nHPB!UQB00^0V$%{-;&4gVnEb# z5B|Z8t2!0bLOFil>o#>=3WqF>%K_a@zsbcY0(UN7Akioq@8!}@v{0K{`F*Lq(J zkFZHUwIsaU(lb*sopAe-mez+_!!7iD?c6Q`{h5~3k352XE)}oGiL~aT>w$Y0@ZKV< zY#f~iXnZ;S@8tcjeBIlLg;bfe?mV+nXkM7(yyL2JEB|%%lzm_vdRC#WcwV?IKA_VO z1Hr7!Q6X316i|;c5b^AgRw2_5V`L#6A`D`LypL15feSmr>ndq!{(Bz-vafGH2v;?w zfKEy#WG~j-10AU~tha&q#i_ z+5cw_*^u-3D5|^9fW>*Spi@l~NTN-0Z9tgFvIO@<`H1i$Opsfv&8M02-0Ea;W%5SZ ztoi0wL2o<8kBQe$v+B`_mLQfEkPLSaY$S9el{aPzzTXur>3Wp+p~~}-vbML_TSg6U z&Q+1O_nkB-pnwXqFouGTbl2S363vujxlpeH#>J5JTn!J83(wA@kp9<@AXF@dE zyU<1fowAQ5&HslG{EMt$*}q60{!N~xu{vZ1Cucbn5MhZVy<_Scj3FRYp1>N&HhT3M zY^lP{BN0EWc7lTake8fY7E?3G}n;nO-=OwG}+uItEM3ejZ2m=mO zqMWGMr#oTyEZCKw-8QtJ46{}9^R~2_Tq_7xF2~M_V#%Uvm`y!s7-8vQFWgprzAiXFcg-UZY<|Ltk0@7PN)&pkPi9j-tW}w0OljAz^ zaez^B@)r@9XI6XQL%?c&ZB!Pr2 z0pKmo4gtt$(DAg-9jS;+ssL{p=dd|{BYBtz`36}K#Ho-@m~0E^s*_peW6=ALAeAsO zD-Rl@{|81B4v-gsgop{?zyq(5-feUHG>}?P&K<&)COIHjRZAX36RrS3lQ0o%2*M7? zt~?>-AhFNB0M-O#gxE?Bg0upE|Kjm~J_G(5$G_(4U-I}5%JqMua{_*C892)oVNEQ` zYxL5$$?i6R@U$IcQQP(~;pH#vkO(x-%FDCC{g6t_U+PxKXJu?&K?b~3(_=qGuz-Ff zi2iDuOF#-WDlL}9X>lii6#*033dDjF<MB09c^=1x|w;oj7l zfoy~%p#rlLuXW-R4ie@odEg1Y1^#JU4C50MN*qaSslQnNIpqNp-RTf}iDQU+wLK51 z3`oj&nwU3M4Oecdn|?1X-QLc-bFV5&QQ9v+Xgti~Hg)Pb&dv40x%HE30~V=u z3FjQ4;g6AKrfo)I6IavQ+sZf6%kYiLNNmEj!Vi}<(rC6-l3LwZtzeq&pUMEU(+wR) z=KqfLfIYJpFUM|&IWK5BwU3!W*FW9S6*}0JOZ4G-@LJLzbp9FdTTkK8Y6vXOWQ)J7 zC4t4A$J-THxrufQVn-AB~H*XkKk!xTeCxDClvK>iH*Z8!I?lvg{4o1IfGw z`TT3s6K4&5k^V4czVDHyIAc)*419K6K-&LxyV!0ksO@4TO*apt@E+cGsWF8y5gUki z#GQ)4`D0dMHTdR%1sx4WC^-wFrg*eCamM}GvogcW)v$AhkcxLksqC-w?k**wc33+D zx@b$>(N(@_L>W(;mRU}0TCCO?w`dU{-`{bdF#-q^|h)W3T_TAhe0 z6jBz#4vU=EZLou*(_878ArXsdH9PcBqS!UHH!C1}V$5vGDYs%JyDQvvk-*Wud~%OI?Ht zb`HZ5wg`^1KjnFIqzoLTr2ro@{L$D=e{7FpYpCM}lQ#6yHFr+*T)&_E_{_NAz_<=3 zA*xB805(I?uTT1AE+VN3?yXkBf=xfZmB1dHhi(jR2ED6E^%TpJkq4>aLZU&(D|jTS zpz-qY^$p=m6rwbW(G=rh0?ZKmOFU(Vv%i!XjoIc|_md3k?!SYmk)*EUlP? z=D8_w3%?8uFH6gK* zP(YsRp`%hdU9vX1wb$N;3<^D`acboZsv92%?R%==BXCLyTeqFCb5QJuFelFvSCymw zj6zrP=~Ud$&`G!>qaxUuE^hipNm$aAT2a~2`neb&I$c>7`k7$nYZP?VdlAe!NpS1k zOw0+eQehMo?XF8>3lX?qy4cl{zPlp~c(6CM1ObR)SSfPtL6{c+4n&5|(v2PsIx4jY-Ci3vgo8(gU$~a)Y6>Obj zPzE9H4;SwAr;y563L;ZJB?SzEP^v4BE~@{qgj7IVOMuwb%8RW=s`(-$!@A1J?H#=s zohoCkb%zS}Zjg!W+khv;b_3ER1>|Fuf^3%C@Ac%t+t*f9)PxQV4YxO)38y;~t1qZf zTI9vWrO)sV1QG;EQmq#5mQ8LfmPMf-?!1^Ri`_>uuG)(aA=Di-$pu2oXt_6DQM|XP z8LE?uUl1pz2N$VI;e>%!6dgh&2S^5ABEoQ|mWQ};ME;Iygi`U%Wn+CKbj;nlV@`hW zw~aKVAefwBK!QxzbC}YB1d)@gOn^+^i<4YGE%y!~rch7C%YLYXys3qM`s9l6O12wx zieD*jc0hj1G1ZAn{HPy z{NUcX_=Rmn|C*XqZKjJ|oaAjQYKJ)2-~m*HRg4yQ@LSM7HGP#2N zP@y@}l=D<9u4J3s?;-0DH%R@_&g+|yc9+>R`bG)B&lAFuzhKciIDFnbGBTKt;9Ht9 zu@I-ntYsshUEW&U|M$48esB zY)MznB|pr`T^;qaf}w-goI=?81BqYvuJBSol_FcrIpjVq&d*~+edi*Th~*!r%bR|b zIK^%4-+t5P`oz0#Bvoj$@Ge)^^hJff3*^Bgv4JfPaI2=)*zJ*nks(O+fk1}pqPr0L zOoj)Qg z@dg)dt&Lb~6y{Gax@GpaQEfsd!Ha03WF!J$XaYKk#-_n5Zep9XhJOYnZ+Y~tkUHin zVAF@*s77f<{9Dp{qVci%v`hL6d(Q7wWsGj=)fqV^etwe_d_=ljmX zD#Sz)Cgk`rri`R!^PTp)Pxp$Ei@kx6Q@oPQx6Tt+ekKJ;9ju_M z%EFak0>Ql^>^?y>50h<15b_1qcl5zW-Ohn`x!91C4^LB#r-M4N5?h|`xT|m&LVX@3 z>@LhwSI3QomonOzeVC37+slb6rP+MBqmF2+KL6O3gLlqK!}-|s?kbWKron^RVI&lF zHi-?%iZ+dGDT-C-4rZs3^ifJn?Tu%aT3^Kpy)E`=zdD~TQl8%qW+KGkFB1X^*TzP< zpX!!|Iee&ZEaG4L#nvv=VBK_`@vNc77xXNM>8B;Q9Xe6cXoPca6JgcjLl~gG+G|`d zsYJ7RTvswaOS*SwTQr*7uk-4a_F2zFVJUX$*ifC_6C>~ee2Op^Zm#7EFFg2|Ecbvk z@?2m{IgMXO+gY}Ij!kdYATpncC$s090?Mo`)Yl}^n><~O{=A&CD5NHEYP9io$;3K+ z&g_j;>-4ERvwB0?;@84Qk&?vR%)zcMqmu^vBH_ZEX!uyQ&2Y~ouvt0h}d5XZt?^e$19z*R&T=)f!2d&9kN)Q%{r z8=u{(qP7UT+oL0s`1QVHp+X(Uvg%r&8Q~0$suRVg=ASGKoIwSBJ6p zew@v@Ubw-D%aF{84Rfl^{rs$z>hWPwFM2))a!N4(?SK@z+=zRKkjJPmRWL4O8ejXW z(>eL9wjFb*XFTvG%llV+kUIV`K|7bIh!xN9&bK3EFB=;fS6yPZYO7Bz;di`%^h-1E zDGypC7t6tEpItbSfQ912aT0M&>hPMc!cy4MsCRBzJVTpG&`MWpVtvV%AO0q4h08`p z4=tgmR{%G}z5%L*0JQb16yk5#kb3Lfk-BLa$B-8P2D(b59TJb9tO*Gggm<>3>qkFQ z43wT@BYaqHwZv9MhC(*+pTiW7pSuf4T`K!`}zL*oTyh{55vDA!-qz-e+smORlm7&;&~;{c|BAoj9@v3T@wMa zx!9t{vQ3lC-m;pVInsO5`#P;bJOy;=*PKWH+@=0Q@(y;Zv=MncVuFKwYh@<#K9%qK zWx^6XW~m~=wlBg6N3{rF#Iocsv?DiFMu&QA>@2V8h_)o(ot{2x$jVJGb+r|U2wIhl zg*0PrIz@!E&LFhL5dNMRDDx^BET>nVKko9hs-sA&06w~VwM21fa*EC=?wo{UZrDWK z1IBP1WU{lZiJvft0l+2Jn<7k2BGCL+07-oH3l15pac$K40}9Di=wYW6+^w#|uioZJ zuTkTQJ1Gr&4YT= zD_IiWb&H6c`BRpBwBy7l^E)TWUr`n4b`iG8DR?NDc7|TbU|&}FiL3DIA-&WcVbsq< zV>h8sKZ`=+zpYz7)7*|Gz*^L-i08|ucIH!24)gLrN@p8kmhTQOSPNzx(`~EI%pXs` z6FhP9uJ!wC>7q;BZ%#aTTnxIrXA%y?1AXLq5pLK^Zhj?jgaIz5quw%a`MSyEJ|S+V z>l1RvT5)g(&T>oVTt*1X*Jr_LgU~n73c;hXwqE&XvrIpT5R8Zb!Gi!c|1zW~!sC8x z+|@daXr24AtC^-`$j;c)rJQa7j^p&|*@%5|fZm)rmYi9IG9%0}CQ(|#SiJ&_`c}|^ zELE$t`bPbuFgK^znENW0gUm%2QUPtAyr5x)c&I~rX0wyYVy?t$x z1{+i_>T!q|JbpfQUF*JTtFXd;X;0G)z_~U>oWjy1Y?jR@a5T>k(6%qyDOE8VW!h_= zo$xhs9bI3hXUnHw4yQ9@YuJA4qqI18ip&V#!55PUPnKT$;i`3Bf(H$ymynZAm@E{|9KTKA$bn~ze!MHf z0uQ%2R(vxwW+p|-x?z6$wDAcK?x<${Nh&EmTI537rc(~V93PC^c}`?r;B5rcCRFiC zd>$^fa~Ldf7H7q?wu4h~Q!|IUVsX65D_s`epPmJAKrbU4aegVl#@DHcdC@hsEL5R5 z%6}n)@k3>uL3`CVOUchIO9oSCRhS}DG+56=CV&kOSlUi7J5i~gV26Q32uqX?dMXt~ zV0{;Q-??Gcd5IX-Xey>zm&7MBHa+^}@)3)%MDhqYFQ3S1^fiAz2`*<68&YZ#IkdHG zBmouu$rHzVUi?^P^3e1lRrf5z;q9?dvM7Md0J31I4v_?&Vx(fwl&+a1BXBhUSfuR)vJ2>?izsg7rp0p#NY_;fPlG^W-O1)sIA?PEb;!PDGW6bm zf*b!G_o{I^6##w{l34;BhbM zR^f-MiRTNvK0d3y6lOMV$@3iYpe!89qG8TmhuMkHqWE;n~Cat6sO6KDKLX z%v;76VQX5|c3KaxnL81R(gTcQjg~PvCi(5+S)bZ#dLpk_be1cNk4%M4)>56U`S^}S zpcPfY(+Z_st*L*MjQ#cX$Ud{cn5KQEB; zQCC}&atl;dOM9Y0dzvPA8N%ffH!Ger6nzul%*;&Bu!+VjPkE9-uA`BFyfQ(6;I^VW>Qka(HMk?nW_!neO02zd^}^N0M+~3lAL~0I|7-wsLP%-SJBr^^l%tU@jZXz~&0}*F3&V`8`JDBwVFs>=$cBz$2eH?#T{UM;YE6 zjqACkOXi_ZQfRCEd`xK>=OGh;nEaLjHt{k{LPRhPcDaOI(KRq{Rk_-quJ}UFxp<{} zbn~%$7D{uR2x!gd4#y3wN^9Vk%M!koSsR@y)q8!cPUW*=L-+4Ym(rVVb0$$KUknnD z2F(+dFpNN|FU`^#)dr&?u*}`X9*m)~jh#O#*N)z}G9%+P@ZiyRgRdf|FM|*>MLDBd zLIh-+mh@2728mI>X-x6V>0w`i7|ErE;kKA+6LHI1xNUm@S3W_0K!vEzP~m+EK^UW= zf_?N!g1T|~5njk}*~pH2lDoD(Yyy+n^G;Ug(RRhy>O+Ra|<+(JK^RJ4GK zn5DzX6)ed>JVtz^ZF&=Ay{lBZVyEa43G$YApn@q*wn)&Bz_JrTZ2z{Q}YlA zB6#encrL0}#7m*rkih2%6t7Zk6@;6>*c>eNp zk2=2!Gkk7pY>Y9ht$nUj6@Pa-`(-cZcJm3>TUYIDGkZEuKkxIYv1cDDYcz5#G5+AX z=g!UA?dcwj?;2Acyl&CWe_e0MQZnP2s=AdXjmzK_&PIJqAEbkyc{Z)+&Rw_khwnMG zeVqeN4$yq_xX`uwwMa^kRgc-2l;%l#gO{&p#zUmLb~VbE0^m~>Fyq=qAqDfnE5hzM z!5vUq;^kuNb$(<^LU^?b{*qXGRUbNBCOduB;$GM42J88rudLc#r`fE5ZGC8GAko9? z3-<-{{0;|8p=(~)w0jq=R*wzqvN|?%E$N-{za&T%TduiL0Za&5GJV{|)?)#<_e~kC ziR_tmZmYzV*AICr>dbelevr?8L7D@WUyxg`ZFM7d_PIZ7!H>DPT^Yq0Rm2*@s{$$& zKf}fe8(_$J$F(%8M2g=zO^7HY6k*2Vt6&k<=tz|b$fV>SJ(Z13^d0 zmX8dD7eKrqE3uN`fu@r`3yF?s-%NXG+$od52 zn@vk3i-u;t{pv67BbGRt&WIBJR>M?v$&~$GKMTw7lROG~*IXDroSo?4hr34_EAAO+E@81!!IFpzAkhhVbEmyv_5 z$fbyU3JB*DWQ`({6375xp(~;awF{sE28^)!n|t%%a4#ElIFT7hbAZ3(?)Xx<)+<%L z4|R@h+m-sg$aDjXOg?SA^wmy`NSI>pluZV(fb{a`%T+Ja zxH~hz6Qh6I0D6p05G^$gXCL+1-~~ceCWPptN9^0zx@G~;T4)5y~4c6+tiDy zW^4B9?pTh+u$fA){4MZq&-*d5q$cD&ADQ%L;&ZXzZ}t}>cVXmf!ILJpX@T)uONCU- zJ@Y|Fc6M;j(qhBVG3olRH=ekRc7IIsk=(*R%X)a1?^Wi+nMe)({6)xwJ0`6S$=O>9 zkH8FsC~dhdI%j-zQ=`cn`H{hS{!z-Jj9=lii*V41p+*Ym4^vm4cxkRv{zw%@`~*N& z$Z}~TfWba64os#wVq_o?lMn?kCHRIpx;5*BD4D8^xJxD|tKqY$0_tnBiKU*RX|UIc zU3x#Q#xtIsRvzhpEHx_$pl25oz%y%VqZtlGYgV||r5$?Gw2mUAEjvV!nMfi( zgRy41TwRZTZw~*nUt|SH{GZ&Xzi%XmD*ulD17Dx>)MQgTe>Gh^6EkDfImglXuma3X zu(|1LAcy#*GVtUK1!VT9Zuu(9<12y+c9MgccME++rq1SFAC7rDlcbfDjlTE@2}4c= z+Pt0~hePp>-%Fs|ch|i(to#*_U(U&WM4kZ99j%YaGthl7DH*cU83`e51&XY1t9(8l zkU#dOC3dcja2*07$J~1Ci~J731HL?3_%sEySc&}Ob&vypfr%gtsqQ)1X@5PM*bb;a z45=QyDsn82oJ(Lu;wB-OTI8d$BU*Ad>ephM2+=R$uWSB#27k?izhvS6us-Mzsgc+k z=9`{$-b9@(6Jr+&y4(3q+?MK~%$5|7o-dvpiw{<8f6&+VIpL+0xt z6={);0a*8DG;NrTP#US0zVuHx-cfH6(((5@sRobPUFbFph zf~#n@Ob1kIm86oa+Lku600LWm@s{p-yn4Y;t4&=*z_AXnY_K%Z5}y*H0vBd95f0ea zw)*#TNaVb+)3M+jL;{iM0ryWbkYVN4NHX?q@mVo8FUqmeB;RQ6c#`}|scH4_X*6D* z5E1hgy$^)|RX^lp0W3C4!k>Hop^yZ8i)#~#1M`F+SDS)?G90!x6wt1a$e()tv1A2q zQhFS{AS{0p0I4E=7yPINzz#pvAb;-q$MP79l~(1*HVu0k3Ml*VcL|awFu-8-`4?UP zSlpr0rOXlVnBk3psjj>CyDmt}!W;$k5`eq>i_U+n`w>5A53FIVI5-bEX61JklCX9( z1#||m;s4zCk3~j=vcJTT&n#f&Njw9;OP(;sAjvv8fA0CmY9?9gx`8}Io%VU?kvs}0 zF~Y+Q*ijMsfA0Cm!YLYle+}1vmTCEGxc*)c<}c~`EpPvaq)R`*t!6Z-<#6I6r^i#a z=k|U7N?ZJkzF~{id|z{*dXU*FhLA;%J;JPDgOUvWO(4J*@94jxi|s#TR|pqv~CTa-MTwS6RIZ}i$3@?c8z_5HZTGddoj9;tN7 z2Y{RZM;-0!iNkBP#;k^@oZwX&SzL`?kK*_!ybB^4}1rF^RuxCD`9;AN~JD zLamGL?PDUWk5=$bq~u`X;7$?d_gGXb zl5uU8Z*cL<604N!&bbbaiDk$8=_dHhs7@--2`hTD?8EuPykR4;m0ivh!}w zZtcxyKq+OaMGELSboY%(36*-bNDEstpMTg6J zV3A&60HxRL3UO&TCM>3|e4UgCR}_++&~}mC_F(?`-sJYT+!Z1BgNJA-C6V9N{Q`mN zelYSI>D5{XD6r@No46F=h^vz=t~0_Y!1tXKIrZCv{pV)?00+aPu{_PPKp@p*Oo{oS zd*9hEH?_CcDiOZ29&6m+1dD5sj-d`7v7#>vG9F?CQo1bLZaxWZ%uIapB6o|+d)TE+ zkuY|AT?adiM*=Hr9A<`lXF>Qy;?z1j(!o|&RO|I-iPGk|w>LzeRlesCH-2~WQmsEw z%po-m$I-%XkA6RAv;I`M%AM;VZkoAX{q;H1)%75Tmq>oD>vdiwzi81x@^2Kcl##)>a z#$-~x*$qIxDcfc6B|bG;^26!u+JqM^w5 zTN~dW*lCpo-&(jGO&uUu`MKlWdDNG+cx0M z%tn0XIK&F)#1j{oX-&V&Z*O(`?!5~o)7{TfQuy>R@`6rWyT4qJ_$y~V>Go+cdfiFG zW?gS6yVeD`KSnT17|OaXGO^Nb{SCnPc1|p%ZCMRRxV%5)s@`Tpe;YT8zur}vTDaD5 z=5C%JFufFLxccB3i?k64Az&M)F#8W*a0MZv!^rPQGk;g-BHKgXeDCv$ z#{DrP1I2y2Q^VGuvZJLU|7~w)U0FDqS3?~atm)gR{t@W{W_DN668VuZu@tj8Hrgih zow(jmouu`k=PlM)I(M`4;Yk0#J@h{mE-%XfqA!I>U}m8HM6g1rDg{)Hpek8Y!>1^i z)ib_8hhDf{U)C$?Q0fJv>${S{YpF`r?j?8yS|22{llGu_~;!5{uv zcK#?!|7$;c&G82FOSD6&d-F@WhpVImoSKHJsO<(m%(nTrstVpe#rvRNi0?bGSXUeC zybyyh#BOdNT}jCccHFQ}8|e<`G6dee%giMa>x}Xixibt;}(eh1_Bmq@nz9 zZBJls$_$@5R>UWFIo9B4UdnXzTdv0P#k5P&_Ii0S7@VznK;Mz88K(cJJP76dlLDf3 zuG$H^wkYo^lD1LZ4YK>XZ1NZR z=N##x)%r~EKX(jbJCCOT>vftaB;W`>Xz`vkMD5Mi2utaZUL8n4TkJYWf${VzOw?svmmhjRtfj%yJ|ApYr=HNySEHnp)#uiqnBK<0V;eNz z+pB&UnjK!=Hh_+g}w4_>9PrgbcULk=|hzVOx!|q+2>G)S9Z+Ijfs9^T~3JL6lA`a zgV4tWYO1DGmjJwSsXXL{eo#btM9pG;#!Osskp+v(RM!uh3{>ors{`l^Ob$t$FvN|7 zy_D9RVO}}GnwpX57QmWZ=lJD4#^L=bi_2@u!Vl#RAMbI6WD-RQCOD>6R7{`K5>9#N7Pos9drQB@8#BXr?$F74oTvviPgxg9!GjmUA*SuJDqXms`H$E409!} zOyfd?2)uT9)A_Z%K>87x%-{rKc00S57TfpUShz>&{f!Tc7b3iB{6Atb7v*mAN3q#l zLw>X+s?U*PBS)zU{)b@(4%yxBl>G_ekCSwJc(zp*UAOn+IVQZOW+ddS&zC7(pmt{* zB6ebUHTCh}&=MKM6ts1aXoxQre3f(HoFIlhbh8;eTJ-U;Tp_K~$=Sl-gfs;E7WDoE z?=U`2M}MJl0=B1Qfn$#WG=(r|4PA49kOpqKlj#W21H({SbqrxSzr`+rV$9+%V}Brh z=^%Z#dg$)@4!r0~tu6;;90|9XVQ_@w3{A0DU9>SGrc-1wb3GXNw9JacseI!&W5Y)c zEXDj+sdGkma-SbR(GzfJ7WvJ4F8>+zoPD5p<$$N=7Aw(Soi7=&&c{Do<-dL@CuGi^ z#i@1?F7PPcif7-k*X)vYU3HU0;8!IE;ta-I$aKuP%BX6Jk<(?PN(*GxG$1(_YM!SS zIA9}vwbI!@{jOClXNQ9r&%TQ&*l)e6xN>4-LoPB_X5KS5vt%Z7&1Vez-KCUh2Lwo3 z0?*(xBO5@+%H}7uPHsIY8_w`2MV`x>-c+~wxC0|ta;5KtGvWlVKW6Y#ZQU9-aSLk_ z!8_~tEO#6v2Px>~Dch&=+?Pm28BEI%JKniz;139~jAW!kFkUfeTU_N25QCsRq8K-|0; zY}+)XBtQ9wmcE_QYuw0gna4MFCK$?)SroPsgeN{``m z*=#_1WMRt7hC?{*PB}gS+!}Fo!l0?nX=1b%-&-5Nn0@`F^3r6p;zavns*wSM$QAB0 z93mfw2f>eG!|G%c=GV{7&G|C5pRjOat$y$C0hcIik`%J;QixgS>fFw;{}LDb5n;B) zU_AIh>tfpImdn#|KVR3XvbwfG1G6b~`CxZ|!VGeDw|10#19u0^(7=?tVz`IyEj*j- z`hmU&`XKp1Q(dR=#SC2wRUyH6|5+Lu+Mkh_Qo!kC$tU!K=EGPR7zl*rLmJ3ZME4vr zKaMeRF8bt+&re-grd*t}>Y6eLYF5y?4Cl@5%Q~MXJ5K^(-9wu5&}MChzyT108~GfD zbixzNwB~js`7C}~+jaw|&D(ab{L|`rwxmnn*ev$~u8I~_3CXkMRl3M5mi64t3b7yd z%NZhT(*i)p5E1jhesK9Pm+2+EFEL@+0a%uuKAow0{q zp}ZzD;1W6#h{^YcWazifXxoc1R+X;Hp*Qo{3II=+UCi2nLtX^$##bv@;UZ zrzyP&tXEcx%Gf339~h3c^&Ds$2op&}Lt{#sPzdvZB`{7O9Fz(UC!6AwA$1LSXT3Ez z>#m~2oQr}%k@1Ae8P%t9Dn}sntY=)&NAM!uy|g=hdE}?b%`@ddaM{DoqZmkX5DJ%x zG?yI|)nmQM{_)RV$s<84jgWK6djn&zEpp zkm)#er#9$ z`|Y zOH2YGvI?`KyaDv=Jt&S)g1O=1Mlx;5bf9)M4Z>~}*pC@P?e*1Ly6qGsl#3mY3*r=e zJ-&m#t$)hkC)#<=@mfr@)ls880vPicD=>`^y~fJA7YG%Z#;Nx1Nz<#WNAF#|$cRze zvE`L79A2zxteH%9J3pe~mXJ!_{6XU%K<+yMyxbha#1uGF*V(!^NEP*gwwNGWXR!0x zJ`?T2$f*kpenArfS?EQ#tw-Tp*EPz0yLb2>25<36jLm~$DxuFaE>Y6MBC5s%CGunG zoF7rJT$bAv|gyK}NYC1QvArqOR$3&nT%nE13lD*9q1Y>Pg&)PwaV*x=Y-Hl66iEdkDpI3JPeOPHELEL({{ z<@Th48~q&vOdJoLF>_)oL-X^cN*|L_LIBm<4?5(UBc>(eR5~Ln?y`zR*zvo7nd`c$d!yuuUgj*g8kGJ1`hldTyzt$+x) zZ6;$E0%kJIt%E1l<7V0^PekoIW4^Zs-8$9ZV7qk4dvUVjFnv|aXB)a@35EcATn#~* z=z(*?yqK2juM|zhCr+ndO!O{=uI<$&Wy77f=wD~}r{u)LxP5L*horDvercd&l8AZ) zrB%V3Y;`1gHSrI8$KC}1ZvY{vK-)oHicO)}9agbqS+BhlE|1kz40o(u)-IF6Sg8m( z8C?fC?>+FVri!C<$Ey>QXZA9Z0cS~;?@ws-fAG2f{QQ?-zBy`<4}2QF2`I|>H#813 zngAmzs2=`BArJ_qPXYjf`(CdzI$k%)tOfP~pn?5E2k-u~g2LZcQ}{pj`OxwVGnL7F z$_MZ&HIIE*3B0T}dOfN+I<%gJwt5=R9)B!Q{k3nL*JMbxetT9Zbv35{mV-u!` znUatRP*rZ~%yebqbH1l!JS!BEs!+J%_2JSDlcm6mWWj+zF(XseA{A-x)Tf~VH*_jr zPs}*P&+|PxBl-13%yClj)nZO{x@xvLU6BldyuPCC9Sd`LrPvJpMfN_;r8@97d}#CO zFyu9|4Stq$>u))yj9xc_da!766%sJq{&h*r@oX_l1C+kxXA*Y$?go>49oQIka6{i3A$$wx8*t;C-JdD@5c*1C&g%%O9|?q@T%z_; z%D^lAKWKJD>|X;2$`6@41h5~FV=GAws2Ey7UjDlu!0iIRW$xO;_Y#`UkkHz{=QQ`d;N{F0xrkHcd!|mD!yTV zCs+0_&*r`WD00e3{csz=A+|iBs1&iow6QgDh8oTEgXU^pxau!YYo7QCUD|s`?FNE> zebs&eY)hc=nQ9>l7l>-3#S;7X&nBG#zMrEX-woN{K8H5a-Y0HZw*|D2{jhx%`J#Q)e;{e35l z%oaNS9rew>t?t6d9T`dHnN<^;7s|y$P1&wrQ1Nn$7SE(n6KC}*13z~$yV9cC6gWzy89{U<5e+2$m}x#FQ~br&ku z1|+^!Y1;ZLY8>ihp1Q63bVX@BCb-{ldWcDn7`GTOUj(SE(3QdMtBVLw$dvC78UTGF znKC+HVLx*c=03*^7#n?U!btI<*X8*8sj2aosF*(bTi}6QU$wp)p-1_N*?78^W!qXD zTFaPqcFG58TvMleZT~C8c6^L7ymP$sXg#WM2Y%8Wt^}os%!G7evG{f*5KR-M$|_!s z*byL^5H&SpsX}GMw3g_%AS{w;+T@N>!ke$+Th+=jQp1qW8Js?lc(*8m z^P-gW`_Qa)_36<8lY@HD`(X%h^^`M_&jvRG3$Z&JrW`Z&iF!W4*=om^+Ewo{9Oj$` z&v^j=Niq@%xh2Ei)dM}J!o{u@_$=H#RhskYwCWLNvy=>-sO};Xj~NeimcsXShA!rP zM3~|U^FWJ&_=tQAud5`3Jv%yTU7*#{?ZVecj-%r`nx_x(+tJ22&G$g4^nk+5pcr-_{0f3Mw%gFTtzCd%pDnj_hUIvlZ`vdFY(2 zS97vmt=h^+VnmExa31X4|91-NuL|q`tKXr=0lNYMwvK%Xt=j4UC?m&x!0IgD9O@qZ zpm7>5%`tVFzSYFPRugz-_%=c@y39#YNp|h-t(`}-d7AtRivdcbICyX+GK|Vq zIZ&x6-={uUe5Sj)vht_al&?s?aFMlaYE^|{8=5>Go)*cN&7JD?SPp}Si@g@Xo)I2>q&B&Ap~ zg=E=dOZbf}qsmuZ+s;2bW}Fhs6R+(@lKrn^$5|1bc%WPoFVh?(SO&!GlMETE_H~k zJ^`mIdD5Dx_+(`>olhs?KD>tRSD*B7>z&f`eTVe@RCbd`NYhajexcY8B1KJ%&N&c>s~(Lwsjf&!IM}< z()wAH$x)jGxG{FScwx(&)`;2dQ?{ZELYy7K7i-K$&e7QoptUW+Mju~17Ap1f!yD&& z`tKGm4vlZOJb`Q?+46N2Z``XMz@DYo^bvokUC(pnh04L9c5M|l@^j(qH@ZDY;uqL# zJ^m60t{`}uJtEq zf8Zv(h53JAR#2kZ$wLd0^j|I81E?;XZ(us_B*c}N#JHu}S#unTN)OqW_ zQL_JC?e(8xu7E~@DuKl*O2`42B(#6f+>0B-Dh7%L4nconM-r%uV9Hfhr~rnJoWQY# zYX#77x=J&x(0!4|fdD#h$bfDDSRnE6hyUSE^vT3}JI%qF>>+-mRYL83HPtEZ1Or^a z-b>kYA@qm4fC!##`1U;0V^-Pg7aq({h=voNBgm@3hDkFm(;%GINMzd)?*rsZiIT<8 z+l=Z}F~#{CkB2%j)+5&^Z_9MxUBGR?1)af}O)~8Jj?-eaX32gc7`Zr^gJiQKTqGtV z$ZA9;*9?KTQvjhGI%F%fDl+H_0g)ye_UvoGg1)L!)N+k<)5*a~rf+ft{Rmz+yn#x=}YdcrZHT`OExk5ZHpsM{02y@WZ4la5BWrpHnV9!WZSgJup3MZ zfnEkbs%`q{AIunF4Y{LK{9-IW^6iBXlY)jL$xV|9xs%H(n8=hclD8{~HlgfA5en+xS0ASU#yOubQ*PLZ4)_A(ze68!j4OZZyi%2g}n| zwHfZ1eW?%oGJw0QUI4b6iJ)G+(~z+aY)B(ZfGb=zL;sqTQquSsiL~Zbjrzv=~erzJHB1NV{j>6uP(@|@m;oO zfY@k~AJmlBHW^Q9o8~3<&1D`VPPF(*#7aiJZ*aM|r!uxMV&&js&CUkGqA3Ctd)94xFw@RjH1g^DPbjov$CbqbBqMOc;O!RG+>-Vf?%~YiI+K((hwp!Eg4B~)I z>O&>7A@T8%OL<#fgFvOZ#CG%v8M1wtdT=i?&W)1oik06trRT0`MmmLy=f2*5@-?pbC7*cxTb1qjg;UOQ zFm}9Nr+nv2nEJbQCE5yL)rho+Vr7>YEc{ED40q%TBC&bBvN0-8_s6=P6s>)dbvICw zB7^XB?NfSlcXNR}^8lswW~xB2`3ROeCRi47HlYna(X}Z2D(ua}I@Q`+g2MYwg9<82 z?_J(cspp`_r`OauW&6#iWQti(Hok_}Iq5z|zuc8s&`&xmeeU>BWLo3YV)oJy)?{>O zV0v$u;Lyn~29#FLc`e{1VYF5&LsA%98XGYg?Z>-)YtfR>J_|EB?IYXT!p9%h?p(KD zKISUp6rhX6V&3+~O6#y5(Ta}bijmh3RG`$lP#KAc_6$CJY*?Bm{%pp%obD(E1Ip?%8uV=tNmc_b2irK=BU z&q3rM+}YZ)##4vY(m2oZyc7Re<=1=d#QdU|_5HLcnPr!JdxVhh4U5%jLdc}&A}T8X zjk4s6$2yK#uXi8oXj$CHnurh_Iz}5da`UAuwr0~+4M)fq@~52YY^o!RwNG|=Te|rZ zK4W>l-;!;ciCMVB*?aZ6f;Kh<2?a83HHe9Y4#~+TUfGs&>9_rz5XPyTB@3qBA}edk zqK6M1;RzD0#Ie@xPBRXrwc#AjPV;ZyM8#@msBg4o2U$5VgB;dqCGNT>b<95}sgbWW z5nD-0#IcstN7Wx3l>`PPb|)MpQj%EXjf`1q4Q%P-r9y;wqkXQa-{x4+$bGFpa)5v? zd+x0SoV_X|^z5y}R9EvvHcBGBn2Obwqa^0zVh}=Mo6Z-AU9t@aCR)-N{0Z%LT8Zcj zJB)6z;~eqo7EOiyhAuO$a7H3M^`!RPjcBHu15Zt(oth6uM&FBvL>X?uuhdsuRM)t4 zRmnJJscS#B#8109ml*x-+X`ClWrN%-LR|EIdCaKh)Qxs_NX;qhD3LhYRa_~@^UP@+ z6W*Gw)u&=^ti42!kUl^TaG2{0({g&ZvWFIvP4KD13)X3dzmK!E<+48h`E=B~X@E+> zKPKRdXAa&I?z{QrjLC3hE6B3j*@2l4p4l1=?{=9w~M-Mdz43EgsVd(`-q zCLx$(e?x%V9Eyh6y9AIc-X4}_I@_9d-SR4DcE$;E_*XsEbCzGlcrRGK=I25PZ6M$P z)7HstbE)PT1}Y!ZNuL3ja)ASt@1tFH{d4D~V88P5iOsi_MY83Gs+9Ig?=2l{G@>r( zT-?|yY25Nx-7+sJu`kUatQ4D@O^p?DX|;QZI{0@^jrb>N`|qfK-}8C|KMWKZpXiI6 zmdAxA`p$;+Z;&m}Rq2g0gb%frzIj-Znh`m7$}P!8T~jnUx;Y%;RF$qr7#n^^^e7g`gANn*sc#0Ob>| z`rv?cD@pQ*qmpoa(`hYH>B6FWgQhPlIJzF(rA$2bJ6j9|LXRIF5>@j0-V3$3J%^vJ z?Dike{V-ZJvny^~lIwB4{Ru#Abldp6#6b9+Y`^n1tV{JGI$gYmtGPCVn>`-G+Q#=~ zlST5KYU*LgdloR-|9e{Z6(_th zba)H9P-z!eQsTPtu9~}5go@*soMpLEv$QbZ*E-zo(DHT?BCT&a3UN!HlJSSh`dz3g zQWR5B=*?NXrM2DFB`)x&mR#dfk(-j%`-GczsmpSmZ3$Z88jPp?WWg{1yMpPFY5_gO5faX3 zo<-z3$(`wg;fn4?jh36-EjxD82xHeuL&Lw|=i;-UDLHC88xQeX^fn~TOc4dpUwo;B zM|HaDMR!DROt>V^jMXd9w|dECR{o&r1ii#N$@hgnojFB3^B}AhZIPbk1TndlG&`Z< z?(VHnT@KU`gRKlOXLcLh_Hwlv`3lhS)s8jM!%mKX+6?7mV`Ts;vfE0uJC^a6+^W

    Eyg1-DlB9gZF9{%hg6K^G)DoL?zVh^ZR;Mw$d^-nodASWoR zHE?|1odN+axFI#C;)-m(KfAcnn!7$wWt{PehAu2D0B{0Cc+P4tofkKkoP*1=XG7n8 zJ+afjE==^bdI=C$ zPWY^Lk-IH@0l{0f_Y`G2bTZ)T{F|+5uXeWOD9TnogU^2CPZ+@CroZ((Pt?$_2i`ht zQV*D@MOsq74c)3sH1P>IazPBZsI+vihbHE6HFWbUd;N*K!f46lPWH{*=9}3W$+|jL z{ia`ed3nl(06FV(I#m(L-fi!-2o`+0A2xmO3#zKXHD9T3=>bSgKp=78BL_4WjHw4q zr6T|3B!Il&q%+tAeiR*->ee5FCES@QBVF)q*Uh`=`1(G4r~q9JcZ@3B6+U>%nti@6 zX*+dxofRn_6Wa=^eR$BSrV_#Jh3~@!xVib4_{RJ;-z zYxL`i_XhV7|7J^|7@kRh@dqcA`~$&x$TXs%Ns##P`-G{Nph{M-4hm)1nsK;!f)BsH~~{ftf;8s0w3w-dkraIPKYTv{faY z9X4MGReAB-lZ}k5DD^4-w=glCRmGXodbrDZH~*Y4?C55|{Mw?FimZbTwvu50-q3Z2 zoo=D?u-Cp0XwWQY@;JIE*@JRl`*kVBcSke@*}snSng6=*vm1voiPFV9JnYW9rszpb zLk?X{6`MCF_R<#wFloP_ikc&d9{Br(=0L+otaAK){Ha5qgoaW}AjN%47{-i!LM4oh zx%GB>z;tJ?K=JB6Wq#nRzbX}9>!y%VfAeOB=LHAnMW*Wlacm`Jnb-+p!j-6WSHO*) zMv@l!2^GeBN`nx31WNQbSFoboV)f~7^v;oZL#-lRgMiCl*Jf*-bh-oHt?&4XUjN#C z9R@9u1rC0htmu1sUkDIci2qr&AFMb1lR~-WL_(DyOFL1beU?sY!?&MevVYy5`F3Y` z9{8EwHD9N-E;!efrDqkKJ82NCo5a~;1ja_Hbgv$HwWKH(xVk>j#XLvSwMsw@lB$1My|71>wNNe z(;!^S9_87C$6=v^xad!?W`p_xLf`f)X9oa1v$W{f+N2ey9)^9qLpX|zUZAau^33`S zy>$f^1S+$v`}Nkv8`u7DV#I!ZnTAXGO=nF(w%bT@i<3vot`xHEY?7tb+)Rt}>~OnS z2-a?Ys=3V!kLx*EZtlmI-_i*2sNV(rOW8>YSOV5451^e8IrI?=x!B`vbG~yEoNje3 zSC$fJcUuj{9tBU`-KxRI&IeXUPJ&6KvtH{)nq_pF%fH0MMz6arg`Fp=wtyX5`q1}W9_FA@1hevTi5TyVPLZbQU@RK^z94hZzwb4Anvb(2$z-3 zd?IUZtitSwWuE}S;h1hrs=!#>n$Zw4dCsnnh-T|qK=ScC8`t2*67B&<9unm2%;Q34 zy;Af4&mR!QS5TQe12kF-Z32ns&z~bKHXP~)3zY)5x3`66-xYkL@AF;U7)S?O`Vx_0 zMsNUO^LkU-ug%%m*lGj^lLshrw|(@RZF0mmnIiASYyc5DxXCxR z2bQJBwZu1>V1p&H0<7@Jr&ar!n3%vNjo^K0Xp!uag&K@VRDjyLmJF0E8yjF<;W4R9 z_yle63hXP`G@nff95gv5m+KT(*aOhJ!}(>^efsP0O0%7^sS&*&ozC+Yy=Ru@=4{xZ zUKD&3T;{M%$_V#VL_I+2igbiLVjUpDXw9qVvj+`3EX0%hqXjXW?jYP%SaH;_Q#Ly@ z_E|&i?zG@tjdePEnMInsvsboP23RPeC5$kNTm(OUP%khhud9OLO1?5f`ao@69at&S zQjeMjj$`oVdhXl41eG6=ffqZNh8qJF5gdgIY64g~EKP^M0RXnteMh~GFH1hDN-OY# zn)Azb-O*}Ix+>$Xkx@kfkd7Z8`)>L9GYH>}kB5*sga%V#b(m$jo1SbWArO1>Uw&5LfJ8$#$c#%as?DuJ6D_8xLyXMTr7NDQ`^Y4^~!t=V&^Wf$N zNY&mB?fm-(a;$7M(N?q52K-g7+1J}?eLg7H6O-zb;VfEFnrI84{=XpI8 zDoOGm_rS38C>s+#agUi#peP%vVHD;cG1rBXR826>ea@ZNy?dwiAo5&7Nr?GP$D0l$ zFz6Gv6aQHf!+El$acteDwCIx;oxx_IOiPKtc$2V(6Rg*0Av_c*r!dN-;@aPN@65d_ z6(bK*DOjm-O+rWgh@S6NA~Ag&WD6aNqG|JY@BIC`YI91FtVEOQ`x|yYu{VTyWsRTu z>HH~`w6rG6v&&GrVAT6Z=F6nEc1ScKIIYXclS8RzeZkl}bv)eG)}PaOeFrrL`CprE zA#iMmbl7|ci@|Si@@udN851q&_5{1#_~W{c+@gnTKHJY>(O~cT7^5{JPBjMd_|0s0 zo_ZRM$MzCM+4}5qRy&gZylV#J@rG?((*EOySo)=fi z-WP`!A#8+(b62Uko6%7eR*RBgsQ?1uzj^`*j4fm3>f#fHLwX4{S96@v=(D`NEwbRk zR?1qf58p+&tf;7XQnF4Q&QP{z-&~&Jw|H#5G^k+4T_?G}Eq=|~da0u?)Mzxn9qzPJ z!@EJ@x$>W*>5vqpz~}09cZM4yJR#0cEcG8%zF)-`v@YcSGSOO7EX?3Phq+?GI4=l1 z%5<1YG;0_`sr?6j#k<_8k0MfX>Ij=t_j;bJ}wRU_DAUYSIP!Ir=nR}n1MNM)3%>v-6 zdhpq;cr1y*Djf<$%Pb27&7}~?hHRC#0VIpzorWQm=>SYi&t50E1#0}T!1g2H(E?7fweY0 zXyYjxs0ClOB2I-R+WBIQM~tCu${9(6tDPgWOI`D&eYH1f-D#irmwmcQGW{`^n}(Zz}0MfRv)VEZRJ6jKb?bZrs!T`PoXQjdknaPT$b7Y;`6W zUS;2o(}WaAsD@s@Jyjp9Hlg~2xu9$Eyk<8Ti%8~`mYx!M=XJHj7LO?Ne++PmOTyN|>xDS0^K+%_aD^=A6U zc!r@|f8i@}IZ!ISNur0F_C9Jqq0dusM3Yz}UZuTz<_aW#^zJ6oG)$j(x~cMBnZ0X# zv8qX@hw+;!g-=!hiEW@_P{`_9E98X?s;JQ2j@*gA{+;%01R^s$aq>JE;UijpLX`xk6-M5>qwRRNi0C+TB+xdq4++{$ev8IkQx3ztMPVU~sAuOP)qB^r+Fa(l=TkPFr z@zRD=hMWEZpuz)9qIC!URC$lA5caa7BEUV!I01b#a0HZFkwV&m%*%VXB82W)m)RYL z8n~IOIt^v^IiQD$`#UcD_umm9%Ryl_|6aIE8Ht6^G2|Z@>_R*~#ytke0GoFKctugsmb*?iR1XqZ;0`uXV!jOFaJHhN*?86qJd!MCiU@*k@8d$e%^t4>8 zMPM*daf0Vhf&d^#W)f-T2;4S#5=XeO+nkA5^_iaHlQ|8GfCsp$YLB;9Bc~3>cCPZ*=C_L+m|?ypqz^IF^z7%fjb=yk^*45z{|)0aZpfj+#F1N z-Wv$Z+5~yNa;++Kh;hXfs3c!)hBih=1;N6=Qh0bL*k_TaeRixf?KE3kx&sll8?>Hf zA=HBma}BUX0>{fYgVvS=aMG%mXxB_|Dby?EGFgCW+~(iZ4hUu9o4xAMK$sE%fAnet za1}X5ynwXjf_a+Tp&=x8mPqz-9j|kHX69(M8$~$xgJ#X==O#eQ&A4tg+fp0YtL-|Ld)Jz9X2_8G)=K;^sTVrH;aZZP(mo=ja(jB?zc#Bl;v9Ucp3f6W-Bci zQ{*F&lY2yWd_x(C!PQ*ipZ&Ts>&-Dtp80}mJLqXNxNY@-jELsYR%UqbEpXv{Nh zW$-JKu?mHU_OR4zPZ*DD$I8I-X`PxH43`Du>fAqAt3~r~|GQhoWXm&-Y;3b$Iv-?q zG#f|3BEY2d<66VW7YVpgm@^YZhP2v`f7Q^%QAHsLL??<^uvnPEX*<0;&l0qsF_M7L z+i0Dx(4g74)8>k?BW^4;NuOq6UUt9lrKr75!xJeYAA6G`NV+Yro4 z#C%R)R!qU}v1oyjFHZ1OPPl}ZkU8qsKfmL@Q5>1>*lux#@2ZEo6|t-d#8OFn<_#9K zU-8fn)BDqt9lmJKzNz(~D+YzSlUTQJWb?Hr;B%1gW`9!R^q%`7XJmdpo zA|KIwT_}5Bz3`8lbFEetaNTsogtQkXN2UXvoWE$htu5>Q3U3|vdYj{bj|oEme6NZ_ zF##dMy&@^N&YqK^^4Gd&Cf3^8JoD&Z;A-I4j~LkX%K~pv^Z{FV%e7-z$SK}PX>{VvRp{% zjSJ>d!JTDJ@;on%+R^n3tbOqDRCu>*NDi5sn@i66dC;Ablj;d6q#Z)lQ2S$JPbAeQ%gR1hD54a z<@eKw1_Mk;X_qOr(+FF5V({0hq)ig(K#k9hmM*j)AOaq2ZBj9-JumNC z4!}lo|2k4zSoePO!+i*a4_|z5k2VCp3brfxq9gZRhuV!JSC8BXBr;AM>PsxNB_z;9 ze`qpEKFIK-C+4Gmqzb^5QVCK_|?xLbcCj|}}pYXz7)qMbC_%|=ck2Eq2i2{*pY3U64kJUr~1oDWHd8Ihl zcw=*bOGW$2_S4r0>sc^FlZ510RGAG8ZlWmc%;ngD2NWcBf4&icK)4<()QqD-K)K}D(7yV}70tskb znE?NHX6DIsH=cr{-o=l+XbuI4D4--UT*QCXDu%CuUNFl?Dr6^soc%sZc_9yGts*e6 zjd^9UypjDN2=v>N;Lk;2`GHDiuc{dbx0;$scce_dNr-+Lc84Vf=i9y zKI^25mtDLqMv!2758#-@g}-|=k!#o4WLl(EB3r;v!H@SS7m^pOOEnKnL)AYjg34LAd1D z&*VL^-j10jMmHT=Ce>fq!Z?mB6!N9bpN8rK0eguhS^J;6^YS0VUu<=oFT;sW`J`noeOh5|wVzoICC7FNQ*<+!nV&Xvqe~ zz6ASI(wL}_)xKJ}Z1=t8*5co_T)f`OU#xe#OB+9^PkYg5z9+an?|D01L;`8eGg>Z5 z>=&@As-r+lE41C2I$V1iV`we-4?miJ>NVmI1mXvg5f@QCh3E$hF3OL*H0mOmkxhff z*P;g^8Rc{aK+xc5aHWq9#!u(*8dRP@ocvajzF-mpkO=C|Y*X!r1A))k2Y0u@{jBwT znW5upRIE0h`^%m!9wVoio-tWxBaQ>u%;+4<%!=M@r+ku0pSrk>ozI;7#5ea1j}f5$ zZSReH{oGpE!6tS`Am{wTbevz6%!`oF&M%f->rb>-zneu8=l2{nxB-D`N#sfzf` zr7#(#tH26*(!SJCHI$;{{du)*mWMU{W}F+IW`rlY!6j7BUHe`u<6NUU#Ze zANr*Vs8!#%lGe|}I>LO);;ps+#ENl>DYB-$YCFsf$^vkcW&Mye%6ihqhE zYpOv;_CE9Aek~;DIdTK`+{n(*JI`IDo0y&Pi(aX0Cg%jN{yro-ma$iO5?97I|Ln=A z#C3E?MgM`8br!ehM*XI5R1nv3)1w(3u-F=}HqwchwP}em`?mL$2+o+uW7t^;o>a0x zsQy$k4c3?VJlq4RFBsp`?ovY6aI`44E8{?zix*%`&yoFLc^A`WzXLH39$-T!jIUq! zuUA^nrXlXm%6*%`;PBRAI=XuZFhqy=R(P@z;Y zLf1ctkWt_~KDQzmgGR#7IbOGWmmitC3Gx1>c3Y zU3hn}fqdaAp9t)cnVM8`bqo?31Wlrg4K3i?oIW%_nL z*VwfK(gaXTtOu1dI4Ld{y^X8EH(nv)*RoHn~g0$zv&IYf$`wUNh-sF*4}?>Vd${$)fJ%9gwV5 z1H^kM1Wm*afawiDAn5-i)_+w#_zdC4g*Tcqt{mQUPqt#)#U5L)T8?Jf9$my=HlJ7S zfobw;VL=wqXc;^PU(U~6sA3VsnKXKlu=Ze^mn(&Cf-RuMQ0}$<`tJIyxV(I8ys=C} zuUy}`*<*72?AQ23*}-_ZYb(+n##!+Jr(N5Ut?!M1g2G<#e^o#1hOE_GB$4Qm!~H~K ztrx3T+KDtaDA98$JjRYv89#RMy+V5Rg#}p;HLwda3c~~T4+)RV9Jp@tt2LPhQ#m(5 zSG#}nodTZ`qjFH=)wxa~Y`Rb<6(-@31p!Kt%R`Gat)!q>uicqRA!o1k;LY+D|GB15F zKw#B!Xp%!;!G%xIu zsNGlC*^DtmLg~rteB3+EiYH1w4{S`>%#DpG&CPtB2h(359pwexkJ1|F{#tA~btavL zwak;D8 z%S(=s>WI?PXKGbnE%8p?vzd^37a5o8%o4R!&>E(h=Fd?|VG$YrJe=NOLZzXnv4arV}jQ~PWl|;)1k*QZ~c|K1*#01wh%f&!${NK7%?r&8?)-R zpXYwsTkCi_imf7&CJ>w14@8@ggmeUXor%vhGvwHbW=*jt^ZO@q=P4tewb37Yom#fG zHsNIPM?X(js!l{8OMPKdJ`5&TJZs`gv>%XBsuY;Bq%r+88xCU1TI{`5jKFITkyMke ztxYofbZ1<~BkVWTcEEb*XsxWZ8&DuTGBXV188Bf+d z9^j7Hyj^#F;6=RWP?%$LG8;&{$}hh+5cAYNLk>R};84)k z2TT12RE9`P@4BkiZRiAUW1mMjZv3?{Hy8HX^|`}&^N&(X$Hx_;!kUz-8a(?N8X7=% z=JB~REhzZ<&2c;o{ zH%P~kk^uOXfr{^xQ3yLaG?x+zPB%<21_E)-n|m;P;|rnp52`W?$%Tj}F=>6Xm;eRA z&3WmhGfWh)^RBP2Q*fAz)s>zAT^>jWcKWd|1>n5tIcci|T8VXs`pTjrAg`L#_he4T z{tY`9I33n7$aDrXuAY+Kedc0_u!}(DTnA3FnbyP)r94LE=c1wD%Q0(JsuS`7`!Ep} zN}D~7;GyuS_`1V%CDT=GS{ez2KDobA+`l9RWJpW6{wvmybP3{+;!c$9#pu&hTsiu+ z$_J?5HmDY9rczSffM^Z|+XI&6%}j(S16-RxS_77>#wRua_bjcUgz&=XL>VLnT!7^^ zKR0(d!*LJ^U7f=nxGNq*ncUpmNoX9;JJ}-T>1bSS65U^eUau#J{=kqIFD`%(si-I% z5Hck|W3ob(Ht=7AzLpk4vC;X?WO>cF1OhPA0acSJ7z(0(`(@AVCI0sEg+ys zyH4XyuhF!+I$oy~2gf-$d8n(zceb~|RfXLjvEJVSlg%FiAoBGiuqi-KC5+y}-bE>H zX|f8ss&qpR!_^i5gg)|^zhPGdUBtX_rUbgi8v5{$y%^JAz^JXQ4SJ4LA!N#GiB50- z`{l3>lp;{7fq?-q)*OTRS-(%`8K`8^Qlft`DVP5hVNscG2V@J_9c-!cbn(4xSZ{~o zSu1ao9rg9}_HKl_h7)5@f{_5aO^+k>FBnv!+t9W5cly49 zeVRW+9)pF(gX6@wz++?EAyP!fF0%#uS)v>=GFp%AYqwBm8od!ghvK7yWHCZN?xZyY4`KBp!LB zw}JfxlADSy<-qz(F_!X2v3&GlcIuHiJqMQB3%h?`?t*dH_^15%4RPQfp!5WSFWqGI zQBKmaRew|k1hEP^EZ4CvPH01`D{3(G+!lw1$W1o=l?VTDeQY4jiA1YlQT3i@c(wbQ+HYcme`w%Bc0nLwp*PQ?_4D7t_z+x<0A0s+ zQSrKXo3`TPoq%;mex&FnQiB_ZKBPd)8G)Z7Sjc~Hk-O^g<@~@}H-r;pA~wt3`}4H~h$i)n02N!oU`*^!HRYCi9P< z5tf|3Z!QO6K4-6TeH&Ws?yqQZhD|ML7)gUtmn;^Gy(*!mRIbdARo?CZ!e@jE`_EId z3baXM;FTnHtZOC+G+fk{dW&w9ugpZZ8pOVwQXex z|91KZx6!RBXJY}2QD+op!2?U zKkt5#;!h!o6#Il-xoVazI8O+%vDv7qdg8;idXVqnzJCQ_ip=jh z=8ix^sG@dfJ2e@RB8>1#Bt-sD)BPfH<%+aMhafwm2Pbh>XM{OLtv+LymT-nuE_h#4 z_^wsM(arZYPx}NXtu4(po1OHQObQ$hkj^@+^(&e63mpy1ex82(*S>T|N5D=wlcLx9 z^8=R3mZoLanyv~)x3GPnIQ$y#Kd}-Cj}JNZPL-j#dNiSuB0tP%^1wgxr&wmHcuafw zN}GDRSfYgQco&mM?`U0^6^XRg(5Kt%?p&E*UFE|5MBD`@n_XUgP2At-PhN)uI?~m z91K4&Y1T|B%9s6Is<0cEpuh-XWZS=ckO(x!tUe(O~j$@}Mi~x_~$4M9<_*&0qoTxIs ztP?VdBn~#BeFok|6hDUwO$`kUNXr3O$AB6|djIBd{lUJx*-`|3j3~=_fj-L$5-K}5s6~O zhi&sAm#CXXmA6J14x6@%PgfN=UcA5dp??#h{sdBSQUY=*wbpAw-n#p|sG2^&Yl(fS0=5b>QS8e|PzYz1B&!>rZCVMfV)ZdG!HGPL z^~P;jEvmW}vq>hBfmV=(Ai?Ib7|bFq($Fc61EN59cr#w1<`)}U^;`bcEOpl9Rrv$F zfRJbk6Q$2e+nZW4Xp+AU%cBGHyqbW^Ckq;5=b4lN_d1KXEW$Cu3vhD#8sFhB%$(H5^re7wh>VHlBld0{9X^majlcS!L4v+$g zQQrZx_v*OvbO)+na35aoA1q-@5U?BF7&vw&<@@oDa*%(VOWq<7MoC-S`kN6$N-5z% zd=w0au{*x!>adswI8>xq`)+J?m)&pSF6veGaqa%+sqpI@ST+?kVqVNlGAGfrl9^u# z_oq|UP;VGk{Z{08TB>DUpCc-VLy;0TOYl`j=pog&`nfsuyMbO%SBC=&Y5lrtN#CC% z-ej)(lQ8#}rfXtfOMYTt7jedxW8$jFt+EI6i3v*P!J|Z_17i(SIRDoC{Fn2yq*L!L zyUjy$5IT-vCQ!pkR3*YbTu+bWXhNci2jKmPOMdHXPI-P*irtA$Iw zLgw<90W%Yx;XqAq+=58vo*%cLKcvD73tvCKIx$TOC&!%a%6Jv;4DZH{Xs&t`e(9=5 zLr^b$V%hkOUdkCVue2B?hqYI0Qo%6Z&$yZ|F0enVW!1afmE$CAx%+G$c~}~U@xJJL zK29_q8eRny?~wXS)RbQ?O_w6Pbd@Zo_HHZMVEvdhJf8;%505;h?kQtD|7uqhY0oDAp9 z?g&*L53$}!YpOu=G)d3_LVq0JfM8zPua$66F!}E2EQ&U;(9i!g65~ma&t1n=7C<*C z*=Z;-kL?FfLo#6dVGh`7^a`E3W5nuEWej5HQK$k$0nmZtH1H9-zXn3}&`x87MT>8X zJiw*^nOLR8YFEnYDY?)sur7kUH3x0$NhYxgh@?Sa!BqLcG%<9-x5<$PdTo_b9U##F ztg-K#Z;u_YKnlCu=d3t;iN`wt9h*Y|HS1zVj`i*7uvlkhc1bBYTaGrg4R~4kH^HNG z$}D?X*us9c7Nq|PO(0#txD;9PbZ>_^6%;1VM02M=77)mcP5;9Ct92)vuK;%gEIsk^ z@H{~>f`hfaJ)+jj&Wo0dw_RQ{M?vX_8N zAsDyy?rD21CZiFNbr+VD04RfRDC~*b;pJ$|`)r{*&~gF~ui3RMCehI7=;-zSg7KNTCINUfxy z@yb%UN9*XKR}N%dreD_IC7>;a_uZVNs0d?DEwyzL`;P|SJkVO!rQz^Wix+Y3>K%ukB*X(ij8LT~k zf4Z!3zaibGA@2hdO!RRh4Sbb)ca;jw$WG(N#xeSEzRfGIEEvbfp4f%viXCthtvM|B z_5S|BFL$+TeEidzVLH2Mnkij8v5*&^d78PcFX#b=AqiV#3wZ+^YTm{E%;AySElBC0 zLX2m5A2xV-7u-O@mz2C42!{KUSsy^4$o;r?)5dZZ9b%Z~V93fD@KImh)n6X8POB|O zbtkdCF2Hcn?QWp%e^k8%R8(!-_P>W56mSqk8U_@QZs|r8X{4lEq+5D`5m1njMj8R> zl1@Py0Y&MOZloLj7ti}W@Av&(tb4h<*;9MZzRv4BkK=a)l&=lvjsE`KUG%K3kPhhl zGubTt!8cJAhpc@8M50_bpARH*gQZ=jna;UzRxXTG3?yQJrN6ZE!=&D}1PGycmkt!o z$&J^Gz{sdg`Pe?TN2=Pc)Treq7v^LXlM@pX+|Acu`tNE-%h^ol^<8!7s1&bL8vad4 zn)%ZYz`gp9=kJccW5?*A#Bsp+b)E4yjK1G6LFv!DpKy%tOXUnKFbv4eoyS{{2X_kL zwg#I(S7JD}+KqkO2t{g|rG` z$e<}^#K3~6_#nwvSVlpCWp8Xg!C?O%w~NY4?TF zw+IT5%Jr>-O#9CRu+`sdqhwA}#8K;(a)hA~1E6}1YWHR3UYl#D-c`}y{RBr~CWcb` zj|id9=@N%@=NjA^KL*DNy{oqU`)^I&@NhW&V)@MIu5@)ZpYQeFbCeA#YM@5q^eHX` zRoY(`SjgO=>ToKbJ5Lf1y8Ec`#oqPFq><>GQM)?lZlSJP5GC5-nFL{d^YHuE9z>WT z{ip*z%=Nx2rFEaE6GC-Fl$NQAMP@OJ$WRdvr4AkYhMT5scr7_@vpR?$AJ|G|>U7_` zUDwnV0YOoAp`;knC>Y{bJ~l+Ao#OiInMC6*Q<7pQ;*uhnV&Jq_TdPF4DT}IkhWG z08T`4?&v@ur*=e_-Yc%aGr%5nzpAPVtXBE?@6Dj@W3kc{D+wbQE$#7ELb@B@N zMFqo`huhn;ysq>097uD3SpaP-hjCWkZ@`-*jg}0qS!!tzQD!5}CQ-k44~;0Y4h3oS zW)Rv~`)3m9*ZgubXy@Wn3QlPS0kO28^x;IA^VEUI>7wzDcY%-~Ts3y4$=l`XT`}b! zzO9pm$otZ@hGZnSMBfvF1&nSijhX=sb&(6$lKtX`12UTwf(qDjBZ7dckgBVk?YY2J zad913L7qg?_<}H>2x<{hctFWV#B?rLUcexah~WvmM)naqY1nQp`{2VEn?**g-8Z6f z3Ivp*MT&j(gls5t#!BGQ>S=n}#ueN2aVl29upNLVPJkcRKg9)sp-9X%W8u&3)O+(n z@8801=UPnZVy~G}*U%t}?8s&|RbxgQ$KD$7rQIac_dMh`0%8mH=Lxqz{CRHxihjTZ zG5^S5rZ{>C%uNVWZXoF$=K96=*_zG)jiO@mu*(8cf8dBiNQak$-Ktd38L;;P!yw2t z_Ajw+^`ZR)!V1XDkdkmN*Y;}LAwI;sx5U*h*ithju?>Pu-)=s)PWQ=Vp$GTw*I@fmjpstV<5q)sW8ddj;Dpt2q}cD+6!&% zV-VSNykmq7sR7;`AnK_-*f(WVN_HJJ@W>gq9{Rez{u&)+LN>&&32geY6v2NzXFw+O z(I+keI2mjn*RQd}ey%m3c_+k#Ic!ab^j094iR!R1dK3$vZ&o^-PM5O0evRTrv^i4Y z8|w)!BF*s07~-*^c0lpqF%PxS-HYiM%9QaxZkX+`&9bKB4PP|+T>02|vq4+m=?A}d z!Ks^S9rtf>16rc@(PMoqUjSC?-Vz5E}Bug>H?s zrbL%bikL#rz*tvVCgpaN!LV|K@ZP^f3)$Zc$*YEHe|XDsKoJ(gb1*f*Us@f@XE2Pr z<=yHRLLDuzr$(Yn0%be`6fPkM1)!i8({kMwgv-k8UsU=ty;Y_>%&(XF9=jR)b|;q0 zgb-pw>8JRW1(3-1fGGS`3Ac3Lb2fu|?p~3eOc|9l0RcRVtS-CBVD%ABQZ)k#B#Fug zmUG+ns}W3(*@M0HT(BKqD)tN$T1irz2SOU*%ijy&!k-!X+Nga!lTk{>^NN}7)>Dws zvEh{;l^6by>exRjJ)3{+M9r{m(Laxfq4VTKXbulOph`byxK4XG;XW-o* zzgcltR}#+fwgiG zRHUEJTD^WFobo-8c1F^q+q8=IWxRAS_JRTwO+HY*dyd3>wQH%P>)8 z%Nb5Gce8szSoMY==ivEDipQDup#Me(kT||{{XuI_Pw^8X!<6n$vPu*3TYm;N`))jH znmIq~ou0Fi^16{=z2K6>FbROQ&XGXUSdj58EGW>zj(2QKO*u!M|K7cG5Gg9PFypzO z`uMh>*fxqGcU!DT<(59@-Ea*ittX#*-yd#CIQFg@R$4CYlN?fum@L*dm0>?h$3)o} zqg7FeVbojEBt@;yE|rFUP8}aT{PsW1_WQfAANE0K$0fDSv+ovil~Z41`Kpoy=cV#g4MN!w4-wLKfEmib z7)mHTD*7b)*+kelI^nDnJAu}5N*6R>Ue>#=0jghO8_r>VCNZ>|;}Vg|XZ=w_&-37? zywy`c8P#a{S8m% z1Wg?E8*$(T_cVj2!Omon2n>ZxeU9tAADr%&tP$d?D0NpF$r6EiXsAw;B@3eS>U63f z(S$*mnLuOq)>-2t^Lw_w_gV0sI|O34g^zT$fB!{!^e}?#ITL$> zSRWbXQyC&TrCkar;{g`*!4?zsrj8Vn4ns)a-L{-PUU2GTk8^(MCQ9S67O_z$hydvd z&lzJt%yp0X$G0$~tZV?49Ru1uLdA(cvj9vK@L?}rd|n!*rmovg_a7U{Q}~KR_kJ$X zVXLNela|bxrbmC-lYz#ficlqj$}P^g5Xk}csHRgZM2840xhE;h1^$8|sbdQY1b78? z!~!3=TR8V)YR))gE>N0|TKY=EBNaYpWqo_uMRwabW#`-?n=GuuD*t0J<&bF0dUTZj7$<%JqYP9w-DsU`Po@)ZQA-5D zCv#$RC-fO;jKZWRtHZu{^3|HL;6(6`Q*L9DZzMY2;XnRA^fiCle2pV&ut?g3d6NN`_i7{95T zPszZ=XO@Y=EWEBnPg{F5niUVJ6It$?Tn&>{-ob_*ew2jsATUre*ejyH_8>Y5DZzjb zh+fJ-7kjgG#7EXKAdvhtiHwFyesbXxcgw)7RRxrWU2Gt_ice5R^Ha!JsSyXdTSfpm z<_pn8K28eqnJo>}jJGI{dji~nW||dsLg_H}Xh-Hg-p(u%Qt1P`nGEe0C?x%;0mUD{ zVB&uqXeX2Y1rC*fG>uFt{Pwvz_jWESUa)r?{7&7@HS#!~H!0lYa}b>*(A0#VLS;g_ z_pwypj=o9L?kRLLFe0i1=ol7KSjJ=4U@7AaDv0mnGcp+=K=8J3&qlNEv@FY3Joy`egPt=E;B{|EtVL0n&>f9-uBkVm10X36#>JS!`onzmUZCB)S8W_F zWEIXWAqL`HJf82q(U(=u$8yIP#5FI$g!)-vR}1DfAi+)}oLgq}QBEp$-K!UxnvYzh z&9Ny@;7(LmNEZe7S=51GRQN)xvZk|FxCl9_D3z_yr>8iB%na*_H=Ilw&V36aTHWy! zPO%Z@>g1|;i@y#2f=!c;()V#s?CRss+Ll3%w!?g$u zya6HkF;vMBIVLv5VGD)wjjyjm8T&wE7(!--g9C9%!%+XWife2g2ntNXW#)Eb(4pqb zgcEk@okCrSlG+l|c%;$@Wg_Xl@QRN3$`&fu)z{kOmLiRWXuR<9L2M+Nfe}qt_9^m- zvtKe9NL*orj9=hDh$n+0hbJ!~2zCoXjzH$e742dkJ`sDIzxL~htF$w-Hg^$b{X@xQOa2B;DH;Cl(tTFnZYH6u$3pw(a_ssI zq6$Y#Emoz+s+RU>02YyIsp=iY&w|%_RKT}4dB>R%4MS~hf0b^Au3Pu$OBb64P0l@Z z4*Ge$TK+aSGVMga1D&qDOg#MQ;vXCZaeq_&el2+Hkk8&)rC@JaNi4gB6#a%IiEL*@ z9<4X$^?#3!vNez!bosm0<$ukD7Jur^Tz{w3Eq-M-?Hz+#F@xFA^w*t(e6%TqAcH~Y zcM9XtIFr2GYe%E*d4=oGnoS$Lq#ML_SB%V83{}8BMfe^Plq72Z{Tb)=2|g7R^O@K< zo#lQ0&-#an`-q3C%V*Fl_@!)jUNUhuXen%RKZ$cE3A%hxx*k)^_pZafLiYwEP&B9{ zS8VV#CVj2S_gA)O692xGguCxoLm5qet=Q{F=?Tkv|NA`PFP{D^07VKO`2YM=SgATu z{ohvthE?q=+2RBKKSO3LREzmRuj{`@FYQY$E&TVeo8vdh!I$~J{}=q4#bCy~;QxJO z(C5Ip2jal~_W|U_dA|ro{O>b^o`2e3fBTk#I|TUzh5z$wv4hz(=VkAYee%HL`#3c* z(aOW`RjU3!k8zsfr6Nu!9qIu>iN1zqh?8E(q@s3qi7{#I*T@6!9G`&$FFX!kWs5s( z?ROM+HDWS*F^l@+|C+_;9%3_UM6qE~)jsw+Kf zem-WAITim9W6*n)>U{kxJj&4!xFHN1m zt>crk_JO-M=OewDTF>(5A?^5yhX*W`=zMz7z|XM65FCE0V(v@zGaEau>d_y#{>>Ts z<1%a;_;bMS%zIw2BWrYO3XmOO5E6eVDXl#kRpK|_KEkfm1oBOLtynE5firq<1Guq% zzU3LYJhbxt0R89U+56i={S=JY9--$_K=byAK36C6##H@htJ|EoM=a;ynU`Ejtf=If zYQZ)+KX!PZaOd3uLYk`+g8?8_u#gWB5Q?pUfkE)8F@#9ny7n*e%ND)`R<7%K1MT>{ z&{x$xLaSK4NI8&W`0yrvZcK^ta{Pq=xZTHq&*X?%-w}MzTsW8|yOGAB+~3~@bJ0^6 zhc{q8<|*12dN+M@P8xZ1UroJQtiK#?k`DZlOJJfw>> zL@c~X3qinP$hS96vv9B-UQo|J&^0Op7wTR)-Ouqo27osQ+M58E0c>f5UCRGl)4+oi zz;D-e(&xSJB%l=99^*s`qm@7w@*?YHz}nP;wAA4y1$$4Y@Um_yi$N zi#Tt-j;A`Rk-nCA-(uAR@D;1?*Dq$ReCNP95Ml`fqVTK>D~z3#s;ikFgii_+#HbxW)T0_OfvRJw zP6I#WxX(Zx399;=H?S1;Y2E)BBf-xa^5uEO_v1vjcme^e8 z-mVanbGFrpVuHIE^%KcyLP1Y|xcFt}Pq+i_#6pXa(Gvl#r%+=})!$Sheje>qnCtRy z1d)_SJmIg*LNCIt)3MZnK#v;C?DdwJ+4CL!eDJN;vzo(!wdufNl3+2ng1@7|^!|Uo znIud57AtO=EVL`ct>)BM1Ml8#RU&qBq%FY}5Fe#l>2mX7=E+$uxmx1%$WmuaOLS$e z_;NvWsgUptX`TxYOWh4J{0Uf&%dP^KRnaBSa7*E4+ zfm&V9d+J##oK}0gqO&)S!^^MFE&OiIyW(s3|NpW$!B|dkRI2z>=C&+JjnpB zZS7R$(}bPFsfT@}`49esH1EDt;+kWO)bkp890T&ljq>zE-bX4^R|_hCt^Mp@{vI5R z1Fes|^WXbU^?I!6qi$+dO`DrH`7TCG+M@-9@VXYyI)<0JzLQ%63Ft?7GVRS=tvXhl+*<-w74Zgqz6t@EZTQ zHZuROgR=0mBIJ5UM#7g0vZY+w_e5sN(*LasM3}x-*3cLh zd7c0)R%Y8%+E_WQGNzOA)Na24-ciJMwY#8zW$?C}!6@GkHv^?%+sTN8$B?8}DGthK zT(8`;WAgU$%;ky%!*{G4)KCu4Ub=4jf!-Cd&odk9as3B!>QX7e0A zYCqg*6&mFuKmwI0qKyk5YzaF|2Y-4FE_8Pt;aB;z(x^5Qf@n(+xyh%rx-Lm>HcbmH zZs5GG0A9ez(2aTy>0Y5x$Ryn2lMzdtA)sUcYp^KLHPq>gCn??&JN_J_ob3Kv4X`Rb z`rqC3YF+WE1k0lOoCl=3mz9^NZE1INeJR2^MnIwinDW(Ju0O_*#p;}slJRricL0OL zhyV;p^kU-aWoJ)Ap$$1!z=9x|+3Yb92&sDl-@IDD`Ie}DOZvMh_uxK$`#;|nE6gh? zBmMz5gJaP_rxf-4MZt)j^W^HuL5)C{KyC=DIg)$Ct?7JzhH3FZ3l|_6V{|57*h)W= zgG_)`9FCm!g>4r2t5FAK`TRwa_nL@G!9uN(?!;xfW1D<5T zJakI%(}Q#p&}3o(S=tJ|gZl+6=S7B1XKPGG7YlYZFgP6+GML-a53hcr_v|XD<@ASx z-x8}4YeL^mPZWr?YrGEEzd0o!DtdT9fIY|QPySCczW3=c2Bc&sRYJ{tLx6gN_S#fe zE4K{>v5CK-l8<8sdZ^)?-B*jK6hwKWLAszU1-a$2Q4~ zT_a+&zxIvZxm;!DDlUmx>^v$B;3kz*^N@Y^B-ETL?_8#vBa-u|n@tCluvB%;)}_%h zi#2@-rMasTUA6pyfpn-)VDIv| z_E##49sUkIBOoBSw+2=XS*TN|8_3Y)1#RhZm{M6+veN zxHO7d2R!173vDkR|kUO*)H{(7A=ee`Bvpl znR&x&!NI|xr0X%iwKWMDuO-I=ii98rCMqVeJy6nJqyC=|E@L1&>&)riTAt|HYIbZM zS0@T=Ui;2Oq^rQ%yQwQE{j~d3lmuKo2uLswsFJ{3TjF}R#vf{H6*T^|3S8XN>Uh#H z4Bejao%(vxu<=KuJ7Y^fLB=-nyA#zw-HIofS<*UvrI~wki-oQfqPAq?9Q3Hb*jow# zP)&XMaRw9OYU7u&f(c9@EH#{4DBn0aH`lsBH2;Rs+Z|nRq06(%Ai)A$c98%%35>%$ zZ58d94P7H5-(AJKpL5Fa?v?F@^Ef{+69#v0RIE>(IqtP?vo2VTFu{uY^g)}?H}=Is zR`so|t;hNvTfpMP9%ylr$fJNlD1wIQ4kq&Xj8~x!Ti~2Lt$&K-_fVnJk&#-9{gO_l z0i*R4Oi7f^Pge2cw%d9mrH_dq({P#YGD>5d>YhFbVN3~`_G3a5bya_GlcyI`R-A^c6@j}Co};F;Dh*+^rg zd`?|F{~Zr*M>~;2QS7Jwwl#Rjd6Zp9v^h_bt$-dI zDSO{p>4OE=_gUT5Ti~m`7EV4mn9SeDzFIE37w)2*%45+xR-S$Loh%~0+IDvQyBYl)rbrUij0 zqeqncba3XJ-8YTie~PJw8cJ*?-H#Q%Y~Nn>Y~4=SZEwDECKP~U+?3ufTM*=$gWVI< zm#|&wS9vpE;l|I-&(Akdf;l>#G9{vHYt;w~6zr@FY8Z017N6aO$ znd4r{^0tJL0{Pk6JY?0ML~iKb!|_wPl8u+~4~MM)XoEyfOuKmdU(~j(eBI}a^N?T@ zvg!3lx+)Q5SInSo0mihBCM+~pCaX_u3DcYE}h-z0m0)ZFouhA|@1B^a>^$F(@# z4M~6B8<=sh=zHh7m)uG@t*kVkviJwPU%sf%zbFU4tqVPeGlRu?RJq;}1!eWG(6wYD z93m_F^uZfVeaA@di?$M4?&avNbm2`jr}qOjqZq=esVFH-&eMSo?dub7>PZ3ORVOsdzKHYLd)o`6oG;I{G$Fz={Yq@*JiVx-~9 zNjqN68|9&Q(Qa9ISX5Xep|)j@asd1$eGpt3&UK29wo2w0L~lfdIyq z$|Tn?D%oSRFFLp{nq9ibus7Wv$K62{sDpw7|{r*>HL5Cp_M&R~$t>>0WyBt_9S}m!)^WBeBL2-90f~x? z?LxCa7b2V*(P0WS5?tZ3^yT|rGutO&{Tb2Zk9n}wOa2kGs}A#pJMkppx2tw~xD(>^ z9Q3#fvyaMXzIXxB#gvAD97{~wgYJpD3Qx8?7YA8FUQ8vtq9rJGeXUy($d>MM|-O z0xoQ8_`^cCfcCOg?;CeEQU)}zP^z521LmH3`y1G`9iW)PqkGJOx|{ZJds?q^hc`)) zjTDqi@fJz|&Rx2@5U}seQ3Gx)K;%3!!kFiO`)yl_kPEX#csbDAZp2$0u4{6lqkejv zhARuNea0jlOUDja69n7=pxD)(yu|{fZX5RB;YjCQwdc?K00U|5ei+1MvbQ)3oVO|a zKmx8I$DG6C`5=8zTT>IPEQ2c^p626z?%L$=z>JCt;2>J}b-(+QuNc(+smk(dz}IRn zm|I+|l&jcVxH=hTO2Z%p^GSudU-Jc47NarfT$i!+t*@>EsWy;efExmkdyVKhhyk^E zg9aQd0GXd? zU*R!)60rNYb(6=Pvt%*h?U6`xleVD*qUU%&{n*|XbS7{BkI9h`13PoBn*t^y!H8Vz zY5oawc{&&Nr9dNtQR=Q}kJ|tOkFOhG7_653>5~O*d4n)N*xbYs`HZ@K0{?IzPeWza zPZlGWuoMemNZ?(U5Hg@$nNB=b%z7c>9KQGT4E=l>sD ztNFa3G@LM1ZUBPtBCxvX+vqF!g3geKGJ22QvWg9wma8WnBz888Rt$)%rXQagosLaU z*AIk98GAm7KrukF4G#F2a;a{t{HE?-S7h!8{t=#NTkdq0anWdf^pl_SU*8fB^a>u5 zCgFO*MN%2CA0HndxIr{r@Z}2#BC*kCWBuBIVeK0no+#?}(zgZqT)S9VOLJVAUYoh6 z;82*+%Kuc+0Fx$m<%fT9u~=9cPUu0(+pD7MAl_~sE{Ds}(c>vgU=dblwsIka2X8b9WZhaVVqMSp@E&YHd zvTrqLLGUI#WTpNg8cU|NdS{WyEq)m`m(n*ch(;vE2O=ui3RSz`W;&2P5v2i&&|s5p ziYP1-{HOOrxdO15;IGK4YN|UHxJTK0vINj{UF8-|RJ}sP(g-R%4jEoMJ3DlgGa{Fz z5cJGeJlV1`X(37a=rS`rrnHa9d(uyDkg9TgWbU`Y{ni46{OJre}t&__8Y zIZ?%cnp{%g4oKB z9qg8MI5)I(Ys?D?L*cFU2)tpe<(A6TLw|`g&OTXO+Bai=LzFoIO&Qb|MABGo7$!mm zR%E>4vl13!G?5N%+>1w;X(l^|#$4W&`13(VyqlAx{H|%7)3d=@^uCFUTGJ-n!4Xjcc zVE4x!j7b`}aS89+)2CHX)g5PrGh+t;rkqtE@85Gjjs#!?vjEG@y1154rq%Wtp~MWS77_f7{gO1ma1&Ulf;GZ zJFD{GE*LPj9WTVi#V{&;#1jFA$Ky-gN=rEsC=&=j!L|dq1OWM_3?SoPumF;2x0`{G zP)d(E0JV|w3jk2~^*rMSxW3aHw>ziY4E_^H0Z=h0#L!{opt$!?hE$KadPxY-(>f0V zr7mGoz%PSdwaxczR&;ruL3FhMwgB>c1OdMkaA9d@^wMiZ43=&(Gk_q83jlR)-2KzH z0oz$Xi8p<)@AOv^uN4hQ!B}__F1S%txrptma^XBsIlc)f!lm`=1#2Nx71vkiJN!N; z;y^6|aGY$q6`vat1NHYc)zm<@=KT$o_4~iS0Cl~5o3rtzk~&pP`enqCAU4Pvr?3|W zfC$d>wN5u=RZ53OJjm;+jLP!Tu4uA(5LB{v$_uMyt$vdF-m@4feow>TJ40iNOp+}?sm{DhE#&#AOYS#Zid22HT(YToHXU#BhI13fx%5^{!Z zW&BvBDE&k0$!h(^9u!5Uo35sQjgH}KH%QiFLswRJh?a>^pBsG z_xM}3{bcWk7`xZa&=pC2UhLp|yMA4?I~D|r0)D!L{}pi5`kwp^iKG;A{$6GxPvg0G zLr)kl^BDb|7Ypj2!;Mi|mwxUTMn%EZjG!5>jbeQcrcp7sjnfK!$8XrgV7EH)ACss$ zSkpsc#+8MFaK!R>t)STP89~H)&vuW3YAwp?trG}&;A_vKf+Q{DTn3Vi zZYcXBE!?o{!h%$P1KbFVlTc_ z*%h03!7WCMy%#<_9_io-dfo|lnd5tcVEAHW`*s0T#anNw86jG+H~*d`BEu5Byh{k- zbYh=au>nstjO+8CV`{EuMy(%0P`8Etq>Z7wGOsZd{ym~*@Qfe>>j%ZV7sfHxOMD!vvUnk;@+I{w*+k5wedRhS ze-kN*2q|!tT>sqKXolUVV3fp+L75qcippNrakdP_^GX|5u@im}C}eoTV(zZkvr9<>MD1&0&dYfBrb3KQ>|oc?RiN%F+vbE_LzT}4@dX&J?@!Y zYj&yTH^*BZDL%cwOZ^uXLuhIv$zHC$)u}=J^WM4IczfS>Emq@>ev5cTQ6~GAounhP zKu%$kp}Y6Tl^Xk*uW!a1wsHha9HqZ?;>-(^;{0O&te151@vv|^iFbkgL&cF}sD?)( z4jJ=fSuL}zPqS$*r*%w5?z?i4SNky1_-IC|zo#E;cA7RKVj@2I{TTE&VkY{=I#mH6 zs3daebH?0zR8^%f&p&OH3a#|V(0DHzioBEDZ-vv-h@SkzoE6<^oV0IAUB$sghbjv> z;=n`uA-PaGSuO;As!?IRE$Eos!kr^SI3lqyTJaCIDcdX&w=^nI$bozd^5QLaWqPf7 zx!1CRWccuMGyP$^pO(8?gZqlZ_~UnrO5KZ`o6UZRa1I##TU0F3^k1tm+LCbc*Q+ed z$~9!hRdvX?g78spO9dVliY4nD@$+z8TLIu>4{gL%Wa z^x2Ee%S&CngR?x#rUtft($@=WiN<^n=`dumtw}$7u7$TSPH1CpCs2urJrHbVzC}U6 z{#dnd`nZslFunfz4rkLzT|xp$Ai7doS^3c=6O`rvG4=qR@@D>Ba3--d$Z9G9wQwV7LnvM$ zWrEQrW50emPukUBj~9LFGjJWZSm-*AA>RYlQH9q-2trO*&3hzCezs0dp@L9gT@$*K zk^2nHfo0rw{E^x_9lR;pV<2=Kk~gi9A%)f*7+pt_S(YYp_!t1KDa2hpIiC3{VDhmr>SY5 z2|B3AtTccVo5AS*!JI< zXK#7Ve0=yk5Qv5VO1*a+$lBg_%y-;3x^Zbf*P4MLQR*L1`Iy}-d(ABusU9~>yvKZe zt~<};l=JQY*aHkw`|9|&4Yc)Sdht7TnoYrO60qWkFXya>$uLh@dYnbU@*}?c-9?K- zZ~3#jI}w8ZT}sL%Lof)7 zh$vXCj?LrEMbWJIf9kjS>y?Vrcr`MiWGs}AxC-WdG&t{iz$qNwWhHtr=#NnWF~P>q zY2K{ruB7n-cu;TS8~TomKnvvZ{R+GB!qSUxpyrb_hB9hbo>Ykts1U(W#L5yIc@me8 zrs}T=J}MCA5dN@xSq8;C20dB`HxTNP zB$EkD)RMD%s5cHlz;h;r==N3o4c7x|6G9mZhz>%czhRmEwtHPp??^x<}xkU zQ0@NRjPQx{s2c(CfG3Hy2^oM9t1_dbmEqs!FiXOZEh}>!-`IFgij9`d-WC9nq*FF6Gh>7I!sIj%_+)QQ z&PR&FwD0*qp*Emsdvvd+)3p4f_G0%$tt~cd!r2EhM}T0a;c|MvAn1D*&P;Mkk77jp z@?hBGdduDTU*{$^YlNPJ<9D5bx=_Ah_s*TlQaiCl2AxX#KLu{vW92eBWm+sz!UqJ^7K?XA8;&m$?i*bf8lf|Y6m6T99sCEKO?HZ^iI(5Aa1deMD#W086rI=?G8qSHO)>Ck`H)p8x+v@{31Y(D!Dc1Lgy zVp0P82$!z2I9BcE!;$3PUWKfUSeJILsJU1yOkNVfQ$}- z2_?3yexS!5GR>rGmk)=1o@9eit@o;<+oHo5j2=55PkZbH-m}2K91uGlBVxeS%O%GF z0$d0Mj~dY(sM!Aw13lKoO)q7SgW4b*!Y1z@1=ShfYl^0MoQIzFCYg{~40e%eKV01) zc%DFFDrbzar{DU}r~Nf@oHe>^Kb$+1j4n1b@aPBS?8{+t4dV?N_af+-Q z%9(VB+@Wy$}R1E?AQ<}vHr02mX(D?2Nw)_ zP}U){mvb!v@$npKlg-7&B^6qRcAimQy zj{dY$>Rx^#v&8@UBrmU>KG0YGF$l!^4+wf7*7XDg#U zf}GnF9p?yAf9T0UbCTPjwxkg6i0E|z=gY6a0>{Y8GJ9=Lw&25Iq@khl%Axt-*YkI& z^uE^+m8>TV1ZXtp{d6&Pa-$EW|IrZeqyp9Q$2Dd#b%q%~T!*E8R} zfyICYi|#$2(!Qt>=|`gqbG#2(Z+J90Vj<&>_xE^+L(~ggu%PgA02h7yiPHqt+#al{ zl}nwrk|GkJ0n%w$SU`ACk+qdF7#a10p^-j3YvT-9NY*zt$XzeCX8ffk6WH|x)-q-Q zDHW5e6UqVG7Il9 zFoq+oQr$-Im{PzlGFe1GPVIN0cIgWiev`IL&x%KI7j;#&Z~W^*+k$ zR;oo}B%QZ_HI&&@u{BC98yL1Qi`2wLfR{ItRsy(tWFo}v0r!C5t3djojT)}>tCN3! z@9R4TJpaLTb;t>uze!*`?+Z~=5V~(dcH`POSj}XAPN9ov1iN>JC*iA}Kaz7Tc#@VX z<4Y&W0wd;=`TKNVbeB=hau<_`oKT{P3&T8^Qz^He}|*_r0sUI>)tyRiF2RTkT!)BpOL!J zS)cRK78kknZ|w}Wi0SIo7jtT;XsTIPv@;ra*)I02eaI>B45={mnFoP3x;jTqDT zx27L0%#{`pJHnZKM#GY{e!WXS|5G~irk&tf-!B48`r51eqqEnoGN+9mXYcZiuERD; zPj^*5a?3BMDG3wRzWr==OL^LvNDzZC+0r^0JJf_;kOk)S))DO}TuP;;SWBI-Pdazr ztk4c5A}YVDOg3vi+TRWQXD^Y-0=64NMD!jhEEi|0rr`)6oIXsg4=QNKfLm>nr?r& z1~^UR7-zj@_eW|PmC-vVH<{{3o<@fZ>+-RP%Ixf+nF-Q2;@@g>>%C_2h>0N7)qMZB zADjyRo7=$G)IR-v&1JoOybCu2lh- zyso;v?&b1k6=e;YDv{>;+n>>gAFU-H7%{6cO5e446kK)adnZ-EcS4-O4rX6{vK`Dm z7J-e@Cv~LuEQ-o6hjiTzF}V~R##2Teg~@l~20a5ebcRiLYxP@#ft#Kf$YB0jU6$N@ z(ro}S(RT@3DpA4G$KU|LxE$@_CY{{NWZrMpHCY%Gu2@yXYP<~O3rZeyIe&XNJNSS{ z^4sUJ&w}yXlh4_MLtRuFjvXTJKS$p^UoG`zPj!Oi*qDilV1y8+B%FD3)5^S@?>pr7 zr&o$eT4(T~$b93Yp!s`J zPHP*KwvfQAE0x48os&10sP!2&rFA z0!vP_pG`S%iq8QX;5ryR`><(`xodOAS2=j$*m#jXiefDg-)JcUll!iRlpwueVserk zs@>jPNl(9Y7D3Q6-QzYUq{@ObWA{siJ_ham_ih^;jUR7vid9`_SGp_wV84dSOxj=D z3{O@sWmLJf2NP5g<4^`m)s<|V0XW|XNMoox1_pcAIxRd=8fEW$uS+i7T^+AP zwoqR$>?sCh2ix|nHpJge%P)^6IcZv&^hrM@a2i#;{v*y1ZJjKI0;96*b`W^=3Nj|U zF?miAfC)K>77^g*C&JLkRRja|%vk3E;C!*rHGClr=jY?QnP4>?&$ui%V&{s3WWu04 zd`GH~dwLLEl45n$sj%to`y5m}uYW}$eJ7oN06wWZ51CnigID}^YU2x|Y#^SLA92wI z_AyXO+(HAm`?16>CD6^?>8$lev)Lp8kr0@LA1h(Ys>o4^5{D$|Iz}qUJ(Vh1FAsq_x=0SWhXD)2@41{a~NbN>_ zwe=IV1E9gcf@Mo$=nfh?PR@;d~Z3JCgwE% z-N(DRqT=J3qGiE){S~m+8oB+^^aIYR!ZJ3bY~9pLW|B7`IfF4sa><&d_x_apVAnUY zjr#5SZC1{~#?4ud6g-ixy;Qx_qV8vIqs#JKD%r@A7BIKP&?^~k0f zRi!d8+N&+|%;K5^suq1?57c<1-@zYZy_%PhOE5oKmiVI_^XEj!apL!HF#k;RTF*C& z5Lzw|G3@b>wDA3LI(t!XxrkZ+hoHj$tj}RUVx!HI*XVvnEs+*us^b1gHDbcG3)2KO z^ok4v3W0Mih?3BM9G6IB=qCz($|V8cbC#SoAkw|L69)mcuq9#{&HxMCbrx5F=x8uW zVRz+Ie3y6pjvH!byli$qdMvk`P5k1w+4f(IUQiY$!l#CtPbSX-NQHW4V}lDFEQRL- z-M2?LGleCV7qw10kmT3ZDk0Rb*bcXDlaZ@+5u3?Js2D2o*QLHk)Xx;5Z`w`eW#d-Z z<~nHPy5(qzM@=mBngvINLZB!xs)*8&h3|2Ac%p_;9Gk@_ZF?Q72ULV?rkN}E^(K=| zBm#@V3LY?1GuXPoxEU7#y*Z7;E>$fqksa>FCwr7v)z;~;QZykc z`emEf{v`2dP|^VX-SPgE)05k|Y33wPws{2%w5g>GUoAP0O{m#2;{=d~A-VWWBUgDp zYyS#}Djgp~@Vw_U)vqqlMi> zcj0(Y-7|*!V)kMl0YIL;mhZA5sfeA6ffsAXaHnFPGoesu>a7bslDFTM-r(JT>h$w{JD+^-I9diqJm0z z^J!ec9|gG92%PV65G{?><_J{Ka%+-B$B zC%(tz7IaWcqw`Up++9}VNtC`KE8xpj|5nA>#!q^)nrL###SXg-SIyFmMJ5Dv5rK@j zhw1{qYQvtg8K@Z@K$MTVm`BYe=_Gz*NH3r}eKY084zSimTu;7p%edjFvb0qF`@mDe zwxAFr#~7y0_DaA0&0!~Dg0$_Aing(7DY^PET5Q#TqH$HR<5c zs+Jb7hbeKpjek=|G!7>_D;w1KJz(p1;9GPUlj5SwCqDTL1A>18S>;{>LMwbrjbNk< zZd7D4Pa!CW4<1-+VUrBRllda@d%xYF1e+<%F zR;a#A{mOB9jR8bV5+_SHvMxf95dedtp1)zv0mkJF_pvg{YcGSHnWnnpWPM|DljIO}AfRRF263sg`h$nV&ww?dvy&9IvFTjc1!GKIt>a-Z(FX4l zFmE0rB3rIgV7jZ%vAq{Z!om$S&Uf+)*BenKIOOgVAFEWE`;+-M>h7muLWay2vkrb5+BbhX zCWPyE%qHE%(~XWs^f+4%?#@ks578IsQ^##dciz-TzDad1%mtgf`3|f57)XcaQ%mo2 zDWK@6F9|UbbeIvvLg5k?m6Xtg<7jJs%Pl$rgr|f)i@tR>cOm~PpVO~LGu}X`Sr1sS zKw9@*V2ch82G1*^qd%L$u(9L+ANwdYXc;0VO9qvFUxzFc#aObhNkl@( zJ{Usw?0Z=w`Tdcec$h#>s(#exn`c8xu54={=ffk>7S4TUQeJR zh48o@9Q<|70lz4K0UYp}qq)_gaH(IdWai07+>-~yj^}|V;rRmS}us{xw-3iPM zTY%?deSDp%$DE`8(edwstbc2VSt2%l7rQ5ajRc7QJKXRAezVW1?g3v5PuO_EGbNw9fE2!;VZg*z0(gn8eHUfz`O!xJ!qTaBS(qY03SJjo<+KKe!0O75SI$IAwMPA%(clx`CW~i&HPjD{#4u zcD=9ff)cKMNG0RB#aN@>zG%#p|KDWp3y+sS{1&!deBtQ37I^8Z_j+J{qeH{Vc-l6# z4m3Qou^1%Fp=@U!zWxbghcKqzJ+~Ekc5*D(li~BF;MU1b(yiHYznbqLkEEsGin;&~ z01!iPC`+{f+9)2S%Sz+bO^18o&|H7fZP^2~s^p-Ebj5a_q5+?LqlMXph_cD!YZA5f z+T@5lL>_nLaYLUnmN&B6j0zL**Wzp24)~Wp$WUbxJt>5nRA@CBwy;U~HIO!?L-*%vsR($Hkm8*X1)a^DbO6fkCeAf`_4WcsVa&ZITK;VOqbpue1*aXB<7&xmseAGX#1q$Ei>L zUCc(O+MR9P_m{LgiLZ!?Jnn=2rM~6LFL7Dee%~%(y3FtQ-5z%r&8b~E_j^c%oL1L$ z=YRl$B-SO+F#@obkZ*aEVN3Ch9pN1U%O9=Eug=_PWqOo!kSa%k%r5+Q!g08F+@>IV z(V468`ArjgJ^Fc9%-wnQjC^NdI;qB1v0r-8&E+2xKR+7alUetD{%u4VTQ021a$1@_ zeFxcT!i+N%Su`Xi`#T};B>Q`yYWV1fZRttxg~X;k860LB$suxds8E2$3^RO+msjAY%aZTPuKAxI zl5Aq0mkff-OFhpTSA7ezUaU9J9S=8Bc@--@PCys$NB&E+6G@%Oc(Br=eOCmyobMAu z+2=q!boU2f6#?wZB*9AN4_Y?X5y!{Jpoaw~cV^MS2zEDbA08fh6Jrb~Hi}&8EfEod zn0GGeE!>^XAP60-jhFcio&kW5RAFPX0{F)E0(Wu1YjV-Op?*D22CRS}igD>M{dZ<^ z5AHWuN@}dS&LP5k^m+9!Khf~?uHgOYj&IJZ?h&N!z79u9RkcEKN{L&kB^qu-mi z%pabnQ^yPf!i=Cg1E6W4)lq;pz7E2MH=WD_1SwIfPou0aovRlK)_C+PDzbVW^ed@Y zMHqSZkB_h1GAW!jjvoPLd1ZziG&jUSTt|g<58XnsS5xNTBadY>YaigD3WQPpl|^H` z1evVi!@WHdfY1@`;|k<;5a)n0kr>D8%wT+Ua=ZXs#}60Gsl)T^q=e>j3JM6T zX-;M}_6e2wvu?V~~Fh~EIC-S(tJ16~Rp1N(@GFW9?t@gkbyj?>k^f(}X+e*{d% z+Yo#y_kiog)cfsYVwK&?axyN?pBNs9jl7vI$~hLL?|7 zKnqzCiHE;!X=yRJ$h4?GC`yq8Uq2;N-=-$~~?ejpq_n)8_v!pb*E&uUWsy zbXy4ykANfbF(9z(i%6R@i<@}-$5~ss-4x&exYmB#FIG6;-nGPZ;dEu#|KCpkZU1k< zD<91gRCX6yi~ss>5#i$~OO1@?o{47XBT0hqPq2e^l+?}h1}#nlp3ytYnv1P-fccv0aTuJEg<@le*_8Su71!oV!sYO zTlXIR2V$-S4aPBHGsSNA)>*@#R$;-ocb1=e*ix@3Q$v0|)NIM+J#YAZ1>1GAReGF1 zZ0{W&*RsBF?>JuY{yy7Kw#}H)pY*)c%zp`w(jgOz`Z%7<@O&SZy+7|_8_3P|srO21 zhrmFR3=-Q1#!p78Y^>d;m=^^-lXL%RpqJ?`abFKC!1G30m|y@s!I#p3;RrVg`_K6g zq)HLUQhiD=V<87g_u>38wes{}vdoW^LiEw)V+&&~Io(_gq%U}>xhd}oLV~P>#i=Uu z7wbl(-%|)znh2)_HK}_;ckYiHP^QitCJV+^d1*c>`04un`#_B>*{@$6(f+@J2-jcT z^!Xe6w1wTqZ#(5RGqVOiHV9fIq5goRzW^f77Pde1Uuiwg38T8^JWn;83UbK}$^biH zq~U3#jp2ruxyA&`EFMXSPr8aOS99=J(rXB4AUJaa$RO z57W{1hThlQX7T9QZfaKqx-jOpwpA*7IsUfq#!NwmyV1ZgIG#N^2L(!^VGIpum~E*U{SuvioavGEZ*lgRNC*lu;(}z^(bvcmLEVAHPWG&mb&%7dm5vUlWa_r88!`;Wp zFl16P@?oF{)5A#?QO z)qa(t+R0DXyG4bucjdg#e2vc;b{?b9Cg}DTw^$8!KAm`;HBX6-;OZh$rA|lL{D&=H zvR*#&17YwXBLDzodVUQML)cL(@s`~J)^QdQRkI4AFYc|esy1$%oi3ZbYTpF(KD!$k z-=}z}mydS0cO`Lp(;IsiK%gm4IBZA_6+l&MX^^MUSV8*Ev-i-?<-mJ>Vr* zIq=CM8gZR!$2a?n&i(Q=k4n*d=fGPq`Fv+T+$l9By=z2-bq*^Y1D0jQZW=x@~51lb9IJXMaCRW!K%duE3|yvuu_T2;X=Q5Fj%mAH;Qj{8`x#z)t^k zP?CJD4X7Y4AWZ-t0l~kUK$7{e%CN?2w37c4IV@1YX3ru5btm7B&UR-z9hh>`($M_$ zVe2-iH`)66(+5~N(OR)9fF8dUA|wh3_z~8;4jU3tjx&g5bpTYQicsTQYgt3ytcN+y z0OwHP9{A?pKR*Z{byZ8ww_pL00(>z}}Siv+0>d9@(0Lp?6ynyeRCWyvi%!Y{43Fd_HA-b-l*ulj>$ytkMR zB5au-M%YwM0bPK(AEK^K?7q~GY_P{1f|N!LYika4VL?HUh-SoZkhbJ;odX{74IBYj zdfIRkEqfzCo0%71V?@l0%D$)oGMVLla?5?2%(A51ioE6~Ca#270vZc4SHJjO`Aax@ z&UmI)&qk>`8GE$0xv7_}$GhwTc*v2*Lc-@5Xw#x$tkzn_!C#Hpx`~ z4O+i$9v%;P6Ku15FAD${eG^w#VKhjc2Z68P7();B73;fs90Ji9FiKBW=T;m_73E7C zx&N*g z{h4TORRDpTj%jef5Pec(bSvrA@}!7nw?S%tA0dG=%o35Ju?kYL{{j}1@3-JAQoKT6 z^Zo{rDbe`FToAlvAFF2kSQ1!Z5U)4fIzn@F=wawvE<6CDQe2_^S|UAUm>*Ny&kcO<+UClqo=xlkKHoak_kzl$|I_M zF0Nl>bu#|z0g^0b{P$}Xb_msQHh;WCPQSi?pjTB-+3_&(rv3iBz^yd*t$>%AKYpyR zG*)>3{4z2^%HI`et;IXc41U$Pg5g(1;UY7RAd9Msii-Lv3bXxz=Yy~A8($}Hvriz= z804{R7c1hQ*F|~I>>a9VL(r%64`=T;)1k07P7JPX1oKscUR{t?+Gg64vFCC?f6e`t zKYJ%pv#I+CQ9XRCft>*hu%qFhQ{8n!9G}rTg+tdtJ;LePV->dojI~ zOywUeg)oox(Eg2YIgFYGxyOr21FGbo1rTZ{7}at~MlPl^w|_FM*Wgw{K?2vANJDVy z3Jh@7cn)6Iu9HdX?Nrewh(^jAq^Fu5eJQyhyZiOk6RWJN%LEN3;T*)#timmuk&A^} zMnjYC;Pk%R{HS|55GTYTa%dd6F=Aaqp;h)6uG&0JbyM_ z?;`;&L3X-OYyH;uoO9Qw#(eQf=8;;#~X*=ZE!1+B;r}?^p>R#rCDas-t5^mDs-+V~8H43MuOyMGYG`<`?+j9p( zd7aEtF(b`(zjt_)t)KO(;1fERti;{tSjnpg1Y?VE&MPqv$JN6b#x+^o0-z#H9L~Ga#9DJa%-vL<%B! zmtO#uPC>fMGb0-;W>my+rrQ!Yb@1xoKZ6v-iT8$NlX2R>O~5YIPS?ZqFk{`ONi`=x)ri5E&61ZN}X^Ot34XfgpMHXtAeL}13}zjK@+b^|xC(O#t+Pk)*x z4HJOW0-%njWoKdkNgc+DABf+ZSH)027uX4alfJX6SAzv`G9wVJ?4V#?mIy|_0Z&In zvkjaiifHuL3-ax}GAF>o_v<=DGp@oy6Xu!`0Z#w!S5SHIkxKsX5doTjiq+LsFQ;L! zryUa){o>-gLK1tQIBuV|}g?)o?x2>R0 zE9d6s=5F4L#iqVb^H@z`n>0v*yipQ@qGwbFLyKAqV z0Kyq?9KGHAp(6YkeT2lV2ws+s(&MG1P<;VC|0pbl|uwq}B(Sx%hDz!O zcJ!C^p;jR+xva7Yu@9wb!-QptZp4JWXpb}Cj4?Y$0C0hom31?xn>pkQ+nr1Tb->|_ zQ_J7{gj&b@nKCKxb{tLgB6H-bf|j1LA*JqCS+;-Fg*Y!hGmH?KVk zOYT?Jxb}c$6b7GQ^S78UIXk)^uW)YAo8@^pZ3PN_ouAh+oB?RQuJ&m5MUyHHm~;T% zwA|BK&ezN`Hkkw$HaXzrWniWpYK{m+ciPtr#8FE#pS6OQHoJhhEpQ|%IY zdhac_8bvN?Kdk?g$4Kk)Wp~!p3e6dz_YzTHmhX*~`8uD5Bn(Ch^IJb}T5|VL(_o=~ zMCi^dejrB{hvOs)&IK;ks7SxteG3-088o?8n7s&N16QCHONiv!RmEXo%iXf|pvBKl z^FeqMbyZaJkK-1!S-0KeYEA0voUPQ)62fw(zlA3+c=>x z$7riYGyRu{##@Qs)D-H+T$}d|VWHY&I%E$h`w(!^NPM0>x4es7nT5!b3XPD{=k5-= zlvr+P(&SI)+Xgl>b{gDj?=ttWMiCi&i~^s3vqy7o=H@g!K1s&qY+>sKtUQ7J7}pV9 z`!3$jVn)oGpC(8|^PEVgAopu=i|iYzho7wMn9`&gyuJUT+An_dsrc6Rl1+B=>nJsv zLE&v16@v8LH$=uA-av-z%g+K0RBHYH<3uv2!PSY%}rs-}ga>j@1?%NY3!< z6Q5osbD}J)qEqBNhl6@PJhtelRBbt1b^;6dq`kAD%Jq?}TpLVx`&Rsvjd3D(A5-VZ zlyHCRmNVI8P7)U{HFfJ+Ns>F6M346V$^Fcl7CZLKN;QF=L-BhU)z(X%XEI+O=6<~Q zMrF5_aA_S>ZX+Tk6C1$8%oA`t;*{+eK^2%s3Pj2N{{DbFnScRdcS-*hjXpcQ76{zu zk8T@pd9cA^ya|2f8cn>G$EhaCMG0Up8D$D0@U&KFMDmz0Lb-piDk z>V~kl{C9efcCScq8e!H`!NTtoxrQFC)MQLG-1*19Es^oe6z zes=%_3L9`O7k(2`j|24Wc~JH~Fm)Rf>|q%l9qmAz?|@qaW#u(6gol}ae+lwuUEm9! zi6#Uz9R`4_)AA35NS|&InFdSHA&m`?8@ko6uo()m={y%QeEp=JT{M&3VZZ;<8{*8mvA*;7tl;VY_#AyDHu(;EZd0vg98S1cND8PpzC8X zg6+|_4SubG@amAOPYtRbX};41O}wmO4m=pOH4w9N1^{tD8Lo<7rOT@>D7c|HdUXD> z&$sjDAHZE?fzLRIZAjc>>3K3ydJ24!p7&&UNJKG?+uIL}04U$dEG)IY64$50k*6Fe znTS*%RU^56PqM-RD!f4>pqUqsAWO97zW=9hqS@gAu=)o^2a*S}Y(HS27}oSEE)ayInyU371*Jw*B-0_u3wJ`vo1ZX9(#uedoo^! z(ZI1}q|Ef;q!0}$)Zt=!D<%WQ0)V8S9w%}s)mN};@H_0e7a?P+%OYUoA3V>1mHb0r z`1Od~nlEbshL{d#JMDZ~*0|FLw5<||v!8rfr(BApim8~ko2>{=l26qU*LG{ld^Zc% zR7zY?lQXxuUcs5%l?A9_5RzAMd?u|R(`Q!rEb|8b2j?A3r1jxc!<^7)^#x=+J0r6C z-3#nfecRPowi^rxyG!aHCVuYhoqD0z6J?Q*9XOxFJ}>|q*2in#(A9i0!tV> z<1;w-js%U17?xe@6iZ!f-nUo{3wY}ljvF`cnAZY6y^y-HqOMX|p3PDxYMx5&c^j}e zXPL0q^858NOaAZ6^-3-ZNI?+Dx*&^{8~VlCVjENL-9lE0<>)uM*AO3e$Ft@OdmId&d2sO(02IMUgXfNr-$Zp}~CQ3?YZ7=-wK9ABi0aNxHiQAp&D4JxlQ zzUSTZ>1&2QhiAt<^0OwF*VlGzGyhI9^^njE#*DF;q&P5>Ko-l%jQ3CGFZd537~ck{ z$9vh}V-hd|ZTK&(5c1+5OV@XKW@S#5hbE|0MM~JR52uVgNe?OReG*tWE<16&3L=4m zAiPl^x%EJ#km|ryw;$5?aqatUUcY`Od-`wXHb2R~z1d*iavJMFp!2lIvvo8kMED&xPZ>4=`yPtu$Qy;JWrQ^(e%_W2A-D#du}uUE(vvLVrzqeCW(V-?Ysnl`tAcqGePTV zNrK%u_3Oa%n@sB*8tT50;oNNl7RXL|Re^5zx8{__%<7jW$#Ei@gn^VGxD{F<^*WwT z{^Xa4re$HHT55iXrADSqeN7EDqzt#{kzB-)@#GZ^ybQ0Lt~I@tM2)+yq*%6b%(tQ6FR`!R`6;i?6zF`~7}J)F`E?MpF(AYEZ(awm^SWpEqHL*pppx zIRc$GkO$%Fa&)q2g~HcP%kA{u&jclXCgGj8UfDzr>y-`AFHOx57^wvyrHCfUa<)F% zkhqgor`XP^h-riSCctSEA|`5SNpZZ7i$}yrS}XZuM%?B~4wPX{4i!eo&R?!Q!1s$J z`&wsAey&!sg!6SIXOwlq5l}vGzm{At%xUzw2F3A^VxlEilTB`k??iAMKkMa6`dM@4 z*D9%|?jl+4*owfz1GC(x?T8IPpz4Uu)hC07cU2Bdf~$k!c=+%xw`NKpiYuQQD;9Z8 z7G!4fgo9AhW+~Aky1HLLG{52hkKm8#Vt{h(n0o}1xu4OgliC%DSs_5ou?P)E*08EJ zP@{eTc{N11-nu7BM^^1M=Z>$Hp@JPCrVb8*q_BU01~d2d>z;~#3uwx04Dt2$Ox=2c z?|D!dsE@N$9;YFg{2~{AG~<3N>FT|r*;@?X9Os#SpJ#w@dG`Jr_hTbJYh2uODj#fKIf^6U8z?`$WCA;`b*H7H^P%t&uGAuA<^gwI-5$ zMX2a6A~`@%nEGv@@5$t0)@~bM*0_9mdk0|Chs*b6p4LzCzz!rIuO81IHaA_6Xa%V$ zhBX54AP*(e)Puk$psKpYv3Z-#GO}2E@At6J>M6m;;`dUQ_`lOtio=CrB}jv|=TFvs z-zC;<885J(cVUH*xm8ud;nzDjrT4e{zg5vAp;qz6ai-&_3>i=0j}T$7eB*wylpBAy zI)iie*GdyKEdOm@Nt5GJ{H3d23hk3$tm)+bSRnCFq`{OmY%&w)sTQkK)^7AU3eSm> zIl(VSWdaL>nhCRpKWnyJgp}?j;BzKpI~4np#RZoCJ<--RQ9*R=85ZB0qEufEn%oSVjxhvpQ>HpIST;*(-P~2 z9{gsFe}Fyc@l4hk4J;snB->f{81T-dc3YJ|1onaa4}l4{)7Cncw6UPVYguP+&OC?L zwtZc`=m4$VLLk+(T`Ee2w<+L!H_c=_lqoyY`$%?}Q7E=mK>K`6a=ceID6|@=2qrE- zvw#w%QBpACO)xU*e(v_%q25|*Nt6M&tgl8{d9`zzi=hX~pZr2}sM-UKNIWdR&iJXB=g6dvmwJYkdCp3RApb_cyE zSHiqU|INBT31BmRtFWeCkSX?L{JlCOH}I=YWParb|Nbi2rRF;M*`g;Q%cVO7u+SSf zYmLE;Ag#18YnjJehov4(AVQq(se?oHoI{h@jmNtScfe8lrea@0$DMGv07-vhiG~3N z_Kl$}#{Z#lSzjr~=WIq(SO7f*B%_=0ko-kw@gQ5|#m<(u)LcC6dQjs0qf!8=~NOv3q0Sg3XM?gWj0NNvhD$0v3b zvog^=>@vgW*DnE_FeHA&WmZHpMFDE1P}Y8!e2b=FhMh#Z|31r(H*6ag69CcLH7(GNd3(RL!t+PYn5TXB_dx@V^kSC zzTx&7q)Cvv-@kvMX3pdmfy%AF^25V;tf*O`F%!i;U}6k<)fj1JfVd|Ns^Q~D;5;Tu zt7qRQG8h`LeS9xp_nj{DU5c679E?Yk*{~-!l3aikdIO?iLf!~+C15YTx`>v@4~FlY zrrM>d-4wg#EKhZo>SYS36Xv*7$1Pdw%D-;CaW*t5GYhW2%z>*s3}J1O8zD$mZiyJP z2dqs8&rUU8G8!lXhL7RY#n`t zZn9;^TaBuXUepN`ysRDpXTC=oOuy?1j!dnRwss6Xf+UiFg>fb6y@00hGgg$1b*WbI zSl~K0#%@ShWAy#RiB$z6zZJoEOp4UCe@q<+ou`9fR*-^PC>iHSB`+Uv)D&7XD4CL$e3 zAYMg{PZk0}3g;kQZb;$bIY`DP-;Ppo@nfl_!HP=?b0Wc0yWR5BDwW?Ph(cRfa7^XC zZ#`4H;kHogNDdFNU@k7=`d(ZLi4m2=1sm71=I`6`h@>!P4KbIrt{ zfX`dK$-#zRkMmoJp+{9;g(L|u$y!I(sP%m>*&1? zcGM!^Xayd$TG5mk)li+ziJtc};=CB#I&yX&iHc_kPyiv+5Y82e*Roc=WlU^RCk+DM z1N*Kr{bFGDh~*8~w%S;iR3?43{6ULHS-X?I!qGe11f)HGw!Dq#M%<-@*el|(R%F&c zsVW?2?0^1}sRLzWmMcA4J&se|iYdtNKqBg9k6zS^ywm~UB990O0DLW~98wn$wc2PF z#$-)dt2wH{6~6poQfnOq3cd7GQX;!M@{Nq8f6vz(^VBf$dpi6&J+?pz7P%Mu4gs}O zqCaI1J+||8gMi&p-^xs-4%(-gR;L$(RRQ(EOyn3D$U1|L&b_k ziF>YiS!;Ao6dI;Jl(4=M+N3hnAxLwyG|iy#yTj?dw#l)0_Wpsw2qa^4C*6~}-a za(CdR*Zf8irhWf|BVahq)ZWC>DgC>m<;NoOqsQ4aNf@*T>|S6ovA{sMV_gV~u}@P3 zN6~YEt<^Unb}R;!VBW2OrK3fX!XPd2nJ-_yOv~MZ1;+ZZTxWvVWEKut`@uHnpoZe$ zrtM(=%7BJtvg6&4-w}}z$;nIdLr-c;?NwzJ5GW>3q%uPlr#c+n@o#N{8m(4gpu15k zL8vhrbY{7|Y!N}=LD@WZJc5v`%2 z+x3x|T;QOgiultnGG2NsVN*)Yv)GPIFHu)@O1_ha^?I{lS^ z>8N|X$?F8+M}96);nEl>M6G~Y!4}!*&(z+=muoPSE2e_4Kh!8LD+9BF_ArJl4(oyn zA*y;`o=OmXs&(PVHe*}>CwOFBTT@(yEZr#LcblnA=nXftM^Ii*v#~N8pLjoV^wM{# z)>^N4%%K8tC)VC}24pg*U3!VNrXtL`%?Z%ZHfE?^i*Oc8OTd!0<=X{{fOtewBtEyV zj0%FdK0JcQ4L(X)?Dz;*!b)4sJOy~AXyWFNkGgBdXcS>qpw&5Dq$JPI=ujz-N)<#F zy@Xq(a(BPT#_Dqgfto3mE@>eS&8=>g-05c8`7n<2x@Mkkz$4H-cVFG#Uxp#EVg}A| zNY~jA^G-;qY~rhq)lja8R?W2!rFR|g!srD9D4u1ikw?8oeFO$*rvkhpB7vQ-%n>+6XTSbJ|nlucZ@ zSIsRhRhVII5Fj{6MFk6Pu5Ahdx5QodCO0vICt+HcWjqrl1*bvkbmzkeWY}k|Sv^t; zC`|E^uO@|uiLkm-H+EFyt%Sf$dt;`RMFm&|r)HcojuUSXbu(`-NUD3Xc2gjVT;YxG zxs4jfhFnbWc_fb@Di0?pSg1%lBh~@-<&Nq>c9_bzLA7atS=n7~nhv$R&~@O-d}M`; zS}rkGC57Tdp3B~K(SEmAkiYy$Cbd7Y9jaboW9XdDdwBSXm&dqH z_|I)hkb8fHJ-|xCiu>J4x7|6!g;m;jN)*9u{2ZZ7{ZeL#uk`I-70?0-2ur&15>A;_ z6K=b9#Igw~&Ia^RBP=Sh?|9T7LG1X#l}9V~k*-g@hZZvw9;;navr)v1x#G1_xkD70 zehnsx?awqDwsLSQVZw{P%O7BqQ!6JkIgJ9TY?IpQ zJb>W9gWg>4!>Ui)H~vqNhBvIK8T z>1${3aMR%Un7&aK!%0q9;DgWceLlJIf180J?vt9-a~GVhVBQtE6guQfy|XctUgrd2 z-3N&nE}L&m);$inx=;+dyUHq;JLtQXC-VU(bY2 z7BM`Mg&jiaZTCXoJgUG0b=>;uUR z&mg>5j|CU0WITzy%UNt9Tl5PmupkySh!`MaV=Q|jS(w!4UA|-M(30l4@$9wZJ=&YD zlPsa!N_lp5%uIEK-5)dq%*Ij_Jzud#gfz$&*@KPwVnbPY_~GW;su3=n|h1^@$ zpov=~7LOg@k2G{5mfK|56G*~C4z5;Cx+t%_L++<2wrL~!5GxGSNCB=6Yy8O7?misf zsgQ=n3%K^aUTsyk<{D$KrKnVZ#fy@Pbr}-3_kC(u>uP4z=Oy56zd3NVELwOr`dirA z>eShpXHkFl*eFVj$Uh24WF|R1X{9PC!ncO<{MZsof7CK2E&VQCYW8)kDRU~^sbrt8 z&SSCEWIJkpN}GctiRS0Sy3OX6G1T`c`ROgzQ2^|SU*ZjInA_KB=u*3Va4%wBt+;`2 zEu155y58t>>7hAopmbe7$EnHVf`V($XIn2XZ+{wc&|W`}Y#PzeIlBGrtUY=+q&#Dm zX+?2iNoVEC13n|w)#aa`lAqF3`Q_Z!221e2`<^Mun-)#E55D|!pTDZT@2+?mnYpU<6KUH`S3#j$>W^G}i60N@+{ycXoH zJhnCyd|D^^nnT!`@=#HF#-AYk(^NIXL)!CjM(39zthen#ZAsP#j!~Hr?v7_=RKpFC z6qg@=FW@M<1ShR7=~pjGA9dXB{Pf%AczNyfZhxqC?5v?QfZ8`-WuDl9y%Zc0z~Vss zqfvCyQf?^QWuW%n_qsck^NBlT9DeNw6Zv$TVRiOa-@|9?Mo+3OPYDw>LbzVgck=fm>}Zy`7uXNzDrAM zeVumqdZjWs=IGhvigurye_AGYv}O1wcA|MDHmxVgvCQN9sp1S1o5$hM<_}Nhr%o5Z zvp-NhOPcuKJN=(OJfHlk9qS?9{ovI|x=W2hd%ocLI_b>EUD`8ClXEhz`E{wXOZMw| z5|Pw1Y&9ET|Nq|?b1u5&#Rv5ZdKmTI+j_RYvenem(X_G!;-H>;m_03cQ2uf@;nZWf zQuUK;#LwNRevalu4|VVhs3*JDUl{*!7J&56-walMv8#sT3_;$mGzyXYq3x$KrR*pR ze1Z~89cj@|IyNJ>x&2{apKho!%~RyX%geuOD%GUdhv`mO8}JDA=0R-9q8Kl(`S`~H@f$ocrvP}!) z(Ysy~E0fMLN0Gnzx2=4R#|}KH{LO=@Q^|-%9=r)vg}mXk8s&r ze7Gh^`D||cH(yKl#ImC8j2L};d7f9-R(4f7_`;*lpEV3tmI3tPPu$cnYZ$F0)zM@0B-d;#OXfl)zf-DV!DPv{D5$7VxFE^fBJq~2MatabNU}VR9aPds-=F7yHbesDY<^E=U+MdHT`ylAhV2jv(L7c2b*l-ATk+DfvUK7x zxStFz}ny&w%tr{~`@N7GAd%VM=_`Ggew}S@w)KSQybTl5U)90GxSe zxo|)O_eNJygs1+W7Y$v*#^b3uH-qU|@cDlm3NX|LuUp~1X3*yg24ES{%b^Kl39mm_ zVKX0@d0f&Hm1$F8ue2s7g^@ZGjvaGEQzC|JnS9O$1tfl&vEj|Ci@>#xV;}?^ zQhV#Tm`3q8AE88i8`Ime`FN-)MA|=HNJDH6f;&vD6LGo9x=?Z|f$ih`hOpMCh`I>= zn*VuGo&4}nK<#)N6IR+UN4kLc@dv$$*N(ua(_OohKF`f(%{_<9$lxnt*B-jNW-92zFXF^_Yzw==?G!?taBo{w|mm+Kuy}Cn8gmTJMqq;+9QR|9?2O|4qB8B95k`EBsjSz3A1tVT{8JCU+i1ok zALSKUQ6yiy``;HFDSY=e|7YnVepdVfN0m$Mn519Tk+Z^omwZItLFuFVxvj~)E46s< zDkq6T(bxwLqjA6I;OBboUVm9>t@8a-K2iz==9*ZOT+&S3-JeoSB0#^wee~Mjs1^C zPH-_MD^;YqBkKPiQ0fFCBl^D&{_g_=H#@%Qm=-NunYmQ@WM{kZ9LIdVP|~zcPbzrt zW?nf)X4ks@-^~rCg`TbZq-P{OT-d*y8;=f6D*0VX{9B0^YqVp^?2G!UcFpf*-fXN- zWh$kUG~>0SsLUJ0vgAqE%y@JVyd6P?gIj%1#>1`tqvoj5#W99+KBL1nrWeX5;<(tU z)zIS=#izbFl1GoXH_@jz?KW&_-)C zj0mAYI2_=pPLYY*ms_Q4$_B6+B+D#I8Iqv+4vEwicn5KueHF)48PWZAvvd~6M%vp zPF`!rh+gtiK)Gpf&~z9LIz4`D5l5XUWp)i(_X`!whr!#SlgMTgaQ$73A}N&n9brw~ z`%9XAEarEu=65hNQ_o!NYmDCMlH!PJ^*3H1RRHr2j;2u59A!C}fN++GL>qOKBtXG? zoGYjJAsEuWCY9hBVws#z4FN+ZIm=^w6)5yqI?w!hch(bhmbAnMPJnAO^1b2B<#5mLyigvhfm`nxQ@Ti!z#^PaqkB ziWAY)38zkqfL|wZ9g0=%xP`#j)fjOh8cO*PH(>V>()TdEoL7Hr3(FML8@yM=pU>?5 z2*Jw{*8KQ*EL>q0m@%o6p21|pB0pU>>ZN<%!<0($iq)Y&iZ5~h?i;_$|Z;LK2`0?k+vpYb~;`TVrZCsi`}%4 zTT2ss{rm^BSysh8@T5vSjgOpFgg#7P2Gj>3#|bxYFYlyVrXL-;`i!5}+x$DBV9(q5 zu-p?Zzu~)m`s<~#AhVebybw?a z<2_Lu?jXAu=y=;>k=QWzJ(%l1^mY6Prr)Y&RBD-2l(nHdA|%lUxFT%>?d}Ruu2i}O zG^sM;(x90IJd|w#=kA*DqXNm?-=mCMO-F7;BLOL!xjZ2e+-%UPe@!3Tb4-T=&Bp@yE3L+p7}5I}!V z2=X4pe5i6Hjnb${ZR1$l_R>|~0`TJaU&+G;fZUzTfSsWO&?$h&K{4DQ{x4#JL}BSU z;Og795UOyWvq@f)LNUq^yC4Z3#}54xnj-Stj<>5G@XMl9>eFMb3B0k)51yHL*aKdb?qkXm)U zubYwEg6{JNcf6<$W67bfn_7gGP?|$H-=>dNisp;*Z6yc8Yucnxtd(mP)nSkEPrFekOIo>tdkuANKBBo<d{7Ic5pzD&{r1d*?X0`L65NTLGhU7 z*kh-moNovcTo)%K0BH6Qy8so`Hb~H_0%he-^w7V*FkrXrEnbznPb3E_n zL>&Bb(M`CG!ash@!)vTTO#z`6;?+ZD?qJ>}u5GcaCJ;9Cae< z5(GZ|_aLWK{vUYeUYSY#D`_=+Gx?!_NkzsTE5j@AJ)T)(9 zoTFZ2S=Z%V#NVei!ZMz7Pc0PL;V_AImTyJD#h1mDtw{Lt?W&*7Ir$&Y02==-(VnWM zYrttet{~I%=~`;d6Djd7%hSJ4&P1&L>IS~y`Bvm)`fq#YL6@Ss)pa;!FFmZTvRcq| zTfbf2^!M`FVT(8gHD*UM@<#f)_ z=X@6*ie;qK6ywp6x6-M@I?NMSzd>9lyC96ntX5MCx*NBn(U(?8Z9z7fboS%M)#LsR zF}Jd{$*&cb%lT15rI8t?SEcmb-AjM|Y}^hw#@yt}vCU5TelkH)TpOnr!>;U`U9M++;J)7ykx<&30-)fr+u^qHrZ8-#HkmkvIy?F{HTat({6Gd-B?8fK8X71RsP(0?;z7T(=bqkL zpq#3P4Cs-8xLN2;&cb~!?$%?b($EvTWA4uqb?$urVb>Zau0IyT6Z9X@5 zSJxMB>TV)?sBdR=IPx)J;#K9VjnDmWloHG7b=k0z&^73Y5SNjB)XI7Jqi*s1 zSf&@fO^@HqjDMzpev4a?c8<(}Cn?oy{&%O006%P7?HjL^W!5hmDh&WeJOSl5V8Lx_7jT+6!x{bp z*ap2>mU;>V`?;aT!%)D(x;;B@4P}skXM%PWRJSau4JAK6KPV_juS^z7F6MtDCwlZ5 zbk%SII20Fo6esQ4dd2?^tfhF*-0g>967Tq_<+Q5REr5WukyJ>`F!#wfI>co-Wtjqu zfbITT{KSM5A1x>C6L#wX$2C(t3#ssg2-38s`-?hJJCTLPpNAln$0t#hP z(w`g`^?vW>J^twJ#tG|*I=d*&?rApzmc0HdiaiY4TwpS9rtYzVGexf!dOu%S@cU&7 zBCVAmM_nyVAF=9LpQ{MN1gsV-5EI8kT`9`Q!m_W%kA(-S`q#Pgz#o>*Cx+Ax@xI1^ zvx}h=s1pTs!~f;R`yafgo_Cuv$h_!!)*VA#F=$-*+II=OgrJCJkH;+y4dT?~zB>!{ z)A4hF$h4i)PAraFTm)Hp7Ui+;dVZUnJ*YFF@4nB{N6zTgX}1MVvu;#x4XT6|2aVtW z^lFNNdbCcAfme8GFgj?kce5e0d0s-&Hul0ox(nm)RsLvJVA8F&dkQI@*orP!gJ!c1 z0@o!oX$OMT6d`0JVj6W52?jOwnykN^=EqerA)oW{@iX?rQ=@Po3F=6zX2Z>NuqpiA zVQ?$|T)7F}NYEQKG-O4A5ondh+EWbz>&L=8s!R&sq}lO0nUe>KeXLLZ+uuJI2E*Hm z*K7oMc;nk(G&_MY{JSx@y$aw%i>1aZ98NsIyWX^SV|3wkb$z|cZx2r3Ha4Z2tf1lT z=UfCVxPSt)(9Kl6zrBMw>XVYhCY1k4)U&w+Q(AaT#m_sHCyzi6L+NkS8X6QnwQ+gGp?N1hI?)sTNj=!mtcp1lkBXwe!zHJZY<- z8WbtSf-yM}feQ;0=jZH4nUK?hzXW4^K>Njnmx72r;KZTsR3{2mAk{%*l%J(x!+05g zz~=sB$5-o#0owNd=_*12pUGCYqo(hB?pMNg)9Bqbms`p~M`FcywlVK`leP+CWq~79kDC1 zrm=AP*^MWRbiv;JsioPrnT`fX<-jbeFbM`vkz^hvvftl{6`n86f6Kr^U%~9^`%cq| z9!=g81?`=E!Km#pB2LN(nRW_PM}+qHCUBVl^x@_CLHc~6CCbW-iLHmC@Pxh(9Q&TL zz5ht^&Dm&DKCVVk)o|N6Q~RghoGf|%_L{y}IY}2|OsIq@tSvMMCmD^dFJ*%_9G)0L z=(s#8FTmB&`ypOhI&UL*xk(s-fTzaFmOZKc5wpEtk*`3R8BxdwFsM+Cxq#bmHz(q;NFyoF*ibl87QMP7y!eGBaopSw+&V*OqLu+V=mnWo zKtL<(Th31al~YMU(BgICKjj6$KpPPMh#=3M*wRoD$xFX_Z=y1wSMT^2{4MdcD)j8^ zcvuK!#ujN7!N96<(jCU{68g-zLDw5n5x8ah4)Nn~g+4YYWo_(&Dca)o(S z3FYlBpt|8$)lyt`DlngIgGc3fOoC>zvC z%MXdAfhGY;mX!unea~k(NRGluIzTMf${Mt1_C!^J06FsqWZo#i?@B;FLqIBrHMxX! zmlF!+86M_i-rnB&Q(9qQ69TvprEX^f9W8F1*@QUGfx5he3G346S?%}Ow7^KGJjMW8 znaL&P%gAUj`VW=18#1m8 zqS%rVVPV+a0GZGFQ|?xizUoR#ED&5R@ter}DHu!!=(OpNRkbVjjFrIK_>!r->1gx8 zo=2MpN2_prUm@v9yH#a^r_dEA{cxZv?-$09gM^1nny;PBu|<;t*U5UY*Q>13TJ}qf zTp9)eU^)&Hw*gN=ohyiOMa`5Xr*izCz#?Fv7!wCF=w7VFgQjhPLJBe+Z|al)m9KNR zoFb>q)b^P*1-b@P_Mt=Nc0IJT_N3W*)&&f5@AAigmnYE%c9C<0%OVN|vr!7FSA39c zf`ewsw zamuSn(8~4mwci)*)`W9?wu`SG^KSp~aeU#lyQ){)CFxP(_iTL++PPJdIdsDqtyp;; zIMH#c*?f}ew+2p@lyVE5fy8yiWCQO$zOzNMk+ZrwQ_)rsEAZVETDlxDI4?E&QCXQy z8=0CQkK`@|d5||zT;9N9!7bDVGlqVT3~DGnWXSIQ@h1(bVnlKJ%qgSsThf~PU}OKG zxWIdbPro|8U2d>pWQ~fapEw%6RORft6r|C`QoB6ARna65G)VK?v0^W?k2_O{Vvt2C zc~u#Y!?Ts*Z_gG#auPsJfm~LmCxhsQVo4b5COxMM50`eP^BQ8{iHDgGncQw%Cr7c9 z&g#wj-)@)W%!j0n&Cboxk{BV!7Zz+PTPkH%ua}yuYMmoc9SC(R0G zaz7p&vtJJGm*1VPgi{-y-W>bYnAokovgXmX;Q82SvvqT5m4gNPMM;L$Fqv@G)ACI|u`Ok*ohqucxn#Jp1~*4gCBm+-KjyuKQ9ZE9F-} zo!Rln$No+mi!Yx(ygZwn#L4Md^zB?qZmDM~eJF_s5q7`%moUb9Y|~^f=+2aR{J@%^ zR;T%3l+mcEuz7r1+xDHkbtijM?XXOl#gLZg02DB3NX)K+C^}QdfR?n_ISgsAxq`&vQlVD); zFe@e##)8=$J0zH4sepr=761B5r~@^;d0IOvSJYUD84nJ^MVblN?PPbMUq>e=WtAAn zLH*dZd(8;o`8lLP!kq4J&(BXT;8JF0tJ)?b;0(^K0Kqdm+nFiWrIiLm+<<_4fb6Kf zzq=0DnRltUnwVH`!G#!0ZcS`u-W`Oaz{Vi)>$j1b7>xmXNm&=(g1UCVz@mWU>bLlM zm1&n~mpEfiSR<^*nR}eHD-8YaZ&he8-9^O!h!JUZesx-B7XtzWpcZA{Ys6;}$g1}s zzzenJ5tm2KOig*L16m${Uj=|HC6A#?^z9Ye#Bt8m&}XFEus`c|VoQ@mPakR&uQjy^=yr?|He zDRVA7a-Q?o9ZCyA)R0X`#t)#qBn_;0cZV@3bRf8ufeMz9K~?((jCDw>$k2^a(e)!Rk z4Vt0dUo>)`ospw$J%U*WG^Vo8<(J zR}Cv4o@-Yuu6ZqAgGN~!TU!b~`}q?V4avar@^TKO%q;j_aj80j1vxd>ienQ#I&cDeQswPV3>*u0D#w{;8lj}#Doq`Y%TJ#KK|9s z)b0Y{E}Tp-7V$9kL1tXpBE|j{JD- z=ErMs#Nn6S?$4&+T<@IQ6Wxp%6gWfBK1j;9OG6BW`aV6`83CdaP6V21qhKOx%8Ou@ z`5rnU*=d23Nbu@|(+4L>X-Q0kEDlln>FF6T!Oqn&CgG@{w+_Z-31m79zMatX3&Ril zlyH#X_=55UrA5{QcG};6cLU!SkUeFA_@Dgg$uw+a>L%DAbwScF!RU8dYh3@%ZVH*> z!IGw4_?<;Q{&_`Qm}?c{l#b5RoGuU;fBJCG5D*^;UJ?k{?xalamA?=xrjhc!OF#BM zZ>Dy(dY>vs8VD&|slr5)xV^mvFt)qNJRLT}n)W)|VEhiR;W`z+sXx4suD-G#OO=h) zQ#S8v6_P@GH}NRw4{pC3ZmOM|5iXKnh-1#4A7C_To9ZzX>DVe79)}w>?>AeD9Ck?x z#Xr}v4rDM!KvPH?GAJ(+TW?QCmM*SzSSN~;`%;n=3uOu;NbW&y@g79ZJcf9tjH80U zJAr_8(XV1Zr>{cTo4%k?qs{_On#1tO zq^lDahpB|5usKb81Zj(8S=c#o(olZYtZANtNvdsQ@cidh3VvIe?-+liRAi2?C}_)0 z%TIUtUn!De?otPyhJV(4~i$=A>ARoIxQu)9$3&v z0un~s1lYN|LXh|K*#2i(fpqeik%=2J&&!NzC-j#t>L6!+pbU-H88f z&o*}3@*^Tw9UDKxZr>?RmnsO&C!f85+=8%N3pjH&>?I!1t66=nT=rW&jg!O=kXIAF zOw&uj?BrDfE;U~Z&43798kw6?p_9N({>rbPF?tpqek}jYjfP|YxRe}=XfIXK? zo0+&tySlTpvm~%MhJ{rEDaQ2=iel5bt>zJ;_bJa%kp<)=z2JI%GAxPevY;~4$$&4~ ztP{cifJU0V{nXFs@*4FIdeCF5G+BX$CLKca;TyNIZd^+Ke_k*0NX@cH;bs^ZwVx?} zUtxhy)ebAqs@eb7Bb^-~Gg;1L8~b-~9_#VxO0(AU=KTftIXf_aQ?uX?^H_THv>pt? z)|>^N#TRLpC?>za3M^Zx0>6W82pevkW>O1UFJqoy=UU;?I|lkma4^#=oM&d=0Cq ztp$l<4YAw*R5~Mg_#QnB?Ev4Oi+?88r?$b@(g0R-)B^6b+TF+9jA9Leiz`U`I}U4k z))`h*=rna+uHi~@890;E;+n@tGJ})AhBYn_5LnY(u99P6D7r= zv7W1vtFI^M(?CHi zgC&$(Ieef)Rt+2%7bbL=AjSg1(ST&kkARh^XkA0v;3y`<_@m}+gMFY87XQWGI9;F) zD>h#-!>=wU$E9TN`MqXZevHW3>p>DcR4?J?F*d{)PXcB;{rxWxaMg|S2x+;&5bmjc zeYSd$Er4oOS0AI&pkUHj!M(aM^5qI(T$oi$iQAPPY!YoMh2wy#wzyD(e>8wqX0Z*B}*<4UK zRS|bw#pNkSD{u+hi0}1#Chm*RGrv85vzZn5hvO) zK*ClE^?r$itzM##BArr8NHUmCLQ6Xu5;v6W{XB`r4tkEka-2p;EN&_wywo|NBcgH| zOdkn2e7Mwj!v!1VQfgO!Z;bJUF7ZwAQ`B*GAP}~7tQtdK85{ADj5^JRSRtC>!5{;Y zUQ@-20saGT3=TWI+QR1(eS#5OI=Cx#`E~5fD#C=Z%(nj}U+KW&9wI12qqh$CEtb=# zl-QxSTJ@SqRW~>?YnL>X4=8jf(0NK61a~%cHayA3t@FD& z?2(#w$gOQPIOd}dq_|1lKN`J?RGvL3XaaA&8P4qvy%@hW!Gioa;*sp%v3G*EHIPmw` zy$54v&pWwSCUlrlpqY?%>|L35p}2cW7RzoKUHYpWY~ zd{tAl`r>B(+1*9KlDZT+vixpUYg=#A z#u*y@N4t2F6u*NOvAg#5*1P_mv~L6uf;OYw$EbL6q}MtXW{7GW11oivUYYYSkRnmV znDhi+UV7}!^FynCtpJ{Y-%>CZsw)sM`q)FDov|*jSZeLwcqJ!F4}XvAcs1$Ljr0zK z^*8}5(yG^D`Mck$NU@7{LQr%?i+OQZ2`Gl3^cpabz>##=t3f|W-Oyvf?b%n?(e>nj z)(sc8C{~`l;71B^#&|QP@9pML^C-~4QgJ*idY)!eu7-Q5@A%?^+CN|jEK-M{?c}zo zAVUUf!Bw|^ZSA-7^!6O()z%4x1-sb8Wu>IvD_t(H=nP9hv&IoHu*N1L10kqV$js~c zO(3;$Vh;oxR0ic+z52pCbiNI3e@`gGTo?8v?j35<)24Zw|wU7R5}yJFoZG z+Pt^rEg2_6WokqL*FoufLLN#bWWuoOXCJV&v3V-ueFE?R*E0_O)vCSc=Q?o=plBmc zokf9o*sDlW@NWo7AUed=)fEqq0g*dq#7sIYe5~Y_2il-jG(f_%RtK+Bb-mpF=Ps`n z`8wF@?X0cQA;|wga(J)l_!ZhWyU|?KxEW>f2kdTYL=~ z^vfqC85Ofx6FoCFy$n?dNk581y$*lj1G69m$f_VxBsEtj*W#bkN{>2Q_4P)cxNETF zFynTD``scqqHvTMCb_t@U7~neK*n`Z#WF_=pHBl)KOw-UW&n4S@I;y ztoxf6UJ(zZahhR69G5}efoVVh%0H>Z)G4sP{jVOJ4}vP=hXrkhC0uUCLARD%|9U%a z;MPv6(pzA_0mK`iRV#j-Mc|=0QmFg6oY<8bvZy~x0?Ly81E2@l$N*>qZea>cSAqyc z7OsIw6y=o2Zp|3P%yZ-S4an#sc13Zo9Zt?s*5H=kIxdb4qnY8p*|7#c>`y_1sUH{+(n>?baedFi zhlREm_5*-`M&1=dvrSPci>3T)zh49a`WLRa9Ft$HzFbU!HY123MF2__4*qvyov zul&YFxe3J9lWQL9-`O)QfkS`gwPGgGA+NyI`>RWL(KG#kTO%R`a|-{fU=<{bz$3_V z7pNnrg-Ons)S@BfUf}=RW5323kJ}3+6gg;cBnl>)6m5$FC#RD*;3;eMPF^Hh@H{&!lZnA+aG+Qnqc}|W5DrhJ6)lj_VGA2Z}edhX3IKKn`_0ZnAEwWD4T`wg;m zdS@TkmaDjG>-m*6zJ3I+vO6VD5AWs1)MxJ}z);5j3IgeaL!P{m1sJjy0ZubOPNDjv z&luV~Eb#ZYnWYd>EQ4}-6efDxC^vU*C_hr8Qd8hLeMoLMiR*LH&A17 zu70i2^0BsHWnXXlgG+xw4-#NEn2-lIKT6+yy^=T z*`Ay@qk0Ho)J9{1A6;Mf-(Sovz#%&weboG7HfHTobNN=9Z%%%{U$8-M3zd3H>HWJs zyvr$lWF02ywDy#AOM>Tv0OTJ+We0%}D5Li9I=vmE6w!M@$!?cVfm&_LPZG0@pgT*3j|a9wMCwWh9aw$2YIOf9Ps zId^wcUl=gjF95vj3{?OHxNRs9JVCH{E4#`YPmjc(sK7nURSPAG5V5t@coO3`sdq_@* z0r|%LWr#pW5+^t-0Rxj6N%tMtGDXfu_~s98j@B`1XJ>0|KqE*4KozdOrxup@^%VQ+ z${)BAbxN$5%-UngMqUNuq3qBba*y^kg3*yR>N2WCl7OWdX5za-l35Qb&McL_qC?V; zTkmi8fk`CJWCuZQnQI@N;0zkG0i7MX2~h`5%xYG>lEDqo5hI1xRtK2tmEaOLOG*>{ znC*2|oD(o9j{DF|pHdThK44w$@m_>BSn8s19Mt^jyIianYapUro+wFMSMV zAPr7=>)jPF{F(pyFbq1>(g>ozyjl41_fW>B5>@(xYcT{;+ei@Y@3{m;B$bsuIWWKo zGxGc!3Z-4Dc-c+Sa~MvnhF#{@EUH=W7LKR*qwrLFtHD@KR!OV+iIDqFx_}Gdo1B3A zmj)eA@!igcN6#4`q`0VpXtNj*{Rfa`fS1&C%Ygu802It73}``85O%WwWRD2@n<~)F zkJkw%hd|v+d_Oinum2+1Zz+@C32(E>u;L9FL=xrO-@W!v%ST#PH#gq`wY(D^SP8tB z0c-f0>y=4mGZAQKDFP_*S`#BlujjjYA8}rROB>n)NT43KYMC}=PbFJPZLOBquEEr= zx}hAPk;s6M52#etWTo^w`2%SST0%Kz^__kltv?6Gb+V6_zJ>}7yG?h=KsuZ|=m&Y5 zV}7JSe1f{_z%eHZ%-?dw7r?sq1*<@P#apER?Z^E8o^<6-BO-9n@s$NXC&V&Dxmc0s zo6Rs~E5H?A{635Ff?+~{*lW4T)T%8PDAGeYInqw-P@7t=^N?OzKA=IkxYG5K(dhbo zm+$_JuyuGH^dg2mAnLMu^JY%wvBAlC>z&_S^D*E6>6JZ%ytA>(OP~w+jyZ>@b{8pn z&s}C!P1tPqcO}N~s7xbT)YaFeuHxtD=yaN?&nVT)fV=qp`;l-JCkqGJGqI}+lIK(9 z56zZ|=}q%|f5%zJgS^tBZImW$C-K2=o4mEW#q4QFkhnZU5FMUAWEHyu)2v+}{+pev zj|P*=V7h?V&6$O?e4l4S#eKQYCL?hyA{GJ5?VO9HgQJTV`_T=W<{u`k#WuukYpBO7OsDMav#IB;z#q4`W$~qa^GOb(`P518gHpW zwJXmjWB=g;LGm5bdn|^?7SHyAZXQ0K^^YWSG3-2bN-5lKO4rkBWxHj{W$d5WGj9h& zp%H&NLjRDA2Yd6Z6vYqJP`Gp{WVSAwkv8f!o-H;^0nAqdVe6(J2fKe4F@ZvqKGPRz zCm1Gt^{-_%5l-&AFUnwtt9#pfhE5bqERO?b&tKlVl`1hsC0K^k#MkIo7#!wM3t#NG z5Y-JB-~T(G+81bPXeY}f{xxmMGrL@;&GuxysT7uB-UcVs=%DQQ`dJ$q zvvDJ{h?$8}pu(@uwTWXx#3gC|Le*LNwK@BLe03aeA%FxMAKv_&d^l?PrJVA(=6v#J z(u2TijRM{%n-ngb$Hx$U|D(k@zDnO1w#l)e*OMEIcMcJdSf`uReM$}Ka$~IMrU;ox z7PUJ4|9F*VcDO~oM>@|JoX;b}srdXm3i~v=)gLCNHH}3JaIj;@ThVKhMKtKXmkrhl z-bt_@cb_DxeuxLrp-Q`t$$Te9<>rZ@6nQ&Xc&6SG>r`bn*YnAq+M|zgiL@3oH+7&^@RgOH zN|kd?rla>fPC@2vi$^k7s^?f-gNJ^=jS#`r>|@cp3;N^F(3h8Q3AC->Hf@lx;jy{1 zESG`j|67x@7y$r2fB*wpR%M>~Pl686U(azfn%tsUGEp_7RG9+ITrWUZA!$)x%@K?+ z92N=#nTz>!-~}0f;J&sG{~R->&YC#Nz2Maz9TbGtECEbNc5yM@0$oexTlnTbS7b@#LRn`rRt>Fozkza z+u(Z%PXGKqlR?DNAaP@0;MAnJ`&=yrgMdHlH73mT*M~c`qGR8{L)9_8<-Cc0CLynC*?SNoN(FJ@J73E0wJ64~o z0l1>{E-+kdRS{TENPTI!=sdsDAgV2qw}d z0fK_Jro#~QsvRJ%GrpF|~ zykx@;N$^Z<6pP}tm;e*ZHg%%F%EyMDCJT-DNm!sCToxX7z7!y~Nr5J~5<$OpDlc-u zY&B$E%ZgdZ8LW!@_cm<67EQcCA3KUx8HaXZK?Dq&x?7!&>{vhSa%Bm zS!zfJf&vbY_y&cn5UJppcIDrJgqV7NOVFL(!ic#GDM?hWRcuC(ziBG@$cK)!QGtBY zZ@qvi{Y)7HGEL>9xncY1*}x`O&fQ65mmdd~706GRW&|NT24kSvtZ zvi9e&u!i^6z<3yV4|4s^%uNJ;FT@l{DCOv%vD*}~F3CS+$C0OlJ(glu%#uinrsjLw zzosp|z%s{wAKJ5>!EkCmF~;F~(m-1?lI9m{B9U-PAo?F>c=Aw?+wms50trHc>J*<% zZ}KljO3p0P;JX}{Aa*s|N0)#9>lP5Z`V-S~HBoVP>Mm6NyfXGRUOr8c{Nb`#SB*Z6 z1x*xvKT%?Dw8s4CwD(DNb>Zun?dRpq`;jk5xP({p_r_G%^=?k|dU<|O`VSKM)R?cn zihGifNL!z`GSheT7&5d4SivX{ATh zZItAry~ut1{>cYCoXlT|S%WVwrZ+3DPAf7!cPhcemI^!UmS0d0kP+P}EzSxdtk}vf z@4o*wCVm;ITm848a?NkOXTRkf44;wZu^4lnBhSRHDl7ageg&qlZE*Sj`%;P|k#CEw zvDW)No$$HxA)Y6N<`r`_i;HH`X0JYlh0j#E0X_ucIbQe&55oK?iX*}(% zaJPXcd@X)E_2|DuT3US%k0u@wuxuN&tn`&r_2g=t3ppAEL5}_$_Uy~igciDA2S4+} z8O)2ERGHt8w(&^99ZXX3neah<|ur0K7*EbR{SzRR8_02pff=1a+ z8JdmMUl04vpkM>deK%;K5v3lLvYZkZ^jm6pI*D_YK=j6u)GaRPk;h1Dj0t21Mn6`2 zldU}9y`9^9`n~$>EBA1G5kmrf`b%r|4t86$JTh!rDTgm1egGV+23S-{vkkcQH$MyU5`{U z0m;ay+iDQU5V=|pfTi3+<{k0Mk6D9Y^!$THZ}RJE@_ z!$h=&QV=*7zKEt(h?61^=t4wEGl8idCM4?cBS%ZGK#Tz3)IKm%C6`j~=YAAb37R+W zZ;}K49eZU@BfwR&B;fq#uMy#~xw)UVGgU1upD-}K-d{~+j$h@L<<4N&QZb8MuElF< z4+Yq_Hfui}j{?ms&!7-^H~6q3Bk%t@vB#@bzUv9wzyBvUpi}zqziqt+Z#NZ{ky*EG zZy!+PPXr{#wN$R_9;FVmKSrsfN{?@SMHwEF(-@UgG|d)0iF zwh}JdzILu-a5@Fp@n8%u2PF?9>ZxR%%DY7^U5~00(ZIV20nLeoz+aO2=^K#rzus2H z_+1Vd$wHwLtZ%|ysCp_wEBen1kdcE|;p!czOh(0f*2kw^Bq||9kUUfbFMC-XsTJ0u-Ul>cOo;w@6#ykK zMRnIYyHti zTsYVBH%z#tupC}^4$dQWEL4B`6#GQ zr~_qlE*;Em_|nT%k!T-c>$9wlb;Hy<&ZT-3inAse+%h(0)TF(b{}Mmqq+{H~n%d=+ zZ#SjE40)B=R3PJ1^)v*2OE8+;AHz(Co2koYQ2obd@jAj`U*ZFO@t5YF=Eg)fu6Tcw z(_$TR+6TjTYsOK}9ZE<0c%-6*-!=Vwx^#0j`e^q{;^xM^-+7ro0%`o?eGG+i`Uflg zf5T(5);7&kqBIMKncKtmJ^xtGDE$9%KEB=jlM^FkIvpYL%eS&9yJ-AB++^-GVhJpW zR*1qAg(pN$U{9F)vOGP^h8Hcj-o3@c55hWLSG3u6E&5m9boXEQoO)pEb^2{A&MB<{2}9ch0J2|8;69WnR`<4%Z*m-dj$<4wlDjfkU( z=f$^YQJ5`_{BlW^{%I)pT+n5S zeqrl=50xmcQY~eQ(>294lEo-4%6F!#e53peQ{e>*Db;kB+Mp9(6df$y30r;eu?2&T z^;5Felm2aczYGgn-hB}+3~N@?*I8_Fq{bnt2wYhi_D8jNAwju*X|8{UZO*QD_$2>c znpmusP3_frX%(Zz2>W@2kHJ4>dY>E^+m2Vx3r39G1YF}=+pCtpKCT(7{FY?ze{uGa zH~-u)KArbG;=Lq}L}H>d%v%#vGvaAQbKQ=t=}*&Xn|l_ zlsVwctU6UA14Yc07vWV2S%;_P&yUw-T+$QF1=Kv+mHl0JkT?A6xox%3$<*y#@%p2m zWTS#BZ7R}dFgB#ZrPPZjm>HmrPHnE825V`g!0(=El_0#W>fv{z;&zIPRLz$`i~`Us3hw|bqD#g zYa9TH^v;lD0fhYjiB_UXYx4jeUbotI91Z5LoM!Iv>Z~Y&FY^*+n)dDJHydMGLW!}I`N;3k;N6@%*l z3LvYf_!0K)^$BsLG;87qWqgo(Fo7eBYw+vzzWH0ogJ>;CGAtrE?Ao>mtMxifF^G3kM%6G}A(bX#C-CFEt5+)_% zsD^SIloKpc>1}6!qKfdLwMJbe5sJ}|M``Ui{6za(gr|}&o_A;gS`S2R8wB0_^yEu%g~9au@kyWvYVrqjgrqRMar=0R&^Z< zcONjB>51pMYJQeLsWFAFNq=>2T z$Wy_$O8P2D1+Pwgz6<}9kq4F9oaO3V?|#$F)xF`f(*sUhmdtRI9iJ|uLrkG^e>kC_ zkR+7ovGc5DCX4#FoSanT46jRa(F#bo=i zgzhW}fb9Ngk?hnkH$7?sZu|+Voe1!$z3YBWDibOF&0*0H2#gaGkCt+1prilQ>|Y-a zn@+ib_gOyyb;^ig$QlRUQxE`Y2Im9t1Y=1cyq5eP5Z0~QL^V&K2rF+vScwb*)%{^_ zpx+KmN2Zl2LvQ_-0HOqtfJp-DWlcbhfuf=!-Di;ABIJpxtoNq_GXY@OY74^1O91oF zeN^J@BD(peYIyY>H+8@weh--pj<@v(IW^T6k8|Xe()s^uI`$WGSiCj5omB`t@w*4( z^{+2C13_iC3y@Lz)}3o>YXMT*B(|ia88pH2IV{f4E>>9&^(UPrfnP&*hkqtrYU=Fm zt!CyITN=vj78>0^O#*1#{m-?Lqi^($O(?7CH&V5JgeOycIX3z{*C*1TN663pZ__nD zJuMu1%EvQ4LAYS2+49r3XV>FyeMHA|y-7D-^eUwxk^%ngGc*q>KtHn)#^HA?FOy4m zwDG0XFMIhDHkiRe!J_@Kc`O!RbISzhv7G7Usw*+$H+$pgQnJ6;tyw>%E| z68gdCc-P~HJDEh0)tuCJ96nCh9-qA3Dk-nZ zOJ(<*P_Lyx6f{RgcL=JueWH$gDdH(%(fd0{L8!0IJWI*CkNMx0c&WBX)UVju<;EjQy|4O5ye7r!|#h9P~o{y8c0Fdy$RuhSLEs6Oo-rwz~iZ3vb6 zo}BTf@$E0!3Us0fPsgo_Xp;|IGD5ia<+NiH3x;lr|6vx9zUl0ZXSMBRdQ#Q*I);^g z<8|unLN^Z~Ild{c9#O1p z=UNR!I5s#&j)LVQ5Q}P9kPiwH!Q!5VukjTpz9$Uw)Y-oK!fjFYI8gde6|i$y{dvj5 z5-;D;W^H2){qEHnX3nZLoc!XZ6D!0;RS=AQYn`g%Sa=PUOR#_)De#AC1* zn;c!5>lL%cJPkLVAfKIU9F7>C^|te2+vAXoUzAW>3)}hMN&QTWMBI6Fx(CJO7AfdR zaV^Ou`PpoA&O!PZAz3w=9dG};+t`!T0bpP;m4XzXB)SZDzr_UFeNx1YdKshgB2&j1qI zC_oT04-|{sw5hU@9e@3b@;`uh*$TBlCYceO=7uwb#1zz`eqB~uu86mJD zO(arRLqmg&Yy?<)K=tWJ%YKjb*R-@J168IkA4AmpQA7;B)=T_6?l(pO(Jn$!XbOSv{sG79@5>L3_`T#rMUgBZ z1v&Lq&~2;6$_x!`Tx%$F4agZh?8e5U5(W<Z?HwFY7VjVCeQ{@JbhILh_3FsCXwYwl!wA%8HI!t{EnAZ7CMGr7Ct^dofrOghL5E23?P2D zM(jp6P8AgWV6y?*M1mwst>fPg@T7#mvg+Lb{m!oJ79$(q0dvOFQznZYFjQ;;)~EN7 z*dt&A$|IGa0bO?TtK2x7z=d9-$vR_ub~fiwp~-p}xe}}aL3NX15DLQr*%ASh(CF_% z{r7|fRy?WhX+xh~9{(F-2r!&ZOA(5=0;{*f2k&K{~3RB7y zr3gH@MZM+#=C9u9eVQgs_viQTW&T$U`apfwe=%1#1Yb>mAOU+E;S0*_Hio~>&CKA? zWR8TJyyJgmtG9W52TWO%`{_@GJr5q-T7ui>qRXNQRropOCwvU{m;Y(YR4!wQW+^f1 zE)RTqs>i}PB6wUHI@0XARkT!{F0ENquG`RGauuD}`?f0SKW3R+%)E4%Y+IH$-&KkK z11K$bMu3Ywafdl+BqC}`z~}siIIyc?I^V*%(`^CZnAU;o7L;J!fp8rzK(%D3#yt?# zZ7}U*S-QOYp>i2SI#|{}6TW*d_UtQv*5^>e_GMgF)dMJg`c-2)y$3aysk}}RL(a<7 z{bqIY%^98EfAW^rdU`@17@dACIq)A{-0L=0Rp&aZnYOXqyGTlFZM0vWqvM|<7Es3xi&0L zdtc7~@u`UJlF0c#G5$|U*-p@BL&e|v!}o69)hAjGREG)bmB9uqJf82A4e-SUbzXSw z3=8dXmaPRk<$Ouo&gLf#=gNv|yc&;6T{W>U4;iRvw3NVNF?sO*96so0^3b%mSM%>| zG+BY@=3&}k8|OGPTIlxO#n>AT(GvY~LH9WI7B81=LY4b~9%>(b9jeIjGkaxyof0MX z&(eOTOJ;;a6RwGR$r&zp6N-kW$iH``h~$GhC>-^E z<`est|1xuA3F?odw}ocsM5cI@=juojKU@RR%^=|RwDoq^Ax3!X-PCcjGs_pH`Uy$7 z>wKX*m;F)$J?(*^P0pYW4B|?SLQq zE!DjCkyGqd*RpEJ7G67`7kCiz&fs+Ryyb90=3!=$HnPuEvhdwqwaWe0yvvKGl~G^j z_Fjc&eir>}k*bacBTmFPLX@89MA>n>@0uchXya3XhkO}3Zye+}?VJ8vM^4Q6bwo&X zZbv}vUj4mH>R4WgvU(W~D;5-*qpG(o+DA{~@x7qYIp@-nJQMx9#MIXYt&_Qz=(-Dy;R3QVbN*4Q6>Zn%2?EZuCmxc65=t(s2ys_l(5 zTmvZ8W7Tcx(iNx5JT6t86K(dHUtCr7B9Kda0P+(MFNhcixP$P|- zB~#V5BNwM>V21|I+^Fd|o-m&SpxRsSl*!@H{H|ib@IVR1A-n>#hMq^&Efx&UPjyhH z{hK{m!a3oQz!4(~iV)Ofz<$+3aM6Sckn86E0=3!3*DHgv(ZYRVStm{U4o0$c$Bl7c z=0AD|f5*;(eBj#S*V{+ibtMk=ED~Qcei^y<4DIJ%!(#B?k&nC0B=Ju-!2_!og#3W> zwv~{82_Te2ZyCl51CP?*<+nfU%?5ufb7c{J`nM}X{1N&2gF%HZ5(Y z{QTZV#Ag5{bINgk5 zCk(2rtON~LUaah#cqM^3DMU<83O(@rN3C*pT(v}XQ{vYFjvJ!U+l#YEdu%r20eZg) zyz$r4ymr*WQ>o>n(-A@Dq!BG5(dvV=jXvEV*fxuYvJdBWwixG=S+;9Pq<}1`LG-gX z7_brG(d`BXo@&Hm^YS6Apl=;k@Zp~Q#Qx!D5x&AzeOLs*!#P2$N!fX<I5ja`+x)GbA}%Rh9<3*>oxQZ`8g8Nk1O;xHj;6~7W%~qb|EbHp*nBTKg&T;Stemp-k0s{FR7auM z^McvlPS)1tYznV!8kp(ERgh4KU-K)$eBsmeM-jr;X0@2yMjNy!8HA?Gn2>Vt2Y)_Y zrMPuXTLQVr~n2 zcULuePE}kc-?x^3X5b{N&^8hO>4{X|$o8>@Y3mz-rSznih-#>!c^z2)x-;kf)pO=T z#$kl+Iz;_U;=;Sm`ZI6+M9XLK!)uDXr3v&{#*(5>)sjTTU0!3!Ps;1tr!r}xuSULR zxB79g(lZ=lb3^v-Z-ODL(^HvZkRFB{{VgR8*Bt zD>h8`ouj~0#+$)IqMxtG_4!5)9?yAgt;yOV#lwK)vy{u4E&itWRu4$84dS1m-1ZaJ z*a-s3Z``eHtdtY9<)r;F`~CGQCQgf4q8b?^a623g3_%GLs6TxqX?p;iWDjxil2ccc z;TWnM|EhL!6F2eqbWaQ;Cpffa{cB|Ex-u!#50TyWCt5!xv8v%~2nJ3{GCEcE{rI@1SKU=w z%mXF{$at&2j8~}eW~lHTZiERvIPvNx2!Uc)rF?7~uPJBzcsc}f4_0e+7@G1cZPwwq zuOl}FDv++RT`a!4?D*@7?keLAyqQE*j`ulQKC82G3encdHR+^RtOH}T1B*$CqJD3H z`9CH}2f9+EDlvh1YneUa6(rUDz1c~JI(wib_j_50^=ec@!ZdHGW^f=f0(DzCh20qM zy6*hzyIgG*;Vtd%sSa^BQdMatO>`@LYF<(Lf| zTg;!ioE~qIh$~NZAq2NvaM5&V9{6E622|Kf#-m_xc>=j~j5-I6lSnA-V6cr-Ul4n# z?9WPjYlhNd=`i;0ao0&;%XaA9@d3{6z^%Ewj__vLG^1#HIr7Ay|o{reXNNjXWX9Ni1f-GXy-4Y0Nw*aZ22cQB6ca0dFjfP)X`sfI_=@nq%{?fat%I zDJxtakpWZyV9rOqrE&udY5Xhim+o&mY6ZsK%)ZVoy`nSg52d;ptk=ua&ewtC;63NR zT_?3Ua&ND=Bo-vU8g&6RT(&k-2^Yg6P}yp%i>h~An6r*{KFfXp?xs08I~-?r3df5S z2Hn30aa_G=m-QH?P*BulqE?c1TmV*OAU>KXcRMA6zdZ+z)22=9Kh^HkSPivei8DhK zfh3+k_dTNvNPj=`@qI2V#NV0R0A!QYrJ7<%+h2KrinC!nb7EimoAL{24x8^SUr8sH zCH@1jS-e=i3KL-bMUQ2$#7XLbQtt>P1s1&@@A@`wm0$$fI5}<*iEK219CXv|TL|^7 z1Bo}9SiC%RhIUA8-KS5Vnhq*TZh9fU+4rn%h=`m)z_vs@ zAt-DOi6xdr67H!3%y|8+C;J{;aW*%`#%l8^l>5U2;n7Ee{xE@TyxCWH(3P7Yh<3%? z!eT1JFlfc@u^$VbGpEynX_6}|fa8Bw7H;Ny?y`^oMO-iM#5EbgnSlI;NY}M|+q)s7 zPvU7XgQ*_+e|tR;fpB^4Zc2&e^x)v8tE52%YM^=nup*D+0t$HKL+mHxQG`slR3h*H zjaC4e&{g9xP&5R#+N5|d`$&VHXrQkLXXvqFBiQLjWxbC6yxXkbi~+uib2UL^Fl`jj zOhl0Aa`k}X{M z@56=4>%nYf3LS=6?Q!4BbFi+r=EC`3%>v+beRoXff#D=~CWfB7`7|q14l*a>W{An=+%@034@)X%+H4e+Bf#6}_k>*%plGjGj z&oOAgy6gkx_1fDhjgsM^SxsnLN%v%CdIT|B=}!ISC-ilQoYSA#(n}6v%_j9@rGwt0 zQBIr?aR>DBI&3x;&m5KMCYqQH!Qo_nVNHyTmHCK~$xeBce8|L4J7b%Cz`%9y&oAl~ zB!o7mj;k(2Vgli+{u`n9Jm<vs-^OQTzlW z_z6L+2t0E*^f?3ysn$a&iNIKSN1?61FCpqbQ1xy6Jb^g$N3#1^J#+fgi9{h7>m4qo zIg2Q}@3u$=sNffYIXfCPUUtbWlDk^mpu=q4iJ#>&iN8nZ$cOZfXgWh&OjpD%^L9&79Fmyg9 z%rc*!@h78N?-zL_JVx^I;%jGQKVq?={0$y9Y-{0 zJ}45q(}rGrVw~Nyb#z;)^M3epn;wb%+6Q(IufPy`7RR@TnE~i^MOyC8jLIx~jzI11 z>G1L<_qV0Aza{IpOm8}QXk`=8gGh8|tB-KrTW;N6WLVU|w@0Fvj-{@o`WfS_#WK#3vC$C!G5zF25NIXgEkD$j@9l_n|cI@{lBQ{Q0OA6IBE zo3<=R^@ZVbBld>Uh=1RnL3@hxhV+>p>@$_%`z&%7A#4sq_(i{jH2=c3YN()Y7%MSR zv-Xwrx#36J^29n}JcKlmU%`gwXfD*OO4DH5oqC~~E_y*rgE#vU29F_N1@4S|Fuxy= zUl+{$D>3Wz3)v7@Gn`4*90NtCR%k~)=G5Gj8h0ho2KmV0xtpv8bo((Bse&~G(z|4K zp4J4x7b;EEQWHQ9Sf%Xn?B0}2!M7Ih76}E+-V}t*p10^%@)_!elWX4HTA=#RTN_OQm2Wr};yln_eAdR-d|_yDoX!vZrKOZo%fK!!{*)X&1Vf;rxl?36Y= zLHvWS)pRw&HI>XR^S_?#D?(e(Z^$Yl{S^P=Yb(mj<%>Y=zZ)-T|LoOIdK!C*h)Ef| zc@yu z+?A>`)o)7kbPN8cIJv3W9eVJ$rmCL(bidwL#$!~bs#Y4>Zk&n6lU2PADS$mA=)7;I zWBMOLq1dtDC~6P)7YrzT{ty+wYiCT~27=OUaVR0Wze)j*dun7GJwtzJ&b> zNbKnv){3EQS~K#2d5T}Wrx}jbX-+fbNGOEaKG(6XtWV^heoE?~9 zDq%Y30~m)k3|{vu2^9WvGnkcz9`-uAKM6@Q3enS(+xN6u+f)d0^$qsTLdPM<4|<>| zr}v`gk%LLgYMUDtcVfTTI+#xjqvtH`q+s7`A4^4P8DC|lqks`x!?alg;e^U0?+u>Q zW)MV&$U_U&Mya2_eNR(A^yvM|ZG3<9$#_@>0hAaIy6MYJpaF*KgW*d z?>v(2Y44v4w@qHn#-85?Wbw&}wfMcyIu7$13T_r7=Q&9$rmnEDGTVtJs`IJSQ~utA z$5RQ8?Jin#zMeDhrFQ3ev6E71xZ>)Oj%3{2OvcTLO6Qmqd%j34+X6&))@Wd*N97lH zmJkIx4rcbZ39)mJg2TW{$$?%oLe1IBqr6ahsU3RXp!?hY1BL;E7=qE~td4qfdr{oy&vqJExQ*9YtFokix463rypFcNRG_Xe#amCXEidiY zXbJ8A1Z!?1_n7K^-t=NUA6vJf&=sjHSk`+qe7Snket9%iJwpGED!l^>$)jLjb70Nu z*9o8GR#u;KLW=f<-&Qu`6}Gvwq$MkN{lUsCk<&T?TL!o*|Hs|rx%7?tk_$20Yhj7? zT2da8XhBax+lD& zpM3VJ8TVui&dT4+6P+UO==XDV2W)pVhM6k1foEy$6#VjwjfQizf|_JZl#=OrK6l@3Gtk4jgL36CpdIjm1A2 zA9^(A(|t_??o#eV&!zse5BT4Y(W~;-%_ypz*GH5^S$Y-ct#hL{a!jJNlegjAMQ~3; zx`c=bJW?~=zT2549$C_Ry($#o4!F+@z*PU=eZXy`SuGDen07LDakex!dg~yz0oddJ z`-)?RFBVWD&7(3yo=b}0es8$7_|q#f>)caXBHHwgOWkIDFH!8_LG9iLoO+4x zWbPgt$Ax=cOftk2sCpei$OaG2fXkzjG`Xj@bjCNIVcP%)>ZjN1Xc~1S6t=PjG#?@? zEGM0NQUC6x+>BJWU6MI*C@XYxHjv!^d9DF!wN#`zke@K6EV4o=N`Y96$nuK0-ElP@ zl%IPJu5ec;7_F@YE%WLBce!1(-14p$Bnxc`AAa^f1fM;nbhwcR`R6nPSi{VTT^*o} zuLRPta2y$sg$=Pn-NQ?WVs(Mzypf`AZoYW#yQ}`KZkWCzyrfC(e0!xqKr{fko`iSSf zvO@d>kenpNLXS-w{?la2ENkNY@D@$|cnHncKM10`1;XyxjRBrupmss$ek^)osfZP; zhiaGpAUQkr@#xeVYt`^wAkGYS@G(<+lY zulkS{sQe3QvGc4&$$o%fb>xqF>xPWl)zSK}b{{NWe>70fMcu-31gakUC_DYPXr3Vm z{RBbcA%?}MJ|NaXwHtjBTgL|jA|=pr+HZG-SDWZ6S0}t$vfN>J;I_7F)^Q*|_0XNE z+r52XOqe)?oi2Nmmu{J?i?l8?XWZhMt3+~RJp0pAZym|yIbWk2DvnLV&oAmig{M&d z{)dXrSC!HJLLE^3N&&8&3EI8doYeh?#OiOaH1d+%3j8M5C=*d?Z{}5^y?JJ2p(0@3 zxmGP%tG3x%jx*4zXNlfeF|=JRbA01cn10aM?)rb%ukvnjy6z5cIhYa79B?WPo2SngF8pwudv#ulP49+y1(XIp>%WgqugOgmP- z*WKJ_syh@p>z(#4IsFp8`zmD#u+CYoSAI8$-Ut%l69O(ixTOaEo&Q$c^DilS5<0B1 zmneN6&BMIus+l`=wbEY-b0?Ax+`Qk*=hlMdqjK}-=Cg^-=67~6J8f4TW$ga5IJ6&E zPTFDi82VOUwXylb#M@whpH(6icU&cv#ESls!%5Ws-+O_Lg0iZzQOolM%#MFvapo&k zUBS??qpR3JsKo!dp58jx)Qa28UIjW{43CS3Fi|J$th{@>S?^VWY-Yn2pE8&w+s9~J*5Ip9_Q?+3>fN9*Hd z`ret(A<>A3XGT%7<728aB)f@R* zqBM57h(_<+BZC}bol9|5)qz+il5pPz?w{NJDN9Z2r$!>XC-&>x?(@(_?f}!&83&s` zDO-J4lVxu73~$qFoRyqCe{BTzl&$6G8UOb({?Ct_OL{OpkR|pIUY7i{JU(J^kuo6T zsa0ho-e-6yV|kfY)qQqoETt_q+J-@gkwWS;P{22d8!$g)x*K2S;cXgO-}3ZS-F@Ae zJ-z+a(RYuF;DoZ&`xP^jj3cA+^;f`|b|e~t(~vf6>zI9F`vZNL7>|E{vBoN43T)!0 z3F+`58oXr|gFFnxF}2e@8FBwy|Gm@_jj>M-^FU#`ms!au(SWeYKUKH<{SRPQxTSRe z6&IM=L7XfWzwY^Qz-QZj@ac#K0VzJ%>$7uPTt6Ro7yV(MhBxQr-+~Xj zLyS-FWt1`#Z8y<1^dqI*f)RVt@!v-8oKAf|5`L|62=1pB)A5+}tlBvL+brq&hu@uK zNPhmoOZ}uFyrRk>M?D>lR!v=i0smnu8k^!}e1clsu`MlJS`C(*m{4LsV1jw6HrbA9VcnF;$>0rRu<{k56 zsuNM%jgwSsvXR#Ff)@}ke2p8@>?~vDgoVqC2mEF1UenLk%fA0{=XrszB-f>`0%OG`JWUxDYy>96H!L_fnTQv>1{&0Hk5{mIY6b1R_-#9(9(+Bx<* zdmyixp{>m>|`5b32T@@qmK{U`c_o z8n8SN(SQJ6U!GWARY5_4AsGB25N#vdk14}jaB-6;1kDqf0ERDt00z8Q@tUivD-YI+ zAG{9CX}5h4%Nau ze_SVmA3rWFj1#=~dKSzr57s&P2OIj&SEMDNbF4x`;Bp|QffTZ^;n$5-SeiCY`$KeBa@Zk!_LKj6B8#-wDHnU zIFFLTyx9>Rhr*lW9=;$lx>v!~laQZWDi@qTd&_!_qwStptvR2B9|u^YAf{iNmc z*%zHj6|iX4W`i9`reXeVgG09vEzD2-z%$YD(s=Xc`Q+y2C@tB`OfCqdYpgK8>1`F6 z_u!aAC0UkRTPQyhVFrUl^WwgAKW-LxeDR|0Z>(DJ(INX22ASH`5u@^_6t0EmkIa`{ zoJHcP{E*1*$6!_~U(eap4YbXxemnORiO!JwIp0zGy1737ib}=~@NFqHGYF-H-%E!$jYqim%USuw@wn<-BJsxZO0NuEk%s%Y;PxdIY9F9t?rv$8C~@HMcu6A@8lV+J>~>HMzTSt`1jZSX?d!j~%Z_%$MZU(gg z3vqeW!XOTavmjH9#VE%YP19fY~Gt)lzibwnTz5qLA>al`daK3J#s!j`L zY(I1W5fzwqj)N|oSFpI5>Qckobfox1lz)@M1%4e!fQu^MT^EQdFLYQsHyv?H5%q~` zleU4Rt+|PiEP{5{f+^ZC>1o8=^pCI zNz!;xjKx)iDt7dsCL9N^Ij5 z{Xvt0wU{^Em zy=AzltiV?44D8J`m#CU#MBzb2cz$_=&_m!Y0vmXtUoIT>bHg`yukhsXs*AoVu`CZ6 zgdy}B#DfNCpuo3~>;%*tu#vjfyJCu;3q5aI4Rk8;SZ%ixmbQ(@g2!%YV4D4NARNvU zB!JBNok#GssAwag$;7?i)NR;(7Fu{Z8x-(T?x<3WC=iaseh;!>T=1$g=1FneCIrZ2 ztD3@aZWm^bb_5 z5u=K9YjupJG~7Poch+ch(hWY**7!F>^U==s*$FZ;gBRh)kR;7l2GfV)rRLkegQeL$Rov{g;BfgDi zJ3Z8)jnbGNYos-21T%Oom}E#qKQa(qZpNqj4SoX#48)(mQ~*%x#<~qa&^$X`NPN|& z(1*iF|I9jM7I)_GWKmoD&$3sZSdbh%q#l@DG_r^05KKkH?WS3o3m;Ce0S()7q+Z(3 z53UlxJ{X*Ty{SEcT>#Y`6Au8bax@&q>lnP}#e(i08*{2tMOq4KdU~EVcLamE$E`le z3koDm$n#*mjZ)GMT#r04R!>29o>uGr&*^ce@0^JQa`036hlTn*U~(3-R?D(y|K=2d zg;Jh?tZ$Ro@m5s1MvnV6ywQXtZ$~a;Jl2qbDj~m%<8>b`JjtSgP~in3aw#_Z)?jkm z$5pNyV0V!L(gWb9X4v-&3}SBQMpgqV`C`KkN~f!SFcz|Ff zdAaF%Vf_WO`S2a(b(e`lAB-w@H;x_32UH+jYW+vsNTPpt7YfZzui%Y0dYy-PRituX z34_bVJCu@DSkucYeom>U!fjc_avWI9cf`CQR^C7&<&K?Q-NveKaPVE{-_@7rgTF70 zYn)xSgaUc5)N@J$=DzkJ~e|L$oZ#tA8fqQhG7)4u`npeZCj2bq6UDtXAse5?9* zrd4Q&|Ko8EPK%lA^Dd@J(|Ip-(gWf2lT>>VlIOi7Vvy1t5d)>&##;qbD4lI!ZGK3L z_iIJp^B(=4)O{-`M9uBz8*r3%Z+9KhcI(A?SUz_Ro|e!ykEpP-t69nUbmx32g*EV* zEl@~$4_;(#f_CVqG(%bfn0_qJxJ=_d@vr#+15(95-&L6FwrfAheYU!HnnWw(29%Ff zEYiuZn1d~_XrR-?_0sbTQ>48;z!4>1Pl&v&>@yglR-(qfRvYFn<1EOU8IofXr)Pj3 z=*{p36GL?3MA0L?~R0>I-7 z9!GF58sh3+3Mc)*b<+F2|Giq~dq@x3PkKDG+?r>A9OTamALbDQY_ZL{tEhZyBfyY@ zm)VUA%@mE?6-o8l`5rls01_A{CT`}conru&2i^EohJt~68}Ymbt2bN0)wKmU*g%i|n6ST_c6kPd##1ES{(&(>uPR%kk;q0(H3=D;yxGCPN!^OP%kF1C}6M)BZ^7fe-FSw|MbfpXSV!^%snXm<@9 z>V^{NpaR)$DF$X(8Y$*C7gko-)y{SIG#$LZ%s`<5BI_=-*wlWyG>7@?2L&E2BszyQ#$%&zHI1t*k;-pcJK4sT<6)d zo)y0me)D>5n6=yoZM^^;&X5S9r+L3An+jH6T)D~%`=CMF{^ZLYn+OE~3{l0862V@V zyHlrqf!pFa+Q>%560#-8r>QlAdgm62nr^xai(}f2g}td zebl&^23ScA#Tu-F&a0!o9@5xoA-wE)!);xK!P2beC5)gv2^(-MEmo!>@W%-K)8G7I z1`Csghjs?72BiInwKV35&?sglvuMp;U6SVo|2KRyM4hK^K+PCQb#=wX|H zdhU=@m{eFMn6?BnMQ3?gk+thuzCt(;h&M7tOYV2?-VId@5Uh;jO~MKO>?VDB`a6>@ zR)%tCz)(wWit9wW+}o3Bk2V^_ILvYIO~oUM09mAxJ!2qi9AMLxR5V7BumPsY?H<7G z4&g6dOQ_ChJrItUafX22Z08R zC?Dx$ff1bqz^JkRT@8E{$195rJiwP-ruY0x0P;Ei77xZeyA5 znwi)3w@_MKum?F%`#mWq26ZeN5NV0=I>uNok2=A;5!1_N7|v?Ll|C{sdK3so;?mCk zf*)$y3gQQcJRI3ij$elkP(|@^1{zQMl56_+R)F~FgNV)G{-{|K5Kn?A7s)I&v3tLN zmox~^kDm7-lkeH~P_7ov?HY$NY}EaxVCcoSjaWRr_|LYQOXH)2%^<)GnT}Efu-@rr zF5Kbk@z`o1x&))m>Z$kL0ns2COz|$4X0d>oEO1>#jg8YTQ{arjNHRP!0-Qtbe&y)| zMjsvSuNIbE0PJECkPdwiwB!QI%KK!m=T6-^5Xl1hsuyE7&V@H-e&b{wPJ-8sU?aej z53#MV`xv~W&(|ZQ@%Z*tECwW)uNr;Maj|tjXRY`xd$f>_nT*4aG28rP6qeYk#>91Y z03oD~BEJztWBeQTMCIfIUp@sGU_yf$Ogt*6lrItZH$r~Vh!C34z&I2dCAmA*rt*)u z^KLgiAz>(;N4Ly_B+MWz?7Ub|8qB9@nhi-wvC{cP>v!B5s%*x)uE$EiZey&u{z2AU z7KtE2JsqrwMiEJddIrFhe0%> zEZ;Olr}pAxF7Q!u%G#vS(P-tCDYuKY1mk}buTJ*T&dx@GNKdo|i51bS5lqzV5;`ok zZQrpjX^`0W8@Eub{w`}s_mFY5{I08gjmcA6@1BWkiS_m5zezp}f1T{2voA-~N=Q1_ z{4QJI)dZ#mv1^{GM2+p$7gS9boaLXjfG{1IoBTv{W5xaPpa2RRE5g?oV)+S|Qeh2d z#5VgR<;2y?x$6|WSo)-{CG36&dIHSmd5O)($q`pjnEaUXr0^q(PL@6XP699L&3BVq zf@}XxU5902EEv#2it5yNTCAglDV3nTU*VY%iQPe785=?E{HM~}_@({H3a*U8wO{|y z1F-|#NeDsSCKhgC=(=vZUR!Lz@ZCyiWZrJ7ozKCVf@0qXORk7JAW9Scu(7q3AAVtP zFKYBxOf!s^UhlEto=MGL<&Z}P^_3ZgXafTkOD&NburG?#&8@jti;WvJsmnT-bt)}C z=Hx>(1o6(tBgT&BOBJK~JoF_dmAXjCA)mnEVxGm|@j+sEr$(yR^ya0Wfx$DQhg@-T zf1{YhV|iQR$G$oY%_S!O6W{QAQrh()jN`U)o4}VmJYDkDig@0CO^(bol!CODhsn`j zs_j3h$J20;)prZ;n$;i8sTmZTd{5F4)0HQ%P;I$5+}lKcxjbIIWIDvgT_IibkVuaAa@ma zl(`A_3$bWbtdjb`{XU zCw~8Csv7$J`-gZ`knpkB1z&$5CM*+?q>e_N@^>6?_nn+Jn%zkR{Of@9x;n{wdY)Ad zOl$x=`zDJ&5VFjBNJPc_yXr&4^zanG2!XkNyxAXOoAtXOO7Toqf(yZ*L6H3)^M=pm zeLLPPmFH8NK5js6r;0^yPL~+sDzRMWH*LYJA$+l*u$VMn*785=r!h+NMDXJssfi$& zK;w44rPZ~3i_d0Fji55tG|Xvvd!+KVNpvZ%G zbpHVQ4M8*OHIOb>dQIUBknYla`ow*KJ77nib&CiIn|48TKX?$ZkBzFg&UX79ZERL} zyJAsT>HU1I;ZYrdN?;oTJVV+S^dJH`Sz;S|dl%Cx5az&0=CFK=Nbg%piM+o3pV zjonkHm2W=8E>U+>TelpBw?C0c`IqYt8h{_G9;9v6Yqim+QDz~+s(kYnD6%*kl>^OHfF0qr(|4617WJ97fbQ<{#jQWC=ae*y09sFy~mYfpkKqo8$fBR zL$|-;goDJ>9nQfrQKu0*jK-F zRN6PpJU1$Wle7v z2Lr@nTQDxMJJT##APKVY+qoQp5jVtz`r1|5G6hU7Cf2~7F}fi-J(iWr_BUONX}`!Z z`93f+L*C-luP}TP_%bwITY8>o#upreG7)9B+o(t(qS zsI!xV)azGcgkCpvpAkkutU38V)|X=}5oB42*bJrk4EZ4ujkXAB@3X{_A{*eVHz`%+ z@zbo|-o|)4h~FzC!vd6$_#5|5Sb$NC!Bu{Ir^e&=CH+YaP0RmoC-#UW5}F?rwy_g$ z)~SYxPL=~so5&_pW_mVS2LbhzLHeKO5=~tfK;a^A^I|+slS$mCdZ;oLj^@&om5s^$ zB}90a@I4|Fkx@2-maE58XYZcn0HiR76#?p+TPl>A*f$vs1<#KLcU%-Y)W2STpB+J7 zz;M_4a5cU^QJxy_{!G#Xj?p5=@|0vNd89Sr??V%{S}ba`mR=3bReO7Bw&tBKuaWcA z)9}iQYY$6|8S%on`j48-BCew)0g9_5`;R-0L;)6|?}A1ZvfudZ?<@ZMO?Cr*Eu;|z z#L?x?)N7AgU&yNUH*LLEdttE^t<&zz%cd;UvV)C$R8G*md#LiTV3mfLxPLo-ivxI}Bew+Y#u7hEiPT<$Tyc!#i#Cic7M<~1G3m>+cAoCbkCqYl|g6Sa2# za6Fn{`MS7Tscj<|KB+^mgIWIzmt&b?CAx;j*W+^r31j2x-rn9FhonKR{y;7;-tPNe zR89GSe&_h}444+Vo4pxvpb-IW9Ya^u%#J{CXEj(2rQI{BC8E8blU)8Mki2scb; z2BstQ8PXaQjn~DSfU|qgg=_oy?jrS5S>)KrwZ^0NtVju45GOKN^b3dW?oqJP>C6Z@ zrX|YJDY23}>etT$qd@Wi)_9b4`8cZd>r^CR<0ilkxYqMmfxIRj^#IxHw$jnwySRG{ z2rZO>h|!zEF0FYwS(pL@R@R&$n6A~uv_(lM={{hzn2w&0Zn%XbYWGKsad=Wt1n_@# zamZVO;-F#uoA@kE%6;OOl~7WCz92b1>KU$*O{8@@%p!tNZfhcJ)S+SjVb_GzL9#Ot z8hk7K?5Myt5P9ES{`n0#|E{;W+~iCQ`0dR))K{eCqp+Tl}=c$GcSjGy)So1I_x z%MsyA>?xHp0@xtn%xIL5->^Ox-qOnrbPvtq<#WBL?^e!LQ?8$c@|`YhZv_1T>B}L= zMg_<f}8?K=mVI!_eRu2T><~xnbb^ zI!hE&?C*a=cWk-xo*)zgZt-QtwCg)DQ;T%g=C~j6BD;0#h#q(tqAAzs&dc-bVWu| zPNK+}#0H8I3WsfZVx}EV-@kv4^G>-_yCnqSU=<+Y4!0h4nOf|S7!rA9;|W@c5IL#C zSn*~9NXbD|Oj)yekG`Sw6ZqoHdJ2WsQq#gw*9<7==aYK4j-3X7dcIx43 zI-e>zobYTFUrL^@iP<{`vbYfea;$*!k1&W7*TOeD(+ z3lxA}KF`kvEk569OaOia&rBg*czaJt&Fh6=o+~$BH(zTKoxV3Pr4u8MV$*wwV7Gbf z+ynmsS9ij89SHBBQB~+C5hT}#e_3UrtjA{MQZ`b!I)(ci2BuB()U=gt%xO5SD?EpK z`uhzc@6P+-PbA(pYkYd#9lw?p0*F-3HFj5SuNZE1M@=6((zJ4j9SyW0MCFngyZkHT zUehF+?2JxKOt`pSm96=DCr0%{3?QE*wGdG`HYI6N?4H-?~i#pUtYRiBx;369T z(9>@GKEh?D{#~Tx!O*@21t^P?6`Bu{8LM-bzibH~R7sC$$Yqu=H~$DP`T0QRY^&At zU-eX`DkTHZwVN7J3)uAt8R1yeLpNrMlr8>b^CwrY*QorvI1ETHDypb(Is1n%)!&2u zrUqOTWI}+gk1|^}CV4V-Dd}o>X5MPek6ADRf4&0Z%_R53k;n27s^SP`3tf$a z3`xgo;E9^)T;F%Y9~OIc_xKa&m*+4#h^-GOGy=Wdrl5T-MhH`o-2X`t*sE02Q~70E zn2F}&`JqY$o{S9)93n&)Wlr}Bc@wGZZkPc7*IElfHml*qVXCvG8A#e`EV(#xH6W<} zj^R=3k_1_e-RF_q92>=BU_LLM6QXq6bMUce;uJjJDw8Ye2S-Rs{ogs>8#ivS|Ir0X zn#kvNJe4k>YB~AQ%&%IkNAccV1SM+W z-SUe?lce1UWDE1UT8i<0*Gl{baNMm}K=n;7Bq-I}SA8xf^oK0D_3if1J0 zi7sAi&Bi*1^2TcBMxFir86|W6xAsZnV5QCX*u=7NtKl`EiB8ec%g3@t_w$%T~(~Q(N`)(#P1HiN^vRiyKK~{kF4?y;ey72Xc z#R)VF57B#&v$`I)Ubh5XGy_u?{Tgzy5x{U=>Pz9pazK{q!GpW?5hrV35PEjxVkM898u9o7SG#>kZe}K_TzjO&;*H%V$Ij zMF8--$i0!*Zf;8kB|v|!gNe`>%El}>yZ3(V%ZtSU#CO}2P2X$>eM;anF0=Z+*J3HQ zWa12ghTz{gJ>IsF0HJ*_o=tGoqhcVn<4-^ zN!?(u%uki9X?7t|%6yvy#HD?`T?p#O zy4FLh!-ZH(Of%3X=3!8|!j<+!!#h9{dnNlOo1%T~J@Pi4Eajw*fC3DdNBH}>p<}%A zran9H&9ux~BKnn|1b}RRZ9JX&=2M9M%_4?NYE15!6&ofDFFnh^c!XoAz!25=4Wu;( z0Tv_7ocJRPbJ7TM)a+qdPt#SmoI9!WVqni;yk}<~QJ@VnY;WflGGaVL(1!OpzyO&v z`J5XxdUu0gCTl*+#_;T^VQF$F59dm6zc||Z^S&2<;?bk~{gZ%%Gz(J@wV%*S)8xfI zEb(+XKcT2F+D(5;`RHtLhmb7IWwaQ86r25|`#%~+;e+NiAR^=BsU7mE=!wC>CzGy1 zNq~!P@wfeCU}WT>LV8V&QMEnDNkLsMsudn4&@mUQU+Qmt?^BAD=RxnK`|F{TeYG?n z4?y1YjBr@qjGcFXY(hod40@UjQ7TS^g`F(E_ro~I?*Vkv&n%V6$_;%W>St(G3Ev%qoin& z1{MuYr~t_{b-YS+ZUDS2r;S~$OEq;6q}qP+PI$K}nSAz#Ik}U!^56YC7iG0bN;_E( zb(=bDrt;a!(#h&TD0zvR2cA02>Ysz?@L#Dx1Idk+Q=QcOkaH77Py8UMokB&2>j^9@ z5UrU1#@L}>jw2*+>52}*GTa(#)$~<8`4cs1z$<3Ziqa0t9x`IXSQtWlJ0||t!kM>j zNesd?h`yRD5t79o#U3?0(^2GsvC9%KSa6WU`)FI62;4zevYpuiH#ks6y5}$#@$}Ot zZm-i%GHOe;BxYJ6Y@GV24_rjse2my9(tiwv(Ea=#f4-}dNRy;Je`K4m!lchhv8tSvCy3z z?$p>zN6=xzblYL8?lAnUFbT|iCZRpQ>z;A&u3_ozAFX}gx}1AMv?~;!+k4yUm*F$i zR*61ey&$>=$CQ^{EKH{UqvO_?x#qgg^Za~1@AvCnHt-}GjiM=o*`vJwaCh=YYZJx7 z$wf$tluC$c$k9n`ZEAOx_+K6dA+#{!r6^zvu_0K zO!HI=U$tt}`D^!JF;<4l;dcrH(0#6MrV~C47?};@*YaBDq>~bV>kPk3H1$SauJz^I z$hX`5%AUl9lNpZr<}_bLeD1$HILwxDTIp5`|8|(=(Y#lubzi#TH)`?YD?-jsv)=?s zA{)mV{~j?b>iih_-7_W!Hm=4#uh#={xk`kphcNoJckNBp!0AJSTBThHu7$DRGkem{ zsEFsd$Uc(UtlE~Ak^)t(a|4rLxcR3zHxi0om_UlD;o52NB&aMBhkPG6bTvfi2&e4_ zDdy-t$#vW{Co4NADV#|AtGt}KL)G;V5ov!fXXhAz6X@?tlXGw~!I5K%yZ=CUwvtyK zBrTqUFyA~8YowMF&Ki+ghec)x_po9tup9d!(%kv=S+4IZw zu3rKDXvx&|fF+RV!mlrG_Z|Rom^=FORqhSTO-@eI3JO#9!g>LT;+Z=!1lSKCWsQIR zG?+7~#PerBE_YDojohA!O z+5FidAX7fJ)xsGG@RWkIoD9cY4khpL+b%BRz6Dh+snvpmU~J0p!rk^Y7tSsgWY}N% z?I{_s_qDaP6?7E(G4N;J9BIS!PwWK&M42xXOrag!@)x~Xn0)ReQA{a85C9;!-$>O& zy*C$@wjaW_?dA^f<3mLf&L<53{vqt9?B)Zv%F7Hw>=;!}IdFS#Z$C0H{nj>OQ>y`K z9M3-*2ZWh1We-;RKl8B_-B2hu0SG76;NRZfHmSTXd21act&84NxLCmB>?@7jo6k>} zt2$1!mj7)8KMyWwX$jCbjMzOTn|cFqCyL(`#XuK=ZC`4y`pq)Ilmz4TjDES)H-hhe z;yDg&U~CV16>mj=koj|sb%dL&HBftMPuaz06qRDPwzkN_m0;Ggetewz8zdYu<1^Dc z+SC-iQKOPgnDZQq9=HfGMPwp}T@6A=Q$-WUiKO}P_<_>+me*rPlLm9m^luOErDBz&`L_I@TM@(_=J5@$qmb z!c>u(e4Jd9)lc!(yY^yzTnU=)L#w19Tl0k?aY4ZQZao&isCV?nVahxzecb67lhRA> zf)Ha@GCd(&CpQgmadqkatv%AbkVb9jy6n&H2(p{u^m~(% z+fxRcMfVw|9W!@Z50=36_8fDi({CoD%e>wp$LTY=L|*`o$_R(+V^Nb3k3Tho!Ugo7nG2ID38ZQ`3?y8;PW-!`H6-D(rb%X8(Vk4KfqaHW zqIKiBHGXYr=~bJ9Wsxfw2_#5odI~)ineZ{ppg4>)KSuwZUAM96!(~?pE*r&S$0SB+ zuY6BijQ8GC#kD7w(S-aNd|7;H@-qo6=2u~>&$d2JbzU@hJe|^=&E|ufpB@Qz9%QU3 zhWx8NS~%PNIVSuLZLjCiIQ>xJyq$~nL3?H(2oS`}1D~@6^6|w9qyRDe-@j`K7hrUG z1h_<$EHX9b!gxV30E>aisHqU)dxv_jq+1-SIy#iLBS%3TePE!qyjSQIMvF80m;Gx) zt8m{EEyH*aWvR`(cB;U^-8lFoBt&Q!ARE5`2CW_v zcs~HM^LOXz&v{U5OiU>8yScl&ySf7S&naNZw(fQs=F@3$2ZIz4_t}~+w>$Xo^;7`J zm72r%p}X-MR)8t;ZedB||8W}XHh*wnR`(0fAp)t;%q_Odf*^UN6f34X@M&fyo>`iq zh-};pkk~5%KtpR9lzs$Y%$N$dnLm8vG{tSF-f7ztPLlly_pv{Y8Hk3oV6>qAVU~&& z<;7|9Cgboq+k@Y`!UM_VK)1H zY1b6Gz{-~;?V*MMkX&y(>9ql~8Q{UM{1UBZKnK({m#h&GK*@vB3#f&XH2PG`052Cm z$OSv+(>3{J0(h%%XeuRhaBx2({;~p56XfH2ipE7oqH)D ztn0UU-Z4es^A9NXftw+}BES~``T_4!J@H*Kt-NWjM#M&E(t~A_>9(79`S0-EpcnjJ z5diLXJn#>QxlT3@nijyp$Xy|180b-+j0b_T^WtjfFC54=RR`3_p`v>95UODWMxq20 z)#=@D-woM)1L&wDB0Bx)n+N;rTbh$o!HQQPQdYk{d?p;alO3bMd!^&12gza&x{yaj zI7JVwpm_|3gcwc5zLg?zv=EFAD&h|H5u2a>JU9E0mWLz>G!ka7o&S~AfAOmbFNaz_ zIj32lD0iumlOJ}#dTa6Y76myvTCsz4s_O#uS4R{!n%A!HNUDVT(YNYcuM`rr6m~p& z={En?>wNj*G-O=pU%sV4v_24_*^PA*O>9r&&8fSJUZyuKg5rV5tofc_eWV9MReD?r5Bl% z>duGcUAH`bZvT7pTFAfs0Tx@*nX;=Ujh7mteFB$DUsEPkXFi?9kTC|^iV7&4PP{G- zK5)_1zu)Bl;r>mcspZEfeX9N5BXtyl_E*-~SvVI0jz&&56@UJD+Rc>6B=aLyJOSSx zf8d_Jd;0NJY^{mKgTK$lLuh6@Q^mzxHlMCyPB$)k^7~njZr=Vg`^U3w(Qac+@Ah5F zpqi17z40D}vBdc<0`6IUt?_dii6`ix-JIXUH-o-wt$VkiOYK}Ub&CU5z!s5pcTz&f zVHQ>Df9_U%#my~?a)9@i0go!baYZVV+Rky;8gHJ@q>07TUp;`2Wpg%Z!u71pqr>fy z*7h%&w&E!#$ZN37xxqPocPB6sSodXU$IE#F9kXgho+F`GznAnll?w??R&EP)$ruTc z{h^>mi;`uI&cF$k0^Q%)+)C1bRgX6AAR7v~z2{sT?%zm7fpLtOlP8<1!E74`_Fx2% zmiS1O5?HBk5W=mi(DssZf8KQPD%L(^485A`zp_6tg5!RA-csCZ2Ux^M)(0$ghS7_M zndZ!z<>mp$A4uQ-R=>`2^dXIHPJ@YHBtt~Py49G>>2s$iWv_-B$hg1lKg=qv#pKl% zR*c>}J3Io-nc75BrPms$mOlrZoyVgd^eR7R{W1iLrF0gM{o1LEWg^^qr9sq7r^o8m z$%)hoEh{y)iuWAv(D|>{9vi&kq#se(D%mjqc53e|$Wfpq5h+$uKKkbIn+Qa4o>#v~ zr#~lD^$(atv>rk1)__9p@Did^2LCOd!XcSON934k_#nYWjR>p0pBdsIzlSZ)R!8uU zWp;hY^y1=;kv?&1Mel!(U4CFel#z7{z}sm9PA`%N_`k5j?wgqnukX23cSwPg^R=^Y z>iFsPmjSjHA{BHm_J6kT7bferf(#`tnD`+3gUnmrNx{LG}=H{c8wZ~!X2Fe z_j=sMVmM@W%&bZy9XmEQwzCBkF28@#TwLGG7G;S10_K9Suw8Xf=$V7bISviNH5tD= z1^FNNW*mJIn8bm}*VmOBE}y^{=}GPpKrAc4xM_iT=yBd;aYsiG_)%+w0uYgQ?iwQ1 zcN#tcxZl$e(E$opISCjc&gd5Oj-<@b{{aSQEnE0a)L~9RI}N}(*H2%Kr-^$rzPAGk zPY}r1K0$5;nx=r;_xthix){`N3M`8iv|<#mJ3AG?cIEC>wN1_e7~gy&Gc$92MrP~hNH5!gw3rkl0ZE&_ zD4=ROwLDsCy9gt#DZCOeU4FCe4;YL5CsgyvPm-}wb73&xV!C4>mSF@i34kf)HXmu9 z5x;-;wn1p7oG(f$ON!!kWu@Em+jqU&p7R80oe1l+N$i9@S!sm1(a`b{PPZAF5Tf<@ zOBO1Na!uN;iMI2CSM#UNmybB<>Et`UlRjO2b1j5-x8w7Igv9cLXVMecw)M78>vd+v z&U8p0(3|k{YpuHc)@XMz{&Lj|K2$M!?sIDcvs96xEZ@xM&nThtqj;^lhQf#QOayq( z)Dnlr(}~Q;{@hs&Wa30(K1c7YN?3Vf`Gm+y^ip*a?CpyJz8qbmm+*#^M~t9L$wz`J z57X0mU0_E)q#?)EAD>&R-of?7-Qr?sO0Tiv;k^$31~F%~v0Hth<7se*CUOC)jIb$AOKxKdS2zf znHl2l`&ehV{#0QUA7^+dd(ADCb&}r^pH(OKFQ>*uP-TMV4{KhT6H+xzIN$*}3dV(b zX06KqGwtkS z_SqzXMycE43qAV%N-c()gsjsHh12fmPw@UmzpGH?06#Jg;MK zNU%*#&b{S$BV^fk97GBFtU4;*c3+U;FYr%x1_ye)gu}ZfTbnn6-O5#~3P}?)YhHP@ z>HiJZ%U6}0qFcQ7=kUqn2ykWx;uDpG#b9vkZd(_C9V-5r0O7vH@x3-VAd5D%6kF%k zW-eU6^!*KXQfyR}Qxt$QK{67u6sTW<-~PD=74QLaY?$XWc;)e7zRGjI^-mt3-+Z6O zY3a;Uh5tRqV?Y$>vL7!6Z01}rLs8BIBAKM@4~aujS3;X?em8XX(XC*0YJc!KBIDd@NaL<4Dp2%- zLQnmp#3)Fd;39_K0if}brT)axtjjeY`v#LqsaO!hw`4be&l(w4-D~xsSLxUc0H9KV zv|j7)K8VO{$C!7Vn-Vka?Ssz-7>|Mb^vCi=0I}{Km@55!TPqH%;heX*y*B_-*1*Js zsHwc`$HRqYFQ^c^zd3FRDmt*sg7B=TmrzdTT3R%;capF)(7T<#3f#10H15S4MtN6Q zGJ|(qgY8e?p$D7b4%qlE8TOCS@8dD#PJZ4rdI$22-3VYc zDf;f|F6w}Yq?ga2DZs#9^QFuA0+h7u@mSl>zmq0iBRW6tqK^J;H-co4GvEti&nDp{ zTsOWMg{jLaOte}cwhtmD;IaaATUgxGIYu9;Jw=B^T)Iw7Uf_XiGPzEt<)LJhQ1-0! zT>ZU~>54Cj1t}ub;0m2fxJ^4lS@)H}3bQIqZk{&pt#KU$v!%KJaP|1D;#mu%skqZZ zws^?-S^uTy%mOgMc;!+GGC98Q63NVQeV2Mg5Vo(hX;A#54)q6=I_wkzfq!bBr?vlM zxt>JEvEcoHlSfckyz*(O>+D>Y#R;`WsEA18=HK7Hw}^RSXi3VHjN6^_jb*_pu0xej zEMEM!@^#^Qf-)r)VHM$)nC2Lp0b)i<><6U}i5A;eSI4zDd-O|$wLYaHIJ}5WQ2a0? zJxM-$EL_8hhlPMA>V{yZv#F~RCJ$SG-k)L7I*d{)n(wma( z;`x${eQ#6Ie_8S3K;xbmx0qqE_9o{`cS$xr+W7S+#<^5#Iu%@gO&P+9zkVG6huK!L zerDA*rqo`F?R<4M`SrHtNCJ3i6jl{gXN)VR9W{!}?Du*?iD)7{u(;p(t99B%?wbEE z#`K5>qIUgX?S@QAX<^@)hHT!#vD9pxr{5NzUm;~Ux7zH zAKTW+KC<fXC^eX0iy8NYPyv=zC)JxeB5 zgnM4yR-BM{mA@V zU>pHlWY;MvDaWV|Lp1sKkK3Ixy?g}#L_nn%=myC+*zG`lezALTzFXO}lsUe6CAtsb zr-6Zu(UuxWtMGFxu(@7RT4^oL32vPM;dz+}3|@h^Q=4WR-RAuo?k`rIDQDY6UA<#l zo!yy$&tvI>F?RzYkPk?5B1AOLyGLB2j9K=50Al96*7`x1)nz2Mt#xBjS`S%(&XDmc z*bML@>E(+7IslddQ3~6Qkqi|7`2M-?qHhR*U9ahab^(6t1VMcJx6J0K}L+@?_t3&r_WjaOo11^UG8&}#0?w^2#N%yVh~PWC>0Nih;SGW z2Eu!gWU}q%H71xcR9@W~2sqgIU>q<%iz?s)wNwKW=(l}&c2!|NV>}xSj{w8mUm>r_ zElcze6nG0hQ#zm$yIeL+5J8&2Bng^@vyF?ziYKo^j`963b*U`yVTJuSPZc)XL2;Hh zULM?Mb8II@)-5p_A0O}BkO{VCxq2Xt1m+1-p_z~Pf3!2i>_^fKj-QfsOM`|iXnJr~ zReWuA&)07T@ETnZ_620?4`8A|@d*4c;4skiqYw@plg*RY@aY(gP@zAFYus&KQ-lsb zKVEi~G6Q`1^*U<=`0gWseMa6-sG!7mtzUlkX{soD3X`1A!&?)5Hfl%>x;v@%tiWW6 zd3FC?PSf&vQ`ec>&gX_mYa@Y_)YMeq&Hq-cc;@uvahpCNrf);$>{J^T9p`Wz$W+p@c-JbenR|{XrwZ|PVOAQAKR9(k4o@(L>;qTYc-`~`q{>mq1 zd$SxttM?rFF5C)o3FS!0slR6GKj7U?^TV zBO)&^|3H^n?MLJ<`|DXddEwJuw=_$-JSH^q61&~u7t(g1E50GfrCDH+7qv9z=}^2SkV4*Mc;!e=DIi3b z_I06uU1Q@*X-8In)f`+w&DSeTFGV=`xrZcLtW`Fz$IETGESvhjTdr<=S;|hUc-}*O zQspr`8W-}WpFytutI~j`gR{5K+9m7j1!&C&zY{`cmSo2d+PzySMD$TD95^@b?@8*w zIQf})D*Tr*T>!@2O|cMkTIHXIdJ;)nGcT;%DonK(3b6hS){FXg<(HvXLQsU}lR=ed zc2CH0g|oC*kmjtd~?rOiW^(yI0#TgU5cRs+3jwokb0IhPGcTy+d-C?Imhv zESH*k31`;jvRmv}bhp&uZT~U%{htA64U+J6m+F7p4QZC-{Lv>DKXM*7n;Xv^<{A6t z+}`<4S}~pr{#9=K5{8mIFk?8~+LCghSYoAXhgS+nb zpkuSd0(Q!Lj}`;w-?m*a5{H#l4U0gb-G0M;zw3{3j+Y{iG<#uC$nPkxJI}P5NCuE zaCb|&9s-{+@bF{9+L?wPdU$|!cIxKIkV%w1fvr`hk`pblCLHR26^WiQLLGxx!oT?Y z0%$k!Mt_GTfDL^eaJyvk3A7>;@6EE3J>Pidd}PQ+2SWMEEz0lO0%A{#`Ir|AzkNtZ z2qLo4ZMWf*g@vJ^X(i!%37yT+tg8dH)`;wV5ehO6SUx)p#sN&_-M~i)q<@#7qHV%{ zB^W0$<0V8t2Urn5Bm@JYCiUW;_D546IB}#kI|fMk>raK-#0Q~Q1_JkN`+;de^TD1c z4#^_~M6LIMYH?HHsAbpOiv)+o@msZ5+OK{reTEFfQw&OtG67^wy7PD3)7}WYC9E$6QLmJ_Fd%G#5QZ=GE)7im%}q^L zF$ij${1XWWw8k9|%(X1heD|B&a|AlJTHPz}zQzK68L-0u2}6L6?Lauzng2}_ zQGd5AoDc%jPG$W33YXN056GHL0PX^?z7684%0Ry2% z$OSkgQte5UA>x-xoktzJtdc_pOf2>RTsR}0e&9F(VlKSB^;9DX!ef{aNxKyl1A-UieI5D-@S=p)~t zDI#(!H<6=TBp$f$K}s1{OhL}sDX?35$W$99+~%ZwLzyKpC1HGQ{K=Pw00;FUEXLc* zk{GceTzW|n>UbM{Ov+6tbcl^i8&dKlhLq3{Mp-G-#={M!8_T6(2#z%$aalW+qv6Zoqd>7 z{JibaTpNQ^yRh9Fv6@b)cu|X?4ADE$MZH`vGxTla?&bcKbOr)D zFEjFzblaI!=O<$erzd$AWnHK1<-qg%9d|Pvu3NkR4M+@D-$wwAwb^g!&Nt4Ki39!d z%u~P4W>OiDm3%SjaAmlsvz=ShEx5xAR>!p6p?bKj6S)UV4yiu*l1{!!96lfxAYmtflPPPg#1e2s zi5A+4LAr)6o8P=>R2a7;*6V@4W+0LV1m)$!rI!^@_gF@kh z4tn6WHPoF2a|qTbE^a8njfkU%0J=;DDG@_fxB&ySUhY*E!VS==Prs2458t}dujAtE zhr%VQzw=si9RJ+GV~aKHyK%)aioe(Hw)>FoGRV!F!W)6!vrSJYj83N$>LmQ@u6^FQ`wgd+2CUK%UFYjJJ$2V#O7IM}ujyW5;Te zI@|YC$xns8)~B6{0xoCcPI)pmT|{ZZ4+25R4LG9N1`CANW{|R;g9X-S=$Jdc3**tt~+A@jE&#C{Xaj^XC4DMit-)%MKDzks>jeqFFJdOwx^4$V7a zjy~YsNf<$`BxS{ae6B@dmSZMiVZEz&E0f+0g{)F&+M_O(n2%4dS z7Vc3&Xa`8C$QJ4zpuFY=Y3CHI46(5}Y@F z4KDNy&KJizU@c@FOTe3IPuA_lQvSUz=5S_1CcZ83q;5_qUl+6qpX$PTnwNFm8^5c#ZfS}u`Xfj`$dH0+OrwGU^5DC|OHijWfl?h6 z^ianV7XE6YcB6%GSl zC_1xL$<{C&)_02tN`XNbJ7kor6mz8YLP=ZI3xa3X4_g@_&>+z#QHvCctySW+9pQQT z=;w#TM?aamW%YUhU@S^5cXQeq6l}8#*rHNvgf)V&ziL~};4R`2i=d8SUEJYOie;7i zWr@tkyryE%tnFvvt#Q!m4a)~;F?5g%SWFsliF&F?I2<9Mlzc_rbSLD&eY*` zlmY1b5nIRJVASF#DMk;eekFji3|@bD&yWSCMJ)9j8xB$6<2|@V5Xw@n#UI@rX$?E4 z<>(^@75&HA22&wFX@9yqrV85uY&CbGSF!9ETCo0$D8>|2IG%O_m?#d5RAL#x$RKR_ zqc;QAQHvrJu_IvKF0>)qADy9UfTb~qB`JgS?J0@HW-l(UdXPSfHWyC2oYC$!kKyFU z!TGz(`5gET{+Y*Z+#q_1gek+mWS57C_5-VMBIW0+N9kDLjh_s!(K6ion!Xkla+?v>g#-jYB;LhCS36gyA1hyy|^ z8=(~*#PQrV_l%A2MNfW^M+VV*EQL zpC0;)E@DaF>J zU;c5t^%;gj-bdaKI=f{*r^a5_A~iM2jl9n|epnY;yB%PTB2eP9xuu+LNc2+TZM9Sr zkj9*!&N^Gl#oNZ#+TU}&YxMeqe&YZd#ovN8M{)C@t3SF5QlV`CaV1~>;m5Lk%gt~} z$*UyF4K*KR-LUOKiZhx=tR^+`p$T}t9-zdG<>bhM;l_Ul}{%iKHjrKT6dC(K?5xzuO+ zqG`+nTiaRLsVT_Ow zioHt7??$3-qfY2F>`ntyV^e|-EiX?29W})tF9sCN6E-*ZF;xSds1ikYk%8`XM5L35 z(Kf#%va6*bI`AE_S)a4h_w>)7KiqR6p7tJWxIrA+SRnxdAeNNdONo5YsCC(K*|fb% zW>bLULsEQ?WRG7%=KlvK^$cl!dL@Xu{fXcwu>GMf2Q8v7-d7;{2 z;TX#p`33Z`%u_Dm*`-Y+0(#17zqa;eAP5-+L~4>}cj>Psy4n z0nqWh(>GEsXNMK=0X+dQJ@?K)4fnY*HE!}*qYh$>4bhx=0B`nlX9tH(9kxfH+hQvQ!OSBwGZSkDbOc$WWicjY)AO|WWMZ&* zM_NNlfK2A%QvPWhlL(fp^}nxlOVOo&JFneI+HM^R)1dE0J9gH0g@EDrp$dr{y{@Hk zo;gZZLc4CYeeLcMd0oHE;xn&bgj6+?n0}0PW0qG4-hKYfLHws#I zUMyy*_L&a(i3tTI=EA3)9+^etDF$?;=9p>ND; zoTNTnhpoLYm9?IIU30b7T{w*>6yP$9`%pOmUKuO8d}KU2z!xL4>6A&;#1Fc^$%7^3 zU{Z1ue9XxGtxaP$!SkP?Y}6e;KaR$0cz^t}XkziT=U(&K(W3DnWNB0%|5Ve@O_D5JRR`P!t&>_3`yErg&U}7eEwFI zNSVYwBvC8si`?2M+a#zMv+g@8+0=8AxOm{|Vlh2)GLp5?G)a?$;UbT?BpGpL*RV4o z4|)rGbp*z&WJFLhf&-&O7&<8Zt{h_pu_tyr(39DdLjrfNzbAk|rdDFl+ej|X{X`c6 zq{cfv`lA}LZ#~ryxu8&60tjmh!3Bs5=pY$H?`aw#2PQF=2FYSnk9-Cv6zNYdW0U8G zy1Pjr3<(5FgkCu#OCPN$K}ylle71-+;&MMyh@FQWBLY{0{qE^^F_hQfCWYdEdG__I z_)%vC>1Ew^(cmZGf)dTGVtH(kFpzG;m$cQ!0ELE8UAt5J+K>^HY-Z7{*(SJT!uhWU zGNRPtETv5;7fi?Jo{hndmaTZXJh@uGFu!!izVn=O_QKf8j%N<Y=1OT z-Oi>(e`mwM88ho8yf4rwC3aljJgYHVz(UWbhnUuK7g?O9RsU)nnnO|Z)CZh4%vF_IrUf1_C`5da*g?UvdZphWYNiSC7kd6 zWM5is@GAwyTq$Z$J@p|6HY2`LaAFqm&_-eJA z>EX9v;*9=wclnx}Bo2KoAd(9!6H(42f+iDxbFKDWL_*A<$~==uA#LD04s|89*%Q78 zlUD!ULA{>~Ocu{Lb;6^V5Sy++MfY(-`T~-Ct~KeP*1NFM@yV;3PiK zfDDrM{BP|4^=t7$qC=%kkUIX~?`DbZ8$OTc|9y90m`{|0k8Jy|9}9T$YG3BR{tW)F z2el7gjP_qYwy_g72BuB_{bTL7U(KH=@%UpvDZ>pZaUL+a*h78g(8&D@Mx=VmO^0~ zO0*M#cbUU}jspPve_fe&du50YPRmIEaX?TyF+a~+u!3=UE2vVqfu?G=%lmcw&u@&{ zsZtEUtoX+M^C#ButqkfIH#oZn;{YPT=M9}%)c4w-z2N_i&XaQ!aIj+qB+mpljIAlQ zZgBX<{C}={+(zZQjdK|^p<%xa@x+9FRp!%YBHfG@7C5Ld%n`rSlK0K<48Xc}$4O{g2>KHo+bP;3V+7qbAX$y%^ zZ2GAE&Hm1-gnzlu6lym+VXzeE22{1U}}hk$Hu&6gNW{$~h-hklnaxh6oOB;mm&#bbs!iEwX;hZEYyiblGP zmm}r==f+Zr)VYGc8TP554lzR&7>6nvCA%4s=Mg0MpGPCJNz`m`&5DdTQPp(F1bfZo zCXZT;aZ1r$hySqUUnT|k(f8u>iT1~=>TgjYL7+vHlT`4y`YMLnhP|K}ZCozT#v z>h>Giny$G2Uw0mO+oNX0C!eL}(LoVDpa1VuHaEv!m?DLL)p%>cQij{I{~MVDvI73+ z`P?7dklgZGD&5LT5~jVFlkJ_~3tO5o_;|8q2=3!%_oV;LO!5$1YF=sp-_pNN1qc84 z$sUy_{ZCk9=3}X9gM@uuWWX8UvkzHw-%4%yE8`Yc&ysdaykfBsWL3*`I`hBJsl`n* zfgw^!NpI3i5lKHA@mFBmI&13HdD|ZuP#moPLXaReQr6MCU7sKH2$lzSM3P(f%Fk`_ z@BC=Pe-YpV;lE^XKUBUepI9r=CSv+BFGl;%PeWdVER^`=BsbWTiG;lP2spHpuqs=K zXRZB7&N)di4%hkk0>1b)SE*rHy_ej{gBa`PgC}Chm6%9{6k0pLD@f(PIORVTA1w3tO=SYOb3zo>*$ z9B8R4peS|#ormA+lB9f=k*tR6S>kSCI8?*eqGK8lP(-d_ROYbZHXhwiZqKp;*I zCP~3Xz=2_S4X)q+UJxK#>0_C7istFgyAM~{3j z5-UO>+K)z!wcw2`MNV?)gnbV`PG#>N;B|aED>B-%Zxs8!rSvytDXGB!zPg8inVd8s zWCg{Fsv$Ut(I5yd^bu7y2PV`Cl!vR|*zlQX{|1h44z1yzOL}t@KMyaaxrzv)&>E9X zV_Dm2A>pTHZHR}5i>kp41oV+n@Phl5x9L!C06GHu9&bhVw~NM~yz$c7Nc5i2THqXUkJ z%H_7ikZL=nM-vzokrwdAc|+YW66^HQbeQs#i@5lv`M}r@ zULYm0J%g{di2w?n^_yWX(`^`RO41;JU@|>c;Mvn4hq_saNFyOg%py{hf!8au=p|XK zXc66n1Bd6MBbLz+!XOjL%nNe-QxhwiDi&L-Rq8fx?tlPG69;k1JhS#)`$9Of(ajK* zQtpL_M593aX&5yHYUwG74>RukI4t`RVjrYZ+AtTn%?oKpus?Kii!O-b$;ZA#$B0H6 zd5$T!{O8h}(em4aUd`*MN4evhQxb6nQKB0GOJfR>`1|gMHU&uDG`2#z zhGVjvrsdxF2lQZnIc1;+VW>&~@x(sr?}ngm-u}=4LWowzwQK~Z#w@~jgZeGPI)cfI z)_7>Wc5MIvOl&Ct(aJhh6u?@+m?oA$37oMfUTG;N6LNdT|L%`Vcs2Xo&&%VtE^Cq6JgVZEC;S*9)Z7*X!*c zgsELxx*;J(>tQ?UR#AVWu^}(1di@oXk>Wns4KHq0mt4o$ENIe2ViaiSc3BCN4qZ~fn1xjB!4$E@)^{7BjB!}6TWyxK%8z(c0S{l;DQ zQthYPmy{%jPVYA@B~gAjoLN9U$**AZI}E~aDdZl`=#^2r^pe@Kx8-mfnX$5#wsMo| z^U1W%j~_mW0)I0gM0N6ajXs@u58c2~^wt273c!F|ec>)n>m_gRnk@FpUs5j zkLe$F<$}~rO!A$1Ngsmi-zTX3DihWz6?;DJ_}57}er0+|7~CKM#S z%*I3i)x7hor9IR6g!!$hFQ#W6jK}ad)3>Sfx>NIhT8(@P2mzta(co=3^>yLS5 z_%yr6{9%BJ$ajWT=%D0rs8q-!zi6OufUHj%b)M<%|{xZhN3`!DeBdCgetRvB$s#6!?aGFLYt z-{#jX5kY^FwgsR2Lo3+{KWeB>_evTa%2{nr+J*nz#i@6T zdAv&Ro1GV(PY%FvQ;mlRGVF(}V(2*RtT}LB4G1A{S4{!j8>RCH^V%e)_)*y9gRv6C}^jv<^f%f`U1D{cD&z>opRzx*HA zH%0pK4BYjdAL=>B-Q5uK8-V)sYhIJ(*QD+G;^A_p_FD8`rf6yre}8jV*9FkI;prEb zvx#sb1#|2e|2ZLU&7;o^zz=%@09DH$u~Rnq&{PHjj*tH_1AXc|Y{0`F4XPuEZ6eZ! zIZy0SaWXJlF1$D=F>h`!{?^uyj*;o*q z7@(gMVnrDSYVkcZb{HHv^!Hw6srf9719*W`4?K*uz*Ow%#QT|KwDY}GYs8SIn^^-5 zzHD0#7j?(SCrHBzWa5oyxiPbi4=V2h0};@809@IZ%lN4i%my(}UWOhD?5N`Wg0};I zxMN8kKI^*!jI;T?lA`^w;vCPMGKW)d$gkF@0J~i96!-Dd;O4FE!*TJfQC>|k5fMNm zG#Xfv7)9asGOHh~4@9u*>+y(4tiBKh63Rw5T<2yswWFi<6bls)HI!Nt^`{5+N3Z$I z?>u<)C^>M;K$CGwVtNMvvtz&;1-Jb+&{BLU3VXElP~sya6HIPf$>)KAta!ytJyb=^!Ja%Qm5_&^RiaHK4zn_i z!YHxBcb*CLDeIR9@4Hxb93O?$MA@eQJU_kmr+j(w-@lkN=lrflm$N$i;XHqv4=KyX zGuc6oO_EJE(NXZkA{hs&M46J?p1WN?JC2r6E%6KgzB}eTnX>d))c@^r;B9hrQk-Y* z(?6i#3>{QZd|b1%JSu-TJR>qi;zYqfGmDwn*au&Vj#}Igu(F%ExA0WV+?Q7m+Mc)U zx(I6nS9U2kw<;`mGU)N*o;ylY{vnWDh&5T5QAp+%)iIpjeL`7x zjLg^Pqq8a*kAb6iw0M*8NNpC!ukh{nXIVva4<%q6WsI~)z&_>HqyV?rjI-oei!~fm zxU%vo0-4XBCa7<7a==c}>ni0k?_g=E_fpl(?S?a3m?gDL@~F=L;px1?ss8`}e~d!( zcC0!X*)!QQTiIl1WDD6LWY0uqMrLI1m5?n&naR#3duC?;9_RDDu3!2iSCvzg<2vb~kseS#j zZHeE@|HzFjwE9g+6cs9|OT#V~Di~_|#O5%8v!(IiWJNQg>b?qadn^W;Dm?p66HgVV zH;jx96Q5o>w)h+^u*b?HzDb;&lp7h1rJ9LckE3VhLU18MazID&+q-bY=ENHi=PDNK zi$ZzvY=(bqJ3p25_eUu+Rry|cB0k0!ku%xEAk0hJglHdC|JS@Tw&5BavnW&)rq1k- z%!)7KujR*{92?sadMuuyv*w!+pC7MZGjCxyR{h$f8UUO38Le|TCO$vUOzK$@i*Q0> z`)0q-c^5+vgYvvJe##?y8;bG9>^q;rJ+h-0g&xB@FE*#H4$Kq*0Rghv>g>0SuhMI= zXrT}*NEbu=Yre__A2GOG9ELZnk&P?k=G0yX0S^hq5n#2^Z*bdkbE~%OOIcoCevN+{ z9c}3Q)jkG+@JA>-lG3V{Rrx>p7NF@LoUUf?pLoL&Mrj2OdKe*!?Ds~`IQQH~qt50& zd>gOX0{LvA7CIdyARsoi5{!x;RsBwfTvqzE#hew_fVK-Nlp^Dcb)Be1f722pNGLl! ze2@&`?rwB!J0Fc$d=xb`hq${aUG_o#3b9Y=uA_Ruc>{(`U_6gPEU1}`04wgYylFY^ zR-^W1XWLKw;-IRiy{YtK#ktO=`uF6d$fw1I4<*4U35!i)njE zAJbNpXfO|}rsXpyN_<+Fw+{`w8uE{GiBgPl5lDXro`TP;4ps#&E&u7d$N!=2HbzTH zr1|*y85I`Jd{gp(q3R@B(xoma<$4eaWtL)Fwub0aqY}l(g`2S}9#Y6))7AR2U%U5~ z-o^e|b<%;&J_WGva0pG5P;}9~r5o7yo^63}xc&zl?74!;5Mgq0e04Y%WQ9*#!z-cTXT8&{wexFh?3@DIm9xF`QmX<@bU}ieIofs*hmar%=bU_z8{o(tzG#n z#s;Kww11~`ZwpH_@U7NH$Rw|sFclzXa1%K_ zWNE^MUPt>Z#F^(SD^?CZJ$(51TAvB&zr$_4A*LwnK7A&Pw|5OcepKks8qn!vXzcQak8{gz} zC9{q@xg8PN@h*^#mi66rTK$8$kWSnZq%lQTPH9 zafvV&SgwU#!-;wI0t4G0fi2Aw_v7gBCY0fQmc?Y$7=0ElQuLUBOXwC{V}SC`qpx7F zLot_Fj^}xYDQelduIzAH;%ZIh5qaOqXbaFz{OXnnpXHQgFT%!T#!eW_lgeG1(p zqztjS32MB?v$6fOk3r$|?2I=#Vo``~pDuV;RP~1`%Dl$j(dt}s$zZrc7xDcW4_hW7 z0%C-7&B-G>;U3mG&J}UFefQS4D2tWG62&D@t?0d9@o0B=&ejf>X6e*-Z!~Q*`F{@% z59jb)+WaajvRMF(y%Ij6fCzI$p0zM4rFcmwYA>IHvJw$U#E&%jS~;ii6N$NZLPyXi z4hr6G%PPoPC>bNaBiK;oX9iD+YbAZkhM=h2M;=yFRMEjcAXfZ<>yi#7qT_GFR#Zco zh}%L3+A22xh8k^N-#-!kv7%j4Yv1ss*xrv2xIeMq z(oW*I6<%WxpAtIedQKjCf-Rp$9)m_@2-H}|2l2s3^fZ_xD4Qik+`JQbGZcd4t-7Q# z>4_dg+tJW6unXyaRInz>mQSBMWnVj;6Q4{_G`3N#UkWld^AgfU1X}k$-df|;3_6wk*91iu2CLM)uv<8~=|>*pi%k5ckr zD(yoWl1bkFePv&xo8>J?Z^1EwT4KyOr>fa+1f8Xv98T`%+FBicj^Zb!PsIOQ-+=dr zrv^0J;fZASQ!HHk=sgp*_$5Ez3J|D^owaCl34~sp!7`Wq`g!%(PrzHLfh(R-i!Ec(P-TxAHr zbtU#CBQ`~1zln2)bUFo#{5XQu^eNC`VNV7d)L07exmBvvSkx53!szGMlEPdZ^|bT} zJh9I6B~OZNdUaJK@784G#}_?|w3!YB@0C+FF^6!}L)Ox<4FK_DEq(fRi`9{T_PCvk z01YJ4f3ICWhC!1ta4$@ava5an-5vAS(qEm@E-!r(t`|KizW1a=&DRb6g16(rgSXZ5 zB6#Xa!TG?sY7~;3(p?5KMzR&j#b2XajuR>SXX$OO;zh%3)B0Qx;n`?zqSJp5HzEu= zEPMR^Oa&t$#>yB>Pp%SYPB7|^Wr$j=xST05$BXg(`7!VQ_18i{_~i4t$g_mAoqBqL zxW*OV%>!QM$LaNX_x`4Q0)Y(8+oA-2;x}r=8i#u0&mGy2KSG~rsXZjWvz~=b5G~@~- zQ^1UKb@h2FB($QtJN4O%UlyY@Z4_Udo4gB#m99J6#zEVB(fygyYS#ncs&776n^MiV z7&j*bQYVC(I1!-8Qd7yLTt}38q9Lj^Y_XI2RVyt%wO{wgVV-GOQvR&a?D*f~H9+FD z(-V;XcQACBpZoLEO2kEmQKPq(Rcc}-&do~(wRyShcqKu8=1v#50G77ibg5Q@EYPGDKdtBKS06$C2o@<256AHFym;;<;cS%dxhZ6p$i#SQO9m zkVqDROF)UGv%@PX8EGT-vMG@I`jY<0i>YSkk;8~!esU>^HX^H=LC(l9Q?pPD@;$By z+&gwe?El@OwqqGq*COa5W@$sG<9w+!cTeRx49PHD5qb>aZ|YMTEKjg9%t0`@U)H$S z{TFb?)MBUI_sX?&-Z01#V-Y+!dC?C^Koa1_f*;CfT{B~Wm{FNv6oZs5wa*NjP~u?84GV# zw3pQ_+-TAGAt(r6-?nitseaMgGFUBp@CD^c-AZC{VQKrmIfi89R|l*8=H}+EyIySO zLpJx5_-&tXth`E}cSp+X#(u%rnNj<5D0)^M)TgZg|9 zC!sReh8=hTmAVYUIfbj++rEFl-R@cPL}J(2-^;*U>Yo#O++>8tckKYTq*YgOVrB*? z-Ov}&8qa{YGJtJ7y5C56169XA-XDpGSIRAJKAXmZ79u1?>6n+k?Mul-6Lr8L*ERrv z9X!k!K=yrnf<`&2iY&!L57_r`eWX4J$`2!EwrBuyV#e1u=I3`oGS~Yw$Ms)?6mj<9 z|8oRtC%Y`M@}_-LOK)y>vCREVCf$9ISV`rHhvQFfyS!vVD5y@o)YO_zLA?l`Ylw%lZojpBp%RBSS|jx^GsZ^O6EwY$jU) z`UZDT$HzkR!C;6x1W&$poEro_6=|`dao6yQo7;_qbE2z)L(l2si+7e{iXBCY3-JA$ zpyw!TGyKJAQR{-0pRl;8>7pF6DbHq(n+fl_PXR70o*~TomvbF4_SdnNy@ViGsAA)b zqN0KVzDHn{Mt~_4jn2X6_%a8T*X8_iGxO`1hnG$O-q{EHgC{IBWU>E$E5?K9AX#?o zMLvZrK8!%AItml(aaqcd*e^!k^TX4>>{A%GY&Pu(Lx@a0hjor*nt7DS-?5f|Tkf1K zY<5~V>14>4d2YQ6l+TQ3M`7R9Sg=z{%`S1XiM(FT{$It2Oai9*jV?QZ+t{X0pEktD zxK_m~aA`=HA^P>qh?E&BKF8&LFrecgk|m2^qeS8iPtJ}F;b5&roTuk6=RY>OUDbcu zZTLJ9uMj?lrDgAv5=>Cscyvhf>4Y`nATy)YKXu7!P@;`Ccq^O8EY*lDPcy zn-0ILL6!tR?bLs(UX|1EbfU*^dO$z=v6bcEBfWt)LeyqaTyn2q$Msr*v4$Yl z61|Du`)<8I&cd_Dc(nEoeaiLDPS2j)!^8`-P}EHODmC(DKHo25D3oa2)vaNYnD=^( zy?+i(;UnGVPtADJvB+QsL00j9{yrAOWC2aPt3iZrCmU&jc)>58N0*NN#Kq?nt-Op@ zm8e4n+mXc?y)xNqyIY^GTiqG{dKtHXD6gdOuea@1^0k&P&WZ*>n`sM`w>6b@W21QK zJ}pnE`mHa{p3at+8;;@g#dQ`c^tF}~PkzKU$JWE6NH=oclpFA<>lG4UsE!F`HOo); z=92M`IX@XF-!LWO{9>A-^vDR-S&&;g&GmcY?P<^ZxHm9cHZHnQTU6Hx_$)|7#$OHG zAM^W@LqeT#h5L-jY2rE^p_-k8A_4t<6A4Z>ztfBRw|$QS70vWzsz|RBVa^`k@3E;k z{gLnYFJIy+nE`SAI(tBhDT-cEO7Y|F)ZR+U)2Bs;zvTx$zMK6p3JQf3Dh!OUY|=Z7 z&*EW5nUZ&6Mv?g0ESK!wQmgQ;x-U=ttz2C0h`Q$sn0xPf<%pF+7)kuE&9U^Sj6R2J z1My!}IQEZtv-xLK*OjwiFu8Pj8d=PhC2xi>?@kKy7>H$OKp}A%?BD~J_|c&k>+I(= zpXa_j3>?ZHZkMfCnFbREl9c9B!FJml%v8@*8ka8<-_P0)qSPGL_BY;h6b{>ZOjcBO zXx}RpX$(r-y9~*9xCnZBPs(AyN3}T#iAAds{1&Bq*peZ8SJP<2+>v;mh$BfeH2n8__MNUy}hi^2-zBQ(UH2 zRy@zLy2dkWBgB_~V}Aeo6f!O@_pywwdGV(_3>Hd`!0^6UPZ;w)-fNk0#y7_d#R$QO zXIr#N#(uO{reSPc+F0dhj4ppNJ>BWgUg4Tl4IkU~;uADvTk+f(*dNYNCsknWS#lOg z1w*~qd@#x52W#;ZWesJ+lN+yQDgmQEq#|hOKJ5xb+9b9)n-my~0tW zOPqdsx${@0)qPLY^A1G5>~$yH8^Kq!wz6W*9d@4n_(YQ_MV<7u>G;%?R{7Y?_UE>? zcRh|1yf9s-A(?4Dn_5hpY9BgWXhavp3XKRu`Xm)PCiiaBnZw6}&qI$z;HQET)1_{T zVm}V8$fYua%miFo=x?YD<>fK)Z?okB!4h4~0oz(6&HJv<)pt2@9^dolT>;g$4K>v+ z+MZ$DmU^RLlH+mT#t4pKAp<{H2^*6VF2<0Slr!L>(_CVBf@93;Au-p}r$QsaIwcr6 z=WSy0v89ES+rQEryiB^qBe2arL*`hYLI4r>_3X}wlTr8PDu^)zHm0?qjt&e2!QCwm zNwvfXjEd8f6>#61TD)fuW+Axb(cKeVQmu?JmWHB$c59G~ooH+y@y* zZB9s9kl8@;lJTqg*XxSRP-%Y1IDhugaR;BX`OC8(S&T~C4XasIBXZ~pD%#K6CmW;2 zo<0~dg*yMCPmG`|&qt-Z7q;bFKr>iF|Am;LGx!e8E)r)GV4`OuDmX$b(;S5!@+TR! z=PfzwX*+4erU4H6zxv-KJm798vvbc86o>G*rXwC)B+~>irh^b#WXwI75t-!;UV~XO z%^5VMOL1IC9n2=G&JwNR>hQ@E!QT zZM6H96fP5}TaZZXuV}6~4Hwu#Js5J~Nf26zT4XnZC<FNpE zv`u7ceFFVitG}%L+&gS!`K}E(??V3|xPBG+RJ6QBA-FzjD7Jr$44Iv;im$zmLnQkjX1WQM$8JwR4nmsQyM=X&fx|KO7lw%m1O$X)pZ%}*2NE~oGu|%WKcB03lY6@hVuru|fadzIc-yN#T?63@QRvo~ zwnQBesb>7XCnwnSaeuOo-K_4K8On>&JF=@I?ohq2`(-EH>jpz0SL+kGl8w>FyEm*{jX9kvtA2;Yq@%SHx*h`QTOj_vsj0C%N0~vmu$ySOYI^}0#xf+!} zk7kakU4DLjW2byajo^wlRUODbRj4(W#u4vR+p$H0v&!2yUV~>L;%_^!V3Hw!4PtES zw`wLS$6oUG*JX&WlzDBRKt`M}u!@DE61-&qkUKoxD5t*0e$zB&n)K}=_V9GAmXOPxsen$VrhU-b>0pPV%49vt%Jv!k=d*CUal~$C5r0ne$KPwRD~XI=5LNpYE>&?oMHxe)OofGx^#mY(s>I zqBc_VlIqee0Bj5G_ww3LmOb%73%kM;8tUtTjS3d!jTBOJiJY$a+FaZI9Yh5<&WLJD zY?L)@+wjpuk#sphKlnxEK5Q#}Fy*Io>L7wH@wF?!cfR})%a|Nto3f1d z%6id1R&E@Pe6U`SJp;LUScsi%D0=emn1`6Qs!b#w-NHe*&HA`6?PXtH^S2Wywy|TS zzy3ctrlX#gibI4`oq;UwG~6!+M61LTd(>^xfS{MYQYiVL@zTwJ^PL4?JD&zVYfabv z0uXZEPA%>|mOy>KD|D_d0*BIj*Y|AehcG%ZDB%W7QH7#}!G&TLK@B3IU`7O&`?f(B zhW0bXgo#tQia0MPTY*?eMm>HY2-%8)Aj9_-b!823Zfo0WS8U0I-zvN%l@RDmxdNcJ z=phv15+Z>G$TNuxiu|-Uj^H#`GMq%SLImQQ&tcei}3Po&2h5CE(zr4lEz2n`F%0af= zSlL)~_2Ui#E9X7-e7u^2$ap!y)Zge9qrIi@6{`Kq$tyP;Ga z%1c*wcUSlFoo&Oa%#FRC7JA04c<{vLUPKvV#o{VpvtY!tjQOzn-#`Y1*%J7NVbkFx zh)@_ASaTzAshd|uZCm!I3yg?9BeMx`ae}ds7?0i)=vP%N7s|*{S6rEgC(@@XhS;^s z(0wC45q-@1A_ns-$Sz#IUNc5{h-}>X zLdKcm_@c#FyePev0m&!2(HQf5Z>1Dpu=h)LN-~ICbi`cAy9=i4{Wn z@J7&IGAt8z0(Jrh*6UbUu?8p$u`0_*QwBxVs!dl9A$9agY zr6u1l@X^Uidq~&4H7wUcxJD(vl=Ny~H97kGOU>Vjr`@A6h{zT1C$^ zwUEPk*KhH(70}9bD9{IF7HT`cxs8?{naPE07Z5UidX-G^>4^qH?Ke*NT6BTr0%KoD?2UTJxT%cveO&BlR4JUKl42$zq1 zGBrcOPS#xSiIvp~FikZ7qv?RUL{7g!40hv4(pIiK)r@8+b<7a*L(qU#*2dEkfsh4l z9UV+*bZ9Ni7pmQ~!Q3b!BDq`p8x0;4O zKyO2~SvjXrSfimqPfGQ_2|H2?Zj)sE!(>eu6)ClQDsMtA6bUUSLR6f*ST~=w2gQP`e2z{{a`h2H-GrZwCA}t)n z3pwz)D1co`Az!+=2?#c5Nat!;^JUGu2*H$fB;0uBMLQb01KnvYHnQ2{ghg<}*4P&p znTnh-qjk8tZo7VaL=)~|&_a~N&1H{m%?Um8JY&5co|R#IRduiYU;j3*rIUidLE@Q> zX|DPT%C6^-N4Tdli{VD#^<0>l1q3)7tLn^+#a~)HGc3}1wlH#shCw#|z&s+MM;pir ztTeRm;#al*Bxv^$5%@ELAu2et@>->}G%K-xuwHZ(0fNku%6aNg@Cwq2E*JioKeico zDP-xkMJ^FRQFWZ`dSYQLd|^(_u6sRRejlS0H^ke8b(r>Z~n>emf0rL5zXS;)3v5Pg?z}FhG*ZjTTa`F-aNL-y5XC> z^NozT@hnH=s+v!pd}856lo96l%$gtsG6tK0);}gjJ}=$&uG^{sHiF$_)7YJ(nBjuY zs?C$A)O$Ce8k0uCTG~oZ$;m9!T2#%*$NH<7k9Ccy8Uc6gpqTq~sv=^deub9$?yMO~ zK?RkQ{%E+rE3M49B{Mg-x-jWv!}xM%o!W@sXLNhWQkg=++FMieshr$d7_%=DA!$O# z^`2B|&cvw#^^AVmdoCu33Q-aJ=I)njb)}nWPFw=H3{E?3UYDZ&DN1VI1M@DjwOFxf zX1izYA4!=-?K+nB2P7u_72s#80=A$ z3ly=qG?-e^I<9^rBAL%W-O&6`%;r4<8x8I4dSPTV|RodTDCUn(fU~ z<)UpkmcIsdr!XELbJa?3Vg@^CG;K8FC=nqJkA&B;?j{J60P}9RHH1Fqoh`+*=FL&N zRo`b{N&K$bISEBfEGvB?#)if1Pd6(U-A`H@7ZnqD5VE0K-Qx1y@9_EXLmxOCg|;8f zvmykx&sL_31NFag%ip+;W3rGba;X<$K(=>A?OMm@g!a0~-Ug zxKn-oY)j*Oi2FdY%QuU}`(8(SCcPECDaPeGK5uV^1gt4Xf!}J`^@7s@b=|y|uP-kz zB3`ZdTEDFl?Vkctk3XUVH@@B?kQ5!C!TUQ=8I_j?r4 zS~-tm8EsOLtkIL&4bpHK?4S@yP?RwTKj$-34A5X9ZIsUZXqg4ub6toj^3g{lj~6+z(SjIz?Kk2c+j)F!y6nsA&;I&;)}6 zzw7VjL{(}y0wrqow52b?HyH!M>IBS&lw zYbG6dFW57GNoX^g%v_Tny8WKRu*tI;q%Q2{g|)|-Z|-6Srx|R+M3G-b?UY9P zJLKQoBi~%KxC&8o%i-Cp=H*&XYdV`Kw0(S(WIjw!NX~9 zv7evR5O z)(Id;eU=zPen*A*Mi56pgZsYpZ1`M(RAY*5- zXt3Q~s;PnQCkdwiPu}p`V>bM(jOMMvkCyg;aTSDE;yppn^Bb7eq$!3z8BK0ciIF2d zLKcz)XrTuP^PO|z$F3GmvuC`9;pKz?AlXjc%oxJ3K~ zJVj2VKi$Wn<0Pj6pX2nyAG{b3NpU332lLsRN0r!nWB*6c;YTwb;o`Y{51Jml<8;(DOfML2t>hi7{|6 zu)ncqz9-7%=C)=_>M;48_edi-0HgKA^jDpA18je_9cA{YZUmyACS^KFvi!wf9pCep zBt}H)#u1x}3|MzOODEdhepL5h^PE&~)E6jo;l#;(c-;%JP6tC77Y{6-Xl`^k8oO5w ziYH_eJiHS_86X)78lvgH$Fp}m$HhCiXcRckwh7s8_J^80LMUS7+6a`8_dPKueV9%r z@(JxUi{fFyd_?op1Y6zVTDM$@L$Yg6FB4ztPjBTt?!WebCJRhk2dPhfdNBL-KF-x# z6jLpK1*!q>NzZRWrN1To5i$NmdBh}PVL9>RZcn{d;tLnKIqxXUn)i(AaKBR9_FMZQ zv(a}q$$Na0)t*T!a;k(rYU|O))U$8x(Htr$p}dlWhQyMvjX8a)(N%@(d>V3U?Q@Zx z{;gPrn-`sloOS2F99>85nP6H?^)4@b#7M)q{zwvmU5SkswfLVkPZ$C-DaYV*6nXVP z!?KB1?$=JaWr=A)inP*CiX+WT-NeCF3LO^C;*;3PaB&GN zTm+8AB)v8BHOOghvg2XA&G}<}qd@1oLlDgmO(I^lznp$o8;*vDTNp;Fp+ZLwyS$fy zL3t}I4uPdam!U>N5`-5K%J}R?C;%JZT2f+A+l0}*Ala;rc1V6;pLX+RwD#@$hBhnC zJon4>FaN~ZKC_FKSoas3G?4!=ct&|dOE~)L&&k>CX06Aq5vLWihrKB&geIzKjT?8p zJ}>v?YzvaR4&^ZXmB~I&HNIR=tLitZuA$hZM8vUUMj*dpRwUjh@WjQV@!yDiY4=ZzhoG(pE_QfLOOYto!(U-}J6#*ja)0%uhpKYn7z7@yZ5jexE?@GGS>t8e{^U zNZx&G`W#}KNZQD2IA3YWc*ux_2sk6?JBhgPlVkA%!k1+@FIn$Rh*YoFhs>8yiZ&B!bi?f*LlP5>wXB+u8U&3DsFkHd(M)TJ^LfH-h5&{S zuDetBVBZFQU2}!Ag$_VM{RX-ddUQDat|LtFd4*l~qBhcBwBgZ3>7_u#*hL2UgXJ^{ zh-OX0dU09i-c(#z$f_chAWkH$rWmeL$D-VFa&|g_tJQX{Ti|stPpSuWuWvxmNQe zN3c0nSNTz))q5%_dG9Se(&Zo^?nS>g9>a^YEyn^LamCE!o+XIsrR{K?h68gy5TB!9 zlpeXDnQ?WVpkoBVqC02cVT-umLl=xKg~Z07?f6u(_4zj7z#uE<4W%C=jyQx z!7(7-XQG2p^@G*HU_|aq0Cr{}SX)8T7Rk-k2?x18p(Y-eRX=3}Ex|*@LeJ|8v40?w z9Yk99?7J`&k7pcPY+;3~H%1|IzOuL&-qf7>pI0lpE|)zJ8g#+Khzewz6J>5W*hkT0 zNE(LRbAU{PuCpla5HQ!QFf5ooZaxN%3_#He>TtVJ{~-!23_T|-Y{$g6&TP-lPRAM> z^J?{d=5rHI*%Hz< zz0eVcYOUB}&hXyz7j}ua&4)Ld)qc^Q5PhRLLoDVm>;S%-JuXdjbf4?0x6ULQmjm8x zi(fvJ8<)XW*m589x%%Sq#%F6I!?<#rk$2_b=nY=gUY&Y8pN{QPfQE4z!-=$%bEcxI zx-xFtm7Brela&lGpQO1A@#T^toL8p=?vL0cX#Ad;i9&)X7($5Se#G}!v~#T=db+lU zcsAXwln=~_&s*E|Uj}kSY3UXRhKbWorz+JHHJr^OX)wH^vHpvzzKjUHKUndIUN#wJAz-(8^y!4#{^a6# z#%C-{^Zqj~hf&PJB25ejgabijwT%zD?$<=k-xd&JViU&gR7;ZnDgT>7K_rr%T&~s2 z|F{It+HJ3dvj0~oY35Ygk?5FqDKQqqH3b~=#NW&d{z6?y{LadE^6ZuLF;q$$tq-Fe z=o8rEm#_A>o40Z4Dt9xly_@{~xhrj&Spa%K&s(lQjC?Xds?2DaLo)$)9_Y9`Q-v3Fes#<8BNN{6o+?S^Q6S9#givTcdCxQTjCyw zT}Zpq(-2*4M74~4tdssd<1&tM>sE|_a=gZnnY8|oR;=2YM;a2PiL+ka%;lHg?lXJ; zV;JgtL4?X%-F_CWdofrG8F%3J-EP#ssod(iO-L}8kMV4PF_PxzO$%aoR zzKK{T#np?QUpzF=Z6?pY)AL^M>czogjvdJ*iQNoVh{Hx;z40hzH2;-SP(3fiIU@c3 zMpu7MHBYdw+E(5tMRHel)=0sjJAE;aoN~4DYJyaHj)P?B`3SmEw(?iwaZw(7f8Uh- z8x`ci%+Dp4-w)`@xNFnX5ygStFFQ9<%&D;he$^FhHf+>OA(bJ+1w^Fi4d>-A>wJHN zb!Q^R0XBRs7`5Iek`|t zqTHQJ&Uehy932D*+Vg6#!;m(73=v5b1P|Bz5J^H#X12u`h>PiI7*}QO1g&_0m<9TZ zPZ~hpp4tc93E#C}iNgUS=TBXqf=mJDbzwvyZFnC?Rduzt;>6HcmBaJ{ej$W{2Ky~E zEyYbh(R|O5jQX2d<&$F8uFu%9-r^EA!v*%G5y)7;JcK+fbM}Jlg6_Lsn^71a8@!;3 zo2C$e!H}#x+UEpTMLre#Nsz2U;ZmD{IlR%6$jOLvh3{qT>4L|h!^v$D{1X}^s<Nb_uW$juY)%YTps5HX}0z*p^Dhi;p$0pps=K@9B_<^R~GlaiNb?U}w(?-0u% zjoZ$}-t)UZqw&khsmR(hj&)I!8SkXQ#*|<*;MWb6FvZn?*(4tM3{rA0E9vG*g5g9rRPBj ze;pB;1s4RK&buDZ#F4**-8NyVrC0@2H1+OvI7M(9HNL7`)CG>k8_Hi(1`NS8!LbbU zXVMC2B zJ9)_9tOR4tgJUb@T@CH=(SN)e3)=(y<>BMzOQ6dv#G!wc>ggnJMOm@mR%dghp_t)x({xY|lR!akvDen=%|zp)`#)Yw zv69CQ+O6HlR_4fN`2>K$O@@eAF6aBeBGi9>4Hr`TXobIyyBfAj(lC4j*~p(LT-ul~ z`h`PID%nR9k>uk4Hf~-1y>fH;$kC=@@N{hKgQKIh0@W`HvWTfqU5U+VZ;UWwT#wU) zu`m+pzR{5>j8Dw0qp%TxHF#}GFBrj1ha#F9n^eKG`H^gGK3B)6bTjyCzYIY>wgzT5 zwVZt$(K4=iSjBLY8_YF2{ZTX_jP0=)iVPhZj{@H;c~V!?27O4IKZ(GLOG>qay)KD*VHJiWdn%%9P5i84K_`~B23^3?Wpb*eHWvxayYUE4~N1;Vve7$={TmPZqNGZ}WXbN*)bsMjwcNOiOjHc$_sf z!|fX_Hu;t#CzAQL=%?-6+fO@H_ZXMIFMR(LkW8nJ-~LF={9&Q~4H8q41P0fp%>s4v zv-)DvI+89GWJFixfoQa+EKM69y-0pEbxAUh8YTx%RAOf@Pj3ZLfx2z=b9X+_H3YE) z-3MNx2Fx#@8K0adJa(b-y*G z+s>?J{WBNM<}Kc9OZI(K(-fZjAw-E3*1GgOMBm}#@zYRz<=>%}_ld|$q>}mmnQW5l zRSV>D^Ag8Qn3+xux-d5&T8F%-J?H*faJCp+kJKK-5}Fc#EGC(RHUOi%M9L|fOfe0Nb@&&>TX2Uf`jry#bCeRoo@ zurPLx!&mCF6x0ST=mmvr~;z>8Z}QQQ}gsnA>mR zs}D~^tJ#&Np#>|wDj*k8#ASmcogI*_O;k7_za)*n< zgCh~baoV$aWH^taw9*Rg;M{pb~VHv*>~3tWWJ+V|LX(2zltRg;v_{tJfK%!|4q%slt+Doj1n} zT>3(8QXqiG-7ier;Y10#*cbP5wbmj6X;wGwD%m$c@>75CONrWRvl6PT2T?=Ae@=ag z(MhdK&L^%CU_^$_~ zBLpmmO+2CVXEta#B)KqU-{$0fpdW zRz1L;c5BTukI>m&X(jMetenH|q`?%2&fEb2zdY_-P0d8rv6@Q4?*XtGPflV4qZcw# zaAq7AvGC6y>p!&zG>5%rdhhKgTTha>uf6r>2AMP==?yLrxH10t>qBkc2zpk?KVl)b z>D7uBQ_-~8qzM5l%V=4H0BvwOaPZNF2lpu_90aPb4`M7DxbLPt;3^Si3|59KQHBrG zw}iJ6T)P0$@S1O{K55KN3;HxsvQeL`3;|9B0V^7XIlW?c%*!^!p`^cU@B(t7#S6&a z%`ZgYX6ly;fDn`=%s<9}qxS!V%Qsg>R-9!2F%<|7vwST2`?c;XN~W#bLZ2)9TCKv9 zh3N;(J{t?=qAxbKZu`vdmsv>u9^d`-iRDJU*O|c40k%^w(E=`aFiILMue)wh91K{< z2*xF63lUfQJLb}%%1qgw1Cg>=<|Q`4nu-*M4?2b3;UVYJ8aV#!akMo)DaZYhl9F0r z4Z#^KZxtVlo=ki7r~Nj~C#y4E(s?Yh)+KnJMH$@D>vir>b(+*OEthDcG66>qNZ`NF4PakaDOg&sR=`#6YsF5d0MM1!i?VA1Vz z7Xoihp+x#yQmjvg^fUv6)&9Eeg6Cj@rS|5imITpnqJmE=v~h&$6gZg{kVzv6qj zp~|jzlSjnsik`XF<;^iunnDBv5-&KstwZ6=`?4zE9R##C?o*eO?o=;&cYOV`NHi5n0*QNLYGXmpE!?Q0tqW*f;ApCPw{W`yaKDYaf>T zv}U=|0I$NJUgO?G@zw5r#+^Yt9LTDh?a z_oL7{3oBlZZ}RfVe;c21y{1KA^S`)~EVwSGlzW3#77f&z0Fna>sgbA0p$_MXJ~CIi zHQlTC-&SM`xBgp0DZ`3K6*)1LE>RQH)n9vrjF<>x<)wHzv`0P}y#K61XGRt-(TyWM+mBDl~r;y5Asv`h{^5I+B`;U`9bVm^+N7bV<4|#W&|T+j6Ni`|o0ptawrD$-SmS z{j1l;!p9f;kMFQN>~>M4CH+T6K%jX8RlH|}?IFsan#wCjb?CtS+vL<%eE-|M_brr? z&Gv2TT~W3wVj4C#rt^L>wslN#<$UHAcspvnl0N7#`rCRbY|>F=Dd~9jRl6#&Up8&* z$EmSUvqzC~iA^srG8`|amIV97PfKp&ct5`@!`i=6g_~)7wJu1V;@+0ne2}|htlKRU zk;LLzH^N!oc$#u=+hY~uy1$G4j@bEyeq!NZ<6@>`$7Ai9RQxFJBT-ewuoz0%F`@Bu zg$^qUnZ3A#f9J=OhnSi`0J<)+sp#U3>8j9UgeTg9i`F zfM7*PdG$5o176mgt?_B+7{_G@Tl6@&fKm+Zn^T}a{}AM)MEFZ3R+~KdOcUdB#|Dv|cljbrq!Cq7IIAf;yBSV^UUdykglx?s?Xt0wLV68wlL_G)3 zG#tcl{5*&d%5?1b9t~Tg6Jc=-KP;;%GYS-0Oi=<$&S)^0pHmOMLTpakzxk^(KM6=K zMX0T@bzDP4P)qnG8oHevN(i>q-29!z@&LB@N&OuZ3RN&#%*6lBejrs)HBzUz6qnXU zU#j$p2>d^k>6~He<{u#n*D;z#CY;ylmE9E*zy0d^e^ zSdRo!$)w>99O2~UHEAAwUkFTiAg7fNdPhT6YzIAh!|pHMb_6?8os;3oZkDX zv%OZ3`Mu}I`9r-Xp=<-la!DuAk6JydIrBI`j5Oj(TO?Pu!NjUGL^}DrJD!zbR9(S` zniA(Nv`*90ZU#o?S+|sDv_7S(*J_KEMC>`~P46 z>+1SkU6*{$ec$JOzsKwKd_Et?rp_;9IU?$Dh9zfvcnsS^Moe|V!|MqwKs$u!&>sF9 z2wb;b95doUM$}2k<&Gg}GZJWq%F4_4a;0K($|lEVK3*0-__NC%zOz1ir8zI|F_P*? zgY1(}HK?w=I#VF&$f(W)EkNa*@dw?K2x}yjJt+%`4(cMFPa}=1Jna-c!wErd8O8L)t|g_lI0=AiZh^XI_0AoQ(vd@f&r7@ zKH*2e!H{3g8nBlL7~{TU6S3YW=9n;KA1TO1R!Wt)aqnrN7TKln-FxeY`+J@#3ideW zJ95>NnhMxm-huYyy0FH(;eV(89gO{JXq3J1$(e5&O^K#tdMA>0(dl6ui=K##mH6SG z%T>@v;y2dWxn&)v#Z4dGNIg^0C1^gHRaC9<^H(vf*~*cxxg;}KE{gJTzb4g>(ZLEf zkVqMy-%R`$yfbfaVOb|PH;>SDes+;gYN9TC!g?ttXKw4$TxiG6{K=}O)TbU+C!DTa zx~AM?rp`&O-x>K79Ty-}vaLn7y=*y)^MTD79N}SFW-(c733a z55KdeTz4*PJTd0^&b^wV`>&nUdt~okcr0pk>tFZz^_VlZ%7K~F zT$ZkuOcE9L=J#Y`Pdx~Huo-+tF6Q%LS+T2C6Yh6+ayD$}BBZ?IC4EnXKc#0Si?rqv z|4b9Pm%kRi*EVpgrM>cs&`C6n>4Zt`JBqc+)1iP$P)=MrKfb(az<;0ro%+8>Mz8sV zc`huvoWO;*j(RJs#p}z>TFN)^)F6Ryk%9}>c~+sT(Tex2uRa=kFW5zx(DyRIQ}I74 zuva^F8abJzm#ufZ6KfB8;qZl>R>uYk-vps*_4CiBbX%->;#0MRx`evQ{*WvPal1LL zw>~WJrTWE&KS-^Uj@Zzr44u>&^+!p@`XBuG9y7a1Cx23?(m(s;P=@hoIp-E3|DZu~ zU0>=UEo;U$ui$W(u*U7f0r~3F?E|OL;;}=o&~oa3u(FQL-uyjhZhnvi=(4fvPif9X z=XmRAZ9S*g_mN(6j8@#BYw9z{bo(K~fl+}%818aOfshlH&d@#CI46huQ}N5wzP}=4 zNc0WRX;&oPeNc$)%8wY7?+9K!S^Koh!Sjir|FAhynx~7U$h#27Ez4~a@axO)Bjf_l zSw~jZBitNJ=9Az1L5*#7iG$o-csPz06@Yj-eO$D={+r28@IBPNK)W+Qcip4xbWXE zADzRN6MC6mO1x${1BZ%Q*VTg~1M_A>2eb_TrP4>Chh6(sK=6M;@!K@SR`s5G_5;P; z=le$F4N#{7z%1C_boI><;Xe1;&T#~dMk4Wkf8Gh430t9rILczWt))XXCaqZ?fgmnrL6KR<( zG*C91hkaRIs_RiEq%DK_&$4%GH^bttnIW^w!ybOAQiq?S0Q7c_gDOL|0s#!`-L+{ zI9j&)oXmkj{~jTrLLxEqHG;$*5(kOL(L`rU@Zs%3)WXi+VgY8+E5DX!|H+*oeWA!z zYII|b>;!Prm&B#ZpoKlV?LEcMa>qddt_CDju7@uv&xCCZc1#D!FXmB6dTy-%=x+zk zoITD~@bt{8_e>c>SRpu^e0EapXaF?4mPiB#BdXtv{ki=K>e7W_3(aDeFP%8Y z#ixe|(H_;sp;=R%jjQCx16JWGxP z8=v{xNtq#P=|8vjZ>_PTb@G{EV$EwUz*(de_<|c%W`f~az);O?3mz zQ$}doHpo^rnu#&JIdO&~-mp)%$mB}1zjKkvTbEkXCjG?}J_;oH7~(6#vNj~+?ddL_ zE^NvHl(8C4XVZAe6Z^0=;=_+DZzg80huLv`3puT4fV$T?&rgm#x|8*y<8~^x!YCpQ z0)I&&*Y+y*mAG}F9Dyc_bY{n+%SyA{hQmkd=j8c?j;?L;f3sO94|87m`wdH&vzqre zJL2H*&uGr-s3=}&g_~cGmk>DV~mNcg)q>J#GZ6c(b|x+AisD;neP&@ zZvv zmu6AiMJ)k#>dBphDgcJ;!_cB@-96Tq#ViRrgw(TK8%Si!mn4B;&|;5UzKzE zX*Y>q;SMy@c==zLGIEnc0zQo{bCt67)ZQ$%dKBs;i_K6%o3w_|Yw%+79z&?I0{TlkS=h^N zOJ;B=EJ6_7P1VoQ&Qh!i_Mno>=j7B+yV6kUayltX>^6zI;R7ZV6}ND`2NaFI>*lJg z@v$oc`tT`%#W9+Mn-?s* z8GS5-H(0Uwiz)y_jzm2@n(2z_o-gwD#tsmPhlH8$K0kv*I)9KcJkU|i?W6Bb!*+$I zmX!a2$0wWPsBw=JT&ezb#BJ%BSSlB^0`rCR) z0u83T<^EFhg?h3p@)T@+Q?!s}$&wdg!bi{wQ=Ml1#sCwzx4w#X?D z{k8tvu*|0DLtG_B2tpI^Bwdi930*P%ra1+!(j}0%t4iIjIUB<9IUa(71)1;G$W)99 z*H|Nn79PzgjYu?A1g5oA^`evJCVZtvJ!Er#`!{=4+Ro>-W-xWvFw!`B(dU%83pXvd z_`O7fcMeh4RFpy?h!JOZ{M;1_8vS9y?<=S%^t;7%KMvs8HZ&wFBuf`uE;qLZ8$O!d z9HoIUXb#CZB+jqz0H6KYgdax&7)5kZfNd&prJ$@ML2GLAaBIC(?3yShNa}D&(wt4w z?8=&(AYhXXxyk3^B;_WqQ2}9@7p*z@A3%^ADq_z3z2`kKjdKK$mtJFAIt|($I&ibiwH`YFmzzATL64%Kpiv%(YZOtQ~nW zVMq(5@%=&Adx>hsDx@f~9^~Mw|2nGh8~K4g}fMUuyJL{_=AB;8u+V>ILGEs3?U;(?2C( ze?g!Noj%HR_AX*wJ-+J2j4ajb6q!JqbUW-Ga6NA>u?v4D!uaT$N(;6>?bs&s|Y z)4Kgs>el-%Ea=fDqhCtUIClx*4brsgSy@aICHa?bA&5krShbhyEDl!TEywP41r|q4 zT*XYKQlG~RdeItF#c#!pClsj6({PtwJw^GBg-qOh$+{wW>DRSju9TQk5RLM2mmZ2ciX8he z(+r5*+uce53kELyPF$(v1>4JQY0`Tu04xseSMgk3+nNM6k1m?yP<>m|!$rq`8x%_HjR*gPu@^o;@tc^n01qg1kg zbDm`>myBDbEJ*V5td8JgHsi-WxR^_I9LET;Iv+?SGo$|Kd`{o{UyAAKLfWAQOj&RF!W{%jKVxE*}@y`%;ADD;T#C89pqv}LXFIFGm0B` zGE>|G@%1`Q9)*rxub7a|KL>y|H+u&DIzq1>N4Eh#;0m5W6!=RtB7;Wa9w&3#E?Zd~ zzraiL*RRyTdc5+lBzI}54=i!>&!FWmoDPAeNQ=HBB3IJzh+-2 z135`;B`!DgXSbwuxP~Z_iYHS?YbDP)4ObD;UWYeZ%kgBI2qPcfKNIa;$iNDtL>yRL z%!InK^yo3=abJPsH}3A`WsU*YYC!KZQ4xLmxg<;)p3dc#Qie0DXJMQIigY|stT&;! z^VyTbL#$H15pkHmgxoO^XN_`*eumNS_A3_j=b((Ej#hsi?>&_~*V&1!=iW}TBw&Rs z7`3wvaGu^jBkhDgHrR}&<}i8Kj~VlI@i|#CM^>ro=?T@3C1Rz9J|vbLi*BR4F&~~M zfdZawWRH{7o0;>-qwTq@?2fWTG`#>RLikXy_{Q&hh%L)8+%_cYfJo@_`!qZ}7h>DDD7AkW%6#(G(~hs91-jnAVQ~pX)T2iG zt=8udq*lR^1_k9g*o$NkQMWxXTom{&zxR)~RjwvlG6U8%`2vx^jKh=*eaRzpz@xo2 zMH2*xbs0B5>pVC^sd2*OLyGh-TOn9dtcA2$N3Q3(yp^Dm)7_Xu%yp$04Cm{Xq6cvo z&r*#dWO9vc5mncw&)zR5kRD5voN7qNniBMcn)?(M`HB5;mm8{m#G<(`UIN`exnb3i}T!XJ7pF6GT`V zkMn)pK4@DW$q=Hd&4`=AVzN<{vWFD?Kr0( zH~xqyca77r^ER45*X@_cL#5tabzEH}9mCk&;O$un%EPSJSj?R%Q$`ZEIjV$WR2%@! z7cOyhFDUll?-{mmAgNgD@}vjvXogG~qY@PsnM-7Q&&diBd3|fyiRMCLc;v&V47{fL zJj8Eg9rtWH2T3(%P;HuOCx`@k9(-Ieh;gmODUr>w345Mo?2qe8oV#@Ji`;lF#-PEu z#0_%O(M>?gjHo!fRmS*#ZmIfxwNvok#cQUHg<-SCM68bcOGSCh&{Cv}#exlS;$dTB z<57FWStxM~`FLFq;I<5665$*?273^SIca?qczIqe->9{!HE?-sZ0r)?68NR28esK! z0+`#v?aIT$?jrE=Fq%{b^41g5l&`VGK3P)3BAs6`U)o&RosDDUS2(eP);!iN2a~DZ6%D~ERxTlsO1TI`jp5vB5uG}>vBqS%7`d^538mV%@^NPoE`k|G zY+UYM?5*>5OXryHzVVm|o}-O=Au4yBp!Af#-jc_Oi2dDWjwa_%39q>#^ON0-s<-LT z({$>~DoeK|UmQpG;QKV}Qq-?b-*#T&NO2;TnrxY1=&l#gg>z@*OXETrIGlrxBCx9f z5_yuNyC?@El+G`KzORG+M*C*@QcCUduEep#@``oil&$AMF|pGKY0PAR!4O7T&b(c* zRWWGe@Sdq$$#G7N)b`G-4F%cIy1VmF`s_S+ZuVWP=)Y@dmr?s^!nQ9p~vHMJ-~{N-ktkiG31c);>ex?A#uK@ib(OqB9#X z_dcJc?JC>NOkxwT%ieBa*ksNxX(Sg!)lpGJa-Tj~mE0gjhD9h^!qI~` zvd7|dT==XdkZxRmBXcy^P*ljg;i#GbO<2qry+-OdQ|p!f-TmLKD?5Ka z$vZB^`Xy(v)ht{e?TI0Kc>1f3z-xoR<#R=40Z~d}&Pm*l{Whz@cj(Ib<*KG16$LwH zKJ{KLqm3}z1}J+%y`1-Qlx~vEzG3xDzApM(QsnQLweZ56c3I{h>F*zTk_Jin232ml zy%->=ZmekjNI8<}^i<&H_`zfE+z1_Ubt$KRgW}yNhoy*5uZ{~i1>c*v;Tf`nj~Up<||XK(a1Cx%D?m3W$SMyW?yNt1C|~3 zR@^;bSrA+0>-OyFtt&yZwwO7wZgD+>8x`I8cG4T^N^>NJchg<}`KoQ8^(0vqvyPHt z`IPI2pft(%k8~A%EKbNY?3L-V_-%+UvN)LE3{mCyV*BWYUsmD}H@Swb-RDv?NcsQg z&$rIcw58oeudWunay)+hLEQN1KOTE6cN$Y#ILS4(4ZxB)YQaqL|~fq4GJuZ>VE^%K`Ike^MLXRg~O0RQaI7 z+OTMQRp$1{jFopJyz#V4z!dnO3n14xK@&7Ow^AuXiHhbzJ-f3KvT(a7ar5aQy-jk% zKU*_4xbe1(wjQbuTaCF*&757Aw*{wVcFU%>XbXMNX^IyyV{)#w~h8fMbwS9{!)7|(QOYgokjh@nfY`+zI2`U zqSWh@3xF+ASPV6Z_|;i5qo$^^75c#XXVj1}JUfxMPvwzc9@QnY0ihO!Pa=PAeJ(2c zR3k=P=6HHSr&+CJBx$JnrfqaheahU?R_VbjQ8E%@I@eQA?Y2P{sS6pKg>OxhS<)t5 zCMGEzUiDWkuPmmH>HZKHrPisUkd@n0+x2G2wHb9J?5&8|5I(KjY-XjXqn$dUvv{sQ zP`_w`Hz^)P@qLf|>sLpiiGoFxPb1~gI~89}l~(yu$|VbUu8GHlmKTHeE}nm_dM;II zBt^P`>d(aLzT38LieCh|M(X9ebgFM%PE=D)>@9LQJqhx8lF!-&fkH&$P%365odt2I*|%zIVfytLXcsZDwW7Zhc(!_X5rDxkL*ewFUQoS1yv+ z|3F|IdVUuS&)e0aD(Ra^I&X8&rjZN2{ynr1U&;I8_xo<9a-S4Z@)oanR(^YXQ)Ocg ze#+5=;$8}etpcnXQM8hfqRSz z#uT=?TQY<)a>Z^2(!$YBq9zCz4!~uEX#b{TCWbd2f3FHXv13VwWJOm0zMfkr{e4ph zO+M+0CZf2JJc~_*JV_~obWKD7s-0fp8T6&*1g!nphjF^+{=1U6?2g9{RxqGb$vE$i z-ng-~J-zp1dAn-Y@9pQ%qt81dk@iaaq|@zhPjb$9jR#r~qRW32#S*W`U*k-wf-6cT zL)T9kZ&ALwR-nFhr{L&L<5>3G7uGiA>{6b&s&0x{bhmgg!84t-S}7u#8BHl+6eLn{ zd)#oj@obqLKH{5t(bC;BQu&wbBew5+7wL+kg9m)N)I-TIM40+Q?acR^lqr*Ef*=1Ks58(a z)GRB;ewS@CQ|^CBJ$gq4&{PN|r_32dCMs}1MGa+vH%O$$saly-{_TA)m$Y|9)*S zz#^UBA3ZFz(?3_dMZMOG$AxDnZHhN&Ox>JcJ(u#-I4n(>mS{MkhTdwZ@uwfc7fw6)HE3%Wk1{H22t@yBC* z_s=P`1;b|(3e0gLd8M!q<7k3ld3`A(%P>v=kLl&F$;dHNOUN_Fcv5%PQOv@2l>}Mx z64;WPJ*S*JuTZr{iTCK?O1?0)(C~_2L^?a*BIU<-L2Eemr@381WHG_NKjs0wb`*Vl zMs#%9gI5xafUE)d93Uer(jPchMn}SHznzMwdXRwjusYK9LR&Sku?3~Si($s9A3jimUX0Sfdv@>?-ikQfNUE@Tvb-D=>uq@nkPdJzm%X8k z8pK&;%d?&r^I!RVWMts>@(iqu!^~B{*m@&Plnhz zd=cQE%*@RAbH~-G=BWcN!uNY}FfH<#poRX`DBnkEruJs`IGol+A(oN_J03ntUzR|Y zQM>?s!3}@!q8jIgJVmSE6%(E0riWB)NB0~SZMrCkc>zH_*{OakI}YEE(*-~k-`_?# zv)6=rbyYbX3o)&z!HJ2c>d<5u(>Gn@sk_G=3m~lD?b@|5oOBl?t3$DJ5_(ktktEhv znG3swLjUG`VJ6iePS^CCLb5q8%>}Mb7ROHxiRrr-+;Z$bInlg%sJcGL<`hy2?Ut$j z)~d(#4c=B*xvOrPo~nLdUpH)VzPajmYgvH^jVdTt_{GmD5V3qT7u4cV+{trU-@Bhb zzYX8AhUCtP#22LqVMu|Rvs;q7TMHuS6N-V0osLPZ;EjJ6e@Fah{0x`{%$oCILWTzoMH5qY?qz!^&L>9FVx{Dg$O1FsgiDtW`Q1O1nzgaLUDf-?;o)IH!D)m`^caH0Ad$H6a7>hhNkx0R z4NCH(lEZzcht}dVkhQ3`UnsJtq?BVN;7LRxm69=Ol!w1lC=bI=uD6MR023tt8wWlA zcMQ@=j_R{G^2D<`#uMG8J7YK@D&!jfSz_Dfn3d1&!CL0& zn*HLt;yH~9j_>oa7?GWXR%n4nwA zPz|(IhHF|iFpLg<26wdXEOd}Nr1mJl)NB>B6^X84#9%Pq$nM0Fu6XN)=f6X^K2SP- znjF3;RA25+XD?d8;b?6!`hHy7t*@qs6ybXJc}uBu5X!^IcxW-f6yc((JS~DMVfG_kyD$NtICVNcrT`gM%|4Y?7Z$maAP> zm96LJCa;SnnR*<1#awCP&Jr`riU5;@gpP!&f^C*@AG5~t^^zPCgoGAR=RrQ$(_WK5 zD55`V*pnH%j5;bJdbL%o20m}Zx4$HnUDiyMSHLaP?aPy`$f_k%ebLMxc6)6c9I;~S z1OcgY-6?C|-R{oam~IKgK+fsI@UIMo3M;7>9vbE2sBaB`lY1@d-!|kM^yi-=B|cv3 znDxuk>}}dvUpz&9jA(9bY^;scMm?zsBveT$EZnHzal{RX zy^`0*f=hyI2t!9A82N*r@(*O)vQ$I2y3cRCgH*S)P-aKa#sZ<~i2Xq;|0#7~QBn~O zX?x6FS%fsSrqF!esk?8E0y8vN26C0xK5e(}L6}g!ietENI(11;g#{p1rbTRT9EJ?6 z7r@A!-CvN0fVyNVS^d{R1LAXU)T1f%g=9CM3PMsUPLY5UmXz*y_dXP8y`@xkZ6w9H zWYzlLTxyN6(7LT>dtgr$M@3?cY93uos1(wq9=D zvb`3uHxt~^D-_4|ceFaZ{_2|qp<$Q6prA6FwfTGkx;Q=dg*CalkOe)8n@xt>Y5Vq5 z0}6R*J(3moK2fuTWxn8H9Q%|lJLh|5X}Q&qcyS^lYfyt^J?z?~*v|g-dqh#m%{s?H zzO7)y1 z_*PpYHoNxM=f<{qF)$)ogDitx$cvPvI_*mQaB^P6gz@v8=7I3d@=edXpThqP-Wjh{ z3+Zn==EAAbQ-*t!{ix)2MpoU|XWvES7~~vlJo_v3~pbxS@_{x zHqDkaUamkwJ(qdrpkJFoxjMG*Rm391XN+6Q6o-ISGA1MUqNv|9+}L zKMpyUvfbx}Msiq;@+3$`q$m+N+8zx{`D+Lgw?Klp%FtXu<{YsOEFNslRk^Q+zbd$7 z{}fCZGPr4rsoyTemK(}>dwBSNyj3adb`dkV%FN<;`Z{T(>)3>F0Vc$1A0wPzTw^S# z@4D*WY*5jY&x1s|kt4J;h@b+_lg|uMUll{t@yC$|{s{7(@wcJEA`czlnzsdsN5q7D zuOq5)wihHydx!oCF4GMc9jx}B$-8XDia$Cz9u_>^>sY_JEMdQ%6b=*a2Vna#aB^Bj zY(Abvo|-$%w1J`EFY(;N;U85$`@xJiQB^{9>u;jtY>V5{)XciZhZe`ZEzr*x*TT*o`FGTMvI725egx>jE7hF6L{f|cA3 zH0RwjA)xeBPLBo}okodpF(c@w4)$3_jNp$8Q{}8$rsokPJ}4c_K~p$}QmfCOh~{|2 z@{pRZZb7#UA4NfHvKBX^9Py36vORv58o;(r6kK@Ue($L<+}`su+NMM-H@>NA8GJj{ znBvemVSf%+@C8B|_YcUUo|>2dXIF^@+lDF$dL*^f9;kl*!$p?Uu_qj58D-bn8%Y|N{C+b`B*2EZ?vZ4JUKbZ z8td>M;SHRAXVePNLsL^CTJ=T=HBos`UBe0?_EQbcmT)x5TQ?VWUV#ofnA9pCKq1hlkJNB{;9Sxk(hZR6Qp6+XSyK^bxT_ zxqUgi*4Q4Km4Jgo!jNXshe<`P^mi<^qP>YJM+ZQ2>AkZv9GY>H(7)8wLz6qOt{^+g*@6*v6Q$>JML(mdI17OBG*!ojvI)M^<^C%Wdt)J%Yz)Hieitjn|(N zOM?`Jb(NkC5A}ImrhlXb1U|o1EmL~!qs|~pFsh!BL_5;$fkk>dQh6rq+r3kT(WW@T_)V6)OJ5;3(tah8tYbcKSAB#DDbQFurr&!r&M6>lyl{rOYk-?kFXzh$?&?qw1?kRfQ`Fi^hIGu&WjxbYu@LAH~IMrBj=Qw z>*goag+%CZ1er9Mgt;3qhogVU7{Ak^Gkk?zPelQ!Vp_#7pmgb(L z&#aT3UD>8Q5vUl9;p?y#S55}`2%6khiRmt0IY{(&NEW^3%H|3KR4WBX4)^cmMzxo9 zOKNcJ|w7esg7>_V)IpEPqd$%S!oj#l6!jKA5Yfm?I-wjLX3J!@qOYtv{9S50>%s z$YR<0caGvQ8zJaaKpb}+=nh5&Dj}bm{P^j)h#++4H){15t&r|laNPO&26Xy2%gv>> zW+#Tgh-Z}%2)WYXi^{W#8>tsg*gUm|$Q0N{ehPlRo)1aRCx931$008xla+TKl-6sUxwcNlfyH%r#`sj25Wzoo z4x7#Myg_k>IMSc5EbsmC`WvRpN7Nm- zq>$kkl;><(j%p>A&HnR{e&Shrp*l912?`(lI-^&gBw#&&5fuHcay4u(i+OM$D24zNO@AI{P zaG2eDaWeerjdx%FD+&=WF81Z^B>CKOgp}#$Ys$&@`&_8FLHy*me{`S$9x#|ej!0M# zQmQ>n%U~fZH~ALG(zp2U?|ePg(RB64P|3_j8N`a7gXQa_w;zWcWRc2GUmu1&9dmzn z00fi6W8ClwU(a2gYLxB*H4G8^V{L6QFZaAcGD9o~J}N7{`*LLM_P?HjxS6+SGsTpb z;J@eW4(qGKykEuAPESv}$V(fLYj6>t*y-Knddq%ix>eWKv|#R|l9iCN@nw0UOy)a? zaY0NO-HB%9gqm7dc~Zi6I{qCWAtiPen>{ol64>gYoPKeh*!Ikhn=mGDhohkNg~5ZQ z=QZX+WUP-Qq`Zu${O@1E2zmD=ogJL`VDQK&jkl7gvYzw=;!InV=EuWO6p2VIxg3x7 zB_&6)j1cwK5WA_U71u;RoWJO7y%xvD>l$ESt6zYv$0A$ZnB;fR(82PJTg@ajdGm8- z(^!?3iCtywsrDVSK1V~g99#nDApk2J2Tzhcevl+Bs83%hOXPU?U z8klH>)Bm*9&D~%UBZ<^MN%56zNSHJd3oZd3MikX0*;h5_VqrGcjD@JkGV-kC^5Os& zqt=U$o6OtRldUp4)-~@a(NZ~l^nYul$5o_VxmnrKey=-$D0OnC`A<#ljO)G>5&N!p zA!`gDZ2pdgg9X@Ev)bl1YV3im5wq)d*v9;cwh;=-vS^+Gxn!$LjyuSxI z>uol_RZ=L9f(~wMhea&nUD*X>=B;|uw?H;k@dWF0Iaqf#WHE1cbkbSb2x~BzeaW}S zuX(jXL@ji4V7j(Hd=^srewYux#+GZ{P^5X~XUQDvU{>`D5|``_dY7*?&oeKS#$hp3 zTu9!*#^Pn!q(a|6?@~~wp!O1p=xb@13q<@3u#=Je)zVEx@Z~{0>o$K(nS-aD;X|x^m#X}Bp+fNIuk^V%{D8vW)Z3J2 zz*c>0wo%t|{v9u6=*O=4V|odqMbVdP>1uC2!3Ojyi9qlUE6?q1f_~)y7XdaGnQ( zkYcIVuZ!NGZ2LQ$q}IBVvu0@L|9&8RtJb>f7*gO-CtVlvMKZf9`{rJ)!{qb5Dgm|M z@y^2GQRuW<>GpJ6eI{-#0aa7R%7~!uv)gLq&x#y|O0(}jyrZpVpajc>kuFs4_Fm4b zg>S_Rs9R=x$&K(Ksrs|>&kvoC{aS#jXClH@C2(nERk>FhS7tSKeELnkq3HY4%EfW- zU8n%w7?q7^5K}HfUXq~ae}1i$pYdHbln?)9_V2LhWSE{1pR<9!a58E47XAYP-nLGz zbJ1K-3{p+@3nWtq=CO~@IRsAgl~&s^XZG#iJag{YpB#vk{IL6WE_v?$0cN_%J+dCd#a9gB*tf5nuze@Ysu=KhaPI-rS>; zkkYB#bhyJwk!X?&>6_tuTdT6Y?i*13%2y8l`Keht_DYu@EY|S3L@d>-r$t3Y)zy%S zw)5Ohl-UQ0$-MVcjlgC7P7_tqP4(&*Fm#T%amO^j^GYte5((-k=R~P8rY8|Di_V!g zTfpFBUu}_`^9kv-l0iy`8)t693F61~kLD6kcA%xDO{@Xvtk66l-MvjOxUSo7@>Dt_~^ z-85L)aGrG94c-CLqB?Z1{k9vt0W!Z4)=^!3QZ^TQlVWva@ZgnU1CY;n&-D5cIWcs# z9vBw|i;`VsM)@9=V@H7bWxIbZu2XU%g%Pl{yF2~m=V=X1Ry(}0zVK%BF;MTUl1TKR zRCcNH;lsrr565%Ef}l?T0W~TEwcb-J_Jlu}a#(#%7Nc0K8oaVYq9v3vA@|@_rnSF* zAioa-QQh+c8zH(0OM>^C)IL3v=)}^;?={r2LwnX zDzJsRY!hfvbH&TuT`0XLFMtS0sFIR7AO*jHLZdR0&l{i2lS*Gl(M#H|u?&#G92KUj z<(x#tBlU735mXP8w=aJOS&2H7tS|X}?q+in&osqU+I9TgUH-Q=rndj0zch)`byBkX z)=EjC0({`X13**=r~BK;CqySFH=Mima~*2$=e9RUMzF%)aeJeUqe3FV(%FrLTm9#5 zeK}sT`R=bN1h*}>z?guh;!ark6{;A8o-Wnb>g+Wzv{Wq!`O#QS2(NNdmh0NK6jn9Q^yS{p?El?gXA`%tqQvwA| zr6qHf^844EO_p|k{M%m}>pPbhI-~5`ms9V(*9BQt)d%A+^mZRjOMQW@r|Qo>0mUB% zjM}#~HM9-|T}cphn^eSLVo7G3J20r@djbQgW|K+mNzYK$U~YU>=>Hg)LP3W_#_{@Y zzCD{FYIhyL?KBrO_2_vabZesK+NDkQ*9W(7K-y$Tn&J?qnPQAE{mSEF$Mn?Q=%7eNsGLQD7Y=`eekOM>{dv$42|6PZ-L3(*TW zN&AH&q+JmeZ62Z+&QTdy+0*m_Zy`j)rvaRLsf*obe`@w{VLLN&sOgHzrVaS0TW9Kh zzX1JNQ}2ACe7VD|*@ukKM@0TUKZ#=)ALWr;WLaHtXubue+*{Bx(Q^&XJkt#s#{^6D zUPbv$4e(8*TVyu)wXA(=UWc$`11=I|JW#+O3n4om>}e?3RcB5g`LO_tIeF{b-r*|b zQto*-M&<7S^(b^JWKCK>#DkKW+j?A#`EFS{bX%ZM3j?FOFzhRYfc)(iO;jhC-XR_fw5N9m`c6A-3le zif=j20g^#j>)o>_(*p`gm*MOQ=Q=<30?TT`O^B}{=^V+cAVyBsxtr1WWw^egvXev!&+YNH=>oKV|k;Yb(iLU_cB!=*}A1!>0lQ!>~Z5+0#nxofCjkUqFtx ztc(l*dzf)U;EBq3NVpk3*VUJ+jOq>OKMA0@@j#6xd@3x_nHq}Z1-K^PFPYD8yle8C zYq}0`ceStKZ%0S7{+$8HbgJ6wKZ5>k3>%+W16HB~$5cam$hynf&|NUxhYu+mWneM6 z$GJ7{aR8B{yHcU(@#9{tcn9^Sy6TQ|P%21eIqs#!LwI%y%=ud@lc#L1n-XW+e{|&n zvUPLZF5*>E#{nd(e=-gK`cQ3G?5)lv!8`yiLAscRqoaoB^w^9XbUyxoZ1N^EoNa+B zi!{N8G$njb5|8foyES{+oTL+$X4NJUB8dC+((Wg5fpzyo6m|*nSMC<01oI&o(b2Kw zUid$Puiq@#}~@^4zKXotyi&eSE5aa~piMN$m1BlQUV>9N>tb$cOFW zq6&w1(33Xmq(FY)Q1|(*8pWOLH&+MO+pgA3jEr1|G4jxgKYWgT7KQl++z{o}l@zvB z`o*>hvs-{fOvm27zIy;}^drXP1mWk>5{CYbq8(tMtY&w|F!ZLFgMimfB?UQsGdG^%}^EWu>=0+iB)5*i{6;_vhmd$9Tqm&ExQw9v2 zh+U=9XDBD1rhT|YKB*-iw1xFBt0W{OsB12vKin(R5^=X8PwV7aYRwE=RXhJja{dn0 zHqVmaXU)O9#q`k7J*8k@TJ;cD*X@Do=7pp7SM8a9-+ZcewfRp-`Kdn=-wvD&*%SM> zQy!rP0j{u9%|;Pr$~#C(rfH6PkTJM+i(2(~$+CKx)2A`|9G6&3YbJVDul1PoM7N#} z+0D*Jn`THHLVbcapTC*#@cxY(#~6msn=+d+k0*L&1h4!buHFM4%l`fUKW$36j3k?6 zZ)GH#vd5Kdva@AptL%jAy+;Vy*-1$D4x!BKB4qy#pYQ)W9{;-U`_bc$3)gv`@AvyS zj@Rq;OeSUdC9i>T@ZIm=6;G`I$;(S`msmf=^m84|`4w*W>HMyBiAs5sqPP@{mtnUZ z_MHD~Y1a3-@6j&!zW-W|@AP#1pz;5-Pb=c*W3IItr1}qw ziUMU_`cf#V=G?!sb(IT$t(3y;pPO)aIQU(=no7TbEoO_SQyMcnAy$z^;T3uzHcvN{ z+-5R`KU*`qVo39rc8XP&AIhnx=;~`pB$RO(CmgZTQwe+ygVul|?ff|N2*qr+pAnx% z*icF3)o5}n3A*hN)y_9~#cPB$)`&)|ACtU@S`m%Hv(U`9S{>R6il|+ud z(@sj{bmsAm9^$T!4?J{<>n5~JX1il6x8`b>i}ot=Bp-(G81{e1eiyy|d0}ukt#w~p zLSol&`@O+1>AuL74EenEXHIO3F_!4r@TD$!60GOPbk9Q7OUgAPWMg=5yjc|67Q2&x zD4a_;oJ(|6EhX*c=hE{0&T}VOb+(0&k3{;3k}8mbC=}BC(9^gfar}EZ{@^;t)!R{` z2V&c)e7=IW!UdwqEv)OP4=c!7sO#o83!AQ0?e7ik);~X9 zzjW#z*-nsd!7+N)Jm+(z~eTE18dgr??ICLI1kKYad1kstR z+jG^{BUdgEK6?{b3?C^_ex1Na>aUuEyhqSgwNnV>cipmjXgY0WJ}Z6b{>f+T0xA9nfjCXEntsI7d85qd45QjY;KY7 zyw=$71&R?uluaocLqRy`5+hYEf?G13cfwX(Dea~M3u2in@b#gQ_$t-t1iE>&xEQ>( zKyk1wt6x6NJge^ZFlOuqdV4s6uK$x8 z!I%ijLN|l!A zbfSD$*r-YM1qR%Q&=nVic4&L+hC0VEjpjnH8tC*`0g%t?IM;Go6tW$W^Xnpz1^C6e zto(9jFy@0YxTFSmKy*Izrm^HhN8mm_rd#=LZ&z)fssXLFM!w8f7g$Cx(1r8HD_Zco zKk-n;s2*2{`A}Ap8_fqBU1dVTV|&}{`gIP5uw4VPC2N!=@IAFdbu#SyJWsDCxb06q zAqrjUo~p6U$EJUO@^9hEKn6{4whW9ZuYnd!nVV`tWgtz2)Ht6r9@;Y=5Gzz@Cx787 z_Yh1SLz0!3p{HdCSd_#{5Cl$rPl2quV_z@^MtP`kh0ucN`@VT^KjuwmKBZXxj0ZJF zyWiF>pKSt_{v^bX0WYF?)86rTB;CWnYjWbM_`e?zVF1cF7+$Vj)=PM_>yQ*)<)=Pd z;i7NGu%e@U-$|#8f~Q4eJn2BD-@yo*?71s*Zb+Bs<8bVlgfK2K(Z|)A|8hC}bk@oP zm|nXOd7VEHFSCmxR=kZ6N7xosRmgXQMVj6s`z-zFMHUIR^mLJ3)%vwa@#W9{=U=+Y zPG*U&W(cJ#W@>#Unme6%Z7-K;aYs0!kSm`W`TZ&q`zZ}R){m3TC+Tjh*Cc#g`(mT+ z9eu%y692up7UIxwCbTWSPM9uRi7xxQH|w+87x6QXS}OYVDm0*#lt?_DZ+Xz*pBUX5 zmiRZzbL8Ee!Ch{B)Z~BsuW-aVU9kx5QT|(o-X`%nj+~UnlKK*_N^(ICIz`N4m^g&9 z`kJJ{pp*8tJ!UoZQ##aQl zeX=<)9M?YOyO1ltHm~?bcX&<2Ws6LxeM+*oU*7yZX7*?$x}JF7up9!*SG; zPNM6askN7Y$&20#Gm$P@kEVtE;YsDma%__~>Kb2`x@xKgg;XJ~mXk#$2`hh7Y%&`0mM_+pmuPJ1{JHJ# z5VH`EIyx^d7t(HVO{v-pOTix5^p{r+XwoCts<39GUle!+ho=6(;lqCdS7 zkyVe^lZVOv?!7_OQ%V+P)jPL6JnZ(A42`}kDcQS!+pH7ItdVb93K!|1FM4kfBq`k_ zFUn4QwN6@Vh>g!LaKC-rC=XkLRkUCYQ|yRD&wIps+Y8w?>ZXd8_ALZpOTMVJ zUpF6R3v{K{eqQG~>15>6Qi^U`=zM(s7jN!ci`&Ray}(yrU%!fPakhj?7*jRrShf=W4HmrfPq!biAFiY^egQmWGg-0iJJ85@$oT>N=jbM z)m&JLvajWjD&M(DN*^zcZ<3H_^8-}#L%Ebi%FH9$1U*ZYiS_}{!!nd|M zeQSNa$H@<7g7EaeRKy^2z8Dok{pKNpjR>z4+(M}*ywy_UTY0+!-^F?6?qKG8%oz71W@Gy`eIQ#Uh?4rLK+?|=4I)bBj{>Z9A z>BATFp*dDCHKd^#F!bFU6V05xgixCzKa#(==92%u&6wp}-zy@q5FxO2*mdoP@Wo)E z)&IwBY5Y3QSg}n|t(N1kp} zblr`-`8;KjAP)Vo$q`gfsX~r^@P8p`?%Le>ENo>#>h~ucbhXGp&hp56UJtGK3e{iV z)no=a;*p}|De7b5t zWTjVNuEMwt^CA7aeX_h7TzW;euj)}R>A&Dd=ti{%pdR(TTGol|;AFEP3r22V%~3n= zD&%SX>rC7cWLL)U_$g;&Zf-8j4+v!#0?~SG_QSySU$%5S`aB} zp;*p}wtG&Y|g#|r( zMT4%RUk|wL(r~X!6Dr1=7^Zo;+G@+l~zm9d9_ej~1Vtt9Q`Cx85ieExR zPsW-UsPKtwCER7cfaGf;mkvK07Sm+IX;G_qrG)Jx-IXJ&(ZStnC;e;!E@=Vg%SF%d`b`4 zV$2JalRe;R^!x3?!;M!+qrP90 z%FSDd68F-G`KvF8mm@ZSg|I=s#L=H9f1gF-2L?b>x!~l&ftE3l5nFl5nN$fP$ZqQo z6*aA|@#fve`Qfm=C9#pTU@4mKG&odI_M|;U&}5n+zbK1h^VuIqfB!&4@~iF#S10__ zuUCbY_^lI|V$jIai~WGR_on4N^IMxnwmFJ;F_MD^apf3>kXr#U1)B-eCDjkCn8SAC zs?VlF#Q*Ya`?roaXHXSVJ1w|rr~CJVGUqJvc&n*!sN35}hIxcq%M_O!mCe9#dmLqh zl3eWhX90e1FNi+sSKT*kf>;%oo;X6U7<#vQm=p&L+o%d_5!sC`N}b9 zo9WsG;fxiLNHbk>v)*3uzSPdnPH1kj=Le#eM-n$aI@}hP;f_G}LmU&@W_Duu2m(N9 z=FZQEa#&3>4qE(=>)-@NgBTxSVc9zLQT2O@XL?YFfS&JCJ8w8+zbDwX$mF2PgNf&| z!zlkA(3O&fr13}IDLf>S8l0R=W>SC|D0tsALP0tS<9YUY3Nr{V%+7A3o}NA)R=5S* zrIA?-)1P|-!dD$W{0vs&IlcOU`@@#^>~02Nb06TFIDb}GZ0Eh5@;Nb(kG$(oo-a&!88A?FpuMAN|*kCm|kv7>DH>kS1uOqOck znOC+dg@aMy2yjZOwM+Hfz!P;DNn7)(25YxLna5W`K{iCVuOU$mhFKgzJ-%runR4x z!cf9sU z@4WlrPog1+cv{X+=Z^Y4v}RnQ(z{R2JSJxRRvyoSp&}FHaUktc$>&Ea0za%+;m(`) z6?xMh8~=J)c)VaV5sEMbQdfR_jDb+>TC6=KwXxvmP`$Uh)59Y){lHn4O&WQNjj3mi zSZMUKh2?-o*v|WJ0-d3Ay)&>zTlY5nPdAq4eoeNp#df2N$;VW?s!nNr-XM zARBU(WOI8+YsSebFvzsN9EaBX8xrp~aFw;_sXFq*;u6V+Ja!Gn4ps&`9~V-r03UKr zaycpS%$eC46*exGyNNw_$eqj9gC(KIYTZbSx+EK-@UBD~6JZX04O%-MdQ2n<7kN5k z5F;gCh-^6}YMp>#4{aR=b5!BGB|wB!x1&O4E>UOIHuxUs3-d8qkOox_kr2M0+} zM_6sR>_tmDhEeut$7v}I;~=RN=YFp99j$mgkrhH8+q!@g_CDowLHyTn13?!KX~ z)7;GYv&9o4zwekWPBX##EwUJ#z9TQBUBn~Zol7Zq`amF-$}jc(v`)fsceFoe+k463;mpLTB`%H~^5?+utecc$*bEQf;+3&F^$YtG(hwh=Y&l~f7$p<_DT!zf4J zb$!EBCFJ*tzT^7FW~!Kf8>HYKdwbbW3o>9RzXEM~(xBc;`G-Bj?}PXia8CC6TV)mE zD)^uH|Cqbf$F(VDII_~awmL(A{UP;I&_lIcPad!+|H}mdU}|@m552td-aNkkTa_p^D=d^us1!;+f(EuF`K_ zmN=UvYB?b6)OqQrflvGuS2`3I4=up~JL*K|`e0?|-5{Qm z6&83*w?8aIW}a=N@Dk?o!qi%n-F+*U&i}5d@VWk$(uQ_5%%bgJT4VSA6oM za23s+Xlrku9|x(SFr9K)QJp)0$tmip{7Ijp9?V20GG@%H`5HQ4HCoxtJf}ot8K_}; z36rHdR*(t7;(GriiAf<_{q2qFnVb2p)LjRsAR!yZM}wf_DMfH#G^A#ee-N|y8V4jq zbN(BhI)bV8*4BSMuIn|{YO>2|{QZ?1MIuezqg!Db#CFw6SIfiW0Awk3j&o-q(!_aA zh6!`>;H1b`Xf@w+73)s2nCwA6PtQYhX|h&<#oTZ9h??}uN)kwBUP*{@2| zbp(>82@xoS;DU>`oGkIAzAgb>0yN5#+B#gX$<%-<{Mv2c|7CMGrgC|-%|IqAR$g61|W-;T!=cf zWNmD1FTaqq^_}xQAYkBh009CS0ybs&n>DzNo6%Uy;A$SR^O z%B+$K|Av4nbi>zWZHmH%vu?{HJ#M6I%Unt4eU84z4S;ZoaOn?Ix)r)W1&6E!y3;Qc z+=pKaUQ^NZpE?IUwDe}nW=QY3&T&?Kqe@bWasJGdPW}q|WlR>6W@_0q<1Km5&p(y8 z?o;g?4jv?H+0oyr?2dMXo~hO3)G)T*{p?HyZ>sUK<6n3@-zbD?Vte&feJAk5eKe|8 z7AXjNuBGxz2cWX}Uogpw#JzpHxYUq5t>TWo+OltY*D{ty?6FpXpt*CjyxcTtbFPU& z=k?QR_h7Np+gjEHtFccO3p;4S|1D*4s4GspTaK@qe`iX>Y1>uX-}si`!8vQByce7h zYohhF!eBrFDLDyx8-5IWC>}NfEU9Icw*H25T*@=C>ezjNJBP-o^P*Pnq{nVMkJ^Wob zn$P67T*&LYB$S_+Vi%WH?kz4_gsArGm=v4_Wi&b-KgnMrQrmwyEwTCGFht4Q$nhJG z`$#%= z3X{3`Np_Tt6m>=vR?07Vfg8nW`d9VJ<24u?g7%y5mVXoDzI_r4 zQKq_Dj8w^Y_`WQ8*{3=)*5Jpw)z)!w4nz-q_qqFoxIeq6K#cLP)aTk*ocX{ZGU*kY zbS-wbv-&Q-jZbwim!rAA`_HkzVU_DuVrL`>YP-(IBaL6Q^%63q=-cVF{F$b$rTMkM z2&sVG>?>-JQ=d=zQ(JmY#rx5mtjB=)gi>Cp-0)-e!YUDU64q6Yef`MNu>7z`cO>I5 zEFL`wt|CoK57!CTdBciOCGsdI-8n{4(V9%3q3ky}%cuV|h8S%Wyk_A{U;3ObOLFyI z(v;7juH&9!lzHZ{*}>Fi9@kN~*y?P8j9i2NQDt{+U(b@M%sVPmF3;lTfw}kAE;$&& zq6f_@lM#YKWO3+P`^%-b0#G@Hg%2>9kmUE@NVF6iItmw_f75u!VgEWKXNKuV?ijA?Na!mJU=P0?D`ys4Km%oa(|C8(5kHhX!AyBzp)ng*f zxxV2taQcNsqD%yb=4@fx!$!U-PVQsDX9aA$dE)m{`t1+Kh9I1zsozt?t;;sda;=Uk zvzd4XJZeyzoOk)3bZtAf9KNJGreMhXHs;m^y4qRYC%%V0kHN?Q!iUAgKNrfE!^$3R z?~S6ujJMumf*X6kU~D%)(u5)lmTl!PQ-M!zn60{ctq$j#Q0SF;_uZLr_3(gdge`IbB2}i{ z$v`LS;p%!1%3G=YPs7$=UUnT;I6is>4MQrjo3Xc#h$q}eR&OJLCan1eFrmAsSyT(9 z)^EW`?N7&bu-i)DzbGhRj{VoWdyh2d@4a&V=qSsB!3H@gmb9lY;?%dcX5X8%Uz8x@ zL%3-d`a6Xf(8=hIL&X{Qg8tH0%kkDl0{bhuD@U-M(n|RGK=}(1EjRM2$BQ&=x*}=P zb~_DnhmcmH|D1zkcq6kM1cPE8IocLyo)i`M!Mpgm91Wo>V7*y1C?z!WimaWYvg%v6oR zrd|OJ-fh9xC=$7$`HolD5Qg^vrsvYH4Rsb_k5|3BHwsQ0B{q?jJDy5pa^UOFFJCB(2NB@2f)v=!@ zmkx;IjJ0-fD6{rKK1T49T_0q`=a17iCsSV3!gwTEvRy-t-rqmyV6?We7GE3`^8J@f zSMR+vceZr%`iqW$P>C7WQ&BaE&4bocmF#FLp|V@VIpwX7ZSrk7Yzf|CsJzZ`<3X#C zW5LMslB9-uy|PW79~;skvc9^SAr6jBwE-8ZasQRp*7~zaw}{vUwR=B5`JX1jg9)?p z5b>Lok^=V^Sn0EpEj_e<`U)s!ab$@JZ>6!km5tTihxQewbbk@o=mR5y`i*?ljr zvb4(aXykP6xa0LZC!a4=v#!H8c9(lKr13-Rm7eRrfi#)5yjayryA0X3_JdQi_Nl_7 zS7I6)YF5_HB5o-xAzHP$bIva=%I-D<5@k6r=!cHVz66LMECLvr~QC3O|9P^aVCtczDul`iO5g> zaN4iW{o%J6T0{NoyY3eax7zjA6>t4+`n$8#0|zmZu0Me4KL6-jvUT2th46arEL!v= zB#(W73{&2+A3?QSo*~@ng1!yIgVU4ybLZR6sxiT7B{BSC*_X9~y%W|^{eh}-pTgwH z-pFfkg~d4S%op@s)M|nfb>ak{suwKL?j(;+cq`IImuY-Y8F1*4&(Fq-4f84SZEh1| z-w+6A3TINr8W~LL@5|sflzC_UVL2=$^Vvx@h~mMfJMC=W)Qow~cDC(RshLMBUNl|wOHg~V z(4+ zh4d$j5rJIs@9gP>_nG^F7#ivEaujotqsEEs3;LlaN^*~2HYQiwJSFw^VA$Nkdbu6m^d9TXi%0{ag0- zn?F8OeoG(lL^C7o#Nqs}oYdHv$yhZfAu6%Us0x42R!XHvfK^w zO2+2qS^*3+;Il07_;kJlqL_HojthjESH!kqjlA>9`8Cz7>_Z|LI>Or5xaz9I?Y|S7 z*#r_zVJH->!MHI1$v}_-@*7^%Wqr9XYc$Y$guCgtv}?mn{L1pT+}$@=O#!9=)^|a> zZ@2Dk6TfA@7T;hsUSp#`5rSPSDUD)7X3x58yhDZAW zf_QS7oT03`=jmKZ2t-?+7la*bZ5!clUw(X2E8sYLk93+E_AY;a2{XHSh*h_@ zzj!`nTBNM^NvR}_BeLJDnRFu^xUjbZD;bj$nU z<-VJ?YGsgCdHFgwwU9#^+cAyY8`KMzjGm=SL7!l|D7*c%AEs!&Q`Uv2M-#1rVPn7q zUI5)MRCyPT<_RNjn77iddm2%9#VdALWdYgm3^>WB7a2hpXk1=G(4JFw!R9z~AxqsG z6G9Mke&|2kX=Q$A2Fq7ZFlu;Y#7tKUL^x=0acvf`U?c& zE+;j$fdZ9O?&iP4=U^tyB17Qq|0KpqZ_7*B4qahEp*x*UmCF@fXP}^!rdCT9YlI&4 zBC!iKOXdKN&ifx=*#1qe$DQcddg>m^h)_uQHFaB=`5Zy}Hn#ik!GT()_)N9`n3|t6 z99_VanM{@jW|pSq6x-S3S?DV;F#KqM%z=9Hn+ZZU+#`6zGY86bDljifLNL0Qm+2q8 zBYO|^B{ako*;L4@yjuRecBH89gF4^&-+Twm`(BMtnX9d@uU~!vuVW9|d}v^{9)cz6 z%Uj(G{x2NsVE*~D8EmE(w+)ztaHWhh$S&T;3t89&Vwe>tvIFTLDPN46!lsRL4!QeP;XmXV?4 zI62}K=$t+i&z)`^)QoE|B0m7KJheXxB&fY-)4OWt!Ywf_w1EUD)1{d_gMy&@?|11p z2wax^S1XkgX)4~emRxyjF`pm!6jJIVyHuzTeiA)?3P(FEh4~LB9RrUwH}5i#86fHk zgb0^F!RZh0Ima6liVvF57qU}2>Cld66v46_6K*0m{kk7Fo=t|(dEdi$h3RYBmm-wu zN`ktIWL-meX)us6OoU|f`Fh5)qk1s$YU9(SCT6R%QoD_6=x-T3DTGKkkta2^wcc#=jW{rzOb#Ysa%X6^1qI<0EbH^VhFR z>c|nY3Je4v3wckOVRZ2M=jDRcXq${@^%3^ObL9rdBOLxNW9RojVn_ywBgnPyP7F+R zM_+Eb!jU=X|0pk2Qe4*cOrI9~5tzDNSb*i%QvLt&J+7@G~$2{up@;7~l z=8m4lPrOX4p9s3jt$LSYnZjH-^K;?{-DW&ph#C&ZC6opaeOk&fUtN{(@mc@iTrryT zTsYFsfklCYxzg=Z-tNHp$I}Ce>O+wC1Lv(_c}3!o&qSF6M*|1nntc&mW{IkWwEidE z1R?`91ZD&Q^tas&=+XM*kG>L|{Q9=!*m9KEddoOOYB8VRgrem%aA|5=P4wQr5_SNZ zlJq(f@JlA@-j)pA;kQQ;hYIzDq^zeM2dxL2JpKgL*c9(K-6?bM@jWOh|KpOk6I?<` z+f83-*HJv323Nv<-2{sUc3gdtrcM#ElJ$IQA5X&d=WvITD?X3niG}+=|=b#UK&&iS4Gg*5&4hH#OxkP<=X;X|QS#i!8aXt6a zwOWWGn%7^_HGu}hvN!2ZufY22h3{$ovW0zpBAeAC;Hh_1Nf9hf2qMA9D2*r3edzV; zXNdp#@f@fl(uJLJbVFakU_p(SL@xI>l#lRBhZ9#yGyW2~p{InFB{PKA2ZZ$AUS6GE zv%G{5ef2DwpF5GmPwu5ri;pJ&LnzhqVF;99(U&R&PDQr-2JePAbYYrvc#(z$$=y6O zTTdm#k{ll$fp~NOblcw_W>J!C1D0)0AD!&FD(v;ygpYo;L*&++N-{srR|^JNc+q0U zksH$T)Ljq=6E_U#1evQMOp%NT*SytywKbT}?~tT|v!|!H$P8TPun)k3b{xdx^V~&M z7?17I%;hzs5O}1Z%IggsnV5J|*>P>>1}TOX8m(Brj=3UPBp(yyv-S`!MFt3m!e3pa z&l(9@;ySqAspOBN#bW$Lw=BrMR9~m zq#2Tx+zaPTh%j^kXpavsXr3-)IQMVFF@-G&f3IzKo>a`2#J8CSPe>a~kIkmtp}?z0 z3k*V>2jP=muQXy}X?ZR{0=eYo*V#`e$;UovV{#yTL9Y-4jVIT;jmG2$QCXjFh{g@O zGLu5S(ELEMsP;olL=%fpxa@XOMqgSY3ca?C7XT*Hb|QWD{D_<{E(XLbJ&~eLYfUfR z9e5nzyC3ib?*`YV?V%@ZDjlQEp#>$HCVerCULy$ePcBPD+b zuGpD+xF==XLD6Fgl)fT^m+6XKVPQfx2$GHjgh{f)e{ogtnWV65MV;pVEic~>5MviJ zx|zzxdGD8s%hlvoaHM>Q=>^>obV!nwnKzW}rfcm?r`=NuF0SA&6QvCB>Ehk)p z4&P*}5z}u>*wm~3Hhs&@T(>s1KvZ=4>Rt2wYubL^Gq08|=AQ%NwO5g6+LiOgL6}P-17t)+MSCtYtjShN`E(S2Qt+OR0MWIz2zsw^2 zciCK4`VE`Ri|nU2H>V-fl$QEGA`;6rvaJ`+$YAZv(2SVH)`|b|H}Jk~&cFeual0)9 zT+D*4C0NMqr^vrAUFXgD`4)$%a|wNxG7N?T?$p4+q3;~xbq?niC=pVKh%XqOSBete z`F%4|?{vT|qQVo8?yl`PVb1f12}~v^Y@BIgN|=5h@7HBG516U#ySu%Hz6wlN-q77% zzD#%&k2WzF(i5#s?GySNucQ=pZyp+4`weao2(Y&wvekT@`f9}4I^Jw6h@nX%4QJt5 z?F|nUcmBhGElU=J+*M%gF%2WrTh|mENGBwojGa4+d_ZeNdU+`?WzJ_OIX0z<^-^_K znOwY9AWF&}p_f%l6I5dUQ+YGW&!;a11`EDjwOkU1f1*Yv?dlD1>5T-v*Q}p#1AcSr zoi5DtFXE4OPfSGi(>z^3=u88hkou+ZX~+!~EM;<=0l70obIcTGxO;)KYCWGLJ{&z< z`GN6LXm~6fff)v~K@En&NARTM!Z9Rmbz1#yB37lOpTJ66wewcBHupj8%@o!JTOmK& zST%9{7a(C^3evOv52NdTJFj_K`^OwsOQz)Ip^s^AG@lH+u~6vV{d_;E;}W6{!T=W| zc6`hbCyL(-zib?B6Cdx=4NZA>DM8%qfYVF*r&+J~wAiFvTwHRjz!INbkApC>%?pqB zl1t6l&8XTSV=Uv6G50x*xuQ>JUcrZm$|a&U_y_Ds_xx%?mc&a#FUvK^jX#8w_@_+_E|o=8EQu` zcw-`DpROXmOcr23Y_N(KP#ZkiLdUtEX%?|*OpDyUB`Ul!<1|&tNstkTUaz*F<_k5g z5Vp2yX>1gI&=bKYuL!|wJ>bsIqZD4b`*YQ`;d`A}y6QtpW(7vM6cmY`Ao4kdfWhuk z99sJkK7(e6Vo_Wobn2YmQJ5tFV;!luVJ5909mp9DGlk*yo`i@Y;YT38l9ZMNWql+ zM20-$$3!TVx||w(<|^MAjQop?yvmabF=Ypw%K*uNbny8>$ZTESoxThH2d0EL{@=L< z+}GupeIt^;vLFbvRxulrqch$e28MqRk#ZoRi9jYa+CA@9Im?G3C%5wn$hHFG71-*YHPvJ1_Ob z=-}*ZhLUF>Dj%Zu9*h9qS8dJ((sC96))^MK;<@y7A23eZ8+L+Jac2FV{zaqEKG6N6 zf}<~uk5^Pfa0!bc1l z$}qD`+YjsBdd)i%13&DNtn%YbKOzB=2Gb5(!GHL!e7=EOE{Qgd=$7T}Owt1J>B~5h zUiakDn#Y@Nr9mk?3brcvCF?GyaydAVJgj!3gzgFQ=(yT%oVD9n^){MDnhDX-1F!s5 zgxC#3Qe73=^%w}QH;Eh>g4{+Bbz0CJdw)=AKhPo$S^5h>=Ap25xE7`(Kl65cNPzL?Z@ensHahaFQ5@&}Q67KM-~2 z>67a5K*iXZOtfOL2MBR>-QHy*C?|BI5}z9qU~>uK9zrXs9U(thbB%Kl6e%FbmN5b# zONR`bFv3CaGB64VBc+6mp#A@v@7M`JBwqw#=zk@{L8LHjc7LvIXk!MLao#ftOp@ih zJp_TJiW7TnCyuzdI9M7F^wMLM-oB>1WNdt!kK71NfYgp7AK{*CLy!;V2&$q@SLk5` z>XW9r#~R#6+Zf0#VTrZQNG;8i$M#iM~s8kzI?D#Am=- z$ihYRd~^7?INpj?v0iyOfa8;Rrs-|^{iri|qHlNa{f6|O8u{20*6J1folcX16Jc*I z*(a3)NPw>F-BAsJB)r1fX^gg>=yz0465cS6IWHx-@B6&wP+TI$78#suTpe)FynKHm zzjw~%Sj3d*;P>w%vp$B-oz{qgt66-+QmD^K?|dyjxK~W`cxM$!JQaFPD6~*+ZsqMc z;?1cQME@mpBmG3!EQb<!iJ0*rtp9p2lR-SHZc8;2VszYM-l z5is4+;>AGJUmp2XJxZCWK@dTDZk)HB_ijPdvP$aSnv#vyM$8ljR*DK~SbU9p#9l(X zHv6NAs~i1n67Rhx-c4H|V~X5ke_pU6@8i3S zi$upQ$J&(-ky%-R_SP`Q(!YSo8}B=LXb8(PL$sfCyJmC!(M;>h(;MID z5Xsdxqt};;FAzU$PrL8^FBk)~>TTkK3lv6fcxc1FA6iJX#;%L^UN&;eO?_tlNKXb& zsO`&x*Y1WgC%?@H4l>r5~kKDX|2vv0{+vy!0mFduC|-=$tN#lB3MseWJ-ew=b9zNsNHM@VTM3*0xhR>2d>W{YL zY1iYW+emp+C4OE1^h~D8ef(6^oOEM2vim_n@3-4)J{ghUK4qBQR?MAy(?IRgcx^F4 zD+rN7<>5A52G!>O{BxD?{?m#Q2DU5id-~f0Cap8a#q06H?d7KQv{Tf1WW{&v_p|LoZqqW#SpLSw>#Ld(j-ByWqInz4x>&GsEB!bRt4U&0&UEqVQFHg|l{l5FX;{vBDXi#UEkeTx`RXU<*Upi`|FlAk&=cuu}2Nhy?En4MH>k4yy1{~UFloR z_41f#ROd!-82$Pg&6g=b#afyiW1{?ISj+JFwOFZ~b{&=*bICr^7CbE~XZX-%ZFs+= z%+SAy)+Dv~{G-9QGA`{07&te_GKcBm9H(ciP5MynsgD2ss_w=<2a&wm9~hM_7{Kzu z{Qv*-5z%xHCRVy`kS{$v{)2hSz}Gk9?n1A~t0-EoXy@|2Pprs02o6x^X196bB5LlA zS@m7fE+Ayr-A`j6o*>?d+w3tAu&JvHX<^rUbRk<3@D{v3x>7)mTQsm*V0!@`+SkAE z9Q^NF?ri+=!STm;Yjd&hkmH2JodlwF9&UM{m56-IZaiEa6Q7=)qk~(?)3fQFfnB5H zm3Y9DQse({1)|sg++vF#16nKF9~4zqJa)#!2}eZx$Wl~7A-3Tx(y!hSc7j*O35^|&@^ z5bYOZiEmGuqmIHZ7$-MF#x{)gFapM3O4H~bWUMxu5v_`U72OZFF}py3alftmz1(G3 zd+~$fp)Bu~uQ3VU)Y~(hc;uOZ7hzLM$`FqZj2Pef-FI9Nx;{7(({}des6VFRwBnc0 z3wlSg(28(3%ko*=7~e-e-sOg~7_B(*OoVe1N=pk7fPDd;(mI2 zh#yk6j>4r}14POHJ_&$6`-qZ=M4^Hic-ixNE$;FW~!%*A?m=LcXbb5BY z@@%GSuo0DC7_G+S@I`I}9a*209XiD@y$Qn&$e_h|>G@)vk0W{X%axc3gSK2eZLKS= zTARb|r+!Wp(4H?*g4|jTW$)wTeYcCu*XZWpip?umJa^6190yvqE`TzXiEI#(ExE4f z17t2>mK+e;jPpV?TuSFmbD0ArC8Q%ez;2rS&01Dk{EY_ACFGn zhs(Su8KSvTUtr1cCdDek_=0QE5-pibTX|-sEfyKaAAS??p=2xh-}$}b4$2vBYW^I~ zwF9n_XYR{As|(=MW5N>ANRI#faT~seB*rDd1{m&BSP__zTo{r`G->gcA3 zhJ`OiF9DkVGYwj+avCvAwf5c_b>+u!R+xQY%LQlYP92CnQQTaog}eVhpXdDJxnG)Z z7+TS`G_I2K6(4hcUYt$oOL{;M!8AK=hht28uD# zOga>ZCXC2a!|S*iM{qG_q80NINk#AraB*na)7)xs`|tO|Q^APEi&_pr-qLYOxJ{%NDub#WGswQI10+hW599`fDx8-m6!m z&Zeh!9aU!zWU&zWOT5PVUfx~?6JrscMRB1yHZG8+%@g?4aKdfoRK!j7^z?>b`Te7_ z?Y`ZwChmTmNsh0+zg&OYnqxSi(^_{p`c41jG5`WUKB*H(NK7i+9CO)R;&?H!XmB%= z_{np))d{P|d6IdrU!yxFiTzWZpMMK-l>c_>tvlBn6logMbFeSpyB|GqC0V)CyaOn! zCKR|*??HfC>IUK1GBQ{UpAURb!<)MQ=XUrunug?hVj1CiQNw}A1|kR!j$b!fNpf%MldkoK!|9Lv3z#Tyt@B$NsNR91IZHkC|{hsCO6!cif*p+ zdYY-hD7ajgC50dujb$$}5vCf9fTFg!cZUYh))JIG7I;S28-Mlt>$a9hqHiA=ni1|_ zy-xt4Un7<7V=24{0%7xS+UBO@FTHr?rR0wsZ-=})G_0DU zK`0T;)(R3%Bul1+%gv*4tC4Hnfogj9mdaQw<|Es#thWeK{Law5{9MVEx)AE}u1L&Q zk#r!TFFDt%f3cseIX%Ycshn*74Pwtu~yq%tkPpH!dVQ%8Coz7;C!dJSy#M8 zlyz3#*`!8+ATurm#?4&CDOe)k{9_PAqhN>vktEV%!XZS+;%fv_950s(J#Rk?9b+{* z7`h<9MNg#tbP*9q6ucxW5I(kEUNSl$f)_cNPD8bS7=8Hj2WP*X&@Qz;Ci2;mUoNY* z<8NOCW+Xy!*KE$4J=^exIQtcy?S_gBCd9ae0x`XtG&5|+r_G+ty?!eUk+d!x_ZNtz zo)V|=akQ-WdQSxR!h5%u{%5}9BA&j|;+04vy10dC@5*>0mw$Wb@4ld@{hG;vG3C8hshcC; zCd9mGOwU4D^Oxs*j}v2b>#Pt$ev&b^Z= zsXClf##S|%Bp%`tgN<-XKLf>(CfMr{?W^NY7JI9qt+?vRYX>pDeAk^ z!)XB>I_2Z(1{@(VMk(9DFBlbxEy{wdqya-l8Srb!$b3BNp> zc``&zPT~j_3JsiknnlxJ)VBlv?C-Nbztyrcm<6sRdAEju;m%$rSS=H;&yFz`&HKrejaO7mB@7q?w`K*UAcFZX0i_$H`#t>Mwfw|F(3xk>xnu8Z!^zO@kqVtsGfFa$ zzKUYP3YSdrF1iw@9FT)xjxZt2P6)wx?7t2*LSa94ip^K#s0laCrVSVDAPL$V$H`|TWn;(Jr!8BvgaylL&aCms1+@v${_u_tN-G^5H$8;?oM|24NhTK4SKk%2X*lozYIq53@uh!*(ocO zOvz4`lJsah6I}$sqiQ6kk9qLjBHSWOcT=8^zg;PK5}#x*WA_+hWORg6VJ^%HRbLnF zMxs8be3QfJIBKaUq(uv8Wnm=3RcBF5-u14yXT>SXkcKSUw8mu&LDq%ghvV1CXwy%+ zVCJEZqU1DE^>^y71x1fk!evf*KEm$$smZ3l=8r-%iW(R>poz^1Ty3WHG8uW4U z*7DY(rn-T&5}j}!MiydH91I+3zkFF$dZPG3bc8H^SxvJBLN1Jkjh~WI zhyOJeKEiS8twsC4KK3%LsuAIrw%&}q@ z>nN?tJ*MvnpU-Pvj{x&?8)=VtZ*|j3qI@w$WBTj&?`z=FAW{@s0|{rgHD}4+6JAAQ zp!S~jeB;4?zZfkz&%=Y(a{~ZQGWn`QUd)N%viXLmUJiKuwIHbtju~pq)1#xSo7>wl z-~kwj7m)6JV}Z`NlZTpYHhH(CW)GItgWoRO(tSAFa>Mp0cn z-w{IClh~-rQZyFQt#Dn(WnRXY8wKU^K&dy{abrl4?(cSQ03-_LO1 zAb3;iM$q60JgZVH$x#)04el358-SZ?!<87$ObjRqjnvA85#4_u2Ke0^ZwyC^t)FdG zb@(6c|KTTi`Gs}OD<({W(b|o?uF}GkJJDf~Hy4dR7z!Rqt#?*H;xw1EByWa7%cK#_ zz0|C(03Uiy*+9E)y)~n)s>sT{^7MjdDK<*ZxzZ|L#fmXS1V9_Lx-x>+|Ry{xnHcREb99YU;5rQEiAaI*Zro?L$^uz_=|7A zQ{*+P>Ppfk2UC2)kyntW*Ehf9(75j-twSLaCys!ho|%M>Kh9V2en~qe`86{F@3tWn zO~FOZcKV6v1+4=6m%W?0h7Xk>)e1LKk!`H!DJ8MQZO55gni zq{^Q@m+{H*t!o}h_}vq@sZw>hu%tWwvAI_^PwxbSoEDD#vcGJ71ATR4gV`oA2XXkB z0Mw~9sJEFPJC0rJkRtZedo5ze`#ok9JWm_!MLY(qetxKuo(|Q@_Bl&i+5`MT^!~Vy z%r!}Z=hL+^WmHEBc7thf^q@{e>t{Qi3xMLiINiJLJNi=D_D`W}BZWApPJNt@oy?7j z{8bSbp42+cPMYZJ?Kyu#=bH;TUG$xIRP0u4$Etkl_HPoLXMP^hkS7Ney zFFARx1Q92ugH^aSZ$VR|j{{CPS&G~2oTTHxZ*T16?n5$`P+Wuz9|7lq-r319;tLc!bng;twv=dmTCvJe!9Hq&jkT|z(MIYeb_y)B(HjzNOXCsiI z-{Acl=-E$zIZPz=2PBnwNDHejnr*CzLbfd8furk=LOAfLPQdPjNJ_yqRISuXhmSJ4 zcPR?Z2tR3;{tZ=Z@6y4UfT5Z~{%En?oG}8>6%E`bHNSkm_-!&e|F-zo;2L$W>JM0^ zi_$oKe3;#waAX;Y6u|g^1!}ow*&DP@AnG;HY*?Z!mAXrR^k`c1N-z3U6b?T+BfrI# z_;IbFp^*s``AI+ka335W{TE;Q`0zi#^Q_V>Q+0c>0#0#5 z|MO_q=lZIusw||aU2n7_1nvodOfLBKqIZrJzUnypi>HvQMYFcWG<(dZ%-fR$eWG7- z9HQ<8uJ~5~Q{ARm)T)9h1^smzYT3h%usGs>68^ulr|--Hq;QymPL!14tSH02&)scG zfDifk9ez&TQ+(+z9>wt}8G1>$@9$$yaJ2QEiAMxP#O7O3n&Lyg3*=IcLrUX(N>5?$ z=LO>eTm?Y<&XQ2LjMR9&>vOwLKhql?0*_tUmN$KT^FhzUQ-GiS4XzGAjk&%&y#+T+ zrP%Fv{127Yk!y8LqE|;<*i?GbEmrB#8n}NP{}3y<=&@kOJ2-7% zE$3#=<~^`HS^^i6YWFdT%W<`a5^9R~T+pz35WcHOuGp#XCeYV6*8zD~rS7vso~>sR z8>ea#Ee_jAhsW`A{>l-$!!L=UPUkY8)aMcFU1|quG~qH~Uw*q!Q;T=(#Dd`l|715k zO|zlR9t83ha>rf`94p{K;ELjr8h?@x(=wr$~khUI^=WJnP2*<@u55q`CSR) zl4_SPG}!*qZ14J+aKPO4g4t+J!)H#frW*~+GhL)$4?3lbUcDw_8n|3R+axA}tjmS|W0Or#5ZM3aJ2-P$?#7WI2{d@lR#R&-t;REGy0*j>tygxF6U6=#*& zOj1b5$i?WnykKe;|8)b?p^l2{dK%6px1Av~6O?QHpGg$2jPJrU2MOwmWAD?wl27i< z$8}-o5RBhPV_*>S_LL~qjzxzorO*S1K=PT!QHs?QC=g=LmPBjaPrpiNrSE*RI@Bl} zKGtToWg87cgFa(HM#s6gr4AaR`QLW0=b1^Nv?w%aXNjh-@LszE)jON-4_q+3Te9WP zZHXaRxXHMKTcGA}SU{(8-QCC3;p;+O@W07(p(x&7CxmHw5mVxi($dm*Pf8|qZ$25> z`uSz`HBRzzW(-!oZ4Gh}1KxqwJ(Len)bs*f81MvvC2>#eLnT%qf&0r|)uv{ct?{LG zJ3scb-wBhHJaZx|StM!?l%F#1;OLH-cEJu8px(>htLio(g8m)|Ny$4|8~C5EfQT6` ze7fx6Z2#3y+#Of{fbj_gKX8x%4MWURqt3vmKqU_JezQPg3?La%422VJS@1CrW1Bg= zK;E^shC;JH-(Ccc#L-EE8?!O8$Hrlp#XWpXxrPIe&M}kwnfvveRG}Ik9ZO+U4K0jM zssG)wxSdB$`CL8L`G;vuT2WAu zRjBb9%300_wC>%7-m*726`M8)sv{_WeR-aG9R77g0N z&xXzG03MmpAE5X>+})oHXFPY?1hTcJ-bd0b=p%fE1ziZ!C{|Hw79Xu-a21d9w!#+`iC?dn*ryz91I~gTKcN^7dwiPV`CX~$cL5O${nKCri4;D`Th*ud zUI?VNLKH7JjYCV$QQ5=pHc2Vp^%^6wjEL5?Ic~Pqg|P!k81A2$o9U%9;%gxCkJ?mk zU%;ipWzbEdU<6$%6)HJG+GLi$;8MPa+~mL8kFL(tzvIDit>M9^<*(4r z8F;a8uRxV4CR*`D5e?GA6~}jEeEX^Lnd2T2cRRAyNBVS(DMOavVNal(BR(TB{ATCT zaR=001)}WeQq}sjXFy*CNFJ>*g1$#*uejTfl9pn*NO2LS`q!Es$6 z9FUhCP55tyZEV6%GAw9B0k74sgj;v6Vge)HdamNz)6!r#hJ>X|AV=GhdjyujG$`b(q@ zL1YN%n^>E?(!cq-IS}xW+J9G>1i7=8E%Fp-s5^OikW9zCSCbMfe zl{b+L=%NfQf47V4#zP=T+E!`C;~hFAG?w%6C1#--K12(Ll009Yz1pEhL+D zO=Jk?kQX8p$Xr!B?p!E{y$Ks_g&)sO{T5FBpyut`eysac-e2#fdOu=O|7`GPNC5f5 zklUNwP{YPDojJJrF2Hc*(2LH9Jo2fqUh{0Xbxe^}&K9&NLwrw*E0N4dv52rgJonz>}92J zDFD)rl_ZcTE-85#?=&%76*>GKuJ%$hVyQ^%5~U1lx%!eS3cd&Aj`Lq#~y z=QTj#OG(T9ID9tARvl>!Z){b&4d_AI-M`@8I5BKYyi#ud|8WZ0wypWHmw}nt3OODb zz!GIsnBE1KBx@N^V4}TIryoi#v}Gh7<=b%(D{vR8J@zx%b;MrTgo)P8Qtuu<=oy$d zxqY-d@TcfCAxcKMm;PXTWuLM+^tnSrjP50cB7WTFlf< z0qi3M4z(WkczGGCce^I~AJj^H)m-(p3Y5BdlIEJczi8S}Sbvp*NirJIaaMkcLU)Xk z;fR02z{}ihPf3Sv@`?7-3#hqzBxblto1@1hrLS=Fnwc{8C1#wyRrAAnKL;*yQkCNk z3q#e>Kqtmw6=B{;2s02Gl@1DY4wCLf2i6{(fx+Uh@8nsazlfJnjBJu8_C&+RI~B2F zr?0<2Bl}^wtyWN)OE6=g%4!1w#s5fu0|*v zP$~T@FglnzPTGgB1ze0;@#%LTq1syK{l%}qyNxR)TBM#MplN}_M3Kb3;kI`XawRxz zs6!IFrz*aCAl^|(B1wyB70Bm19HV`a*dgko=Vm)xvtU1GvigsUdDSAD^UlGBeSclh zQKF*<*=JLQw7t1fM&MD5+A>R(yI3pGGZK+f5xsjT|0<+IV2ji+`{0E2@y^rY4o!7^ zeZ#xSS!GS5`MVe0Gr-vPbCka!|MHaPx!=WBVM?ksNJ_&*58C&|CJEDGoD#G{JbBmj z+k@u0^XWmEmhD*HR$Rko@SbAHUh4Kjz)2^j2 zxnQ_T)KnfHj8}DZ=N3GdDu7kI281qEB9S$ylcYq{;aKE2u)C3m0%&{s#+(=ZTQjNo zi;S{O>rLie(UOV^45+EzP2_BZ;h5hI!{gx-;K2an$ZXobKP!z9@$v;;heaOqzDrZO z_V&e9cIA&|wMA=dayJ`w9efXWQW^gtjIh$s%p}k<-L_Ir$|%OF%>U~&R=4nPyY~*3 z>vMpEz4tbww5)vBa9U--;Xen5)-SJ^BfKMA%+o{PS}N7)EqZ_6xpKQW0o963tWWND^hy^W&y@Fl8fEk}a53CIkOWaYpN& ztlQ>Cv4r;~M_YzBwT(z`Bfl>7Skc{sf=5cFM2hg;Cy$9YQffg=fOkEz(%({Z((iP> zpW>cXVC7Ri%B{b(E$`iZk9G$Ry5#r;qQsBF_8u^Vyie{Wj#RtZ&~b6|rbF`0Z4a8qZ>Q5=EqhPjI6iYi3}LmPbHC?9X*aqLhlcur8{nDAW?l$& zXC$c?YlkrPyQkhy@*hhx6HTcN>7dRNpDLf*-=-t|yFv#I8gTW3M6BS_y+{(|`~Rlr z0ca@0p?E_}YaIOFa~msBtI6bs26es-T8xwmIAJani4u%(^ntOO)GYxC#B=?6$FEhO zMD6g$pe(Ziue^1c&F*a%O?JSaw@TanAN5~7@>^f&>^3&Jda3p6 zKX&D1?O@%v>U)NU_EN%~qF(*6wfm0kTY<^|>vv|yxu!i8I&}g@BHv|Vb*YSFs?)dL zU{^Ghi>CHxyN-FVJp>2AlfQ@Eks(PiH--soo5Sox zcYG4Js5Eq?UG5CYJ9))=&k-%tw1<~HcIWQJ=0+(PJTNWypq8tcrgH2=8x}v+6Uz=b z0tP^kmy+p!0bCVsQ=nx8&|TU5s2bPjg9sZdtCwHKH8qo!lypfijV#W5-hA~5(9}yC zJ6GvL!=L@$Nmw zmmXwsI|lHlRY5RC+e)Lk;=@mqMWdrl+C;__z}^QMeS3yI6a@boVKmbbmNT&twW=w;XrsTEs3N+kgSE(%U(WrUPv^7j-lpteroneF z)6F>FRxkcN9L6rq0v|#Hx4}uEp8q5dOyl((PIX|m8gs(=CKxP&*A(?HB}B!_1oVH#?DXM+y7>e>QKWm;VAX(sfc z?;!RR@TR2){{sO9r_uSb3XH@ch3~L!Xz29|cAK9d4FSv}fX!PEnQzxxme#R{x@6vN z(bCkM1PF#~@6D1+z}Eo6bi@{N7b(UZ40i_Bwf9AnlhfiS%aKdHv2M6xrURIguo@1X z>bEa*RA6q&xk=miX#IN9_AbMNSKNGB^z8MXJi`16h8<3SV!5K2iAOCbn(W*>{Ep^* zXa>`wl@2YY^_;-^i!tGiSoXAQ`IdM1W=Py$MG*BT?sFX?*kn69=5u@Z*2jtqUoWe_ zKL0)F;V{0aASny3%-k9fqtOoxE5HaI^+=S`)E3c+V*b)#;6w$f4CHhie(pvrp^yo} zEymQnH5~n8M?kS3Ez2YybpT9hgwIz*q6W2xb2repZ{`=r(4{8T!y%vsPgI&&UukaGy2H_J1;6%aP2AuZF%xZsRRYcq~_ueF7N=Vy#e=Xoy%xgNiTCJwv{M%!CaV18KSD{lK<0^wuKlfwGb2dwTy; z`~_vPa~Y*Ccd)u>*|+Op{aI;y3Jg)7eJ(!rKJqDVD7mV05$!wPHRy{5M^(VtbpL-XQsot9cQ9&WWdIy?rD{Yo=|Pn7S^|fyL&xC|V7@E!DZvf^*@g-@|3L6#c%G@}=jqAG?q^ly~HvyyBk`Y%MpYn-{8C4o`ax%Uo>`T6P zL3;~(UN3v;Sc{aq`m3`3_ww{yIOcl9r6keLtj(mvl7{Y4?>B@q$hik1)9_Y{jWI~b z5)e3;uvfvauCh?KW{7kG%1gSj0p)G1GEW|;R>%5aopo^gyCZd?HW6E8+ z8#+)Yr8Yt9-)ZR%p>uS-IJEcsb;D$Ut4x?$rSn!*za_UsDOM(&wEba1vxT}o(P@G+ zBYIG<#NYnCphEW<&=`LW`HIFu$kMBZ{aTV3bK*%3@(J@d#J&Buy?qVY1}=kc!y+g6 zj@{l)SxsDQTuG9mq?LQgmP#$J^>Jv{@1OxENL2NAWfy$6m2?>eT0TGcuR zKOMYN$T28v<-vzyb3~Z@Lag=A3vj-z2ApJ#zxMH2<%pq$wP#Y2m{?KNtG*La5!F_qqtt@sUqaqQQfN6zb z>A|E^WW6_}ReqMI@*i55B6D$ZF;pI8EdVSi&S zB318Xre$z#k))*3%h|bO*XSc6RU53c%Y+@Z_OcUC6F(y7%;&CI!Jo)vErrwMy_Jci~3!R*Cn%}YZx9$|TUOjpu zi{;OM!(zG(mC-?DCR8R-FersIPM2lq({a!~MrZYH(uZeQ!uxzN0#yb9lT6}XN3n#> zuML!CAX-=b#TxTm9>sG{~xsi!>9Vg{bqQf_S6E$5CPGVn z`sZlqdcS`lLwSjD)U^K{Y*kR}V-DaX5*8O%csNtLH;&iWQ|zJKI&(h`WQoUG6~H~; z6F<$8qU=twGQ!NfKCTfr@ZUXcBn@^@!O=ihLTIFxdjT_ORmaUr2Wt5lmy77?IXx`M zi7b=@KLo^BHkQ{S*@z=gRs{clk}e&m_Om{+*Y-ou*G`sAtN6Ye_w?o3{EeW6E9=CT zkH4;GXg*gPQe)|!HSWKxic=hR4aLntmqP!ON~0d}fvS06j6o3#Bb49?zYIjyb|`kA z?j1V(PZ(NqXf7|At-Y1M&6J2NQ~0Kh_;tCPI?4J>YOY)y0XeeB#?vZzFR!0v+iwiH*uEAz+edp4F7$UNLtyHQdfh7b zL;iytv%$B9ktA90ED6S7c}weDNerr=$|9}{=j3{b@btHg|1f!ElZX?sD{QnxJ#R6T zMNT|ZcUm*o;~7(B3VHAzE7M>6iZu@(S&3?i$^WTN%b`M8csG+|$;ZCk52G#Auo28* zA%=w*3xSQyXujP4fHYt`%hj?>{3C5osH*K>AHcVPEXFnfJu4XB0J&c*q<;^Z;q=N3~=6M2`Qiu10s0E-g`P0_i={839j$_6{#@p>72+U$;hZHJVUl$$<0wlme> z-t+*J18Y{f1E(aJn7mC$0*<*^Rk^j>GAz~y*VhCjg%yotMP}AQfNxU>)}B;gRbXj= ztt{8pVd>YH+=Gldr9a+pC?9+IlGR7Kbh=IU!7JFPTf2jOy7Bs*W;~~MMsZw2=NW2m z&-MpHYX9WqBx`HtU4dOS{^b%S?mSVv@Y`n(-0L8Avj)UcHlCbJ&wFoyV&I{u_tAYk zBB@N*qfu@^t7Zq_HcwXJQxI6B( zl$FN;03NbZhfsL!XdK9-^r7anfBg$!BI_##+QU26&V4E&xDfUb4QMQ8>nvWeGQ_Ky zIuC)8%ky%l2|I`<@rPtrX#3H>rvTy%LdI;Y?e7Az^KW24%TYCc#VnrZ$rQp<> zG^H$%A-a;J{#>}VFxXSXAN*pFw~Z<+ECg&>fJg*);{w>!V+`k~p8&%C^$K@@s&{a^ z)MMfD*b8=3TTrco!s$MQj}X0>7r(aZj(7m9*?_U#4?@BAz$&q-ZB!Gr+-@ZU^LOiWDO++md7-CPYS zDV^(~tX#(1yg*3fb2J07^Ry7X}Stq$V{8p(?S`AS;6tc4*c{YRtt884G`V^)c%(c zWb~d>uQ?9Bek`no-^cVS#c@bA6fyZ;6>z=fVKMk~WMbL71(e`-fqZ@JRRyH~yewvWX#g{Fp_apq z+$ahxC=ACjY2Se)UYqGk&5sL?M63`L;QvxaQe!Km?}T&N8PK*m16d0}V0j`j8#_C{ zQU#M`UHB?rJgmzRFd=}hkHa*_N(T|j zHZKfv<~jhSA;cuNvGHVT;o4r><&fNF%GTP>&f5B--|)tHmC&EZYK$>h#l_`t+K-_B zP7-NUJnK^xX~Rc(ETXJ5X8?!|_wfE{Pb&-W)YD00&AI2;zPnYGXAOyi?oJ)>Z%bo_ zCIM!p$b3VgaoA0tbp;#%JP;;Y4?@VW-ZDNxg*LeO2M=9AMTOmugkz~t5cdtz*U3$R zHQO@XeC{NQ;;G&=5W?R@@Bl(IfMCzf%>gVkK&^QJ3Jg1T&t#ca00?=DxWR{{!oo=& zzhPt`?E>H=!0vw#F4IW&jE$fbd4HMauPBY60Y} zuFeH~2nj__X6}N4W{f{}FF8Rf)(H`WH_2{~{`aDpTy;s;QL1<^U=c~N4MwPyZh60W z(GB(*^#4OU6D6TSS`>m|dVM?fv;E&p6qGaP`bE!%VyloDSMj8@Y3dqKq*^|1R0=(}mW zNzFRxKZmx9KA$=<*NE=yo4?awg7iko&knV26(;ldhy7!yd}|}Lp)3Q!gXD__XgTWL zJ3+8T_1}C#05@_P!h_Lq5@&;j`=14o)il$Xms*99FQ)IO!JkmXKJTVaU@@2d*14lO ze4F6&YO%iJ?VmV>;E_OoH&P6#ghL*q&9C7~PvtohA@KX4s%z3G44 z&))hRL{x5VQ8GES9}m4Cx0^W~>8Y%weUX%n2cO+~9U_@Rm8wv}t?kH> z5fewt(92QtHW=y;o}#=+*Bnm)n5dKPV}ZIVF??g*pSfN>=3d=tr9Q+qkaB%Actsb-PW%T97WurV~>aGCU`?a}w{) z*Is=K)XX)qE9HJ8{O-zuq+0uDwW*on>LZ3H~#zW z*W3P?0G7KHb2$V)H)8IwHz87A4@G*NHf>5BPzRw5sKe_>Zq$qdBg0E+Qo5|y5xe|C zEG*Bz4m8b==8b;&9B`2H;l7$%Sw#hnsCW6^^KcoHvG465>S~7MwNPbV9{pnsar~AX zDQi;?8a^;It2=K5&#MAujmN@;GcQM5~4_@jZgDc#qKbez5awx_O4=z569-kTC!9nT`t5jOf2d2{ft# zk49ddCiXeyFSnv?QeAq!Fs2LM7vUxz<;+?>Y?1jTwBFgC%AG#^tnKDR?xWulk9~6* zPxfYz%yn?9^^jr)#?+F~e@4Lzy4CAGn5Foem#A2?PHlpz6mC7+wOY*Ok(zw9V}7)n zNc$Su^Rg@eoY^@C$+Ng40?)L&!R|RK9P=)_*y^H&Vy9N0^5C5bTvY z>sfj{zZd_$ASj-xF8x&B)V?oy_}_=qV^KWFWPn8K`&(?fcQ<2Zc&Vf!&-JQGe+K-u z{1!2=H^$?=vGN74`#xkhCJ7?Wm(|r2$Tx&idT1|BA9{`tSEliK&xBZHOTTbj^NXcA zigqBRw0Cz$e%=Ri(r?OZrZ}WuxdZ%n1eL`!$Lqr$tYmJ92yMrKXHmF9n?uK3(Q)Eb zb=Jd{_5X!G0T_Kxi2@mn;MjqrleTk@K9gk+W_!)~IlS!Wp?p}B<*o+Y(GSf-;u&Wi zqaXisau*#cp4Gp{^dHx1esX&9yu;X|S7e;wJQm&C9+7fN5Jdelm@fS{LV7)1Ii)3y zUY*d71{w^w{jitSo?5WzSg^%MffXG00FS(t0t%#ClAG3?{@F+#+Y18S1AF`#LU+WD ztGk9kO#!Y*K$rd*LSLwn?|L=k>;EW6GGnRfKgSR5m3;dFW)SPdM|bc{o;HcW9mFr zYwU+_4BtL;;m*3qdg@AD+hUT58LxeH<`CesnfsBFh)pIeUKWQI9N4H{Md`hl-#7^m z?p75zh9R-z9xq>TJ`j%SdUh(JOr%y?Ru*tvX6Uzn&eu=}(Ymx{aH3fm5W=b%Eb&Hy%qXkC1d#}T=DmseP5m7Z73^6YvnsmWq>PH<$0 zG!k;0ix#|V11c(XUsz0tmAAI0257L5-sRr!`K}44X8G)55Q;6HKk7;2eH8j91Axi% z@wh;wabN4+(2<{be3%@4JSsCM>$4&pBuKGZ6oQf91N;#_PRi)gI5&X|O{Z`f`aei} zutZV2HIABX)UTJGYc%D33bq+hz;;di4EPPTIqYYujV(S_6c=0C*=cg%4u0xSz@^(?U)OWtUo8Nn{#m?V>oUDW9O%PKe&*(g^BzU|v zjR>Wp;{&kN;Sbb3BsaH~XIn@V7|bUyXD_8~94!rtfszjU0!0(sTUJ&^VfuM3n(EoV z`tjEo5be9syccXCD&rtRk+2K=od>_9UbLA2Aoq`Vda!tfLXbcV^wY)&5@toA?dt1- z;1stl@V*0SwD)nEdl>a+p+q_v6vRT0NjSFaqfuKqQC{>?6%! zVC@cCDoZ|V1TfG6o$-M^TnhA?+@|<&-1mzh18XI7&3T^dB6n;RRC4w-m|t^0K1!EQ z@_ar*lGeB4yvdSY)KXbSc`^=aQqQ5@5{(Eopl~4vV`BN2a=blY5A{52$h?k(IVy|a zX7%QBZ}!)(Xx>JpZO$NN%X!SobMtxtdb>#dx0ILYZhCm5Y+ zZwvu~7Bk!b!iu>|b6d3=AMgjo!JD!82MFH9jH_@EOCZyuv5}0bH&yLK?Y{W+k@|fq zwCA7|%U8u0_00rG#%Y6qYrrZuieg1Zv(46)gT)4DBY_174dOWgKZXqVUZD$VsIkZ= z5#Tc7HM;K$nkevL*{T96o<304cDkYQ%!6!5K)a=nmqr*a1XuqgvkzdW-8SRk!b zvJ_764e~@;@}&>2#R~lm1KNWg0yG^RG7fDOjwj=MrZw7#&`*kBq7Pbx)4gm(9ngXv zh$s{M7jaW!ul69H>tW8F3&M~hy{JSkA-zX8#cb~6PQhS*Z4RCNQ1(xFEe*$vmk;Kh z5+=F1%sor6#;pO56E+%;5m;7a3k&N9E6`h7_dM}Av4zqE?0)9ZNkgOHwQ+ZMS5rt< zs-Se96wBEHkU_P2C4LvIz&jYNR>y@VPiX@HnXZ11tx(N8i3+z)Z0%|g0P+aVX%eez!TwCWCRZ~Uuyq7$s9h> zWS+PPFU#~32Qx|CJ00rfB8@?>>LyQn6^#^3fmMp-Qxx7;n4}a>)K{knu+F#|jpfp7 z{2K|9=yVlu)VOpTw|xMv5^U`_b?S@j>PYAcn45)#<1T2M=J=vaQZ|H7t>5ef?dsD?=Y6I`(uvWyCxyTJ?3&+Cr|4eOT$xZhqlt)&cR=?XLnG&Kl- zTYH)u<+ABPe-MVNG?2x=^{4j{IgEWJM4Jzd_#+C|Ha2(mp3wZ)X{YFxxFMGImo$oW zK3DTkaGtr-NZO^XDUa*3T6T+oD;zmmo@43Pe9@aao!_W8WFRPT&+{#J!9k~dAqUAv z+MuV8NbBBy_Zn?1De5*cM<8duKNFn(Ir^D%xr@h@>T&XGNCL#0n)?_i5!KPBlht6- zHE2F4aaD?aGSs-fzO7g|UL(`CKC`L+-|02rFDf&=S5+YB0zvAZ*Iq0U_15_y@p?Pa zcqJ6gsBhQvUcJ5i+Q z(m8nHrKL9U13C~bF}c3u;5^BxrL8;;nfX(FFcL~m-bk}@5nbIpm}YY1A$Pmcx~8$wuHU}L z7ym;Ins|B=5q#VhTMLUGCy@vz4q{1>w&gq;6UDTha_u@O8xtDPzpJWx6hsiOdXY4G$Hi(o(GXg$q z@wH5si<9A^!3s)#aB_@+45J4wS-!VDH?xZO6$#{`^43*^Ki_S;0DChmuB0 zb@<_`EJCA}jAWB4kwH2VI%+yEC{uqVeU7pUFCL$)JTz)zDTTRkOxJo2wZ5f6bXK=N zCO|wxaxP7SG|Rl%##c<%HrBuw8GRfbv$T%fz4Xsj`ERYQFCu-uWO7#g=AdRlY(DC{ z?KJDmBe_nWqiSZwGzgfshDFcO89EzZlQIP+Y2z|Vk(<1^ms@F!{C#g16Z($lc@yAv zbo+56pE8FQ0yb_nR@Okuh0O>REljuF&8j(zLk1i~oRwwJ9@b}@P0IfqC;l@&=6Awe zY&4rLcQAh+B7z^@!=LZfUCY_;BEcZ%e>nG;#!pcrPtT&aHGAOD78{2Z2TP%r(=K~3 z!y)JmNtw{{2rHOpSNjn{z+Xvcq{^HB{5duP)ibW~u`4_9+u5`4*{vng6D=_<+wFNlwB)8H%#L{Sp1JnPEzit)6 z9UzvZ$EuqT=pOsZiChr-^Ig@ncjW^QBOm#hVt&@Am^kbQ2l4|sOCR}U(V+eJ!>OKV zO*J3gXMu_~thd(sYiJhM_R2GF(WkmP;yU{;Pxi;<43u3__@yGFZFDq&tD> zRgN6S>%nQfEY3aD4e_F9f%PKMg4q2RL3t8gfAV52&R;;8BHQ~*>KGToq=?hz{pc{F zh`5)-QECgv_h%decwR0puX3dAy?V`ShE|8Krk<>}(s47N$vyR;p?H%>U@eDYhMsf;F-*0kbKU)jmshQ9HP?L5U#t2_jrVs?x*LnQTijUqI+%?Q7%xU>`r zJh0?kdY+@P0ozC}qc+Ds-F=pZGG9@IJD#qKXBf_r&uy2`NKyE~Mi%)nFQi;}yuxacdi zfEqb8G!$Io#m6^VfHj+LQ#sr0luv8}etqeR&kKph-as@A+z`l=DqK6gsC(%EB*}K0 z@Zg(*1%4DS5hkd0eyknZ+0EZ)KjhvVm`j5m8nTLT1!3TLu{=9@Q_2JNaa zRegQx*j})#(9qJLLRJn=XXyoI8~k(N|JV`5!5F z`XpnJkpu^>A+YH9GQLq+nVIw?>$Pyq60*{S_yMlFl2V&C2QD2*4tV-Wv7m?Bo23VcP~;adH3Wk3n}hwIk1+ZVaCePgL)~3 zgiVyzjnxNFWBK0kJ=1dVNCWV$w#HQh5TblzG$I1D?R*@`B(>i7m?f4xkg_0vZ#szN z2d#oj<(Bu8Pf^__J3IOjB$#S!Re8Xb1FVzkCFEdIyxFze<-V}W=i>t_m$gl_=E$^8GsNZq;4{)s;+Lv5=1*OGQtD4 z6B5CTNI(z12NjZr!oek_(~f*0tplP%)<^UGI+g)la>F&_Ad|*5@^*Jmz3Jx`Mj8aW{Q8z2QT58ZqCq{XgMpSdHzz=l@XCcrfs+EhR8fXG&`- z4JNT(iwyUh*L9mXt@I_MhL@b4TaM5+FjxNil_Zj>wlc8d3@9fl5bbxc+e!YeT%*05 z$v!QhJ`HvX^PsWynk;RIh$RWl-5fjjePsG;OCX1j8MV9h_O9AolN_WXJ&e~O+uH`8 zQEY1LoV>qa-C%2N1uV6rmKxE8!VkQDJ<~?86+Wf=4jy?d!bjynWKzw(=gv`RrrTbR z;I*JZf=2l4Is?(LA9>PB6~jpZK7fHg@hhUA2h9Gq1hJln0DTznh!vk}F0g{P?9J0P zS{PL?#WUxEgrSm>5-<~w%%eVL(=7e3aPJb->y*4En6N)<&Y*hU7Pf!_i;9Yr#R-EB z!H)s&4J8(f*xuz{2OwPDEno7tXqk#74VWlc&QJ?8GqB7LNkHTGW=UX;iY060u!r{= zK*xcI#%=4TU-l(x&&z--wXC=p^hWgJg}{@{Cbp`T$ijAq253Ea;8u50Ssk1k8>hj_ znE7$EI3!N7kQgBi_hfU|*VJ@69PDUWNdfO@nO`rFRJl$I5?LyX8;GiWXgCiyGBcEc zO>&N(=t-cHu#iPI+Aa7^Q*)#C^=QZGG=6#X?=j=k4EoU^@Tj<{m3!KEo2Sh;Lid_E zjWrEuiVqO~l;{It|53`uy|xgYUfurQzPa0W7L3W2#=(Br<3m&K=rxh5O6|5;{B&m=$Ay1E zFiJy=kjr}|h!aMO|CNu@=0jeInz(?gKbM4JMq^d}PJ@qK#PK6yg1|Z~TsHd62Ui(aqWh$OI%Q@) z;R@qnk>Xp9HtSZ{aE=WcK@_oC}ub>1|g1z*W^d)|iSe^diD_R`t(Z*KtQ*?4xF10>?yjP)2D)*C8 zy$S9oARx!jap)_-JijO(*zvw(#eyftGd_S0a@vWTY4|24=*xxe*I$L>GgypdN`Cxq z#&jx?7Gj&T6|82I=JO3(GIXc0HBbqm10-srKhyt&*PF_?A#uNtDOUP*Zx%L*kI&*S zv29^bO&^sFxba^!)+$OkZxz{R8erGj&3{GwjA{^|u=0p|#aftj5mL{5xfNwX_{-KD zEOM~^kEF85?w#mhSWL zosl2@0C8s59cx{y)cjL$PxjqQWGsRZbOc#H2Wi2a>=6MtdP6zw>}v)(e1t;-Co66) zEOr_?nw;qpjI-|_!?*uFp(4h%`4`p;Fzh7AMtILpmOOSs?#>rB=N*SYfr6fA#F5Gf zZ`w|IR^Q*AFGGLUCA)7mh!u=arw5&LUv;#Jz-Pv7f*Mjf~*?Ex&o6AGV_Rg-n^R&{M2_RS4%?KIZT@G zQp@e;zva8^`P@*g2!Thund-m@%abB{F62=-T|0JLy98M~pRyklgxbn+$@Jc-yEr+~ z?5(~_ZJl@J52<`1TD=98C?^`B4zlpK+yz^R1@h*S%NoV3SPcni1aX}2B}a+FJo$8D z6rms#8qVdfWK_li#hC9g-s2Y$6dh{m@Cp1z327ju<$sR_>tvADK`Qdc;@!rJ#ww{T ze)6gvGJ26fk!y%IaM?%=dzbAs2+zk-M?{dJMf!<1DL9S*eTVkcH`Iw?gs|MzC}~5w zT8Ei-=qsIGr!1{@u1<+Ue#Ani}dlWuZ1t6zf48z#2!-FjBlpI zr~L-Az&bN*75jIagY%M~$=~P3H)zg#p7lL_hM=6neV%rLg=EBzy7}%C;Vk?g1NO<6 zvf$zu@$cFkR+@lUW~;K-r?XU{cei*Km3QK-LhQECq^h<+a%J#-xgCTPuYASo%wbP>}z))_?z5ZaU+#~#p+(nrXT-w z-p!*U{dknIAVCn!j4Yto&;)yKFXi4~(fxkimE;3l*I{(!Q#2pV+jML`rLq9ZShrGU zH*F;=IW)JPTpYv?WL=dxHcF?g`!t65++kn;g29^&4Es`2{z5~I?<3E4bmBvkFBTN$lb4@WFJ|7|R&!E#EIUkYX9ueDdE$~; z?++%6gCmCFeSR59jz2p1zC8Bfz+y?!J_F|p%q#cZsrcKUDh1}ennyLz+v!D@-%t4b znp`=n67ndWGuo}Q)+s=Mb}qZWnC*WlUSiW+s&KH^+xJ@uo5kyE+$oNm)TA%zi5A>R zJ7k;e^;e>1eil6U`NsF=S57c@srSEfMVw55t!RVWqi@O8eC>TY{ng$Z z(1%9ZK`vOlL!hO|DRZJuaT$An7I?lV9C7OO`e(dntNF9{$bQJ!qzwYd2-$BSp6^?X zsL*!q=W_77m6%Mrjg8LVP8D9HUI1^*}ia@!-v&H`u z)fD*N3dynL^^)%_yNx%{(cmk{MYv$-$Ykc)o89(2z~ejZjyoeF!zU+dQ*{Z##fs*PZ8u#ugWT* zCq%=!jejlELf>!KVjebq?>7hem(&)N(2lP*Gr^ng7C90R0Wzp`0S9T;FSB1b#yEB> zo-+GD0+R6z?snz%pY!=0iEj^kjB0Bz`Y8+c$T1^D& z+2XwfY#!L-f%xr$ztv#^NDk`Vj*Vf6T>0YYumJx(bNH^!r?F4zo-fg8F;EONnW$pa z-_A~7c$+R}|Ml^Rh*tyhfpxd*82zR6fD_|NW=0z1tX+7guj}(>HQ_O5y@v0}`TuEa zCn=@SNGmE1r0`ksVuR79mDMizD`a@OHJX7+L_`EiHIkDSAber}ud0hTTZjF_^W^Rb z5*{eD8wjD^NY?5zK`=>p$T1MLQMoPqkLRb`gLyfJK`R9sf&xpSjke_j7_nCrLhWvA zAh1!ZY?o1J_NJ(+956De|VVatK zdK5XX@iDwMpaGqn#FNbO>`W>927CE37z20k~`SXFe1Bv;R&9&c@)30j+^(MS0xVyazk;*oA%Auxu$B_H`gkGEFUm>#)VhAL@CBG%F zpz*Q#Cl+1^nml4vL0OQI1$vMv%p-$IMA=Vul*{S%&Fh!W-;EHL{&k#+-EIkw_h_W> zjjr6WF?sD?o)G)AqQt)AHy&{pdniiv`%+6hb+D+;=11k5xo^T^aPUAF%fy?GH@mje z&43$ABMn1CTygjF;$)Zp%stilfj*v~Pw^Q89}6EM2MP%~B|7DM>3%enPXPq@c=*}+ z44!Yr5#nvx@$tX#Mruq%u&FZ2xi#cq-L4l+6-l#|#a)p7g1uFWW{va8q*4JWOS>ol-k z-B5=Mf|30iBTJ;orpZo7Oh|;J{5ryh5yaJE^F%8&J{H1K65{3kQNE8WX;p_~*)Q8~S&ZqE<- z+}28mU*C-q?BcF89f>Py5Q=I3RBe5ZncAGqx(-D;uVIM24!O&xERuTh%l2|F&>atb za%}o7|DgWde6XL!Ikl*5JT)<%gAHK)(i{hUPv5XAzZ`UKtN+%Zxk(q5I}!@96*H>E z8^5Z|ZHF;eqIM_k3FGjdm&}-r(Zuf3JX}4k*4{#tBn#oaHNHz>w9-XGoyNKD3977N zdXnf!&}B@6)ImutiIbHI!TtOt7>Kg^sE8@>LJPkIw%E?L23Fcj#|~Wie>yQ>no z`&?4tzPD}WucnD4~ zjsK9=rZR1>2D`<4&GlR-a=6*~{H*C%rP>6QgkRFC3PZJd4BBmsYjG+Q1~o4uf-Y4>q+`yhK6zAG?7zoy2DV)CV%4B3Ay z1g#T zj0V&Ltrw64}nm*=RE%qzuU}lManbe@JeWmapq~fD%m?4 z3IF%)c@TITCe~{`gKGViCcXNu3(hmv7n%2`Pse%l5-N4}&ZhN+A8t=T4dANt03Nx( z7`tov*F6J&=@?A!Hov&Tv#^+v zag)UuO$sE4>2>WmRKXBdh>=w&%6%mpMdp094)WUh?pFL!jVpoTQ4*}??fV#$tSvUe zJs>!nI}HQ{U8ist*(X;es#7QQV}Wh65=KwZ;bCM!2={BI&%ptoEv!IB++s;ZYcX;v zkX`N+^_mT5+yRsUP%#^KhG2u4eYM$ecuG@0xi*oCYZs2IINBN0J)k@W#gcWg4}jn& zR!%+B3g&N&jKYjTDue$j5H`zqi!mu9y1DKzS~%}z3I>RR)zPv;=H(fx9`0`(mmw}7 zIQF8_fdhfEndl`qJ~_8>&~=?Z5~}QAA@Za8-RwE-)-?!w$CSx@^#`mVSXmXm*|L6N zCBy(e58!!C74>f1#mL$HQd9Frw4vsKUB9`$sAwBZM3oungv$!csX=rq4KmYT@Zp=3 z{@4+6+)z?RqWKFFt0TH&^ZgHREdSsJh)=69 z?O>9e#A(oKyU+-tkq?H>NqH8dWpk9Qg_oAoc!tM$_d)h>EWS7hK)!Qk$+M9Xq4EVP zGMl+XHJ>%|rNUxKD68k8_36z3xt(sUrKYE=V!rU_?ICNipZqnoFKTK5rfdeN=M`tT zuw3VC`13r})zuw=X|}em4yaki|7RWvwMYRcRx5a@gO{`3;lY8Hy2Se1Gv|w>$2TZz8Gd zv|pqG_hcget1uV6=O#)Dukd=G6J`eniCuL5x0&gf2y16-y!@A$?!4G78}v8aht9(I zCs=C4_rWEBLyolwlFZvAdAStU!ybf^4KqgLW~L-=VynQU!`?xV``Hfp1st1%sA9pz z6{Hk8d(XB*UWOfE54*gZ%F-P|Li@fE(D%blSE%b?qEnIrRZrInm&*^CWvq`do(3NC zHSr(fQu&N$t-Q1%qCa9tb5h?HmY0&3Qo^UWaDR0v{%?3ujM7is}KePK&g@WDfu&A zElCZxkQ(yq`a7T-vzUz|j&?wTxgg(FDL*m6z!ie8{degJ>qjeYTkdFZ?KRkrYV z5d9h*5s;QM3fa*#$aX#cwsR#iW_<3IGT!k=HjrnFbCFyLwQrNcjh56mqr}`C8muA7 zCE!SJ`xSV9=1H|!@iX!>O$>IK(Xzxha#rzDgCFc$za(FroR@HJT9}R&3SMnlsG{Ss zC=Jm})PE{jd*4$sTx-X&^=p22+2jLNxbrntyNn0j==m-x9VLrU;D1xFVNmt4_TgG6@z;BN|@qN7=OT z9Ju_vc47JIX}^q@gXC?i9hNET-#<&`XD z(X&+F`|))C+tX8CV`%lWAoWmc6HQVL9v$=*f5EwxH=4G=ne7qC`iC|MhCm1Yj6mic zCRhkkyihm-nq(fb35Nt^l*LV>^GzPL6B9hbbMUOz!?Dr6r)(N#n`A4FFmCOT(-lTz zp$3Z*2^u-^?5CnqB_Kk7n*Rkp<#&E>BcXq7_zhdjTHeDDn`ksh$~dZt@zXv|yRb0v zU_U=!FJsF6*nBCH_^%0qH$PTij5UTLV=(`1IG9hYd$^87S2eTMr}*Jz5| zjyst!E~KSEY3H8=K52jK5e6&k4K6ta9fTM>qBz+jg;kbL3BLMUN-9zJA77_0j<(~a(P-`CNtWV7@$Fxy!G#(uyZdjk(iI{`Pq zD$6?BHEX1^)q=zv!OeV&N4;Ev`fEVOh?8FREXeffAvM#`)C@L~M^i;`9OuGkOb3Ggi}ff|;DPm6f^~pZ#)syn+laa8r@*lHZM7c>A91OsWNx2ln@2 z1hn%ipCPj6={C7MgA51AM7`=Q=>S|9+ZBZBTHwG{$}R<-J$n}UWedqW>GtHR8AOZ9 zGsMXQI+QaQIsN#-oSnJojUR^GQxA+wwKkJLpSkz@P!=uQT%aGln+t283ae8k-~l|N zE%Ej}mu?=}m#C6%wJjh}xz##CA51Tm1D%BS-SuJi162T6#~I*lz$sYaw|0S_2sf zJ6KurR%^Y2O%TPwhnghRmQXca;HL&Ork?(r4n4#`cZjKnrLdhQ=%_nwDl!l1B`d4G z@@f*`ym~gUn)W~Zz3G2fUKx&55#2#B|6MAejRnO%io&J|;8aM8R~U6&9giD|qDS<8aCrji-845md=6vqs!kXmyp~8$TF)}g&3zJUx_twnJtWw9? z+`N7(CjyuV-f0P8!-vy_0qAI~x^M9?Iq6#g>SfEMFOJZ7>8Z$?&%3nuF z2`x{9-Veq#RR0%kO zw)Iu)-}hnAkMQs!^#ZcSnbFZo^U<84p&=qREeI+rA?LHySX$8-)CBE^ID+{2`I4`% zB;Z$P_PvLjSR$(D6w)_#HUh}$$NxzP1P}#2(R}3wB%1c0!I;`*AN^umn3Ui`PW(h{ zYK~Nq$A2nKG|>U$e|wAB$%zm+2*AsA3azo6BtixVw{?e{^}4GrM24LgfM!3hz#TAQ z(m=iWRSnXqx6eMj*?FU2ecJY?tqRg!!-2|$VFcS#|V??wb5xw4k zn|ulQlh?6K{uo6@l6Z@Mer#`(WLWJoLtnK_EcbpPAX9`(qgBF;7a}bIyo0K_06m+u zw)twF`fa0)tVDeM{&=BZA@mZtj_2a1aKwxEXnudZFS6-naZtJ@)Z%i!99S1WJL|Hg zKhGLbHg%ouiTd>Ww3o zFVU9B8}5N|!SG;sHBX6X_p=FDh{&UPqZM#JB1WDvS2Bw+hj1f7I6|oYNd8E9&%a#? zh<1n~z=F^MXvAR&r^2z227blX966C^57PQ^1?M9=t4*qXoW*B%jN3ENAbVj|mgmA2@U$dU_4yp~1-4!cHH90$yRUhV6XH zyWJO65uM+0nc@Yuqx^A;$jWq!idV8tDO%G7ksW75PoS=EX(;|Uzj+&y(SB_Ccq%`K zXqZc{E(6^iMbSi_Qbh&(9Hyj$8y4=(c?a3rh@OjZwAlBM{fyjO% zxeRGd9t)*KWp038{$!itKRP$64r-qt=YVy?8|M=@3@$bd`O zo|4@^uxDl9a55iQ`fuPuvhAV<%|~T*OUFngu}9uwWKqx2l_Y;9f7k*@9L0ih?}y2} zKa3FLRUYh{N`o`39IxC#T7XWJNE9VD;1`wZE9d-B1Y^eX}XAH`o{1ScYbJE_=%n(bBj;XsQ z`j238k^so90;~vM)Y#}(Sr$#G)_qpLQ$L?UCPs`HR31E*#@N-;E|-TXKV_?5ka)KZd{ zXEHd8{q9A@QkDDNhVpJ5uZ{KG*hH1Py5nw7o&kGlSZx7Lutsu8b$&_WoLFq{sbg z9uldJ{Z0tk>z0b3)X*FG#cyBV`*=ac+8>PGg=tPl`h9PI%lnV#e9SnDILNOdM;;Y{ z(1bq4n2+GcmMTiKU5}e%W7f+$MW6AJ*I`lW+Ni|Pcc{K9P?}U33^r%@H@Ft_MoUL$ z({a(~+n?38i!s!8gq+FV^m8OG2|z)D6NnO{v*X`TI?>2MI;D%>KMdw$Z_f&Jj*Lxa zzpeQc@%9>9+@2~WpDIimJm48*Dc*}D+k013758gOdPb@$jBkhb6IL5*Wq)PV2>Gq~ z;`vV0_U-}a<9e!%@}6ZVBi~}w{6|TN6;OhDMpEAV9)IImn=W7QMrRm@H6!=~8774X)$P?(XoxOPAJNMQ!XK(0%7gox5y$y`Q1fjZE` znO8#vP{rRQKMzK%FTZ&d($4*N9w)*nT{sRQ<<2FJD@^A!vbSC32jL^$(; zP2B?I=P)%o+5z7^V~v0LOkca@22{=x%Ybub z2B?J}Jv}{bY=X;ogAw_$q`Dsv#L=>+e*L>@wn*`PLwP->HnBoDZsRHX8Xf`)OA0PS zs1j>x@~lAYuBfKQ`34cpxDMMM?)j`zoY)>Yq>n%_9ridxmls4^2M1sn$);6W4_tp* zWpDFx?u_6}pZly|yjyDXg@*u#7y1)FYZri--62-x-v(R8XQf7^u1-IIZ|XCU6l-He zEY5^kq$nnpHv+#FfTo$kL#mjoY?^X%Bm<$Q}h;rGD(AkY$CeSF9c6$L(~ZQdx^ZXbO&6Y86p6QC$d_9J}d8xe*biY<84SUTE|s zi~$mz%?;QjO!LwpKW3C<6r`9&Q3|`TnI)b8WGmw;I>zZ^+XyUafi$79zwqQJjQ;zM zjq43cNF-DoWN73pM(n=6WdT=eTOeBD06^3glQ)fCCMDNn_w&ZdS2pz8e$7A>%clujhrVb(=4NY-IPbeSj=Wz#-^_GHMy9C>a zy+E~WMr{%-zlJ09FXS)En@^vL&HoUjXQc4>W2CKjRvkw#_q^x*7CAEdhIx=8+HDs6 zIVaiz)u4&G!rz+}f;YG8B;fw!cYkN#wi3KPkc5hWiAeke2Xo=k;R}xC-Qrc-;B^W? z^?BNhv*MH2wp^VZS`6zR*}PH~&jaEtA}Po1P74*%|2!GY-t(`^Td==l6u6h&PS~IsM(x709{fZql5XULa?*~iy!84^YDg6-0X@8FNFPf zcAYJc`pF-|iPZpw5xl-v3F{(^rok{jSfvfM2_*wx)K{Q450yTZ?D&kvL#sI#@E)z6 z5aAc>m4EJ^#ixp$DIt6eu@X`IOK!XMYp*X?a5>-BSSs_=%8XCcY;8ugUhW?rcsWja z!h*QjKJJam@hlaN;2<8oZ7HOo&d4|57jZ%r=jMW=*n3aD&2;Rcdye4?aaYMVf=9 zO0=ZaDyVQG0}=a?=3^nC8IZJ&)n^5$cYF~JjQGa!B$oDzk=;bP<)7zD!w%2F!wj=% zB_MIK#O-TQ!%}NR=6JED9gK9|%DsS8AFp$X&YcjZvA}00%YNo<9xwkR5k3mN%k;K5 z_{{0`XCK$PkIy#9e<4hQ@kOjq1wN)M;;;Dgs4ksVaT=b)dFc{4YR?ZTHJW`x!W>QS z&u(}Sdui2L+ZxwrVn~F;5UlpUY6}V!Qh5w*n@JZEuMa*u(Z9M!_|$gM+Z*oxw`(FS z8aV~vy+6MeTB#Ucx_BANwA!2LwA$`bosA(RB;;ZCY|hH8kVqW*dcPV0+|0iilXR<$ zyD^lFqf?$`ex}GN zdUj&Pkt(>RM@f*bl0Gs_;(fkFk4xz`@>g5m8*evcAJvvQ=L;WgZ#gH#+~a}F8;FD- z4q+%V$2n;dQ}Jwlt&GaGTc> zm(Vu+NPc^7T$K!8b&Oq@eexNZj0@ALl))qcy6%_ixWcP>oBF>}Q3`Y1~6(g6z!PVzPfUZe&R}zT<5tr(7JtWF4UaWoz40%dUE!D{DDe}8#UV%rop3SjIuFsdA!SvzW+*vY=x3_zZU#_!9?lY ztjwou?Qz=5W>khv!Z2I1AZ#XOWD{H=7m@3!faoo6>zTex4`xfGADpVMP7XZq^-s43d z&mIYIop)<$4`#NtbFqh+wj<3s+O?h~0`e9m7d-#ba(~1%f~Hksm57J#t@Tmk@ln^m z)ghMmZCd~b0{QL6U7;(}x{ed7a$wV^9~66j?xH-NFyC`7JLmf}HzAFC>0-L{zmr8z zo-eC=djP#QoH3Y(0zq(EWM)`eAeKK&=JqkK4X_$MFxJD67js{I)+*CIm^qLk(J!P( zL;wM*5Y2xKWb0`r%EHTjNE|JvV|_RKyYBk5hamINjV^9rooojzy$tv*V_tHAydzAG z#;J4hin7MrpP00#w8Xoggqs>MnII%ClTM}a=Ci4HK*xG;(`x!3{5?DbO?8VP;m zIhp#ox$|86g?{<2nu5(7m4Nw34>mcK`{jxpl@I*;te8@P`iv4WgumSbqL-@k^PhN_ zOtg4W_*sByFDMD$@;5sk0-5OzFvA?uuSnCYjt^WRe*cmN%y^GDah+c!OGU20-k0ks>2H|-xhk2C2s(px1>16p^G!XWBf&@}IG+xNwnp~At zikdl30}RhmNH`n6Vsdac{mXx6m+sQz@a$Q4$8nn;>UubkU7pWcadvY3^I3HGn{1Xr z`WHn7gW2J?`{ur|*YXH0U*j(Lp3iSY-9ckDy!3#)+5GL>8t~6utqgO>1*w2I6`BN0 zS}4%g;*kytj!}RY|G@jboe;|&corqW%lN+B_YcOm zJ*r*$IMl(rHaR)8K@5HUxQskkyUFfEn4Ql#heDfBSVSu9V$FJHTifz-de-B>q9FaI z1qNkR?Rc7{RZg!jfhLGcZu$&xh);fx4|}Z^C5bGh^LcKR&hW&o)(88OhT&u1)ap&P zaif8Ytegvr+eksy>=VfZa8n-Tt_ehMx+kKzps}i!9A>l(c>u`U;Cm={4>UZ$KQ1{! zPI*VN_}urY2kxMt_WUba>CqZck;dHi^nve`@c^T9Qo`|VUe@;@@4E>U@rRe|e7aoX z(I5U>5;+fAy4~O}>Wa2g>z0Y1d!~U+Az#&ui5Yd#E;nHWAu z)A_>zKLqS+_xJaKdtw4yJ!=@R(Xr8uBK?gJBxzRS6*)+GJ}3e10&_R~<`I&D!lwB2 zaTIPqX&GNMb#OE0pFLdFdU%5vL=@Fn{*K)eG$rE@tzO8%P&kn!EC^4s88_2(_D5ib zyOGObMR>zfQyYdr6r6jtJ4v*rwGtahhz_jKoEk_1cBWec>`+N9>A zM@MmI04NQ>TNai6R31MSu>h8PH@_66Az)NOhZG8*ajlMvq6iq3tg*G}fQ}m1pCK{5 zpE{R%RlRVv_U3AF;bP&Xo4L(M1F0L{QxlcnHO?f0h9pkZTSjt}C!3r4B0F21>f3Jc zYqgJG7;1L;xnpEk&yaef;P0Vd*0$YarqK{J-f#4cywbvWoPe$XDQ;@x?@kM>!~i?m zQqt0Lbwxsbh8UZbYnGsZW{A#skwevz%~``OnP>`DABrrv0)|Tlx2q)BQBfM>Mfpf7 zvB;3K>n4L_Sa>+kgMsHJmD!Bu(L@#NEy5uI39SCVd6=YH3{GQ{Pq%q4cZjV%W%uhFL zHeBeR^fq2h6_ppi))bR>t!ndiS`q@P_VYzEaBlo}Q#aLkwNHJy{ASvU=t=&sk0A+v zP|Z!38MWI^%a?8ze0>Le{jg~I7+mA3ncp<92?n}0-}Ksf9-{sXR~mD&Z7owSu2-Em zFSRNKI?-+87`k=)K>=??d`eVDR5@EY!Wn6vQF0*Imx&W+R8jSgJ60&m;NdibN;kh# z8KYFvWx-S+p3(1_9U4!d(!=kf7HYBdXoZ^Z{D#KHKo;UKDr&nkcH|D)6H>%(5x zigupEZ_Ypd`j2sll8LQc8#AAc=Hm)Z^5;pN#pQ6*ZO(_iec#iY%vo+d#+QWMKXr(x zktJdoP~o3#)tILp^*?s6gN%SVFNm_c+pygWhc%?VV!~>0fB(~kE3RwOCmAM~=y^oj z=}p^lsxm3_XHs@Q{Yz}2`IY!Uzx~a$6HnixqRh+V3yS$R9V7e2bJ-Lu)VqU14lCyH z9OiIL&gP@qIa~Ut^v`$g39%~@u||t**|5L@Am(;VPK-fwHTgFWsiW7%6>O?)fCS+eR*f>Cb>d?`%qxd96!t(celdE<+G857e%~6G$1KS&uaJ%jw!#^@v ze6EPJ`OS7hNM!40G3^>x_?l`vK2A^*lP0w@em8$eP-^vFZdWuo2b#in4{K>B!vmP( z){~I|3f~ZZoiHTnuRjyBUjuhmpFzH9@wiD=|EKBgj)I06Ojyp0N66wS?f0Fdn4C=> z7Y7UFP6$~u<{AZ6+PXqWDVVX5R)z}ZF>Kl>Wd)w3Tvr_rm(>9I`LG*ZJ#-`zChM=3 zMF@ZL%iobH2o?={J@VCV@W66V3701-xN$Ey>2@>o&TxDU3l??00E;bnYe~h**j{#b ziRycu_-<+4p71v>d5zJ8Tp7iXwF_%Rca>%rvn4s|ayuoG7cb>n%Fj9k^))wrM2Z>P zI=utS_4=w8!gb1xLt`KL$#9rgsXqls`8SK}Lmqw^8?ug_Uy<$2TMO#Hrlc<2*y$f? zlV&0C8a`RND=sNyz{f}Li`|D;QF3~&FKUrvh!g&_m?{UXSK+t*JH1R%RvCW{Bl{iq zv4v-%Npx>pGaJ^vcn&)Y`oRNs0u2JCyYHfrPx4cj?jqXGQ?=WS-{iCx=FA?w9mki> zT`k=R?i{8i7at7h(lub(_b0ZZQlGct-Hcys`S%+2$_pJKDv5J7j+@V z>o0xgWkcptgGs)AT~tNZxj&h{-r1U z=NGR;>Bt}}U8=!qvZM;1;gy{_7z5QfjnEiN)o=4bJy&qtNesLkQu15$D^z9xf%OWY z#qPn#?omzf2vHvP+NciffFR47S#m(24bp^r`%`^GC83WV9@jQ@4cm>o<#X=c0|K9d zgK>ybxu2x!sBVG{-_2N3>nWzMw;1HL&Sv1gkgBgn2fi;Z_bb#?m!O({m}~Rq-><${=WGLm@Qb|}o;Gii zNIr@8$*k0@ui~qRGu($g7ah+gwSCXtP}Kug2SVk7ZQI4CC7*60?cWAxdS@OlFRtth zS>oe_GH_5KXwvcwY%x&leaome!9bk;%{IO&;b_LBrL!J7?xx7_3Hv~?5p&+{xqTs@ zpPHkiBPuRc^K~%^2NnW!ojwFM8y~_EB`{VTi}&9`|u&&{0`3j-* zZvLadsb)`|b3T45dK{L%&$F?yff3j3po_yiofb7C-}cIzY3zWvF0`?JaR>d5Y|Sq2{W30n#&i7>ZfkFnaMDuYmFx~b~lSJ3PLrKvKP!&=9UJ=s% zlR<@OgOG4c_7)C(E$OGvG zz#~BMzU93C7m<1U_vr<-2uwz`WzwTpc+sKz;ANBRp^G;jvP9XzXZ-$)J201*M`v-1 zUUSPxVn7dGjgP--Z7Xzc6AN8)+Z@{9Z$?$EHe zWm5pg=g`OaZ~>5l%DIjmz{KaVomcbr&#=~NY2D^#UING$T3lN46+^3BE3JO)^xtCN zHp`CHvJZUt@S$;m14UUFT#)xixDQ7~NS_XX?7OYyfjT5m!r5|eZt=YKuyG@0fU~Wc zc5rWxor@S*A|*dmJ_3ft=Un`{K%F3G!4^oL&p^a|T~?-3QwuoFo(a4BmK$h!Tb8d_ zvv+Z0mg#xWVMnc_tJ@545#_*N*mg5J{Rq*1xPIzO)Dr<8=TQgCxrU7ttH%tf2!lKC za?DO6K%Qa_7l>Z6UvLH%iju>-RRiyBMT6^whr9nwupIv!EHv3&uej>DuYYM85>Dc- zZFVbMuvHfkP#fdc{jxd&?3dA>J~j(_7`|fp)M;dd(d+PIs&fT~r^j#2`;%Rv&glq5 ztfv7q=EJ`zM(EFdd=eP7e5xIvNDw^)%9@LV2xOw z+$D6$mG8b*o(yakJN;t}Lssj5WNq3}d!XT+P%IsV@T(}y=P>I|2lH*)jt{M*E}fOL zwOw3)qVm{!bHD2N=+@*q7{wXX+6A{)x8n$d`NbC}#o8_5bWO>|yuPj5`KcVf$Bd5~ zI*}ykDVBA2s%`wI2*yu^ygn`>ynja?CR-AoQ1IO_a&qU3e#NGO*ue9$(F^bX6;#9G zNmc@pVaGD=fhw*-I^zthrHe0Wk=%J7X@l4ViM~`dYL#e0R5GgH-d>1QP|JKSNLW*V zepLlo!f4atS%vK_*{A1&q}&xu$Gv1Kw?DL$f# zL(m7UVl)VveKy8R>9t+~TJ}_GBQqPZo4toKlFXUPZ=|PL z9g;)lrrZz%PK8#<)%a4ORtf4YK#vnXfynqGb3$nm#eE_0fVjcHhW5Qkp#*hJ1#}CF zUe$C)+AgI)+?zY^?O?TlLgI3^q(tgiH5bu~E9%>oOpmUX(_;SCV^`7p>N6p6RT^VX z{aH~l19s7k8=sfkwrEbAzkNN_42yHn)#)@a3kxP&zb?c2jo~h3+~-E>N6MhUn?< zs>nBdz%ml8(87$7h8~e~l(_n~>|BEztCLIVQ(#9HxB5U;DM=ovBv5hLZRTnR9nyd$ zf-hw}lAEdJbwScb^5KoL9QKpIMqD)ocGk`n`)onBAoBvf9-Te4pOp}lKO+Hgxz{jb zsF!WHA6RDO7Zvg9P7^s8SnYdANh@77+_h$;n_8rJIDoei{VE7XMb@M9Rz*ds_riPl zf`o)5nG?b9ud0tKR}WNV$`!q)RU#2b8O5!d(p1jY@;1@bXsf`Y*oiK$bP~9ZKULF0 zXubv9A-K5wWKlU&I{HJqo!%Ln&eCjHQgu373hUOyczotPI)x+xn^J`qWy5MqUaOV8 z`WHyle=bf%y=U55K%rsKQ1WH7VSpYIcl^P;{m$63_!V_xQj^@0BQH(l+Wpv{UxIJO z|F5p=3~MTA)`wn2K-7StgH$1*8H)5`=v_dnK{`li3L?D;F$x3_3^gE9LN5ZMNC`zc z1QbM2N5|;Ujb}p_`r_^v^jp6w1JmVR+Eyj9Tp2w%m&HbjZ0CWhgbW+Je>)-~~v301lmRv~m zA=;AbXaRZ=fNO|L4^FO8#S$7z7k5>)ttGRp&jUrufTpw8;&JW)sO6;aW`{(zt0d!a zq0|yh2(kH+EzT0@2JQbW=Z^8FF_aippx{aS&b44xmtHaUn#TJgJ)&X%t?(V43Z+() zW>m4obxj_zYcs(}5b~KGm<$Yy+OTG?Ukk6< zJX-EWL!Z-wG&20{hY_6>g6-E8mP1*7Pu z2{^gzZb**>br;ojkNK&o(+eCEi^@}*$4M2V4Sx6`6#0b_-w>er9W$knWht3&W@gqu zq3Qc*;0uBtr0N!EfU%|tQ2_}P_jNbA?HaLtdunmLa9j=c!h`wk=bEmpwB^Th%llP( zYG#aDRXM;DN_d9I!JbY{X&pKW@0pMwiCq>!mNZ|U2f4U$VErbYh_S812xLZr+w~38 z0cRcV=mhrHyP0XVmZ`U9@ZoE@*4CVKtn@UgvM?m0-iCLaK#^aqeKvYDx##oi2dCm{ zBY_B!{`!bcz9hj;3ayr=ULLMc+Wwny1YT{-Y4*We7U#eTJx}T{f56}vh$b>sI#5gs zxayD9k{@2ljCsb6*0;{L)H^}}s!-^0`MczgaT zN3pqv$Y&X$u#N?f#)m1m=Kj!y#KgqGQD0dpJ#E26-YYgtf;^9s*h|PhbXqWZd7YaV zE?%s-lZi$8I@QjCm>DUt)eml%(2j-G)!TFG5LT6ZK9pZTz|Fkp_Sqw&qm$|(7HVeW zCWZ#4Q#fdc_;+rp+Yy}F3eQZ&_Cc6c)6CS=6sVWfP=oOwI-H!9*3f?Id>HG-&cAwW z9J8w_&et?F`1LGW=ZR#WQX)uXg3M@gIFmOzIyQFldT}G98-~x%7v*N7;KNk!!Ae#; zB06iDcaBfdP^+u&_VL6~2hjwe7ld;~gIOarA+q3oRPbo7y5RA^cX{{-CERp2?v-vu z?Q?IQe)OBg@(1+sS{7XMEsBvY8G&YoNblK}kjbzP@FbwdG|~mR>FgZPI=^a31u%&< zO3Tw%l6`7ttqdPoKjBK(Vw4Q7ot2U;nY?2ARbw0ZmxFp;tclt1Y&rt#%`mj2q^hb2 zVQrcL7t1K4)VbDFj-K;iUIfX;ul{lOSYpij&EiGWb#r8ipl-Eo6__w?%0U}zS^2@w z!+s4@+;wgG=Fo$zf;S5RcL@j+5GWPIT1PgvRq@91Cb_bL(q4vRHzx-86f|;h-A^wn z?r=C$W#b8hn5z&)kds{dP{-M_2?(i;Yhw&FUW4O#l#_#lkSa1b1RN@jbn|CeSc_g` z1TgNvpar|OJvMBelasR%&P%J+v0!UxVs_s?`@EioDa5e+IX=UTUu_8i8i>VTvv)}7 zthiYTTyNhp{npWBanjMJNlHiYR6;cApeWoh2%mEAuv_m^w z&UbQ6MCK>y$=TfDiZZ23`6Amn>@q`EUtgaH5(A(7 zUW&7Sj-b>Wq&c3(_9$Nk>-dwrh=(AEUP~u3?|IC7Kc!^kzGcnxpokm9io~>_8}9=PqXLVvNE5)JEf3cd6i1vhXrum z;@(0qLv=aseWO`CP8$3Dv5>_*`l$RbrG&*r;r#d*ch|t2{?Yl*w#n(pFIe_C7WUW6 z!pv^EB#fX2Wuj76r~T#FQV|?^#h!~>Na&ow`u>UGbzxg30@IK}Smb`59{eKZ-sR5`p%z42z z21w~*uwbob1DcYoX0UxUXV@8)XaSfN0Nes_52!SsNdmA>41n%MAhiT^@l4-lBFq|7 zf1*IVx=`)=iH4J1D!4|_i}{Nv1Qg|JIe;=1$42<4^O7v+&wv5 zRUp1YAcN%c#(f*tK0SP=A(8doLcWiIm`Wvf5e*rxDb80Qc;;6gCAN{`PmB19IiNNi! zGQ?{UCdM6nulSJbRH0pV>F(n+fWjHTb@cP7tJb~hFLb|OvH+9k4aJ%r{N3CJk9kKw zFTK@q*o+{6Y8J!*#Enn6mQ=&=s^=}}V%+v#U^z!AJdgAzauR1qtiIS9v8}=C1eUG|IWx4RWhx!@>O5fcUt*Qv@E#{ew+t?ee?5;%O?t`@>Uu z7q`!J&Rlxrl?@oH?-q>lm)L{LG1Ebp8FdN!BN9yE=HGw8$kf~dF-qWOtY)11csp$V z#!2g0XhQYXYuEBw1;2Hr$HYjM|LO61D1^)qhg%L6%mZiaorgz9cU*qZ1J;fyr|aNT z!4OE93JExE(i(`p4^@Pb!r7DDoyeG^AT3nRCS$-YaRD1izJm*WxS0soae;%j7ccox z4rn%e59_Z#m?3~l<_h+akLaUhlDHs5l1J>stF*~ZdQ77(WLMtq;Y`pl2_Qi-T+V|V zbF0v@P+AsSPn}}tHIu17?6|n183y2t3B)MUJcO!?Yy#YCrw8g9&jRdgoB-b)dcb^; z3mEQa0=8-+Qr5+B*eMo4trZ`cCt7Y7O2=sBP+f|NspqJ2R~&=s04HKMOl|g#RN3qN z-C=pJBKHwzQIS$e9ietzvm2UE0AOttiHhtxE)o0_#6o7M?;cG)f$UYV0d%T zS;tMMd4_0f9j-sk}1B;2H5PaU{+4$C|QFn!3$u`J0lq!aofUvnGxTZZlo!vX#vG95?_W zkf%X1Wrf=q@X(~|*PO?2R%Ul`kwbetshEisPfi(bHFViTZt_iF6bK%% z?0o$#QC8#>utjq9_iAtaHO{Tc=u!(Ebzaa9JNlNkB_B<--+71X@K5o=`IDh6q5|Q zA>h`()1Y9I+#?7eu<{UAENsZwk*75TOqsjhuFZ@HimA1hEY&P7tAw!6|SL%e=p~@BG7I^urTn#kToEQF~2ddd8j3d?P_$XU7& zz#_OFXK5~Gi4{S{r5r}^0$@ef7tH-dZ;Zh7;ug?>SHntN=az68q9Y9WhJ1suf`b>J zMmaq5IS)Y@#=<}75?}%mb!gt5N-@1-( zhj};PZqGriYG=jnP{H_4s00{)IS_AQHVz|76IbvC=>ZBcU$w_-VXR0mmzhF7t%7(; z>@p(Llh%Yu$)`1}!-;772+pO9`&eBfE~IyMqyhZ&X1j<%vl|-pF)n|AsgLSwi2L$i z9;`F-N*`h((&8>8C$f|L4sMx86!RFYOgK!rJ0PG+M|bi{m8JRJf`;pDwP^qbY)Y4{ z^iKOhhecDmB}pr3v;VmS0YL*4oBKWhgIQ4rNAp@KAlc`B`=y#f+y^)Sw1E{CQ!;}m z-YCnFAbXfUG=KpMFaQMrxS{%MH}1IcPt zk8Zx{QU3eTrF|Jh%_!RAZ`+%gu7<1Iurx>$`1JhKgOlO(T=j9n03$CDV^8j;C-LxO zOC{wpk3!a)pQwT%kh`)fKv6Cg@Q?>!Hk};?VyNH}8U){D0HAaEAftbCU7KfAIi4DT z9An^g>jI2P7CY@S%aV+7(O^Noe?WQAJGRe`m5DLqj7=BCqDLQSq$KMst!;xRp!?BZ z%3JO%Iy)EI`=jkQE(z;#5;9cr`}kFW9ReeXuTcX$$-z6CNh!G~c8j?96fBkQaKaK^ zl?MaITp~T?R+J+Cx&(;dJISkQi$+`}eX}&z(Q7^1_ILc+^=n{$A|j$pf4YDAI&)nK z1K*+O3J_Cv(^!B9<%msr@uJB=j)d?eK}KTX9ttRoMWr0oFa%W!BQd(B*a1PKiEjr( zhoP>RSSplpB3#!vm)bCcDyFGDG1791%#lV5m`jSXO?TKDrV&>4&H_)Y%3dfcP@qOM zUtZ+XF#vA>;Cd{2RDzkaxpHj@VLInjP*8yVIR^=*IK4Sae;i2*`FrT{_t1Co+fM;T z+7uDwQw0ZKhL*~}kKareBO~z>v7`um1LFutjEXMt;M6m8!TS{>bobz&mTvOJ)ff!?OPOQ{Zftc^Z_EeY>8LYlF0G5{?5)2%j2n5()C{vV0 zFz`M{l<|OwkdNI2`jV|oBaPJ0fV@!S3&NN8?@<9VBSTNAVvGZUZ(J}E7Z^0tQ=D;N zv~VRUUreHj`64AO-&eNeC|>rIKo!Hy1Z=ABVgnzS$USmanHko(9F1Rc2BYYvI;Ihk zP{%QYW!i>4Nkj{`|35C+Qu5jl2Gb>fb#r!k=?N(vw#UB}7JTsX_HjPeg z9)k3GU;gQI!#kO(+09`znC&A2O;%;Q3pG!LUof!n_4)dHH~R0tT!Vkmm=rs;XYN7g zhj^p5=_D6v+}9E5DmKz1&wYeVh_o2K8h%*cW>}f%GnY zHsGvOx$%9vDpC*oI=T%XQfS$?dH8d0uYtW}cJl#vA68>6*%7uq*A^^xavwBvlWr%k zqlfjbMZJhyO>3~Asqs%n`sJh44>|Z}TE5Pi$~_!tIhr(+nSmb^dKx2Ml6g!5YDO^0 zs{tPJmiE%wo@oS3f>>ZcWWq`vbiuF6Vfl)Q>SIPvd%hP}Z{;g4nJA2+)uC4|q?HY$ zS9vv*zb*f`02FBbZIIA6up^X0{ADFrlVq#2 z#l%Z@TwyQBJ}_tBD^e1+x6cu5*c{t%&#Pa(f3=$MD0_N#M&Fl+`2yae;%Yix)ve!< za)TTY{?s^ifB-?Gej1p&nJb3L(hXyK$=25NhgaXz0~4v#XU$cb%PoqT+UcC0)|XR> z@|KIZ$S#Ynug-A-mknIVNxm%@n@a@JKt|KRxv|w6;YMi|hqp$~dl_aAzFL{7eeb>T zdT$j(6CL0Av!)K&e9#^7yL0!!?(H0>e?pwU8 zT4w>K+SZTL0n?X=+QNCiJ{$a5E#$jbWLf+7{o~*7=`K2IdJmLQ;3NQU#PXUP87;)tYy+uD%e`*PO69||S-e0_=*08-t?Av=)t|q^7-5dG% zt&r=2a zMT)5PM^4yis1iB*T_%p0C)zVHXOH>RHR$V6#%?N*DZ)XYz^*b2#zdxe(W7mFrMTa2 zT(nvc>wPs@>&oT}U9B&}?sosGR2o#7MaT2q^TTgN8AX|u=DLuhhmNPw`AfPjNuaZZ zlNghl+rIo@J&Zx}=J%?(p;y1X?tmwGL`n+mjotdWxs50g?FF9*>U~XcAl>>k%~ z5>`??5YL79a(5ptPx!n#dUu#$AiOV%GKRdk_gW0fyf&mwH>TS^+=k)DImSz%M4U*Mx9?wG!O=Zed4J zDHuOlAKYo3zB#j@A@=oESQsdkrkAi^kxd=}_AN1fp;>qLI|{{FM(2V8)&|7BbGsL^ zf!CHl>ca4z=Sc4l4w`Tc;;9NI5~pV|IvRLPpjv+tyS5>GFwq^8`{Rn0B!BW_>Qk#G z3td{Z&s249fS-Jf!No&EGR(H>XOv65A4@}nRspSf;vmUi{@fjO@wH}pf|IS+^EFayI>$4 zr8+i+r01U_e(CYfaz%?>9) zD8SN*9OJ9cflpW4WEVU;O8@(>fD<%*%e`MK;o(BeUWlK_+G4{gMFRC0GJ7!H02418 z*d~I9$sqc-UmcyQhN2s;h;06NQ=PEmcoqI=_f&E$%aUN+PGGYh8h6BIsa7rwO8&7u zo!9@ZC1F!Lt4u*=xZ8se0CrjnF5Yx62_z>mH1D}vnJpI`3O}rZfd_TZ`9Pme{r=Mc z%|}uu94^s#=e5^d(&Io$V^NZ?+{qz?-0>BVTLoShsCb!^EJrdW$`hC#DT zV*jwwDc;h_FS-#_+9_JcO!Qt`FS509+`i@I-)zZ1%XfD`5%zsQq>8Bd)sZLsyYjN! zlQWs6cKhF%`p{4T)Z4X&Nwton`=c|xl6)7FgPlkDbxWW>3HYR)~t2ydqrX!@tG^o3T?4gVX?wXm`)9=NP+;c%@5AdC?%@w!zazliC>&N0L zS3^!_$D*7*p-SGx3d=_pW=G%^N4iXR_ih&S8z-RtNuo0GgO{P{vf6Lo9IM9+|9Kg+ zd#3&Jc73W1iDxu6*z{p`mgOej^jEYr@C;e%Z}_(+X7z_^dFP!v6Y&7$--y(YlmB$9 zoa53+UGt1Kqv~9=nDT;W6DS-w>PMe5reLPa%KhkGJe;s3eZYVcMm@#_>1=l@zOz%( zlMo-R9Pt}b2OFy3(_|oWJWnvOGf6kmDgPw4l|4>g6VyYDE<*T? zWN*6Ztu4!rVh!R0nmV;}k?~`I?OmUGwfXmvHsE~heRN%@XcyiR2jxS0Owabs_1fP4 zVnv7k&p^yew{^~{{(3*G;)ORBSTWU(y8qY}W#<`FvNu+7h(8sm3LPJod2SE>5$|^c z9nAd?ldF%xuoL*Q|55vQ6-+`hva$@Z2GQ6(tkH)5(eca{%08LU*USC3+N|I|jo%HH zRKKi`fPyO&j-BvR$`m1tVbFJtG+M%-?;`9}vH#ty@nQ3Sh7F?PIgEW1f+GKQ`OoL} z@NQYRDIa7&b|Da8!=RL!5$}3V1DxUiZ2`s~WPU|!`puP`nP1BS06;WE&o0E>E#$Te zD(E)&0OVkD3Rhr?SL9*VaD(|2yv99^wCghquP&D_{rl i|NTOUxBuTHL+36baDc4n>O-tT+@aUcrJ>B!vJ05}-(N4}nrN zxbwfAnR{pEuJ2zfEMhA;?>YPIy&pM=)6r7K$DzWxbLS4es)~Z%ojVUR@7%dN{s;?r zrlCO-0sOn`rKc=+r+S!X6L|2z;icxwJ9i+-xL4K>fya;CRZP6@++q0j_wVk5yoUTc zcW%p66>u3F-M4 z-%?S?(Irv*&zr|1QpEpx7g+wYvEhHeOP5Bjx9vnCMRi5!>(2|DX%Sg94+~_-{4XC4IxK~~_NRi0Nj*R2%pvwF ztQQ^5V3y%+p}#cQ-h55jKNDX0d|%mO_y zV?qa43Lq)xUU*o|qoU6K=%se0I%fGR`S6PGa9%q8^W@C3U0a z-ob8W8G?S!ZP7%7yJQmSN5+#mVhh(+sFJ|9v!G4!BynX?&*~j5kzGBth3~J-CO>^u zhgUx2|A}VhD*e@+*OK@fWf~!CqwxK0ufsKeG=CDR zt_9h1h}kyj)Y?)7K#8X-f+5J3$Bd)7O^!T->Bm&UT{B)Awd>aecGoUbF9&Abp{p`p z7e{Zn%{ujZ1kq*?M>=ZIYEq)-Iz-pxWHZth7Iw)QbL;19pduz>3|}sSVGuRYV(T<} z#wVzxM8Uqx)L4-}8<4IevXjYg205N$Ay;lv`^yHc;@zlBIO~*Os=)U4O#O62K>P%H zhn{(K(%eC4uy842%dA?C)OO)3CEVZ@<%sP^)cwTc(zDDXJSAGed;$Dq)$02d0#>cG zgXvY-`_eg{5lc}%x|WmGb9X{-&a+g;zW#DTxVzF<--ohop@ZxfNb={OtmD%c6sl39 zR{vB#oBL(nDJc&@y4+NFB%#g|<`SU*?lD=%ZRx=q=AdPI$y&lrk9{mOR`wB6}Nd6>?4ry}6)%LVH7ZjfJP>-*bta zsc#9nmI%4r@sm1V6Jq4=yt#0SOS(C#AHiIoD*r6@k*pmT&=1PqQXD;k(}#Z2hQ22n zHTem{KF0|Fe=xn?4Qz48Fsk*Y%Uf$(r5MFPZ|Pn+O=SL-2B-1cUQ@K5ACAbzx4%PG zHKPL;TRiSVZ$psA$!>NXu8Zw)hvdA=wUFI}KX%tmTg7&o8W5x~hk91kQ;gE0NyCG{ z(;e7{BBoluJ(-!)fO?xaNDXNsC&!`gBkjU-{*Vha)HdQ$0wf3@3fO*3I5~wn?IpL$ z;}doD-CN`t9W`qTa^44{YNh@tHb#?D15GO3V~r8kF* zA5T3t$5;Z|JFQXnpN-2T=yI;J1r}7jx4jGdV>+*~)EX@II`1>vq_kRCrk;DMD#))%#|^ASK2^SwAfWnvyRS8u`2&4nmX%&I*)ptmLd?Y7wv$T1F*hFgW)ho$v;ioL6q{ z^ooYpz1!aX6bDlDxJae4QsqFF?Wpug&9DdR}_Y39?D-U4JCLfTX2g`#`zfW z|FM1`>SmWO4wG_XCi=^N)b{ksm$UI8C+5Y#z2E_l+0UxDInlaZ zLFt9(arAjonrjmcn*=LY=ZB2>>;V)O$_%=~U(*%(Fqk0lGbLxidv!0Y`S?4qdY>}U zaAalAjaz#2XAQttZp8!i7@y^+`_|kA^^4o)w4H7%mVJG0C&An1dacB${dMYVV7#%t z-QgGgimr4@bLe95Wqf71!LU`o{u+K3#D74KFlLwcTY5vprJ9|SwnQQ+cTVi zv%$`wZn5ZfsgqI~>JoSYY^Hug=NoTwVvC9mH0(Ah@#lWA@%NyIATOlagI;SblqMxg#(|P5+UR6eE*o6FKkl6)jd zC+9U+`Ou$N9Rg!b4Y$8Yh*{gjqAOW=ca)hcZ*C+LpwnR}O}K9H-8U=1n7o<6>!sJF zhXtF~M{XFWQ5A=1bW2cym5A#sv*=fLE%BRlNIqqTla_wjJC`eK8t9N&lgA|+E|Lb3 zK;|G(a9d@SOdxZ`2N#s(vuf1~aZ+MG^ecN{zjkSxEE_j`>O(BPR2~eETypC|)Wkir zR}gHbTyYzWb=)-~>{U}UO+kgyXF2-0$`;H8Sl(3WUr6XVw1#^WjRK3Nm@ws^9pFAgZEcV2@%LC(|(w;0!c|8M|*aCrYFmn1welbJq`dUSores|^}iamX;4ARTT# zlkXZ2Xg2DbWz;5N^Vr1kAf-4u$&;8h?3=x5cBV_taj5&pkBwWaKov{xzhW!!$I<-Q zl#WX1PP$|})r_MOIWgglfMbF9^~rVa33_H6vo>1#kt00vmjnbeHu0%Mofv>Xf|1-s znuTmn3j|?$vr-3(O@|~H!-n=?D6nW~5{)z`<42fS(pLZQ-KqB5q9AM>O{HGntr@do z%bcdw9EU>DrWuYSYJQb=Gq)SUsFDK!|y2zRYMslA5?-5SM&cGul-$nT0 zqb&xK6{%rLbbd~cpxeDl<3_4IZp-lAzSdZ7t5#t5pJ(Q^omsR7`-l9Q?WmZaer<4e z$k)!i;e=y%W3SQC{ph!@ZJ+h>vNeUU-2){G=y6hhoBQS%sP(R#$B5(pcYG>DXaBoa z+SbAzm(a_tZ|rJ)QJbFriG4?}?Ri53$1y=&x5;&+oCwXfI;{49{s7HQXGy-LL#eLZ zn7k$%^q+f$IxC@B$ATOONI)W4)Q&$J0=QJayet~p zq@;YS&8=_G!jjo4!B&ThiQ+V zC(+N>I3U-UmolO-Kii%&VQSG|e==7tXKS<)L_Gr+51xCH zzdzLFrpRB)n^o-TW}Uow9u)kk1`#WSEJj`rjZF0-L=96wU0p6$ggik=ss+w;nqUWC6wC; zb=bUi4poG9fkCw)mo>dmv-FlgRv9}u@CPb;W3#4d=L2=P6nXZ>D`GlSsl{brqStke zr%Ue*Tgc71(K-Dr#EE=&XX2GB|AB0`RP%*NxNfH&Y5VOB_5poYMPGJv{>If_rzG>2 zg!yap%73u|CbU_xARI<7v4@YSpFiK4fd2(r(AyhjiS<>cU**Q-=4xMz>G&N#3!6{- zuW~UZQd%gR9B(>U#RjF!7b~G+>mrlAJxxOhstK4xH6MSrF;V56x7uaS)Z|dxjstZE zr=5ofz-))G>A~EfQrQZDUcuzJiCED3>~rc98hEgOe=VV>eAFiUS&rNc2_i33FYQ=J z@FQc9ewORmdTsWf|<5o12&H(8%$luj&Ft+^Ux3_diZXqg z6W3x(;q^3eDo%`ciSrUfUN0)=mbiW3?D}*GkvLieQyvTm-ykVpT}f1x$=9n=auLs( z=GFcmG;qqW(0c%6T5@Z{Dtn6t#~DK^l5^ZZ2CJ6@abtG!wpTsaib=s|E2dv6vPXXp zn0-{qQeYfH-4?Lk;6&`N5e>T=j76P9%$ zmCWS3d`V#RMnS0V3Dd3>k7;w(b=-N{A?cCAIrtS?ELYGcx_=#nFj{W5g_oub+cL4( z1Wf$)*gq!7w2fd46NLE8C3y;gHmWTcsk5t#1HLseW>U5yKTnJ7NKnDuTqxnT&7VBD zg`LMVlA=s~sA6MuK!BocKe=&9gR8zo_Q$qAXt z1suQV18u6;Ufa`oDK%anIGH=-wYT<2u&0VWL{C8i&8$gM-gax+iQgnU`@FWFso`*sk z8$QG}lrDcO#6RiJz!Xjh66-M&4gsx1`cDi6^kbXQN(DuzG& z7E@}4)N`yKl^~y85(Fi#oFtVfa4;r6ZK&_NK%jfKJuk8I1(rW~P`goO8S#OqX zd3Leorl2FBmKq+PoW$pkewFeZ;Dm{H`Q~MxP+!6kHSGn@GB==CoF_X=g|*tfwA7&e zDoCM_Cf=#yZd=g3uubL=ffF-2YOB!e=SuK+NjmC;PPA0Qi|aF#HrjZmDOghG$}zv+ zYBG1?T@D;eu`GIuoNeeyv!-5cUd1ZnJkJcr z-9T@VTe&JCM0OG`co>sRWMeSvKmGd7-;eJb7jrvwNExzA`fbm1z-dPACtPjl;~tW? zGp1g_8tDhVYvqW@yJFFbAKahy`OSPND0`X7Lr;B3wech(`0^y)9NkpJY)zGPyd}yg z7-IHx(9<<=oy^w{g51;R{!Vg2y%aMSJ@-Q@dA9EM$K6&B%zlYi!qN)=SHqh8T4^y^ z7R*LrD8pXsjz6(=u0X=vtCRQ=Wi-}s^?x5-2532{S>r*o<%!o+2T&9p2?kYes0z4MN~r?KwGwf z_b+H()>HgR8x1D zJH=^Wr>9slEpLox7~FMp8b`1Im93p4nm!${w9Z41fb?7hm&a-{Xy>kxg zf}Wr};D`4rHokkdwhQ#4J@R%WdeW<&Z9FN*UU9bxkxgpu;fwEgx21;2cx6l4hR_dE zuM0j8MclIUbZ3uyn7NyIEeURHG~ozE=g!T{hs-D23>uOU(z{$`O6|=I!(B##GoaWN zE1oTyE)}{Yz0xYU5a&r4o6>aahHdglhS&2LNT=wcIXmqMVR`VXKAA>`ev#g)BXA$o~0&2J1wUWLlQHhJ^Hv)jjSmQ@;ZVsPL&39lp{KlfiiJK7nel zE{&3TQDSc%nFB6N|Dd`K?#?-hEg z{_WW0+7cPxS|o|ewsWJx7vr1?^Qb|`@y?Pf0(S`<`^hZmhlKCD`gMGyw>rs@TkI5 z%MfZeCoS!}EI%6*x$-1}v9?5=Q`1$`hvTL+{}n^&3EJNQ^c#T{WvpA1PKs|^`Ps@; zSMUiw{vWDK)>B=m!ew=8&_4!m7o-8X0#Hv^cR#uYdV{qT zAIdAYYb+W-L7@?UM?%VJWc1~KP=%`oFgU(=QWnO_GnaHygv8luMy8B^RYq|O-EO@4 z-1+hxLs4C_r&VJ!!QT*2vk%h~ZFeMD^!H+rxxB&+0$QJgx0g2>_z!w~(MmC+5iBTBhyrmd3yjl&fphTu58Aqdcjn0>a6oW2X&!dcH&M-C5D;Z7 zxIgC4kbxTS^C*%~!rT6Q7~w1AN_u~j-b_z|(t1NWGJQHBL}X)>&Fp{45sw_>8xIBc zphJ*ylk*G-3v4-sO;W_$2=aGc>}Zikq%t=_9i;jc`uErhk_vYogUnp>`I6d({yo5D z5(rXiu;8wt|1<-%kW`n@`pjB^UFu-o)@YXl{B3_Yi2xfL3Y#YB3=-0naViF`&p&$Q*DLzN2QINjcKs1;Y6)h(yR0YwN@LC%W4rBi->?-cBiW+Xr_BQ zGUmFeaS*6GbQCoeys~F65F%R;vy)#)%2Kv(+F)Zq5iWmp^@$yv`byOcf;1rSg;f!y z1bO>E?W7HoT%x3*r8>P?{`5joRW#`dZXZOKVPB0AKVC8(WQoL_sgJ} z`|J)`{KLC_-?*0RuCK3C_^f0|c+DwRR#swTWBZ>*Qf{rHQHA!c3awUkUITkEQ52Vl zI~zud1F={9QWT+yPvnIqmGEn!Zd}7rw*n-U;sx=~BpQqtXG^mCHhTxx3jLxr^CZv#KsKy(uS3jYJeVw&81 zj=S;Ut#0Ig;8ivDB+ACTnI6HZjFhm#qsNLJMDLYgd=s0VGjLfQ#)vFl3ot&l$Z|=t zj3?#RR87{g<76eJR)JJpf?>$TCfnKBMHg&N_Lq2;Cge)Tf^Tgk;8LcNosw`b=v1Ym zgEP}2h9gs3o9n*0Bz>swSTPGF`r=_;PPNTUJ^=McU^0E@(~AM7x_WX2G&B62-?2IW z;ZGQ-1BMBm?iAIx;c)$F`OUo_ShlMa~(DB!G+j}#wxZASLdJZziF%E1zrm4Es1-g*!b)e?R?AYx|Rk3rt*N)Vx{D-}Qg{#EI zWI)f(5<&z1T>CUHXYRq757$jdF~^0$f%5Cu{OyTKpM-diG$8HHGj(%+k)aa?dV8(S z7$?39Bam$eNh!Lo28ba~>Qz@ajk7ueG$9&sxn$@w3<@Anm)sB6ht3!{_y8SP4^nCO z#(=wxjuc_42lzeOq=EL^;a?^X;580Gz$t-+I!exbwXI>Hy)tRn=^lU1e^swa%iRxeRa@St~)HH6g2^H;-ibEZfgA zSCHsDe`8ZHnp)KL^+ABTYf-zo4+b?W_tvd) z|Fg<+5FwBYYOU4;+Nf?8L2h2SXOR@Abb5l~yExDZIIn=*=r#`B_v83%J|{~XH4FCe z-&rhEUYoeQLcZo>??kG;h`^y>8p5hQd3gPSBYY#Zof!HXvU!TmSK0yIms6v@qMy=y0 zBVkw2@!=t{W$^JULPUB`qtleu(|&+a^IPeT+CM$j{v3ZSd%l(?$j4OF>O72CdBc*K zbFm7P`0n$=4Gbz-7R-EmzEOyRmsbM&r%nRccgbK74+k%2<^m8v;QH5>>VHi>YLk5o z5Df-WA{)h#uZDP)bm2F@v2K9K}?Gs(kE6m-YxM z0@@rP=wte*-IzjDMnMXM+J=NEmpfkq7hjdQa~V*zB2kTPSgyu3Wi zYBqStO6`JlDkYD*x=u z|8t3S{?TcOac8P4L|eO@K0RAQBn2kOrj;(!4@sZ0t6ii>2Z|Wft|>w59;S>$*@$y; zKiFVZzW+_x+U1s_C-R|$w5PaUhi+7E{%{jZOw2+7Ezfuvbt(dNspTl|17^vWXzas1~OF{b^^IBQCOP?_<` z$qCsCazrDyYjfyA#BGrqp`{K90u<Rbs(dr_OBC-cT>V{t6hc1>s< zf@R|V_Fcg8fyey(6<(%avXZm^GpWSB?0VjoRGv%|UK)6>=!LbG7ncoVcxlS-!te=- z6FqDGciFVZnt5V`Zk^|>hSlaAgnb$gnC<$JVx>eXq9LS5dh>X>ru^nu8RT`>z0K0S z){TO+6_TIn1L^SIcyhQrfi&|$&L-b?-yKffo&?Wz;WzoV=SQ34W7bQ6I9kRe$LqAz z8H};jHw1Ep2`wq28pwT_B;=$BS74|0n*7sNr^lVivAliV$`1badcyPE01R5>pP7e+ zi=eAM>yCjX%4kZy3uwnv;0|jhKdiPAHnkNEJNByWv?3W)5aaWlVF0$%uWb7n73WRr z_XmVzwjDH33Jp$DtZ~b9ZWAJx*@l<5H`j`+qOSACrTqG~wTCiFbV8gtdM#=hoPyOL zM5g0x1BYqj+bA*~(@%bTi>aYGbvcJVyYnWIZj`n;B!kE)K$9ep+7IKFHWFhtSDTKDR2LO=Z=2{Ch(dd{u_o&+>PO+nhWE7SU*1v)wAa-I3Xh>aJRa6n9BGCWG)9zg_D^!Z9rm$kU+bOI|Hi#v<@JEr)oQ;C109pZ$9A0-IK& z8i2A{k-N%5h@r1qy@0yOo%o-16K>Jt*%@@6u(hcZ&?ve{7T?RL-QU~Oqf$r`;g9V9ePwMnIb#UAhu4*{c(|~S)eP*P z<>UummzEhPCDj(kLPqpg#pSGR3yK+3h39LmuqKClzK7@nxi7rNBgJj+O#Lwj8NyyX zfaF$c@(z#sLy9fZ)XF5>;H!v)_TI-0?W_Qx<>E!S>m$@b}-)-ZotU)ml z{A6bza~x5j9R_TAbzramd((T6Ly$>%q33Awi5jb=UH??+Kwkw#MeDuAj=z$L$M2sE zR~R_`bfXhFn2hJ0k@z+W6+y_PwA>R%EO?v3q`a0<2!O#S1OxYxHyLFX*%qPdiCkG!TbZ8aBf;-JV4UP5=X|hcnC@Lv z%p$6G0az=6dOZ!y3oj`pd68RS5OYkM$h@0nFO-@NHb%$tl#J?L;fu>-F}1I~f{4vR zkGGcCcvWO!u^*oKQzybDEuIP5w8mD5nl`^l1oUYaPydeU>bH)3WA7CmSNw zdA5p6Bj)}>V!?~_@^lXl81Q%qe`RnP0ltPiSN9XK^7CCb9{~~Rr_fus1!P8+Ud7(J zITWu=t8R%BV2EpJpQYAj4*?XsKpN?H1`6K0^Q~otNdN&vTo`h}fkVn^=O@!0kfXG- zHjwtWohwB-DoIRLnHgRD5evPMBI7k@f5SyIlFOz|7w4@dHBXkbaWVa*o)lr;1tz&I`9^=reFE95+DEpsvQV>f(IUVj_O9WmSHS!C&pBoReM711qw(o_hhznX zTv!fcgmw>526WfCUVTmXsLI)D3dqs3?f<|)A!Luo`ReNfK0ZE5qfamH2Hl)*FlKTY ze10|-)E)WQajKfOySv*pu6Dhl(qVtOtF9Vo!jyD$bh^(HfI$MJ0$K!uj8C#sie@a; z@m(7%7~)N!7|OV&TN^B5-&A&A$vbP#DuhzPxx-}STjwkt$qwCM$}dYlBg+0g8LhqHHZg6 zfY(}qzl}&X;&zfnMbF3XL5u4f!Y|ILDLsPJo(Y`;3HhV!Z-A=%?~a^J2oP?)DdJ+J z5Biw^|0{HPYb$V0Os`ah@akw>J5>T^sZjSA;Dnu86289rwmRSHB^Gp6+izXI1c(4o z0mq-uTCrA-@{)+MH-!OnT_UZdZ-1cDi$kiov2&o&>_a26&>6=-C!@(MR#Gi3Elr$x z`BR=?rFkhNO+t)z+Xgo0AF2V)P@@c_Ezf49vANY+eZ z*cRal1mcgeSsN)_+7-UJxk**d`NGQ{xT9%{TM+=nkRn-bYf8Y-{>4^}x-{|^(i*vi z^q~`R&MvK4_E84XgyNG!)2JynjnS7c7dnFj<9u233XW@0FD$ckY=rWa0i;JX`TmVW z_DRH6N}iAJL(WVgHoUs8uQ>6JZM$`}Te;BjW`q=#o+bm|nK?3r4isZjpSPM(#jnMJ zYT9Qor`b9*6cn*QMRv7yki{KNAn5I6Fx;kc?A?8t)D>`Y+`Qb!U9u7~kl0(NTfG-R zp4<>8=l=SqMM-AHT30;2$Y5}SS5*gQfPuv(2cJyDUaL@sXOu5!Vrfi^Oq`#8Kl5B{F{my+IF$ckOb%T{wqV}W^YoDfcY9%BeV6^f4?lnE zP!0=IZTeK9*?}1($7972w!HksKihae91{5AS<|V0s!dGS;@y|i0zbg3N|)R$UxZ0n zgg)7rcuF(^@D^Y`W71^SD$+r2pt;pnKj|X zlkudUHlg%zsD1rRlY43f;IW0rTT>;PxgujfZRub}mH~>zA=zG|K@U!DF88vqsHj14 zTPvP9@fg65*;>V*vaKl2^+oujlyzx(sHggdGzZIi24ZsqKt0eV?z%R$(h; zS;#*a@FVQ5ah+Y90)L`1LU;)(%T|Oq8x$%FRH2DnG8un9ezpQ zBZ8M2qx?XFl?l|cRS}@Vo(Ng)Bs%P(@fUc;AO$g_{>43Bk&Jy(it>W-#+JbB;ajJB zmX3ZlnI8aGn40Le8RR*ZzxHJg&w)lU0Wrv=L?+}wFA26L;iKk0S>vbH0gNS?gwUYK zwD6pLh}QZ&JJe^@G}f_f8{04Dt)7f;XV|}*x7Oj+SEV5;u0VE4;t9!#bqvpePUUE4 z&ZyXHmpQvNXtGObMxC$2+iVthcn)H#3>-1Ac;~-y1TYRCluUuS2*4v&rts*X5bp`N zJlc$yo}QlTOimU2FA63{mwT$xM8Dwm1>l@bW3k`};mG88yO(Yl9{zFaaXSapbwT0^ zNCm0-Ia87v&|bCzjTEF)(NL}^n;Ca5$8#0TYOf-9^V?r)>*(i?p#)jKIs*NU{`^v3 zzI;L}Q97e}-JsO#x!z5J2>u#XY-ubrZ@VFC=NzWmakEoN-%{?&VZyHT!AGNbbJ<>O|Ft~3 zteFA9)^1WOw?VyNQnYDwN>9@ijbHd?13S3JyfqwX0H*V!MIq<6+O5bfY|EN`rTQJ= zza5;p?EY+I;Sk#=A}b@zCO;0UEe<5}zPJ5nJC^OcnjX=H09yF(-=)GBaMQK~9C`j*c2q+#{416XL^Kz|x&O(l?8J#~1ZGLjL2{jSe1etv_y?njg z)Z#Ur7o5O?u_OwJyk*Y^@JRm8-*0|?df#uXgacVQT<}|p;})SdtIWa|SL~KUwDYO@NKqD@U69DdD)xw+O&wLjGv| zS7x7A+7qufE>B_ zn)dRdXX`!$SzT|=bEcHryO2)QIB$4QS9{~fQuw#*7D1LJM|(?F>nLv$ltxyUqn$qY zVPB991i3|`#B}J@@$Ps{q9-qADPt*q^*ccBdG6Q@|1)9fK(@vHVm}}!DTy&=9m#S7mu5qesK8Dp`MWe=L7|z-YNehn~SJPxv z4BSTHVXgG|O6RBA6+3T~smD+1z(kGs- zPi(2;7EB7^pFwE#dQrWVXr0Nt7`L|GCKQ%_;P@tkrn^pjBhgMdaelkw@}w zyFSdogXX{3i?#;L+o@`vl#cYeAjZMSsV51{>(3vL>$+2wH@;@;)EHOHK8V*A#c*&1 z`sD717EG~jKTQtSZa-ZNoQ8%%C*VOt>En4xQ`A9n@rYG@qwNiAfNDwQOxUUis1_4? z%cXXJ1oRy0nqn&q(p#)w!d|Q_Prtc394SkV@3F}d-N+e?FARvd0b(*^i&jaIfLcVO zy3jwk4_M8t(ZA*AKUb64i2D@G5u4Ws;Cme!dVxR7^kE&CsKfaP`~~hWMdIA5mvn0ElL2}9_}yj4$=}LNZ{#% z3BvYA8c{f;k(5IADkX`!J$Xs^v>_oI`F^QL$^OsQVDzhRhAeAhBE5CzXKY&nhxhf6 zg7;z*xyr|v{gs&Y0rLVjwH3fxmA4=08VAXAx-YflNY+vBWJ7?)2 zLxQlc*|q1y8*~@B5+m?>uKiJ1wTZGUaP^!N{$D&ui#m1kD3qkBo%c1|hjm-(44q|_ z`P)Vdc1kn6MMkUz3rO?I|KXG`VA~gKU?1~?3pk}_-WOLA-YO;2(fj1$uU?QcoM%7V z@W!~^A9AGLwdudmrFCPxq)Z>o{H6h!drE>pBBVlZt|HmKKdOl<2tF}Ug<3zcT}b$_ zK5pHfGrYxI{znk*pkTo5z-z!Q2}lNt0NiaM93VuHa<^jKX$geE{qcVo0(7{JWWPQ@ zD{ZZwdpH|BnpHw)jWnUYVQnbI7Y9J;P7o@NX-&|~u3H@|Qy+_?uK;-yFnLb%3zd1;q%vjB z#M;Qm5{l#%jE<2s+ADauyVokL0$qs65B5(3Ki=O*L#6<6PaTCcFMm9hy!0L+s{d*_ zVsyayhwfXU;#h=zOi)~fEo>*pp&;cqvk)oPifzTv$LBBrneh_Jk&HO&ur_L@ul*Nk zIx1rMXZd+X2iwP*7*p+vnIR|3q_?f4{l!;Z-GC#myM?Lb7J;eA{Qv(GG%pn?- zgWlvM(De57s`RGFd)d1D3HQp6&<-+kgEW2V-|T4<=e6CfKBv+iw64A;Qg1bUghKh(SgO+fRb$}F+FafF%(w4&X@YGG00;*){UUIUz-ZLTm-Y8u1HHem)C3q5I z3sIrnlc>F)#Ds!4GgB9kYVKk1m?<|7B&^uUv?u7P5RMKF)`run7d!Z}_$u;Yayn>V=WKqAtvn#FkpLSoL z48wmr`nDgAsq+o^u_Y9*H!a)NVjb%MZ9e7<; ztJx(22got*FHT4{nwgW=AJhT&tXnRdfU_iI!M1!r9RS$>EXjY9IEVhzR@sk3N+4auQ6gTXEP+%dfM zh_A(;5WYAP@V>9#V$cM@sufVF>ZFX=#JuOCO@S2l>SS+=?;^iVhHHT9)~n1g{8Np zE!xa1iD_|nS+i5>Kly6{22NP$RNK6Yj3$q0w)!Nn*fIsumhZ?X2jZLXn*xT zO!ogqvvY}<8MhE)06fW3Q`8`&K`}e#i zpf;5RogXy+8n{DYS#QAC~S(O*?2|Iqzi zwIovtaYe`S$?u;<5#H^vcvGzr_T4opiHiCBBQk`{&C6JBOCt3wUKm$RXVQk1|6^@w zX@dLM`0|^AXhrTz6FK0JI-k}qRZY3`$I)9Y z9|=oIq6JQPR~Xy>#L?d$%9lKC+VVO<+4vs0%t3JhJKNICB!~bjmw$nNj!(5QKlQKR z{Ex}kV9LDhh^|M_16!{&79e)~7$EaQ>~<5!o(^L`0PH9N=E=YIfYHyYUL<^k5nq38 zEd%zd?(i%tMPs`Lg~wBF(+_~N?JpLv5*4>o>qx)GZlhZ`f4x;*^U`sA@Q1QczMD~> zC#=`V+&g;VN~REPqWeRX zw=s%oP4pki;U8X`^D#+zT}DO?p!4U?Q3bR*Y@=9ob{*+Hf)85!_IQ>tg2QWWY3|{- z#b5$m7Q`o)m_Q6V%M3Ft8IM6v*67r{v?Yn>jJmB_de(hxeCNL63K^AJJ*A75`7 zS7p}5jan!Qq9C0LBHc)bbTL@z@b#mB0 zC0Hw&WIvH*hk=2qK2)vvC;~V0=L+_S;lCexqjyIXoYe z#>xc_Y`G#0jw!X)zV2DgdvB-0DHhZ&AfCL*ODfHGIhJ8;M&-4SH#}zsw6gBP!ay$1 zq9qbEO280ke|TSeiaTJgH#I5G7Msooj7USb4)dN#qyKGZk~gRI=AWv2dI_M5}%0AHYW&YxD&f`1NW(##@^m$%z#XSYqGBr-zbs-*+NrD|2d6Z6v-AB z7WXz_hwkC?A)6afb9MssZM)}_XFU{2FiR&=E(*=-+DdH#tRt41AhoZ|J24t>Ilie7 zORh4@C4TW!Qh8gy+Q_aAQLoki9uwpis3hM`1XZou%vq>x*!YKOmC#so#C@9;YY&n9 zcvNZh#_spQe4KoCd*xf^RWJ+gO=#(i!C!cM%+DR09V1Y~FaAv}+R%pdriYk7v%7nK zi4znBIKV}?ZP|m9VI=Badmb^dRj4hsFcwa0Ivla29Mj=`L4jMr73EG=I0a_9o21)Y z3VmX~n5z`3GQ5ayGb%D7;T)j)95u~qhJGQ>`la*>J}gq*>|O8~kT-p8qGPt~jajm8 zvQ{K5R^+arSLF0*Dm#}GV%{|CGQYOR(;O3gn%@+d7+ZCj_0PsG(T2Y#!!FTABzC5> zrL>d89w-cBlRg8;qbs26uOJrNIy4t|fTusU-* z*6U0O5{zCRBDppek-k~fC{(1i|tQP7nvOSEnfzth)Ig4xF)GJETooRA;+8P-c20w;B`K{{+J?8F=0Gt9YQKpjAE4Nv%@sA z>+|$c8@sN{VuZ93gqB?zEj1H#N%6<5xeJYJc?~;!pZmu7lTQ~4ihqA;TEXqTIud)M z&-fY6ahU}X9@e$A7{@Ff*>Zub6cC)x+;sRn`Rj{Wnvy}EIV3F6oBGX>Q7Jt?T&Z8} z4Nz2s3>%uH4GR$F7*^S*%5!_r>v2}dT@_Lt%HtiF*th}RqMS(MDtqSRXoPRI z@NZ`v4GU{ZGv!T;DVjW57g(aDjw^XmnV>K9?_mn<1bOo<;@;qnyeYkU`at$O(N{2R zQ6x5ku2$QN{)`Nwgf}q z_}xX@8SIL{JZHtLXyNqSVhW!?WM#A zGoaS#3Gs$==}M9LIX`s=88__DFsNvm5&6ocI{9aVcc;!R4WpT^C6u!vHTEzj-RfUD zlr6`zZ0Jb)0cVI=@!Op5>6=KIHMsFlvr(IBm}5#*>!!n)T5~a8w)V;gv*EmdPEUZ0 zxq{trORU;bZ{swZ$p=>adl#iuC-vpmZ)kGJusL#|j=0=%ogzKx6^R6Hc7np6_#QjC zRHyB+pr%gioC4)U+Qz6!wSZfyp(&1TVdgtEa)*Q9VQOJly+jLt4^t6lQ@s z$c`xxypc3w6&b}ZTUmL4NKsJ_Eu*%M`92jx#?kwxGXCoPTOulc`8?!aI#11_fmu*E zw2Lvb8msU-JLLV_lPPivRN?9A@)C5wyjdHuFqJbF2Txt6qH!%?>4!$xz{VEpwFr@*Ve3C$mRW#uk7OC^Ng4P`i0d7H{^L4& z5IvnJHEoP>_)=;P4b_L;xr0hhL<%+U{fF|m!OeXMjA~Va4G@uH8U5WNg)~2X=p}T& z8UL0G&xtXJ-EWn4Lr!#?d_kbz3=BmH*pBm$*;lD%AWoknQtl;eqrsu@no;^UNC(vo zTHoGH6GiBB8&^B3D5uHrVKYB1btlwii6Y8CVw=)!S0QE0nlp0gOm1Geu$1V(M*_D6 zY7fPub)o&Y%r*Q=7v1a&%A?`AiFwROS(l<8DKwa1CSyMIBB7GsZ|1MgyZyNm}>Ppo|>Vw?&cC<2Y8%m-Ts(claRa z=jYdjGS~;4Qtl4D-rlC~I=O2+{K?>6x#Bd#2GU#ic}6aGPTQNXU!WN7h;u!M#`@(k zz1n>fK-nw*xWM={mJDJGoHyOpC$%}Cq-Hj|6HUTwa@JbznQXY#y>y-m&;}>vV^Uq| zYPo+STLc3>-h&n(ewYk{yu3@s6FoN2C$}9(lejz@*6qDUV>McTZlvk(R2?~2jODsT zTA~NqAV3nJVr#4i!bHoXLjyfH^eF|5*&EA!q*G4MY|wLqb_uR@3DKpRo|M zzeF~Dl+B~P@C7W2X)kHS&Qx7pT{bcZ>vf0~7>D`TQPi`c_t^~k{@4VuM=tc@`-bFZTR=`5dF zjJW-~3n5tgF*)E&lg?9m7J6P>xycornPo{dA!OYB; zSNO%O35YCiq`}SPw_&AZWhEm|#`Ac(ek!=! z_G<6Sb@%?Pk-?H@4F12$+w2Kz?%lb6-&9_KENO18+wI`(f?)h8R9?OAv83pU(1=_! z`V{uNlxXXiZh!a2C5>V$&Xr+524*&ww}!HlpWd8zA255kbZi_Mc&YDE^G%YIDVQY@ zEp)5oJN{>vZN8pYWUiQ@zhDzH`^7XsgVA?nP!q*(ecdAcIb%9?SYq!IBJvT6ZX3ZM zZR*aMS%(^u<%BA4$V_{Q-`^LYD!ZJs?VRe3GNFCn9mu^o1>I+rRXSQVV|PXWe^!zO zoi$zy|D$~&5W)CiQSL1{+R8kv+^oovYr2Z0n5B;4(XMm!romL2oN25&m!)Z)B8G~; zPQIIX{kS=yrp=|fx+Otcuw9J@dBx8doyXF&_m(gC_%&YqF`4kiVo9&^n@zh7+!rX~ zue9P3%)cuI(0I;WT%VQU3+ik_AA4%!8*2|b+Ji>C?PaGkmlBLS+^pnJj)jEq(MpY- znP6~^;l3y99PJDD_y`7hr}dWu9pd%Zk&>6po$+iDfqu&j1FD@<@gN*+OL-)E^-NBm zG1GwB<`l*4-e;bdR6o?Ja$Zq2A3tODA{s}U1qyWuyg=>2={qBWSn%>NO+r5BbtKs2 z(BrSqEAUbZ?O|g_R^0g7sh1UwBXnb|fkgRJCc|O$q1K4ALXUB~*1_V!>6lP3z+8_y zrAOkLE_!idwBMoMMblQC$J|p8O=ko5cXeT*p-rhq4B7mQx`wFN5B&&0fiM4_j(s}} zF@M{u4y;SxhAva^R117QG;LV-SD3}5o$kxPi{fkwZp>G&u=P1@`SxsQ;6=2%^-bd5 zR|7)=6!FKONNfixktLSBQ&K^%YTX(oHM1UAejMqc{6cPOT4(JapAg6ONN(b0>!+8? z)`vG|yxu>JGS16jtC8NTt$sD+(^+ZqdvVBVx`>X_S@@JukH~d3&P?7%BM5Aju&D|$ z8yUvj+&qau^ri)B&BQr&S!6TIMZAAIHQfTG)$7_=SpZIg|GNCxk#rz<{tK^yR8f@~ zcJShXB9Pj-O$Wp3mY;f37rx^mS`yrdaC$-VER4CPfme zvGVW^k?Iwhh5lAXx8~!f9y$*esI5*=@Kkn0HybmC{H8rCx;~W9_r^_*i;(hiJSOey zRNLP1JNJ__>4B@??8_TQD%8}@2&M_RPJ;SGP%sy(mQEDbe)bYkSF^CV@@%8>#tAs*tQXAI;d|L~va$tot^eEM{vXE`HkMs0 ze<~H+E~O+GkYguHpkVjN_areB)6sF!U4?%kTx~kwF4D-nG3cDqiV$K7EXWwt6|n6m zrNVZ-%FoNY-gV<=iT1Nc_}0Ca&}6HrTKB6>Vb?)-N5R);PD<2&83RC>A{0H>8CYqi zpR+*;Tdd9&nkg(6wPsCZLvM_@+T>p-*(5nk$yXSwoZ_agPE6chy(#248L37wYQ9r? zwzD=X$)ip#^44rWU7F@h@7#7x^xQK!MtO3Ned*%|Y?x{?Ody@W+jPR?z2bRR6A^B) zjIvihHww4U|6-%M5((n#`2u;)%`p(43L~fl6#JW_nPP{ot4QC!A%&Y+u{n+1294>!~jFTo9+JpOy+ydIbr z2J3xXh)_4#w0t5A7@*9qGDbl&6r+TozA0uy5No(z)u1*LF zdS;yuJWacdronsGi9~RdgS|m(>-*s8(P}3-oF(gryl6d7=N>M<)IJZ1kE9ymDq(zmE^qZpE{11Vx#q|UpE`wEE|1S z&ZVBc{w22tOu$lQer0db#@_FW;;KkKIP;cgc-?DwPb9Ve^M#cFC)cTP=P2Y7{oEB8%Lui2@N+HK5XSe$yH z8yM%8ki-E9nj{!JkBP7}V_!>WIUWh!fh!fMoPGIcwFI}`Rm3%Fe-+lmFFfOO86(vx zF-UwT@IzM&IbSI25<>>J`v|keT}C8k8ax+QbR_IQvZ`3~xr{eFHpxmkDH*UWudV&0 zpyPg*Mnn2j-=e4Y2aZ#^K&qLjPnmKy(0b+z!g0Ri3{#G%OLOqi`{s}k{Zf;=1#JL4 zCxDZvx12Q>F35^2EWP$c-*EEsL1@o8lP@rV-)p!oKNQ`$10g=D*9=N)k54LcHSb!8 zTKd|CX+pk5=WtEUHO(9Z1_g5TD&}+i`AH**6C(mnh}fpXnol9ZXmuS&2)4Q&QdO0M zeiiTQnbPB(}k(heBV_dHjM1n*M(rBmE{KYMgqz{FkGIUxLAbyH(k^#<>Gngo2Q4z$j>z zql`z-;$0wpGG!LHjt2s<$1crBpkzu#T?n&4g&cbQ{G2-0)zjFWaa`HAt=UlrFkrTpXrsEN=BP#YMcvR zxeAG3`p>7s9Sp>kb7opvj^(++`GzbV4_-(ixn8p8iUzJt;vWW7*U-=oe^F_ac1Ia~BhM}SYJqycC@FbG+{2x0WJhpF?&5Nuocu8_? ztlwN7MSw6rZR<{hUzWf^h|B{*`nT?L7q*v1m_k(@S*q=Z6wmPgG&g>uoXE(}r6++l zi^6d_*j!UwG0qY*x7XJ&m8isHk|L6RYNqJ}p7u@Fnr^UTj9v60#^`*$nuRi=9{zoS zNWzfjqUsrud))Q%oW`=+FFfs3lv?pErHn92&U>f?K|UwE4t^$#2*NLY4I$%<$A_Qb?u=+3$1I-t|i7Yb+i}cPnvJkH}rl0BX?tbKFg65M7lq5GKaZyfwb;T*X+HKo)*P$CSXQ zrTi4HxG3#(X*OQd5kpgsHq}M7-TbI4Ll#icLUd*x+^>`(u1}*Zidvr%&gWNSQ5{=k z4Fr8k#i)%(J}6WyiXY|koGpDXhr}PSEnm0><`_d0`w(|b-`o$K)w3z!U)2=I+spPD zPt>PTZ*3K;Bh5?txf?H~7%E4qsKn?Hro+@)Lu{yqg>~_GDMPl11Z1 zkt6G-6*eb3@$Q;fonSL zQEMW43Dsm~#!+f&$HQ1_E+?JBvlVZ& zuwuY~tim#;z)8`cOlN#x_{P?ivgyaFi19`5ZGv~d?xI_mGb0W{ci#BO-WKF0e#of# z1jCI%)6&F}aUd-L95rn8uPVsr^`NhilWejTGf9(gg1 z`Iwc=ic4)}qmQRd1)YB6@-i^r9CA1zIlWNFle2R6-W#_duETw`&0X{PUGDYOfbM-? z-*>MEx``8amkoNYxpO^RtIK{|6B9cMczB2Qe-!Ib?EMkxz#)Un@ZvUYh`RIINF`VN z@zL7ad4rL}7Oof0s^R$mV zdrh^RW%LIrV9s_e)~CdxX~~?yWy2AOuxukvCt~6kiH2pox$EX`Ef}?}PSU97|5CTW&B7Y3Y($SIUM{-y?a>kHVSdb z^Y)=%ny^c$llla{xR1~i+MdUoE=T23^dYYhv!3xZo$GExOJjq#=0_?A4RhO$Uu)HS zhjs@3Lb%1D=No^#IrE@6Xa(GL|1tOcZMV1O&H|K465IbifmW0e>?j#MO+g0*(m7*w zGpAHoAC3?+jHV+bG)>YZNn)*wTJO^>fm*pq3d&jEmAZwsUXHTvGA)<6y{Ju_)b@WIg8yDA z)wbEpNQgYUp4g)vLP<`3gRWLU%YE7od_@W*6&kR7A5LBm4Gld{cL1+!kz`L4w94=J zhgi!`-`f6WDcg$G{Hl?d{hxgxj5cBakdY@HVRdt?*^eQh>$bd(gL1~v9`35R3$FFW zun&BEl#=$OIFAY4PTeUf*$$KbhLRHF;!@A=N>dHabaxjRrwfEvpPa*sY{3XmRy(Et z>s3nz9|(xtYhjP5O^K!dbf4=bV@Ba9=4#`Zzi4~_9siPyz$@zOKNyzDZM0LTRDoY} zkJKJM-DORj3(3zu^-)Id6^O|l^6_p15!j~jyvNx;ghdjls;jxaxCO6M$}2r?#Yp1} zcheWpj?;_FkrIBJOt$?JrOXEOv;E1J>f9F;wrT60NCtFX)fzv=ICc7wF2!?4IA7e9 zaLvQVs5!_kpH9}2Y7JOzWZB!=^R@T4cAp4giDqywwod(* zXB!m@=>}LI(BT^oPtgxqYZK{l3uy7@r?C|R#LGR1od`LWWMpEp-Uo@_=ITT<1DN_X zzL%`#1gyx6lw0$;PPSMT4=WS>^H^5b(Sh$u^0i51xwYaQ4ZnPP^hTRwW7kmU{Q#dk z&E^?nP7$wSura(8sc>Y>V`>)&Hx!!cD0r!2NKr)9b8FbS_~XA123^s->{w%fFuQ)q zLnN26#k(kCN>TTMh9Y5;6+l=AU)>e(d*=l>KhESncRp2k+*hvd^t@1pkP|hv;Df74 zIfD~Dphx=?kMMVc1Y*suc)H|fQU(Tw`l0JZc0)yAQcWuun2ehPaas5A2t+QhxBE%n z*EBBHq(hZLk#oKsB-b2!nLvbb(={Y8NYmp2@0y?)s8`ewfAmLpQE-I{WJvP^p=OGY zpL+D1dT<%JBlJ~au50DD%y;8&G1X+Rz8enmiD;Ge{<(g6SeTJzlh_aEQJS0_i=f`< zpu=57x{OGGP&qCNY=7)8F)&a(Cs1`cAgW9!KSEyHLFKNwk_uwY!pflhzp^>tuwX_K zkg{HV1G1U^eTtEF4OdrQoZHAQoiF#<%cr2ASWEm2BO6$PFII^d z?Pl`t%z`L{So%5@&LsPvyMqLSf_neY70PcEZ#}PDEu6!~|JkSFsc$V5j58aY;<7T9 zIZ>1Kf@8NiZB-8AoG2mDnlSwipqE%0m9GJ)Ao3y>b>f{|-Kz>Wg5HX^`Q z&kCg|ON5S6bR?e=Z-+bhb=(ej*LQEKA8f2PAFC267o9XO_8}@nxXMm#jD!+@;o!Qk zd7Iw?+*qFhwg2<&|3~u-FJ6Ol^V7KRO2tw`nU#Fj)(i+6c}c2#!Bjfu9f;U;sQnbf zoc((EJqIBjJEVZ|Yw~(DqlFVBanu?7p)UZnLB`Nn6wGz0Y`B5MsF$I^!}WZEwri0! zi7mZvi)N7-Igl%z0Mbj7ygaJHzAk6bDH2Ny1rf{%i8D-lKbzHz{fj*O=K^*dcwy)b z3f8|@F~d;v1(71Z9%ot%BKB6bq*RhzIW>6sC$~PF$0xd|#9elobgkkBO#t25B$M%H z_!kH}p9_*>1dJ70+lBG{f|hx{j0}&ST_F^I%&GS=CZsd`{O4wh>b{4zzyltb844P|R8$&Yp#>_j z2^=hBd-+w=ucmSv_`v9arFiTxYw9)w9LOpaW4)E}6rnr1ETYLU>Wq z;iqby?qaR3qZ^0LOOD+L-TCeNk#Z0UowB~fJh3hQ#+ClU_t{yEJLs&N|K3V}BUA7O z79Yo0XS&Z^;O5MI`1@x2AX*mxt$y{5OwH7#p(a_@ef^7_d&Sf=7h5WcF$O+moel9i z-%YOJ?|i*$0`9QGvu6IzZ;|!)O67bEwb0}+!aGU9znu-Lq zX`es1IY_%ms~}RU;iHyapBGL_V>6J$WyfR48VnDL0Pna8a$rEf2HTRS5DRIMfY3o( z>pl4_lD-XEN3{E#>fKzRGGip>_kmYcc_*5-_fb!)N9dVh@fm1LZ_-0&pEwTSMCx9V zI*L(eoOB*c>h*y&0P9)6?S-=#kXY3<{?8`+4`TcwdJ7C~76gAwPC`uRUSY;}JypWp zjxIRA%7{9WV|){Ei*@@=a*I`Y(8HkWUo{p!$Cph)s?q2%+`@Xl?tGCmxSOZN>rGhM zY+_r1F)VFdo-9?4d~!A<{(O70UfV;vvzMq=izBAMZsS>U*@t_+$tu9P8fO5C$GMbB z$uYPx!UCm>!i6E>{NCi8h7Uo2#{iOr_LpT%F`$!*@dPxZe5pec_FVX{6dp6v55_nq z3!i`>`TG>Ep!Yme>#?92P52vpn%0uQba~K_bKFt)&o9QVfC#r~Z=PoHd5-%IBv6zX zRk2GQZRrsLoBwVfuqqsQ6$qF&BeGa4mz!TqP*8u~de+O+v$9}u(nY}YyEZWvpvEgI zLB+pr|Mz~ZmVpx`;-9Nzkq(_DEoHGsPqQm}wJE-3SBxZKCpy89n~o~&$`=b-iue}k zD?$w`!>$PfXj)?O_)}8X7~klrot)5qe6BbselF5Tp>;r-^;y0svlnmUxt-*Tjjvj; zye8SS5shJOYk`@yo|Iz?E8aS#|I`tP>qyZo3qJr2&lA_4K1=uzfLCQ4_i+gXS@s^B z0@-Ku90_Sfv_F_@f7R{f&pwmZ?n%k1&dg``p+JxVLs|z0>Ela}~?GM$hU7Z?N-tZ(o$3uy?C-5x?V#5bBg@WH)jR?)=u_t}iblaU?tGau`}n zu63+UddW+3AxH-KRAkD|woY~9+2#2Tqcqh!S@aAMM{@0JCO>)4&@7n79EdBhjsE9| zi=BJ=^lD;WZqPOgUprdodZ5ns^s$@qCcuOpXbyTlaQwQGa22CZC<6^E>;oTl2b~(QC$C zTSwL+nzF+z-^1Aq1=j};F4H@hccduZQFmFQOpf!j5w4#6pbifAy?zT(F@9Rp-`8qr zpRjdsTqV`Hvk)~m*>W`zwT*mvoxyD8klLoo!dZ$-Wp`l~ z%QMYvF-AlkH_#SWP*{AMHqWb2Or|b({<>FT6Bp&A$l}o`!h^@Jumz^&>l5K^*+W4a zJuKyjyA?Lf-R=PjP;Wqt$e(&+nEU(%n+e`$zLn1yI`ua@yI-j45|%B+soZQt7iA8T z3xBmG>@2UjM+U^RE*u^q!FK9vvR_j=!IFY}5Wn)RekLbix*$3?mjM@I^7!%NG5!#v z);Yu1cNV>};w~wEge0T|p*rm1?l4Y_OvJ#DYuw395i>m-m;jhl-S^_9YGElhO0srV znt7&KAB%oT?>p^IPA>afjFNihTkLwgJ%QRwS*uYxkuJdp2R9h3N8a}_h7ckc=W@fC zNcrcZ2{r#Q)i@d>2&(XBYG=PWIuE6oJbVcT1!4fhx^7#brjx%IsL$Lory(N?Pfw>* z326;%!}6HqD_$h-1xG!_h=kKu!H;0kHic${>rt8xX0>5c6C!=Y2P|!UN#EJz%nTK4 zscpH0oxM0K;6W*{AW+CtcGBhr&NhQfGz_drlC|MJdjd3|6A>)njUpu-|T;3RK%SH=I5w!r0%Q*?`( zpHPoWGB43%C#*`X*S*#obIY=Ro$YqOsGbhLIJZ`KD}leMU_d|s#@2MH+>%U+yeG;S z;^B4yKDDCWW*>iJE+^>pRbNbMY8N_1Rk;q*RtVEq0=Vspl^0Gr@F?vfIWE}5h9Iro zw3h8YTLSdY%t_%o*Net(1Wo`)cL;uU#(JvTeRjLu*S|z3_S;zTnvG~rhX;chM1i%! zRH%T`P4Ag3UScDhQmK2CcO7Z)`Xs`ZPz})Hl7wOvBg)Fk5Hs$3*;woK0QY)6>JpcU zrr}z*d`AZF`8Fk9RQu@f0H<{fWugy-W2|f8u$w*XP>Yixfb6$RnXOr_j z)+s_B9L2Vvj{LV$yYd@}FujwM(70T}dKWJZ__W!Lbt$Re%Ga>;b-BLN=cyD!RsDL2 z)P{Rhz`3_Y(w|d7brY+2wu6)BNsaS2c7CK6|JSrc7TT^7%6_?#-jZaTN%hRDWijpH za$#4+gAD;@US)xVa zxQ>vc#2Y2|3l1?J!9b*!QqX83B+wcGtzH(737FpQeZT%CVNgijOXs;RbKuT5AI2I{ zt^nbM{G^mc$3XO8i~mTb2*c~y!|LY>CNlo9bAc*RbM>EEqika4bQ9fl3ah)6+?DUN zgSaW_!aprSG6`Be6jS`lS1yb3V-Bw-cLRAj^SW!ms*{-p8tWh~Q1+&teBOB8i&1>6 z-fc$l@ckCseBUXYh3(HC#bw;qns5r(@^!FVvoZOjgyVHuQd&tH5xnCNt<$g&&Wp!h z$Pp>yVyJbC5>^CQ`E_PUvAn81jgG==cCspQK~b7D#q%}S8VU}LBJhVf&q zbqaR`1g}ewEksnhOF--D9FLy1>z<_l)|0pD=9*J|nzvbdM1vkYD2cLBoJhy;njayA z<}IHdVjnC6+jVDFw3&tBlc0iF4Z-G5w}W-@iW!;gs{$u&7D#(4y7bHw`89Su8z*ay~dzQUwI%NMx9!*uLN&FF1x;cKVBUY<{>ffp2!N1NIN!|L4ZUjm$LRMp7kW;WJYl z@qH#=G-+MTjG!!%pR;@fVRD7)*{x&l%cC`26$4VSz}Kq3V=J~@{g(0?al$-dnzTus zrM2X8uZ{QFO$bKpwjKR=dET=cz{qsE5}bej6W%6OCL4Qt|8&(C(`01}Z~S)UpV#Cf zlud17+!U`@xOGZAQXiGM)~{?Ua50MORap6``i{)Wfo@AxD@9d-A25c+@hY!aMtQal z27A7{#8Ifpkty?@iV@7cP@2a>fS0D$fP1m^^SDUTgki#J?M9SjgkG}FO5;f&IAL? ztCVyZpOmuCUYzSRzBf}9RB^U;{Z%c7^41a$<*CBwP-%*LZ1fHitcvJqpJ?#Byb zQT1uUZ$}cxAtUnMsj?m4Y=hTEHwnS|EiaslbvJ-w{KhcN0;kl$k^nYSSj$~mpv&{W zaSdGbG&cq2F>(Ep=!>iPZmrPHN)kHzWb`ksYeJPmf8H2t*RNEhSq@qDHj}1$Q_D$h+h8cy`VpiO!H;JVCyF@=kox#9?*0yXTm1 z_R8m^PesO3wCTj5Lo<(T_-*k0Y{gatZnFjV`zURW#gmOWqKQ0!0IReN0|H__;`5|feoZztSvyUl8*%T z(@uFowYY&|%-}6lgh0bW0~haZB`S;^KZv+ZKmLgEr(Ew-l4tvX`u*r`HCvU z0qH%UWuS{`JbfDdI-!I69KubSkf1HTX}fE6#kMt7HVt2Kd7)T=Sg|)pI zl@S?eIvHBa$3b43QZg01N&Uu$ZG4&hY%DXc!gC=o`?-IJh4v> zt}GIWxt(H=iiw$);D2m*gS0*6d3C${LO)j`rrM5!vIi4oq1TyF7u&bKeVr>mVsH5R z=B3fksg#Ne0wH{JuNv3inXr`d=()OP_lcoo+r96lgJdGJY@WAG*+$jc!~e6jc#bP2 z9{*39$NWr4r!J3sP(pbXo>`E1mAop-Fu^h&T*?S6GXXES_F3jmx#w#+%FOneAB!K% zHG9xur7`^ns*0U-ml|%lpV6|+nU1D`?6`B=ob4}G67kh%l&!D8Jst^2KVx0R)B^Ff zmKfsBV0X6PHJ|h5R_3r~&DTCk&k3_Z%Ju&hC9Oi-YQFYdo67VT_0_8%RXzw`rTpEY zc6Fk1agD>2U(;$dQ&T5JKiT|Uc~YH<8rqTVf!T!#%a6uVSB3XG$>pUiq0p-{rdvvn zv8dB8xT$bz7a4I-MbOeL{E*JYQsawuu{?Vw$Oy#>6gdOtdm@HrWJ8%xU%zlW7CDR5 zD;{WR*Xt-3|G(0tiR7kesN);JGBM`T6n(ymd;2)gf=ZJ2)I;l8!`XCu04v# zHlv00OYFS?_6Ovot6_RgZ-4C;3)V1K1nbRJHECXgTIkLb*0I2=HIp1#h$M<(56&QB}2BP%)w||`+s|c1nWX!+6 zPEaYWrHTXP7XcGuzSph#mt8=;(!z;i`xec#=W}%vCghBj-EUcXFb6zsAa}inM-b44 z>0%J|SZJ3N-Ms4ZTNa!GZ-Byb4Z0Apd;P078whCXv`Za#3k)th2MS)P4QBpp2XW6$ z(1`f>(%4gMYIf`yca*=ZgOqD=hT|Fg!6e}MfZ!1Ro0jAtGCv>c^IEJMepjyblne$2_!b6Hw#mt5XZ&s>2X--J zCLxzmxcq@m3Y*?puw^92-@JEHy!;g;e0h%Fg@|{^6upEiuo`!~<-6ibLoxGWA72_% zBql0MxtJ)sWipS)$0t#v)nkk#-1ZZ4XF_cM3U#MkNU{Anbv#MJo7rr%=UMIh~%YeTO?_sb@(P zCbT-ZJv9+KjpYuj$Ui-4oyD}gZ1C5~HWgyTHxptpvBr8>`-AVWcHZxBcU&OG-L^KD z@&NOjc#ze3NqXG>@GUa{9JuIs74mh_l*S*zvi+Z4CNAtz=#*$l&u0GO-Dp}n_;B$wRh?rQk<$Neu!5cNR1QWYB*SXw$)A74%Y6nHFEjEoKksS)gt&6` zM&vo6PECnbRwJa1s1G#WppRXp%WFc|a7vgz?}0$7j!K6xeE-rzgZ57RwW^ll zKxWb(!ndr-ed5GeMI1#AnPM@O-alP&&blNhH}8B1e{};nL<9TEY-T_dm{(5YYV~(3 z!1qk@OYMJW;=K2k6tc!U0R5hBmg{5#U^b#A;gUpy2@lePVyi{kwsJ;_izp?wIP|Vg zt(eq_@jW<5#icq!GHb%0XOJ@Qxi+I~q}f(N|85XyA3f(jBs>*&jAZ|${b2GwasSDs zS}pNaJ<=M$qLa9x1m>nv;VipXPo62{l%#CoK{+u>WVs&$kSJyWbX{hq!j8kP7>W77 zdCz&?&$+(oY)HtXONQ}ag4ClmE?r>4osPVf7f`3py$ZV8bvZf?gke9v1**%mFK=9A zXXxY%%WvV}<;n+jYIW`>g-shNa(C90uJyrz5i{-mN5o>?VLpA3rE(c#2T5zd7Q%!M z9NPh3^Fopi40!(uX0$a30Gz>vG7Zc^bVRZ_U>!+|xUe6brO)B>D`Gp$I#o&PeyTpYey^8!~-vK-?b9(~4WDE@UmcPhOTPB9Axq@L_|PiP5m%Pzl{=+1$GN!IQU zqR9F%)SKttsoV+}D!d7#v)&p^+@|F+s%!z{niVBV(2fLVQbdAB!s7Sg9;l`?cFc%p=BqW3wTVxmvh+`Z<*olVU`#;k~J&NRcJp4UUP7BqYCwtEhdav@B6 zTTxy&!!Z-?D|bN}mN4EJkPo?FA_3cuhwn!*J)3EXHE+O&5>aFJ)srBLI1ZROT){5Sx(L1_pzL~@Ru*tXuG$Is z2M!A6Ac7)Aho4T980uLTe!h0#q|lcG&{4TJ&*S@4BFYijX#@o%c(0_v(+LI^f( zLP^f;$P~4w^I4t+m56Ah3%}L7wxdSq$j&G3*QAEHOdlp@mk=*z$LK3UoD;PKg+gkS zOu^vya^dmo!_;g;ctsmy*0M6Vnbc4&YjGW#9%{}yFBq5Ng27G##x;m zGhf`a&xh&H8#(O~4M)rU$-1?{*US|LOXXNnUTfct5Op|UL;Y<(gsc!aRG5e0j)XW^ zAj1C}vXndRX5-Jfwn-tvS9bbs+K$ItlYV6j)JEK%EsJIrE8X}_`;W?EEtaN6MM+Ps zN{y;s%<9{`#Zy$%C4m+p{2O?tBe;yKCqacnj8@;nn!Lech#ikAfI6xB<*Rd9jk4gRPjgzBT{9L*Cp%dSN-nI`bKTe zouv`IYMz>xd-X*uMJ*ZDM+1nU_%vNhQ2*gMuBFe$3?N1p!OiZ@6~o6vrBW_mXrBz@SF6ZqxW?n(b41#eFST zIt8Z^b@;K~)Jo3?3$Hqjy((-ds-nHw{G~ksOWwBfraz@BTq02CxvH0X4nLii^d>E1 zOls{h`&yVp{e39pDml-+2s&{e^PQDO!?#!w;Vrs{<#QaEZS|L{3v&)K5D&7U z-&%YAQui_bmx=Mp7>i4P+@b&bdek^wzB|hle2O`2a?4&5m6fujcfbjRQ(>aQ2~FD0 zI$NX3rgACPr3Hz)EJ(_pvIS)!OEA#Cj0iR-RDSASfQFm8Io5nYViVClKbWti=1-EZQiENsvVbadj}+i9l$D%UOTb^kTT}Y8;tx)T$TbOft)C5D7Fo$}xH}bfU#NqBM`a~!>Eqx?c;Y+6 zuvSk~T2|W@OJZW8O6;6kC*Q9Jg#B^nAEvp*SJs$)gTk7MAg7tl+sxPQWWQPM!?(X^ zCT_^G38;0ZBlYY zcdk1(J)%F)_y}WL>05tmOBon}2W9z+fHW=&RLf zIgfOa3)9^90=j)>j?XsRMt`uj7L6_zp4t#``ShbI?iiimwmo*&@mux9pPyY?-X1%( zR6B{!hRguaB;UdQ>B=n6g5_g@W{PHpny|)S8yE2tSFJTIO9{+y(I#C#O892xJWMS| z-NXV0CrnE3UP|k+X30_PG5Xt_O%@q_EDaNrSW&o~iqR+Z79&h9-hm&69z|b#MX5g& z^Q?;2@+sdy?N@S>ESqZe|Yg3Rl-@eT}yiBUc>qIOa=}JMUCvXdXoRw)&ukYlzS0Jr9D6I%Tl_^-S2y`@p6RgZ`}&K|AM1N)nH3h1KpDOt zm%+$--Qst3t=x};SaeMS-T$*i=viO)TVy+(T zeCwH%-w)3$aUUYfPK{en*S|HyIrTc}R%iz8nH~o3c(1TO7dFgg3+(%4^_IYSwEtc` zOO&%SL+L2r3?-e7V@>ZT`)9@p8K{Mw*oM+aLx1g_Ir9t#|61S8DngNxhBktpK)to{`LcivJ>3;dtU%y`nh z(my1SJRvSYaC##RH8rNh;C{?1esb=&=#@0Nuckma&#(57vi=oM?>zt6Mqga->DpO5 zrqR8e#N{RYa>%)6g-HhZW-I5^b7i05XgswoQKkh7PQ$CeAa+i~oR(R@!(LA{vn@Sw zy~3t1=_sQOl}*WisTM`V46SF43Md+UMIizsy3k z;?`8p7CA%6KGko*?UONg^j>VFPH!%l1-C+^|2YTw6#15IVd{qy43dw&1#H7yu%O+! z1+(`qEmw(=&QcG4CJtg08PArPog$dL7mlWY#7d&cD@;&lUHfACTH<(9wDzTOd4j@bo>t z#Nl_#2jefC9tjp{k5>g;0!hwO^z!yJ6ssM20}?FL=|5%LVinEX3eK$$4M@*Swz|xT zH>`h_)h{v8fT)PB|A(-*jEnN!+kOcFX(?$?x?4IFk(Q33b3mlKL!>37h6W`?I;6W{ z5EK+dS{S;!c}`sab>HjRd+pEW#q}CyPR{EW$MHQ_VL7Rn0>-{e_8^P6Sq6H0G|v6X z#?E!3Gs4xGG@|f?RRU@m7{A@&%Dy$)&JZ`cl~o3-oLLS zMjpHh^MOs znJepr&o*9}6$MGQwSkStRE$NwVu;YlwaYgM`z66IaKRWd<&7HDzIua6#1t_M&36VH z4ThoAVs1Y_KbbR^cK-3t;&Y8LSXjG^S&D3i8QVw zDF7Iqkon{;*y=I{lWJ=TWJS=dmd}-!|4({wntR5a5-k9dD3QZuBgrHwdNEVWn8o3AOACRH-F!E zYt|Eq-&!L0*Fo~PR$bamNq^aVcdzfS;x9D|zrGJZr3o}I$FV31rWCSIVA)XAe$CJ* zku)6hFYtk$bL!dcOK@5eyurk&0T*aGHRru^(2BMrp)e`Dg&gbYTwQ3M87Ucxlm*SS z1y2ERy!-lInhqrmLI9qFGgqkfBgDAQt$5i2AlaV?2THC-%p7qstKPgl=We}6YjWFw z-iqDp(wRB6=e_%Ap?kd}rexpN%XaX7G0%Paq%^|N%ZE_DyjWHras?`o3U&wga^nXC z<=?^H^&-*cQk`m`CaTE%47}O!rYjT-;JPg%?CW z5Db(i=6m)WtdAEl{)Dqvv;>3FN^#W(@C4lc7IU-JjXE-{xeo>nk z9RHMasBWlvf=4E<)w7Y0Q8eVtYq=H?(nJ(Un{AQE4#O-E$orT`4?EB4Z~10oKhH!b z*<_g}CM!fVF*@){(HF~jC21sEtX<~e?ZLDo0Q&4F^+ik0)k3j@OBWM_L>{pa{oBW3AgcR{ZzqN2_($XNjuLTX9nAKVFF+)?XneO{!L|@uT-82eR3BJfk>_ zrRjRD#g8iOloVZjH%lyy|6wIXb%W7Ol5#j03)su6-q{?^YWQO@rkChN_Q;}|5+PRS zmj;>XMi}20AJc_w|6F1ze*o|4hLfIS6U!8hWbwKzUw1_i(2r+b?$R<=xNrV^9#2P; zD(;PC?0u}=axhflb&k+AL`iws-~i-J4++d2DMb}u_f%VF+X)Lv5<|xD8+>?g>f63p zhKyXYM5m4A0=#XikYjcg?rusfNt!jV)RYZkg89z0H zP7Gc}qy1nwwp1kFoIq9Ow=pb2e6m;FY{GbFk|Q#xQnWE>Hbx~r*duwSaNg{um)Vp5 zL)`NwGr!1m)%kf?i~!l2?-tAv9j(B#A@fk`q$iP&wxGm&WQmVOBn`NW&kzEHk`x_Y}M%YvXG*2WDV1csgKfLcpONDc)eM1e6@_MYB zeKioz?-=&T@lBUA>F?rbEkT998xmrOD9>{sok7>!sCI2d$EAo6F66P=z%JJXu6U-G z=?sna(`5^@iR>oF^T_3KlL9iafEZVr4+5>)FK35We#SF(M=eq~G+$5+vAu!~_ z`KUL|ti7X?fVHwnXp*xP1W+L?_O2v=q#47}(Q#|OT`IutH_S2;YGKsU0@iu5EaVn& zU6=qicl$xQOy|kEn3{|&=pA0zY2<2%*U(EvX|HU}ezC1@3AmVAC43AQAmirr(ktW@ z%d)s8&X2aU3aKiC6!swYChWzAs&_UgGz%HQTh1v{F@DG>OL$Pw^? zZ8Yw7woUEE*PMAf4I_B=1dr|fCQ(9Lmv7_8ynb$+GMJwoa z%puT&=2xDll*LWMvAI!Z4y&wP@4mkaIVYhF`ejHa;z1*s>Sb6lse2QIF&@lZK+QZ}cmc|oB*$40t zpnDr6{v0h@IE>(lwXpUDq*{V~af?12g;4eO0Dpydoq*vDSGG4(Q6)>h0zwor(qv@5 zSZbN-fWm20=AhyB;h7=j(9Sz_1993{l^YuWBlY;v^)#&RIxyka5v6d`=}!VQcji$e z>9#H~si9AbCQhO)zrHUQdlRInZ7W~oE9SXP@KLGCkgt#fj37h6$|Lf~k^)^dry+@? z@sLD%4&?rq<1vTrOaMj2}Zlf+RUdejo|J9~}1D`g~ZSy-NC?okN znuS66p*P0QTO?3#P~H-npFJONi3?zJBzi`lmAwafzs?L^;qz;1S3Z{-G6!+g>n(AB z<+M~E2?Zq67(OVw{LQMmMc<&0^W{M@!IB}@;Z+7;GjRTw|3`W3s;vwui~vgVV1i_< zkD7xhYdRNFqLeup$=ngBZ-aS0z9D)0TA#NTW`QHHLasXJwhi!#kexu6?fy2;zGo zSQHNN@Mvs?v_-l~ZM{G^Ia=1&{OeMs975>3Z!Dedw=*K{jiPpk#YK~*J|q}6ki5Cq zA8<>JVAFXq(t;MxZt|F*Si9c9PET^3<5s)3GJ+aiuI!;Xp z562JW9!uRETr(rW=ML1<4Y1}4?`AQ-<%va&+TChApxoSH9RF34!{<4DLhWM7Q-_(s0~=RBn&|w{im+nXL!Vev`cC`_2H&|E(9F*6k(^KW22Z`C@68_v2Z#uSs99rOMv-Z#IyV{|$YWCCg;;-jN zbG3Q^S2lV;Lz7(#Y4aesZF8m-1V`an9+aPDfc0L9zGuzfC?b#^fk^qSKjAaOSBy7a9~U69t>15p9xVQ;{gj5h=Qr?|P_socG{{S0hIOe78`Ev;gyO?-%86Z$I1){a!LGHr&#cR7zZ0-b38%Ns;2^r!h|C zJD%P>d|EgD>r%N<+;hhe;Np1$N*X;sI+=sUmS!8KWE~`@v~-nyme>y-* z|LtQpooSJB2J10DCu->C@3@J@O~D;|fP%1Dg}XL;>^}7V>OC27B$ZSKd9ktF z0wB=cQOPB0Ei&sN$BH=N{CsD}Li1gPUk&zt>P}bMPkZ=5&HV!0Ml2Ena`oO#ob{Y> zQH_d!2Q5>dj*6pS5x%4$JN2>iRAfr$cE_%|XdTtu?ZWf4o95@?ds$Ty4LB=mc)V>y z2%*)Y4mV z5C(lZaQ=GzN5Ifwn`IQ#_jsD|8>Bq&Qv4&cNPrHh+H7wWeK|atBtpGc19wj5X3!;M8?gg4sJYtv;zhrr|M1_Yn6n1KJ^V;VUu^}fg80e-X=vDe)cdm%p81U7GMUZ^fuvErIk0v}ZSXP3nKeKD`MIIw< zRoT-OkkjkfYPaZBt{ISVL|UiT<{~;_)bVMQ%0WzG65#+}JY5zytl&ei<+@E_^_}dc zoZBNf=Ux3-ekhSme;xK6KKHvqEuc|hp6-CqDxUmuNtW4il@QLBK5O5vAKIboJLRoc z>T>Jz%kFd1tN3+Lt$gUq{%M= zWB8J?%FloFb?F94=;D*N`Sjh7`$P+11n#9|X`$rC(@|B&rN5+pVJTyx7E+26ht10w z@D{|A6vSMQ%mqM|Uia|1a`cCIEpF|~Ed{RTV~fEq?m7oLFcLJ;CG6Zj0NQ{h09_#f zlgu?8r&)4;|Ame>XC_y8h#~K*OKDB2wcWTbZ>sh*V1NUH-v+$@vJXmNhxsP|69~1( z>#zbjQJ~w19kYBcgq_>9Bnrth^azpe6DQ~d#FNR2g^SOTXAO?`CQk47h8df6Va#^# zIZWO{Z1z-&csQb0?cbi;-!3t}wbs|$w^U-Mv89RfE(>-(U+?R48Gp)gd&%vvV-)i| zFSn{dmq+jzuX{yc0e)k4#)e&!T!GrgvalYh7wRw#2OkuW?8T%u@gfUsCpUmc%Apku~#`Uew3N`g2$r zKsVd2f#)$XWQO$bq~Narad`@x1*C861SC^|E)RzTonS(Z829K!ey^N*0@^9*j?hft z*0!!<-#-BerNY3S_F~Wt3_E7RKnkD6_XNtrbgz%PX($c#G68O^=d?f~ZKie}d}ix* zA00Tu?8Mrhy9FF^8z5nzqnjK0vtLX`D9J6}zb-N0Erg+wTIaVNO3Lm1E9NNc6b%i% zGhDs4&m}48`Qu?(k@2W2VLs*D4!Ow~c-G6s?3v7LK>E%0u3lXJrDnSR^iDj;2E>EG zDJejt8@3u-`AtoHiVcMu&moF5thNXHtpUqW7Vins4)=^>SIl*|klgmRiDIAZzX0O@ z*Wa@Yx*FI_s(SN%5VP>Cw`1m$-E(gX!|?&XGk?qb>EwUEz(YZ-(RbVasNV~!Nn(Z| z-#I3DQ-?lSh+vP*GMZ0i^|&~hzQ2#@3)fD-r(9apVYd>9gvWgCk0N*9S$pC28_4q_ zZp*&BYV`dc0X+?$^!h&W)G$k(;>?!RY2(v=H;qn`SoihvnS)^l`CG!io4o!C-+!>u zI{#=*z(1SAa~BOWhGob|z@=B$$a$*8lu()oEG@f(0E_%kW{$JJItsyo&E1gJ)HD7n zm03tygcp2jp{~&G&d$eYr?dMV$MAn7j@E%<(FvV%W61ff{+oY204;q=YlbHm=VvB5 zK((7hN$OCb$PW$fn`C}8j{u2?Psx4>MyH(Y%{l%_33S?WZ|BsGO zv&Y3DZ*i*0E8xyQDVm~{gtBJ7g}t47z)a4X2@X3mh>9$I4lcn#-Csnvncxt*EcM~~ zfvrD_Nt?L2xw%@MonCL)uV0WPc3nK^P*S|TKJZFveNsaP@*G(}Vwi~nGOS#!VvSG6 zt)gIZ5)NYE`*zU;|MLZcHM;npvBf~+`&TRX&wr8d3l3idJhuCJaAjd4?ZYp}z2=PY zn(92-wl(q~A2V-_eHM2n0(irlLv|YQQRhbh9=ob4*jan?-FViS0B32Kd2f^%Af$o3 zq<7}ws*>k2bpC+g6bvT5G=W$97$5_g_AUj+p&OXNEwfmYFmT9%fOlYVMnr5i4iuas zQ0LcLL09e5|Efd&Uo@Nl(5&2n>&}^s2fX91_Z27d{oMkzaED^3SZBCdLcxSYMS~(y zel(NtvArXenZWg_=O_B+DhFEkFOP(KqPC26mXDpIeWSfmQ2qrHNlp|NyOjhCl`go{ zPTZ3(e}%{Z%>F(C0jlVl>uQUBJRl~e1s>yWKul-w(L0a36W0OBTQ3kx?EwpXuj7+b zF5p^-9{|0{6@Ng)%SOvgI1Otgb~Hq%YOC%O1XxV|gPHR08SQw_!IjnAo&eCO=vLEs zyUx8WFTl=M{EGmYmkl%ZJEkLplz-b!;tmPl^jRpIkR;RjKH~M(S^M1rXc5Uwz6Ma| zl@RyUKM&^3izLb0)aNa4vvA5TKIUu?9)HzfQaA1-6lP?6d4J_g6`g>v@Yj&CzlW{Y zrRphn=K0d<+5A+%ISBmz4l)RU$WiNnV>+>99T|-)@9iDo+zb!{F_$E-_MY4Qu4Ofw z0b3uak89?(pWki!?KStHGo_%N{3jt1ClO%e=mC--nJ(+Ft^tJpm)DCR4PgJd-B9vj zN6oRb*L$g`WoN&fJDdjaEpW2_2UF!guD-EQkZuv3Bqk|(FXyz%RP!`w`j=g0YX#ao z9$r_!gafUr@OUm_r4#kpcEOu`lve{X!BbnsxDp}@giR7CGN%j+uD!+5$ za(^CF)hGNERsqlUcw>d8m$;w&qcUIpnvGjgSGDlFh#OhRvFCQ8K4nz$5(hX@T#6xu zE&d=YVy^=g-xLt)0Jd5n+wVYuyx%>SC1CAiI1eCGl1l-VYRg>=l>=Z>0L>fIof-J> zE>d1}dP&%$u3z2)kNHmO2H2P~!Wm9eh51Y?PSfsrkd>A@N+XzN?NC1!)rZ`Ir3W3s zQe7xq)NSnn9+hwq2e*;wh zZ|xtrkJqL3BcS{wvH?pdeREzK!|cpWGmlBoC*KzHBz&f~{_Ecge*b{o#m69ibduMF z>=3e5(AD6Br#qqC@5=dhVcYS2m`2*a#rTN9FeRe0j$Fw;N$>ps&(y`=3 za|Is0AN`A4wdKIt>~;862+_>PmTsP2%tbbs31Q3FT;%}Y-2t=(NC6Xe!IA2FHP<3? z$6lmns|KPPg}&pRSxQnahHFYu{T&uqjLX5yi)HpLsAsz(U{b^s66vZ2cktDVZI2kO*LXiBz%rj5R_2;K8Hw z_j-=N;a(YV?L$!K7ZVkgFz`y{7KFekG8_RaE)S5sa+tIk_VIq6GL*88g06@bK9cek zsC2iL%{;ayou4U0E8bg8_OvSPszU0h6nfl_(CDf#OnSCC_jgzZ`?Z z8x%B#n7+I?$*7y_OZX9Shk`a|ZMvSj?Q%y^TfR&mBwhmT5#7}SUkW34>*++ebT%&03NV#Dd^5P>Pl%CR3Tu#&w z2=oEl;je7{e@lUUY&{hYN?e}IYs{2Mi7;=@%tYWC_#gjE^?Ca8P$ zU7CSEl$bsVTo=Y4off-Z{jM$k(fw)_EXX5k3!JQsk_L#I>!u$|^c(;MGzXpE+1}z^ zLZ1xI;iW%7JkSAL2K7#Xc4G#_Dm;$h&eWy+y627{6bruOJoP-;h?p1>FXbi_u4(hC zM}UKnFj5Gd{fc~xjj=*SUOR4USKy=C1{#7p^ya@`D}UV{8s;J#WTb_#j<4DldzMNT zsfi%Z+6E?w!f62BbIR167pnV*6VBm1=Zm9VZ@%V1{ptAwe@Irf^QmM`Z>UmzK#FBav@^C zp-BgzRR*H$0@(G)hiv>t7>CNhdoB7h#b2(#} zEx4#G>{mkJ4^ui0k>jMw;Y6z9Z|+LDiUMFEYQMQq%0^i{4;3m)(Ek5AFbW(g0xQ?P z(Ikfk7u{lyeynSxfz|mXIVm!jJj--;(XeRsz&pkni8+RKxxLQM9?O-t4470#lxn__ zE@!T&@;@M9xp#Z^?$eJuSIGg{=Fw=H*y_qxur@zy@GaITV4z0R)Z+zlliyyq=icT#Qx5kPFpGPDa2pDv*8FE%Ub|Zk3 zs-oh{Ee$mwd9A8W-8KPQRH8cqi+=? zJ~|lynApkxI062xg8G+tWu27Vs<&3wIcNMi8xb&0C_?d7Y43{CyY1e6#g%S%H2Y|% zkj)H4l+<=A7fm*rEcOng1Jd2yM26!*#u3Tc1x7)np-LI#($(9Huhbn|w^9jO4m?os?et-J zttU0EqPAQ;0$4az@y^xUDk)9r1_cPbkPUc1kjHA;(!u#&;YE&scxSFWs|x z23R+UCwl+E9wQ0=x1#5-dx>xHh4$n2+p$Oa7?k!X z>7m|c1x?)~a79o7XV2aNZiBm6VbG5#MDPo7Fw5oNx3y}w455Ns0v$D>^A*5?4EpRz z6ma$L|2*M8MOAT(U9wg*t>GfVv(U$BOV9lk{d&dM18=}^xU@SnwmU&F6hs%A6neAa z=q8E1LyULi6*vbd2mP-@2>g{+0f<^c0RHsKJZSi1-Npx`k0JfJA|o_~AhZCH6a}5j zH^VywB7O_d2;G@A3M`}_w(pIrCHJ3kziQU_KV zaP5L9fdA|^z=;Be8wQxsn>(uzYOq?9TeM7oRS1iqqFSNsU$wjEfN-dEXaD3~)I{+} zeWrdD)z)g{c>isL3IAoNc_=|M&@(X=y1BR+DmEHq)tP$(B2t<($6*+bm~;(0jGJ;b zsqyFjW+l?n?d<-YYS}}A{2AaVf-$Y1y2HbL;XjF(!{j5BZ!N+2G+|P_7?B?eSZWRg;i`5!nur$+~H$ApTO3 z7vu}2;dbty=_@D9oU5`7Kf}WOx@gRr^2`XakV-ZKm_Bmin4ta9ZY$)aWucH z3Gg3d1FpITA1-b`uc~Ou3$n%G!v~uR*i~2H&VIzh^8j2+y}%HRkb0Y&vMIMXoRR1^ zN~~&gd=Dp%eI@D^gg7u3;7?}FN3K551r91b{QvoOK|;eOE^fH$x#InW#4n+(3nm=; zJ=K8_bx4#~cfB;!BK>|ckS_Jz9RM^E_(*RuNW=-U!ARu_igDItP(w=XzCVto#*muY zmC#L8#I#^N0{0=rU-ES&uY>18cEBM^2eEFZvQ?ar%BM76>%KZ>By?pqfN$0pl&b8B zr5$&s$$YUkQID-ud5jf~m6O#IsM|+EjCzbv(mdR>#I#Gy)0c(4rXx_#PD7KMzUVdw zaBLI$NAJuPMeqOd5B)tXn&s8>Ph}ZhZ7{~N*E~rGAo6~*^dJ5LYoxr%N$_WC{)cU|J8AwQn}QQf`;`0 z6!LW48xv)lIsk|uC!-54uw9n#4fr*#%D#U`nOi=5!H|_k31MM~gZ{oS1z2CO>6Eev zS+hV|TU!ygkJ#80MYjNoND_D)nATanc2vPZ1$IKf+2wKxu$=>nAStJXAdd0jvSHT% z5Kh4G@`XO}iu%ee>5G$3>Un$Lp5qVRQrw#S`p$AYe>R_Je1}B3)AIiH!7Oo9*>z}< zmU3VA;SRI~NMM1?QNxP%H#2>=j&=UNi{A_FXAS@hOMMKSba0_314Pg^`<7#94mJ5E zhau3>@ZSQd8S7XlNbLGPV8_EhUlkr6F5_O!`}IDrtjvM>D!^$)a(wv20;zly92_ho z$-j|UQCb43#RGYPa9+0bLl7^aC_srop`Sgwd)GYto(VQYxZ9whx@&hNM?p>9bKlje zu=b9O>fy&ynSV>&TdfBo23gM4R!6elfo-XN6)HU|Yi~o=*<9AbSJbuxbiC8=V#%7; zBOfb)6wH$eFgc~9q!hk%-=aoo7n**2YFzv3`|Xq%HjhYD8Lp%FCRfeW>{LuM_@R9K zz*FeY8?Rv7M-4^|YiL{n&I(Srn0Qi?@<11V=pB>3kA=g=z}Gn)5{;f(p<$ z`nB;A9Uodn%{-a*QE};PRA3@u_6OI2f_^nJ{A1}D60F{CiVh5rCZ0VvWZ``u!HzR+ zPF|@T)C_v+b>AM3EX$lpT2t~M__?<(QY^4?a^IfyOA)`S(5sRC$QQ6u1wp^L;NPct z{1EBk_d1e8U{d|CD{ktjz=#TiXX8Kwv68^!0P^M@oMrTNWAIO19N){An7*s_m^Bw! zm|0B}pX@A&ACXtuY0;GZ?l=oW$=xq30SCnV*=hKw0dw&ZvGs~p_Gico=BaP*dPb`Pbfj}@X5Pcqs6yUciTDfe!g6r_+DtX{G%{u$LC&Ro5 zbNL6aej}$&w1f8B^QBoJvFmV|N<@aszDWQN8uo9dX)Sgoi0eyY4&62@RR^SYEmT-c zG|FS}RFr{Ya!d}6B<1K#5;S_}a%?AXRSo_`!Ap6I3qwY|2kkn*z8^FyUmCrig?SH& z1C{6({-!|TGt@VF_>~P{sPR*d^D+S=>jGS8Y;GN*~4;# zu66@&4Jr`8w%auP1&JbcXv?0B)0A90Dk{-2kVV)jM}a8|7I33tscC->)k|lP^*S}i zXMhxPDJp*1(6jVcW&Plq@Y>zdyo_(4sCj!XqJ>biRJ0liJ2iL$<9Pux2Wrf|jq>aW z4hhO{Uiy${vJ<=p_tv5rcV`-1eX(wEruwixUqdTO*`TFxHD9N1i&BJ&8SWSZE68!v{ovF>+H^ip| zp7*lnm;=N*@IGMFc4Kh0;j?RhUiJud)GF-YqdvvulnJM5|iN6dvm z$pM&ydS&5NO&cJm@PY;XzNyhL^JOJB^~q|suS(HVi^k9jg&AlizE0P@ElR0?mSEHa zB+E*?r?XA&wl>psWs*gH{XSD+R5$nFRHKLZTYbONH<1M|6BLOcv2k&_C3cC*Y#ySo zlZ)+NA_lqy6e>65Jx8_Gu^1pDP807z2CE{_#1~j)p(mKSGno@t8DBxaq`Icf$u39b5Q`h;hYYWUgGb$`k{q86*3jV~Bgr?- zIK&58o~V~dSyfCcWPTjY6URWDnsbH%gZrRx@Ov3hbh>;QrYcr%Zu?O@DgRmzkzP$q zlHsM8hG>SZ?zA$Dt0JZzB1D^IsnbOLVbK&~#!RYdAZYiCd$S|UU=TF#DR|JwCF@!< z*KL02JVxpWz<@8OXd899Bj8+#S|wR4@?|RlCiL|5IV4(@I7o~^lb`}n?NSTk%fcwt z8A=(Ipm~5IfD+V1v&)Sfn--vIje(8lE3w)eRro>v42idJ%e7Ud$en+73sr3n;Nwtu zJ*VI0fp=-6QI5&I^vAj0fJQyNjfR;M3<-z@(Nf2N1G=_*z&wD@Sb23O6K)9=Ezro- zq)U*{e6g8&BoI!eH!ZU~nIjWR4V!n&VO5%DRxm{3OnHk5TVJ+V^j$AVVcUW_p-d7a zQKQ@LWnl_iA)zY?P(Ij;WaL4ltD;0Ma=rCK8UZd&wN2|GS{(<_ueIDwDMjs57gQmf zhg-ipkFO9|Z;wEQyy^HMz#Oa2z7_oEzBCnK;xfjgWtG(88)QI(8&C}5zf&ZI6yl+* zap~1bTNzLjJ$;Zt?gO0a>iA}iapPrbTD>hC0y`vv_ zsh8dER5hIXL{6vFkhApyFX?EQY8HKsLc$~1PBgGat3pqAvJqayfZ&AmeTH33pLnbK z8xW!hu9{##tUe^10Ltl2s%I#ZcY1^8%X9(OHj`CCBzV%#*LpvpJ)f$ooxW?NNxH@k zXG)B+joMoF4DjmL{bJ_g)n?O+46LXf=d9M9qo%JUJ;NB^G znd3$l2?v%%woj(yN@jGyL<89EKBcG=W04=9KilJ;Sj5K9@j_xMb;0!GbDR?o)wi>j zfW_BAd2=97`g(iU`7V(oMnpF`z^Emv+?520u|dbn&oR2%XbmyAFp+!=C&4T5XUbzP ztkl<7_qKqEJ0A8sn?m++os8Vcx(jk+#8kpRJ_CcsQsXy zn%~l<|3{D>7X~&5KQ%eK;1J40YY=o=mv0`q)enQ%0yEB0p(69~r$RvP&w69KW^?z&NGnNOe}XYucc|F){aDmZu#L%ZC{fqvB()A62)e z`87ZK`k7uLa7FD=2cKz!ad+Xt#irvxsfa6ddCmE?k=LfZCjgpCGCg_yQ}dUA-!hqq z^@iK}@75HsnhYN+g;K7Mm8IxE)}WCHRo_x|nz%s?A80+DSm?WyLA}JHPb5%t zmnMB62<_24SW=Zzyq5jS@OWxbup%L;-ZV`R&mLt%pCb~$Z>K&)zH$7`3KlS9NR>?9 zDP+TlEW@o+C}t4!H!%cjw{4AZs&P{~&1u4tT*{`}(0A4t*XdV-o>ErKw_+vyG(P)6 z?YaJ;k8x7*vS0OW$Tw%cga_N0Eby6%@HZFYsc{Fo4>IXs*NIUs zvL0gC!z>{QVWiiIULITpeL%4jjP(eK`vb|jY2@aH73vEanKkb!eJcv4Z?I#CF-q;M zo+7ICV1}(9nEsN?tjuE|!>SHCC6MN;{^Yx&51=I=e`_=@M}{jckYzEUOo6!*DaqMY zw>gnl?3ee{%S`n2OG&QC2z)Bx52sOnfA>;gFpUDe^g5{tBvqqrxCRX;YijpJqWs#~ zW%u<{y;?}@m+YxkX0hcHUX>~S8P-YfPqrMh;xmu?h4iRTEx4#piKGU0>tCioAzT

    4kY^!+GZ{>F6CW*i|Ym;{wd%-kHAZJTXB!dsC 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

    PYD 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%0DHB#DuLlR$Ic&+CX2~<{2@qEek7ovrpO+ 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�_a0o>}1uP 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%0A`0 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

    7T``=JU-vb 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 Vd5+73;9I~SSxH5SQn9xI{|DQr6g2<< literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/perfetto-trace.svg b/docs/data/how-to/fine-tuning-llms/perfetto-trace.svg new file mode 100644 index 000000000..80c676cd0 --- /dev/null +++ b/docs/data/how-to/fine-tuning-llms/perfetto-trace.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/data/how-to/fine-tuning-llms/profiling-perfetto-ui.png b/docs/data/how-to/fine-tuning-llms/profiling-perfetto-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..09262f8a7f7cf3ea7a47b0c16213f26d765a05f6 GIT binary patch literal 75184 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 VD0qbxIBD^j{09~3D#_15{|6mp7j*yt literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/vllm-single-gpu-log.png b/docs/data/how-to/fine-tuning-llms/vllm-single-gpu-log.png new file mode 100644 index 0000000000000000000000000000000000000000..1d00b91902e91948fe882b5d64e7586a81d84191 GIT binary patch literal 44310 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

    {&bB=6Nqp25Sj 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 FV1m(k(K7%5 literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/weight-update.png b/docs/data/how-to/fine-tuning-llms/weight-update.png new file mode 100644 index 0000000000000000000000000000000000000000..d8f2b9b7dfdd6ffdf152596efcd7c3fe5bcaca83 GIT binary patch literal 25668 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 G=zjqSm5)UL literal 0 HcmV?d00001 diff --git a/docs/how-to/deep-learning-rocm.rst b/docs/how-to/deep-learning-rocm.rst index 49c0b5d99..d638e1cb3 100644 --- a/docs/how-to/deep-learning-rocm.rst +++ b/docs/how-to/deep-learning-rocm.rst @@ -60,6 +60,9 @@ Find information on version compatibility and framework release notes in :doc:`T For guidance on installing ROCm itself, refer to :doc:`ROCm installation for Linux `. -Learn how to use your ROCm deep learning environment for training, fine-tuning, and inference through the following guides. +Learn how to use your ROCm deep learning environment for training, fine-tuning, inference, and performance optimization +through the following guides. * :doc:`rocm-for-ai/index` + +* :doc:`fine-tuning-llms/index` diff --git a/docs/how-to/fine-tuning-llms/fine-tuning-and-inference.rst b/docs/how-to/fine-tuning-llms/fine-tuning-and-inference.rst new file mode 100644 index 000000000..0c0251fd1 --- /dev/null +++ b/docs/how-to/fine-tuning-llms/fine-tuning-and-inference.rst @@ -0,0 +1,20 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, inference, usage, tutorial + +************************* +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. + +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 +sized datasets. See :doc:`single-gpu-fine-tuning-and-inference`. + +Multi-accelerator systems, on the other hand, consist of multiple accelerators working in parallel. These systems are +typically used in LLMs and other large-scale deep learning tasks where performance, scalability, and the handling of +massive datasets are crucial. See :doc:`multi-gpu-fine-tuning-and-inference`. diff --git a/docs/how-to/fine-tuning-llms/index.rst b/docs/how-to/fine-tuning-llms/index.rst new file mode 100644 index 000000000..c197158f2 --- /dev/null +++ b/docs/how-to/fine-tuning-llms/index.rst @@ -0,0 +1,37 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial + +************************** +Fine-tuning LLMs with ROCm +************************** + +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/fine-tuning-llms/llm-inference-frameworks.rst b/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst new file mode 100644 index 000000000..9da634d5c --- /dev/null +++ b/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst @@ -0,0 +1,218 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, inference, vLLM, TGI, text generation inference + +************************ +LLM inference frameworks +************************ + +This section discusses how to implement `vLLM `_ and `Hugging Face TGI +`_ using +:doc:`single-accelerator ` and +:doc:`multi-accelerator ` systems. + +.. _fine-tuning-llms-vllm: + +vLLM inference +============== + +vLLM is renowned for its paged attention algorithm that can reduce memory consumption and increase throughput thanks to +its paging scheme. Instead of allocating GPU high-bandwidth memory (HBM) for the maximum output token lengths of the +models, the paged attention of vLLM allocates GPU HBM dynamically for its actual decoding lengths. This paged attention +is also effective when multiple requests share the same key and value contents for a large value of beam search or +multiple parallel requests. + +vLLM also incorporates many modern LLM acceleration and quantization algorithms, such as Flash Attention, HIP and CUDA +graphs, tensor parallel multi-GPU, GPTQ, AWQ, and token speculation. + +Installing vLLM +--------------- + +1. To install vLLM, run the following commands. + + .. code-block:: shell + + # Install from the source + git clone https://github.com/ROCm/vllm.git + cd vllm + PYTORCH_ROCM_ARCH=gfx942 python setup.py install #MI300 series + +.. _fine-tuning-llms-vllm-rocm-docker-image: + +2. Run the following commands to build a Docker image ``vllm-rocm``. + + .. code-block:: shell + + git clone https://github.com/vllm-project/vllm.git + cd vllm + docker build -f Dockerfile.rocm -t vllm-rocm . + +.. tab-set:: + + .. tab-item:: vLLM on a single-accelerator system + :sync: single + + 3. To use vLLM as an API server to serve reference requests, first start a container using the :ref:`vllm-rocm + Docker image `. + + .. code-block:: shell + + docker run -it \ + --network=host \ + --group-add=video \ + --ipc=host \ + --cap-add=SYS_PTRACE \ + --security-opt seccomp=unconfined \ + --device /dev/kfd \ + --device /dev/dri \ + -v :/app/model \ + vllm-rocm \ + bash + + 4. Inside the container, start the API server to run on a single accelerator on port 8000 using the following command. + + .. code-block:: shell + + python -m vllm.entrypoints.api_server --model /app/model --dtype float16 --port 8000 & + + The following log message is displayed in your command line indicates that the server is listening for requests. + + .. image:: ../../data/how-to/fine-tuning-llms/vllm-single-gpu-log.png + :alt: vLLM API server log message + :align: center + + 5. To test, send it a curl request containing a prompt. + + .. code-block:: shell + + curl http://localhost:8000/generate -H "Content-Type: application/json" -d '{"prompt": "What is AMD Instinct?", "max_tokens": 80, "temperature": 0.0 }' + + You should receive a response like the following. + + .. code-block:: text + + {"text":["What is AMD Instinct?\nAmd Instinct is a brand new line of high-performance computing (HPC) processors from Advanced Micro Devices (AMD). These processors are designed to deliver unparalleled performance for HPC workloads, including scientific simulations, data analytics, and machine learning.\nThe Instinct lineup includes a range of processors, from the entry-level Inst"]} + + .. tab-item:: vLLM on a multi-accelerator system + :sync: multi + + 3. To use vLLM as an API server to serve reference requests, first start a container using the :ref:`vllm-rocm + Docker image `. + + .. code-block:: shell + + docker run -it \ + --network=host \ + --group-add=video \ + --ipc=host \ + --cap-add=SYS_PTRACE \ + --security-opt seccomp=unconfined \ + --device /dev/kfd \ + --device /dev/dri \ + -v :/app/model \ + vllm-rocm \ + bash + + + 4. To run API server on multiple GPUs, use the ``-tp`` or ``--tensor-parallel-size`` parameter. For example, to use two + GPUs, start the API server using the following command. + + .. code-block:: shell + + python -m vllm.entrypoints.api_server --model /app/model --dtype float16 -tp 2 --port 8000 & + + 5. To run multiple instances of API Servers, specify different ports for each server, and use ``ROCR_VISIBLE_DEVICES`` to + isolate each instance to a different accelerator. + + For example, to run two API servers, one on port 8000 using GPU 0 and 1, one on port 8001 using GPU 2 and 3, use a + a command like the following. + + .. code-block:: shell + + ROCR_VISIBLE_DEVICES=0,1 python -m vllm.entrypoints.api_server --model /data/llama-2-7b-chat-hf --dtype float16 –tp 2 --port 8000 & + ROCR_VISIBLE_DEVICES=2,3 python -m vllm.entrypoints.api_server --model /data/llama-2-7b-chat-hf --dtype float16 –tp 2--port 8001 & + + 6. To test, send it a curl request containing a prompt. + + .. code-block:: shell + + curl http://localhost:8000/generate -H "Content-Type: application/json" -d '{"prompt": "What is AMD Instinct?", "max_tokens": 80, "temperature": 0.0 }' + + You should receive a response like the following. + + .. code-block:: text + + {"text":["What is AMD Instinct?\nAmd Instinct is a brand new line of high-performance computing (HPC) processors from Advanced Micro Devices (AMD). These processors are designed to deliver unparalleled performance for HPC workloads, including scientific simulations, data analytics, and machine learning.\nThe Instinct lineup includes a range of processors, from the entry-level Inst"]} + +.. _fine-tuning-llms-tgi: + +Hugging Face TGI +================ + +Text Generation Inference (TGI) is LLM serving framework from Hugging +Face, and it also supports the majority of high-performance LLM +acceleration algorithms such as Flash Attention, Paged Attention, +CUDA/HIP graph, tensor parallel multi-GPU, GPTQ, AWQ, and token +speculation. + +.. tip:: + + In addition to LLM serving capability, TGI also provides the `Text Generation Inference benchmarking tool + `_. + +Install TGI +----------- + +1. To install the TGI Docker image, run the following commands. + + .. code-block:: shell + + # Install from Dockerfile + git clone https://github.com/huggingface/text-generation-inference.git -b mi300-compat + cd text-generation-inference + docker build . -f Dockerfile.rocm + +.. tab-set:: + + .. tab-item:: TGI on a single-accelerator system + :sync: single + + 2. Launch a model using TGI server on a single accelerator. + + .. code-block:: shell + + export ROCM_USE_FLASH_ATTN_V2_TRITON=True + text-generation-launcher --model-id NousResearch/Meta-Llama-3-70B --dtype float16 --port 8000 & + + 3. To test, send it a curl request containing a prompt. + + .. code-block:: shell + + curl http://localhost:8000/generate_stream -X POST -d '{"inputs":"What is AMD Instinct?","parameters":{"max_new_tokens":20}}' -H 'Content-Type: application/json' + + You should receive a response like the following. + + .. code-block:: shell + + data:{"index":20,"token":{"id":304,"text":" in","logprob":-1.2822266,"special":false},"generated_text":" AMD Instinct is a new family of data center GPUs designed to accelerate the most demanding workloads in","details":null} + + .. tab-item:: TGI on a multi-accelerator system + + 2. Launch a model using TGI server on multiple accelerators (4 in this case). + + .. code-block:: shell + + export ROCM_USE_FLASH_ATTN_V2_TRITON=True + text-generation-launcher --model-id NousResearch/Meta-Llama-3-8B --dtype float16 --port 8000 --num-shard 4 & + + 3. To test, send it a curl request containing a prompt. + + .. code-block:: shell + + curl http://localhost:8000/generate_stream -X POST -d '{"inputs":"What is AMD Instinct?","parameters":{"max_new_tokens":20}}' -H 'Content-Type: application/json' + + You should receive a response like the following. + + .. code-block:: shell + + data:{"index":20,"token":{"id":304,"text":" in","logprob":-1.2773438,"special":false},"generated_text":" AMD Instinct is a new family of data center GPUs designed to accelerate the most demanding workloads in","details":null} diff --git a/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst b/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst new file mode 100644 index 000000000..f1bc7c704 --- /dev/null +++ b/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst @@ -0,0 +1,249 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, Flash Attention, Hugging Face, xFormers, vLLM, PyTorch + +**************************** +Model acceleration libraries +**************************** + +This section discusses model acceleration techniques and libraries to improve memory efficiency and performance. + +Flash Attention 2 +================= + +Flash Attention is a technique designed to reduce memory movements between GPU SRAM and high-bandwidth memory (HBM). By +using a tiling approach, Flash Attention 2 improves memory locality in the nested loops of query, key, and value +computations within the Attention modules of LLMs. These modules include Multi-Head Attention (MHA), Group-Query +Attention (GQA), and Multi-Query Attention (MQA). This reduction in memory movements significantly decreases the +time-to-first-token (TTFT) latency for large batch sizes and long prompt sequences, thereby enhancing overall +performance. + +.. image:: ../../data/how-to/fine-tuning-llms/attention-module.png + :alt: Attention module of a large language module utilizing tiling + :align: center + +Installing Flash Attention 2 +---------------------------- + +ROCm provides two different implementations of Flash Attention 2 modules. They can be deployed interchangeably: + +* ROCm `Composable Kernel `_ + (CK) Flash Attention 2 + +* `OpenAI Triton `_ Flash Attention 2 + +.. tab-set:: + + .. tab-item:: CK Flash Attention 2 + + To install CK Flash Attention 2, use the following commands. + + .. code-block:: shell + + # Install from the source + git clone https://github.com/ROCm/flash-attention.git + cd flash-attention/ + GPU_ARCHS=gfx942 python setup.py install #MI300 series + + Hugging Face Transformers can easily deploy the CK Flash Attention 2 module by passing an argument + ``attn_implementation="flash_attention_2"`` in the ``from_pretrained`` class. + + .. code-block:: python + + import torch + from transformers import AutoModelForCausalLM, AutoTokenizer + device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") + model_name = "NousResearch/Meta-Llama-3-8B" + + tokenizer = AutoTokenizer.from_pretrained(model_name, torch_dtype=torch.float16, use_fast=False) + inputs = tokenizer('Today is', return_tensors='pt').to(device) + + model_eager = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, attn_implementation="eager").cuda(device) + model_ckFAv2 = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, attn_implementation="flash_attention_2").cuda(device) + + print("eager GQA: ", tokenizer.decode(model_eager.generate(**inputs, max_new_tokens=10)[0], skip_special_tokens=True)) + print("ckFAv2 GQA: ", tokenizer.decode(model_ckFAv2.generate(**inputs, max_new_tokens=10)[0], skip_special_tokens=True)) + + # eager GQA: Today is the day of the Lord, and we are the + # ckFAv2 GQA: Today is the day of the Lord, and we are the + + .. tab-item:: Triton Flash Attention 2 + + The Triton Flash Attention 2 module is implemented in Python and uses OpenAI’s JIT compiler. This module has been + upstreamed into the vLLM serving toolkit, discussed in :doc:'llm-inference-frameworks'. + + 1. To install Triton Flash Attention 2 and run the benchmark, use the following commands. + + .. code-block:: shell + + # Install from the source + pip uninstall pytorch-triton-rocm triton -y + git clone https://github.com/ROCm/triton.git + cd triton/python + GPU_ARCHS=gfx942 python setup.py install #MI300 series + pip install matplotlib pandas + + 2. To test, run the Triton Flash Attention 2 performance benchmark. + + .. code-block:: shell + + # Test the triton FA v2 kernel + python https://github.com/ROCm/triton/blob/triton-mlir/python/perf-kernels/flash-attention.py + # Results (Okay to release TFLOPS number ???) + fused-attention-fwd-d128: + BATCH HQ HK N_CTX_Q N_CTX_K TFLOPS + 0 16.0 16.0 16.0 1024.0 1024.0 287.528411 + 1 8.0 16.0 16.0 2048.0 2048.0 287.490806 + 2 4.0 16.0 16.0 4096.0 4096.0 345.966031 + 3 2.0 16.0 16.0 8192.0 8192.0 361.369510 + 4 1.0 16.0 16.0 16384.0 16384.0 356.873720 + 5 2.0 48.0 48.0 1024.0 1024.0 216.916235 + 6 2.0 48.0 48.0 2048.0 1024.0 271.027578 + 7 2.0 48.0 48.0 4096.0 8192.0 337.367372 + 8 2.0 48.0 48.0 8192.0 4096.0 363.481649 + 9 2.0 48.0 48.0 16384.0 8192.0 375.013622 + 10 8.0 16.0 16.0 1989.0 15344.0 321.791333 + 11 4.0 16.0 16.0 4097.0 163.0 122.104888 + 12 2.0 16.0 16.0 8122.0 2159.0 337.060283 + 13 1.0 16.0 16.0 16281.0 7.0 5.234012 + 14 2.0 48.0 48.0 1021.0 1020.0 214.657425 + 15 2.0 48.0 48.0 2001.0 2048.0 314.429118 + 16 2.0 48.0 48.0 3996.0 9639.0 330.411368 + 17 2.0 48.0 48.0 8181.0 1021.0 324.614980 + +xFormers +======== + +xFormers also improves the performance of attention modules. Although xFormers attention performs very +similarly to Flash Attention 2 due to its tiling behavior of query, key, and value, it’s widely used for LLMs and +Stable Diffusion models with the Hugging Face Diffusers library. + +Installing CK xFormers +---------------------- + +Use the following commands to install CK xFormers. + +.. code-block:: shell + + # Install from source + git clone https://github.com/ROCm/xformers.git + cd xformers/ + git submodule update --init --recursive + PYTORCH_ROCM_ARCH=gfx942 python setup.py install #Instinct MI300-series + +PyTorch built-in acceleration +============================= + +`PyTorch compilation +mode `__ +synthesizes the model into a graph and then lowers it to prime +operators. These operators are compiled using TorchInductor, which uses +OpenAI Triton as a building block for GPU acceleration. One advantage of +PyTorch compilation mode is that its GPU kernels are written in Python, +making modifying and extending them easier. PyTorch compilation mode +often delivers higher performance, as model operations are fused before +runtime, which allows for easy deployment of high-performance kernels. + +PyTorch compilation +------------------- + +To utilize the PyTorch compilation mode, specific layers of the model +must be explicitly assigned as compilation targets. In the case of LLM, +where autoregressive token decoding generates dynamically changing +key/value sizes, limiting the key/value size to a static dimension, +``max_cache_length``, is necessary to utilize the performance benefits +of the PyTorch compilation. + +.. code-block:: python + + # Sample script to run LLM with the static key-value cache and pytorch compilation + from transformers import AutoModelForCausalLM, AutoTokenizer, StaticCache + import torch + from typing import Optional + import os + device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") + os.environ["TOKENIZERS_PARALLELISM"] = "false" + model_name = "NousResearch/Meta-Llama-3-8B" + prompts = [] + + for b in range(1): + prompts.append("New york city is where " + ) + + tokenizer = AutoTokenizer.from_pretrained(model_name) + model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16).to(device).eval() + inputs = tokenizer(prompts, return_tensors="pt").to(model.device) + + def decode_one_tokens(model, cur_token, input_pos, cache_position): + logits = model(cur_token, position_ids=input_pos, cache_position=cache_position, return_dict=False, use_cache=True)[0] + new_token = torch.argmax(logits[:, -1], dim=-1)[:, None] + return new_token + + batch_size, seq_length = inputs["input_ids"].shape + # static key-value cache + max_cache_length = 1024 + max_new_tokens = 10 + model._setup_cache(StaticCache, batch_size, max_cache_len=max_cache_length) + cache_position = torch.arange(seq_length, device=device) + generated_ids = torch.zeros(batch_size, seq_length + max_new_tokens + 1, dtype=torch.int, device=device) + generated_ids[:, cache_position] = inputs["input_ids"].to(device).to(torch.int) + + logits = model(**inputs, cache_position=cache_position, return_dict=False, use_cache=True)[0] + next_token = torch.argmax(logits[:, -1], dim=-1)[:, None] + # torch compilation + decode_one_tokens = torch.compile(decode_one_tokens, mode="max-autotune-no-cudagraphs",fullgraph=True) + + generated_ids[:, seq_length] = next_token[:, 0] + cache_position = torch.tensor([seq_length + 1], device=device) + + with torch.no_grad(): + for _ in range(1, max_new_tokens): + with torch.backends.cuda.sdp_kernel(enable_flash=False, enable_mem_efficient=False, enable_math=True): + next_token = decode_one_tokens(model, next_token.clone(), None, cache_position) + generated_ids[:, cache_position] = next_token.int() + cache_position += 1 + +.. _fine-tuning-llms-pytorch-tunableop: + +PyTorch TunableOp +------------------ + +ROCm PyTorch (2.2.0 and later) allows users to use high-performance ROCm +GEMM kernel libraries through PyTorch's built-in TunableOp options. +This enables users to automatically pick up the best-performing GEMM +kernels from :doc:`rocBLAS ` and :doc:`hipBLASLt ` libraries during runtime. + +During warm-up runs or offline profiling steps, users can create a GEMM Table +that enumerates the kernel information. During the model's run, the best-performing kernel substitutes +``torch.nn.functional.linear(input, weight, bias=None)`` with the kernel specified in the GEMM table. The +`Tunable GitHub `_ +page describes the options. + +.. code-block:: python + + # To turn on TunableOps, simply set this environmental variable + export PYTORCH_TUNABLEOP_ENABLED=1 + + # python + import torch + import torch.nn as nn + import torch.nn.functional as F + A = torch.rand(100, 20, device="cuda") + W = torch.rand(200, 20, device="cuda") + Out = F.linear(A, W) + print(Out.size()) + + # tunableop_results0.csv + Validator,PT_VERSION,2.4.0 + Validator,ROCM_VERSION,6.1.0.0-82-5fabb4c + Validator,HIPBLASLT_VERSION,0.7.0-1549b021 + Validator,GCN_ARCH_NAME,gfx942:sramecc+:xnack- + Validator,ROCBLAS_VERSION,4.1.0-cefa4a9b-dirty + GemmTunableOp_float_TN,tn_200_100_20,Gemm_Rocblas_32323,0.00669595 + +.. image:: ../../data/how-to/fine-tuning-llms/tunableop.png + :alt: GEMM and TunableOp + :align: center + +Learn more about optimizing kernels with TunableOp in +:ref:`Optimizing Triton kernels `. diff --git a/docs/how-to/fine-tuning-llms/model-quantization.rst b/docs/how-to/fine-tuning-llms/model-quantization.rst new file mode 100644 index 000000000..18d604b3d --- /dev/null +++ b/docs/how-to/fine-tuning-llms/model-quantization.rst @@ -0,0 +1,257 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, quantization, GPTQ, transformers, bitsandbytes + +***************************** +Model quantization techniques +***************************** + +Quantization reduces the model size compared to its native full-precision version, making it easier to fit large models +onto accelerators or GPUs with limited memory usage. This section explains how to perform LLM quantization using GPTQ +and bitsandbytes on AMD Instinct hardware. + +.. _fine-tune-llms-gptq: + +GPTQ +==== + +GPTQ is a post-training quantization technique where each row of the weight matrix is quantized independently to find a +version of the weights that minimizes error. These weights are quantized to ``int4`` but are restored to ``fp16`` on the +fly during inference. This can save your memory usage by a factor of four. A speedup in inference is expected because +inference of GPTQ models uses a lower bit width, which takes less time to communicate. + +Before setting up the GPTQ configuration in Transformers, ensure the `AutoGPTQ `_ library +is installed. + +Installing AutoGPTQ +------------------- + +The AutoGPTQ library implements the GPTQ algorithm. + +#. Use the following command to install the latest stable release of AutoGPTQ from pip. + + .. code-block:: shell + + # This will install pre-built wheel for a specific ROCm version + + pip install auto-gptq --no-build-isolation --extra-index-url https://huggingface.github.io/autogptq-index/whl/rocm573/ + + Or, install AutoGPTQ from source for the appropriate ROCm version (for example, ROCm 6.1). + + .. code-block:: shell + + # Clone the source code + git clone https://github.com/AutoGPTQ/AutoGPTQ.git + cd AutoGPTQ + + # Speed up the compilation by specifying PYTORCH_ROCM_ARCH to target device + PYTORCH_ROCM_ARCH=gfx942 ROCM_VERSION=6.1 pip install . + + # Show the package after the installation + +#. Run ``pip show auto-gptq`` to print information for the installed ``auto-gptq`` package. Its output should look like + this: + + .. code-block:: shell + + Name: auto-gptq + Version: 0.8.0.dev0+rocm6.1 + ... + +Using GPTQ with AutoGPTQ +------------------------ + +#. Run the following code snippet. + + .. code-block:: python + + from transformers import AutoTokenizer, TextGenerationPipeline + from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig + base_model_name = "NousResearch/Llama-2-7b-hf" + quantized_model_name = "llama-2-7b-hf-gptq" + tokenizer = AutoTokenizer.from_pretrained(base_model_name, use_fast=True) + examples = [ + tokenizer( + "auto-gptq is an easy-to-use model quantization library with user-friendly apis, based on GPTQ algorithm." + ) + ] + print(examples) + + The resulting examples should be a list of dictionaries whose keys are ``input_ids`` and ``attention_mask``. + +#. Set up the quantization configuration using the following snippet. + + .. code-block:: python + + quantize_config = BaseQuantizeConfig( + bits=4, # quantize model to 4-bit + group_size=128, # it is recommended to set the value to 128 + desc_act=False, + ) + +#. Load the non-quantized model using the AutoGPTQ class and run the quantization. + + .. code-block:: python + + # import auto_gptq class + from auto_gptq import AutoGPTQForCausalLM + # load non-quantized model + base_model = AutoGPTQForCausalLM.from_pretrained(base_model_name, quantize_config, device_map = "auto") + base_model.quantize(examples) + # save quantized model + base_model.save_quantized(quantized_model_name) + +Using GPTQ with Hugging Face Transformers +------------------------------------------ + +#. To perform a GPTQ quantization using Hugging Face Transformers, you need to create a ``GPTQConfig`` instance and set the + number of bits to quantize to, and a dataset to calibrate the weights. + + .. code-block:: python + + from transformers import AutoModelForCausalLM, AutoTokenizer, GPTQConfig + + base_model_name = " NousResearch/Llama-2-7b-hf" + tokenizer = AutoTokenizer.from_pretrained(base_model_name) + gptq_config = GPTQConfig(bits=4, dataset="c4", tokenizer=tokenizer) + +#. Load a model to quantize using ``AutoModelForCausalLM`` and pass the + ``gptq_config`` to its ``from_pretained`` method. Set ``device_map=”auto”`` to + automatically offload the model to available GPU resources. + + .. code-block:: python + + quantized_model = AutoModelForCausalLM.from_pretrained( + base_model_name, + device_map="auto", + quantization_config=gptq_config) + +#. Once the model is quantized, you can push the model and tokenizer to Hugging Face Hub for easy share and access. + + .. code-block:: python + + quantized_model.push_to_hub("llama-2-7b-hf-gptq") + tokenizer.push_to_hub("llama-2-7b-hf-gptq") + + Or, you can save the model locally using the following snippet. + + .. code-block:: python + + quantized_model.save_pretrained("llama-2-7b-gptq") + tokenizer.save_pretrained("llama-2-7b-gptq") + +ExLlama-v2 support +------------------ + +ExLlama is a Python/C++/CUDA implementation of the Llama model that is +designed for faster inference with 4-bit GPTQ weights. The ExLlama +kernel is activated by default when users create a ``GPTQConfig`` object. To +boost inference speed even further on Instinct accelerators, use the ExLlama-v2 +kernels by configuring the ``exllama_config`` parameter as the following. + +.. code-block:: python + + from transformers import AutoModelForCausalLM, GPTQConfig + pretrained_model_dir = "meta-llama/Llama-2-7b" + gptq_config = GPTQConfig(bits=4, exllama_config={"version":2}) + quantized_model = AutoModelForCausalLM.from_pretrained( + base_model_name, + device_map="auto", + quantization_config=gptq_config) + +bitsandbytes +============ + +The `ROCm-aware bitsandbytes `_ library is +a lightweight Python wrapper around CUDA custom functions, in particular 8-bit optimizer, matrix multiplication, and +8-bit and 4-bit quantization functions. The library includes quantization primitives for 8-bit and 4-bit operations +through ``bitsandbytes.nn.Linear8bitLt`` and ``bitsandbytes.nn.Linear4bit`` and 8-bit optimizers through the +``bitsandbytes.optim`` module. These modules are supported on AMD Instinct accelerators. + +Installing bitsandbytes +----------------------- + +#. To install bitsandbytes for ROCm 6.0 (and later), use the following commands. + + .. code-block:: shell + + # Clone the github repo + git clone --recurse https://github.com/ROCm/bitsandbytes.git + cd bitsandbytes + git checkout rocm_enabled + + # Install dependencies + pip install -r requirements-dev.txt + + # Use -DBNB_ROCM_ARCH to specify target GPU arch + cmake -DBNB_ROCM_ARCH="gfx942" -DCOMPUTE_BACKEND=hip -S . + + # Install + python setup.py install + +#. Run ``pip show bitsandbytes`` to show the information about the installed bitsandbytes package. Its output should + look like the following. + + .. code-block:: shell + + Name: bitsandbytes + Version: 0.44.0.dev0 + ... + +Using bitsandbytes primitives +----------------------------- + +To get started with bitsandbytes primitives, use the following code a reference. + +.. code-block:: python + + import bitsandbytes as bnb + + # Use Int8 Matrix Multiplication + bnb.matmul(..., threshold=6.0) + + # Use bitsandbytes 8-bit Optimizers + adam = bnb.optim.Adam8bit(model.parameters(), lr=0.001, betas=(0.9, 0.995)) + +Using bitsandbytes with Hugging Face Transformers +------------------------------------------------- + +To load a Transformers model in 4-bit, set ``load_int_4bt=true`` in ``BitsAndBytesConfig``. + +.. code-block:: python + + from transformers import AutoModelForCausalLM + from bitsandbytes import BitsAndBytesConfig + + base_model_name = "NousResearch/Llama-2-7b-hf" + quantization_config = BitsAndBytesConfig(load_in_4bit=True) + bnb_model_4bit = AutoModelForCausalLM.from_pretrained( + base_model_name, + device_map="auto", + quantization_config=quantization_config) + + # check the memory footprint with get_memory_footprint method + print(bnb_model_4bit.get_memory_footprint()) + +To load a model in 8-bit for inference, use the ``load_in_8bit`` option. + +.. code-block:: python + + from transformers import AutoModelForCausalLM, AutoTokenizer + from bitsandbytes import BitsAndBytesConfig + + base_model_name = "NousResearch/Llama-2-7b-hf" + + tokenizer = AutoTokenizer.from_pretrained(base_model_name) + quantization_config = BitsAndBytesConfig(load_in_8bit=True) + tokenizer = AutoTokenizer.from_pretrained(base_model_name) + bnb_model_8bit = AutoModelForCausalLM.from_pretrained( + base_model_name, + device_map="auto", + quantization_config=quantization_config) + + prompt = "What is a large language model?" + inputs = tokenizer(prompt, return_tensors="pt").to("cuda") + generated_ids = model.generate(**inputs) + outputs = tokenizer.batch_decode(generated_ids, skip_special_tokens=True) + diff --git a/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst b/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst new file mode 100644 index 000000000..b567c60cb --- /dev/null +++ b/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst @@ -0,0 +1,236 @@ +.. meta:: + :description: Model fine-tuning and inference on a multi-GPU system + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, multi-GPU, distributed, inference + +***************************************************** +Fine-tuning and inference using multiple accelerators +***************************************************** + +This section explains how to fine-tune a model on a multi-accelerator system. See +:doc:`Single-accelerator fine-tuning ` for a single accelerator or GPU setup. + +.. _fine-tuning-llms-multi-gpu-env: + +Environment setup +================= + +This section was tested using the following hardware and software environment. + +.. list-table:: + :stub-columns: 1 + + * - Hardware + - 4 AMD Instinct MI300X accelerators + + * - Software + - ROCm 6.1, Ubuntu 22.04, PyTorch 2.1.2, Python 3.10 + + * - Libraries + - ``transformers`` ``datasets`` ``accelerate`` ``huggingface-hub`` ``peft`` ``trl`` ``scipy`` + + * - Base model + - ``meta-llama/Llama-2-7b-chat-hf`` + +.. _fine-tuning-llms-multi-gpu-env-setup: + +Setting up the base implementation environment +---------------------------------------------- + +#. Install PyTorch for ROCm. Refer to the + :doc:`PyTorch installation guide `. For consistent + installation, it’s recommended to use official ROCm prebuilt Docker images with the framework pre-installed. + +#. In the Docker container, check the availability of ROCM-capable accelerators using the following command. + + .. code-block:: shell + + rocm-smi -showproductname + +#. Check that your accelerators are available to PyTorch. + + .. code-block:: python + + import torch + print("Is a ROCm-GPU detected? ", torch.cuda.is_available()) + print("How many ROCm-GPUs are detected? ", torch.cuda.device_count()) + + If successful, your output should look like this: + + .. code-block:: shell + + >>> print("Is a ROCm-GPU detected? ", torch.cuda.is_available()) + Is a ROCm-GPU detected? True + >>> print("How many ROCm-GPUs are detected? ", torch.cuda.device_count()) + How many ROCm-GPUs are detected? 4 + +.. tip:: + + During training and inference, you can check the memory usage by running the ``rocm-smi`` command in your terminal. + This tool helps you see shows which accelerators or GPUs are involved. + + +.. _fine-tuning-llms-multi-gpu-hugging-face-accelerate: + +Hugging Face Accelerate for fine-tuning and inference +=========================================================== + +`Hugging Face Accelerate `_ is a library that simplifies turning raw +PyTorch code for a single accelerator into code for multiple accelerators for LLM fine-tuning and inference. It is +integrated with `Transformers `_ allowing you to scale your PyTorch +code while maintaining performance and flexibility. + +As a brief example of model fine-tuning and inference using multiple GPUs, let's use Transformers and load in the Llama +2 7B model. + +Here, let's reuse the code in :ref:`Single-accelerator fine-tuning ` +to load the base model and tokenizer. + +Now, it's important to adjust how you load the model. Add the ``device_map`` parameter to your base model configuration. + +.. code-block:: python + + ... + base_model_name = "meta-llama/Llama-2-7b-chat-hf" + + # Load base model to GPU memory + base_model = AutoModelForCausalLM.from_pretrained( + base_model_name, + device_map = "auto" + trust_remote_code = True) + ... + # Run training + sft_trainer.train() + +.. note:: + + You can let Accelerate handle the device map computation by setting ``device_map`` to one of the supported options + (``"auto"``, ``"balanced"``, ``"balanced_low_0"``, ``"sequential"``). + + It's recommended to set the ``device_map`` parameter to ``“auto”`` to allow Accelerate to automatically and + efficiently allocate the model given the available resources (4 accelerators in this case). + + When you have more GPU memory available than the model size, here is the difference between each ``device_map`` + option: + + * ``"auto"`` and ``"balanced"`` evenly split the model on all available GPUs, making it possible for you to use a + batch size greater than 1. + + * ``"balanced_low_0"`` evenly splits the model on all GPUs except the first + one, and only puts on GPU 0 what does not fit on the others. This + option is great when you need to use GPU 0 for some processing of the + outputs, like when using the generate function for Transformers + models. + + * ``"sequential"`` will fit what it can on GPU 0, then move on GPU 1 and so forth. Not all GPUs might be used. + +After loading the model in this way, the model is fully ready to use the resources available to it. + +.. _fine-tuning-llms-multi-gpu-torchtune: + +torchtune for fine-tuning and inference +============================================= + +torchtune is a PyTorch-native library for easy single and multi-accelerator or GPU model fine-tuning and inference with +LLMs. + +#. Install torchtune using pip. + + .. code-block:: shell + + # Install torchtune with PyTorch release 2.2.2+ + pip install torchtune + + # To confirm that the package is installed correctly + tune --help + + The output should look like this: + + .. code-block:: shell + + usage: tune [-h] {download,ls,cp,run,validate} ... + + Welcome to the TorchTune CLI! + + options: + -h, --help show this help message and exit + + subcommands: + {download,ls,cp,run,validate} + +torchtune recipes are designed around easily composable components and workable training loops, with minimal abstraction +getting in the way of fine-tuning. Run ``tune ls`` to show built-in torchtune configuration recipes. + +.. code-block:: shell + + RECIPE CONFIG + full_finetune_single_device llama2/7B_full_low_memory + llama3/8B_full_single_device + mistral/7B_full_low_memory + full_finetune_distributed llama2/7B_full + llama2/13B_full + llama3/8B_full + mistral/7B_full + gemma/2B_full + lora_finetune_single_device llama2/7B_lora_single_device + llama2/7B_qlora_single_device + llama3/8B_lora_single_device + llama3/8B_qlora_single_device + llama2/13B_qlora_single_device + mistral/7B_lora_single_device + +The ``RECIPE`` column shows the easy-to-use and workable fine-tuning and inference recipes for popular fine-tuning +techniques (such as LoRA). The ``CONFIG`` column lists the YAML configurations for easily configuring training, +evaluation, quantization, or inference recipes. + +The snippet shows the architecture of a model's YAML configuration file: + +.. code-block:: yaml + + # Model Arguments + model: + _component_: torchtune.models.llama2.lora_llama2_7b + lora_attn_modules: ['q_proj', 'v_proj'] + apply_lora_to_mlp: False + apply_lora_to_output: False + lora_rank: 8 + lora_alpha: 16 + + tokenizer: + _component_: torchtune.models.llama2.llama2_tokenizer + path: /tmp/Llama-2-7b-hf/tokenizer.model + + # Dataset and Sampler + dataset: + _component_: torchtune.datasets.alpaca_cleaned_dataset + train_on_input: True + +This configuration file defines the fine-tuning base model path, data set, hyper-parameters for optimizer and scheduler, +and training data type. To download the base model for fine-tuning, run the following command: + +.. code-block:: shell + + tune download meta-llama/Llama-2-7b-hf --output-dir /tmp/Llama-2-7b-hf --hf-token + +The output directory argument for ``--output-dir`` should map the model path specified in YAML config file. + +To launch ``lora_finetune_distributed`` on four devices, run the following +command: + +.. code-block:: shell + + tune run --nnodes 1 --nproc_per_node 4 lora_finetune_distributed --config llama2/7B_lora + +If successful, you should something like the following output: + +.. code-block:: shell + + INFO:torchtune.utils.logging:FSDP is enabled. Instantiating Model on CPU for Rank 0 ... + INFO:torchtune.utils.logging:Model instantiation took 7.32 secs + INFO:torchtune.utils.logging:Memory Stats after model init: + {'peak_memory_active': 9.478172672, 'peak_memory_alloc': 8.953868288, 'peak_memory_reserved': 11.112808448} + INFO:torchtune.utils.logging:Optimizer and loss are initialized. + INFO:torchtune.utils.logging:Dataset and Sampler are initialized. + 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 `. diff --git a/docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst b/docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst new file mode 100644 index 000000000..cac5493dc --- /dev/null +++ b/docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst @@ -0,0 +1,388 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, Triton, kernel, performance, optimization + +************************* +Optimizing Triton kernels +************************* + +This section introduces the general steps for `Triton `_ kernel optimization. Broadly, +Triton kernel optimization is similar to HIP and CUDA kernel optimization. + +.. _fine-tuning-llms-triton-memory-access-efficiency: + +Memory access efficiency +======================== + +The accelerator or GPU contains global memory, local data share (LDS), and registers. Global memory has high access +latency, but is large. LDS access has much lower latency, but is smaller. Register access is the fastest yet smallest +among the three. + +So, the data in global memory should be loaded and stored as few times as possible. If different threads in a block +need to access the same data, these data should be first transferred from global memory to LDS, then accessed by +different threads in a workgroup. + +.. _fine-tuning-llms-triton-hardware-resource-utilization: + +Hardware resource utilization +============================= + +Each accelerator or GPU has multiple Compute Units (CUs) and various CUs do computation in parallel. So, how many CUs +can a compute kernel can allocate its task to? For the :doc:`AMD MI300X accelerator <../../reference/gpu-arch-specs>`, the +grid should have at least 1024 thread blocks or workgroups. + +.. figure:: ../../data/how-to/fine-tuning-llms/compute-unit.png + + Schematic representation of a CU in the CDNA2 or CDNA3 architecture. + +To increase hardware utilization and maximize parallelism, it is necessary to design algorithms that can exploit more +parallelism. One approach to achieving this is by using larger split-K techniques for General Matrix Multiply (GEMM) +operations, which can further distribute the computation across more CUs, thereby enhancing performance. + +.. tip:: + + You can query hardware resources with the command ``rocminfo`` (in the ``/opt/rocm/bin`` directory). For instance, + query the number of CUs, number of SIMD, and wavefront size using the following commands. + + .. code-block:: shell + + rocminfo | grep "Compute Unit" + + rocminfo | grep "SIMD" + + rocminfo | grep "Wavefront Size" + + On an MI300X device, there are 304 CUs, 4 SIMD per CU, and the wavefront size (warp size) is 64. See :doc:`Hardware + specifications <../../reference/gpu-arch-specs>` for a full list of AMD accelerators and GPUs. + +.. _fine-tuning-llms-triton-ir-analysis: + +IR analysis +=========== + +In Triton, there are several layouts including *blocked*, *shared*, *sliced*, and *MFMA*. + +From the Triton GPU IR (intermediate representation), you can know in which memory each computation is +performed. The following is a snippet of IR from the Flash Attention decode ``int4`` key-value program. It is to +de-quantize the ``int4`` key-value from the ``int4`` data type to ``fp16``. + +.. code-block:: + + %190 = tt.load %189 {cache = 1 : i32, evict = 1 : i32, isVolatile = + false} : tensor<1x64xi32, #blocked6> loc(#loc159) + + %266 = arith.andi %190, %cst_28 : tensor<1x64xi32, #blocked6> + loc(#loc250) + + %267 = arith.trunci %266 : tensor<1x64xi32, #blocked6> to + tensor<1x64xi16, #blocked6> loc(#loc251) + + %268 = tt.bitcast %267 : tensor<1x64xi16, #blocked6> -> tensor<1x64xf16, + #blocked6> loc(#loc252) + + %269 = triton_gpu.convert_layout %268 : (tensor<1x64xf16, #blocked6>) -> + tensor<1x64xf16, #shared1> loc(#loc252) + + %270 = tt.trans %269 : (tensor<1x64xf16, #shared1>) -> tensor<64x1xf16, + #shared2> loc(#loc194) + + %276 = triton_gpu.convert_layout %270 : (tensor<64x1xf16, #shared2>) -> + tensor<64x1xf16, #blocked5> loc(#loc254) + + %293 = arith.mulf %276, %cst_30 : tensor<64x1xf16, #blocked5> + loc(#loc254) + + %295 = arith.mulf %292, %294 : tensor<64x32xf16, #blocked5> loc(#loc264) + + %297 = arith.addf %295, %296 : tensor<64x32xf16, #blocked5> loc(#loc255) + + %298 = triton_gpu.convert_layout %297 : (tensor<64x32xf16, #blocked5>) + -> tensor<64x32xf16, #shared1> loc(#loc255) + + %299 = tt.trans %298 : (tensor<64x32xf16, #shared1>) -> + tensor<32x64xf16, #shared2> loc(#loc196) + + %300 = triton_gpu.convert_layout %299 : (tensor<32x64xf16, #shared2>) -> + tensor<32x64xf16, #triton_gpu.dot_op<{opIdx = 1, parent = #mfma, kWidth + = 4}>> loc(#loc197) + +From the IR, you can see ``i32`` data is loaded from global memory to registers. With a few element-wise operations in +registers, then it is stored in shared memory for the transpose operation, which needs data movement across different +threads. With the transpose done, it is loaded from LDS to register again, and with a few more element-wise operations, +they are stored in LDS again. The last step is to load from LDS to registers and convert to the dot-operand layout. + +From the IR, you can see that it uses the LDS twice: one for the transpose, and the other to convert the blocked layout +to a dot-operand layout. + +Assembly analysis +================= + +In the ISA, ensure ``global_load_dwordx4`` is used, especially when the +load happens in a loop. + +In most cases, the LDS load and store should use ``_b128`` as well to +minimize the number of LDS access instructions. Note that upstream (or backend) might not have ``_b128`` LDS read/write, +so it uses ``_b64``. For most cases, no matter if you use fork or upstream, +the LDS access should have ``_b64`` vector width. + +The AMD ISA has the ``s_waitcnt`` instruction to synchronize the dependency +of memory access and computations. The ``s_waitcnt`` instruction can +have two signals, typically in the context of Triton: + +* ``lgkmcnt(n):`` `lgkm` stands for LDS, GDS, Constant and Message. + + In this context, it is often related to LDS access. The number ``n`` here means the number of such accesses that can + be left out to continue. For example, 0 means all ``lgkm`` access must finish before continuing, and 1 means only 1 + ``lgkm`` access can be still running asynchronously before proceeding. + +* ``vmcnt(n):`` `vm` means vector memory. + + This happens when vector memory is accessed, for example, when global load moves from global memory to vector memory. + Again, the number ``n`` here means the number of accesses that can be left out to continue. + +Generally recommended guidelines are as follows. + +* Vectorize memory access as much as possible. + +* Ensure synchronization is done efficiently. + +* Overlap of instructions to hide latency, but it requires thoughtful + analysis of the algorithms. + +* If you find inefficiencies, you can trace it back to LLVM IR, TTGIR + and even TTIR to see where the problem comes from. If you find it + during compiler optimization, activate the MLIR dump and check which + optimization pass caused the problem. + +.. _fine-tuning-llms-triton-kernel-occupancy: + +Kernel occupancy +================ + +1. Get the VGPR count, search for ``.vgpr_count`` in the ISA (for example, ``N``). + +2. Get the allocated LDS following the steps (for example, L for the kernel). + + a. ``export MLIR_ENABLE_DUMP=1`` + + b. ``rm -rf ~/.triton/cache`` + + c. ``python kernel.py | | grep "triton_gpu.shared = " | tail -n 1`` + + d. You should see something like ``triton_gpu.shared = 65536``, indicating 65536 bytes of LDS are allocated for the + kernel. + +3. Get number of waves per workgroup using the following steps (for example, ``nW``). + + a. ``export MLIR_ENABLE_DUMP=1`` + + b. ``rm -rf ~/.triton/cache`` + + c. ``python kernel.py | | grep "triton_gpu.num-warps " | tail -n 1`` + + d. You should see something like ``“triton_gpu.num-warps" = 8``, indicating 8 waves per workgroup. + +4. Compute occupancy limited by VGPR based on N according to the following table. For example, waves per EU as + ``occ_vgpr``. + +.. _fine-tuning-llms-occupancy-vgpr-table: + +.. figure:: ../../data/how-to/fine-tuning-llms/occupancy-vgpr.png + :alt: Occupancy related to VGPR usage in an Instinct MI300X accelerator. + :align: center + +5. Compute occupancy limited by LDS based on L by: ``occ_lds = floor(65536 / L)``. + +6. Then the occupancy is ``occ = min(floor(occ_vgpr * 4 / nW), occ_lds) * nW / 4`` + + a. ``occ_vgpr \* 4`` gives the total number of waves on all 4 execution units (SIMDs) + per CU. + + b. ``floor(occ_vgpr * 4 / nW)`` gives the occupancy of workgroups per CU + regrading VGPR usage. + + c. The true ``occ`` is the minimum of the two. + +.. _fine-tuning-llms-triton-kernel-configs-env-vars: + +Auto-tunable kernel configurations and environment variables +============================================================ + +This section relates to the amount of :ref:`memory access ` and +computation assigned to each CU. It is related to the usage of LDS, registers and the scheduling of different tasks on +a CU. + +The following is a list of kernel arguments used for tuning. + +``num_stages=n`` + Adjusts the number of pipeline stages for different types of kernels. On AMD accelerators, set ``num_stages`` + according to the following rules: + + * For kernels with a single GEMM, set to ``0``. + + * For kernels with two GEMMs fused (Flash Attention, or any other kernel + that fuses 2 GEMMs), set to ``1``. + + * For kernels that fuse a single GEMM with another non-GEMM operator + (for example ReLU activation), set to ``0``. + + * For kernels that have no GEMMs, set to ``1``. + +``waves_per_eu=n`` + Helps to manage Vector General Purpose Registers (VGPR) usage to achieve desired occupancy levels. This argument + hints to the compiler to reduce VGPR to achieve ``n`` occupancy. See + :ref:`Kernel occupancy ` for more information about how to compute + occupancy. + + This argument is useful if: + + * The occupancy of the kernel is limited by VGPR usage. + + * The current VGPR usage is only a few above a boundary in + :ref:`Occupancy related to VGPR usage in an Instinct MI300X accelerator `. + + For example, according to the table, the available VGPR is 512 per Execution Unit (EU), and VGPU is allocated at the + unit of 16. If the current VGPR usage is 170, the actual requested VGPR will be 176, so the + occupancy is only 2 waves per CU since :math:`176 \times 3 > 512`. So, if you set + ``waves_per_eu`` to 3, the LLVM backend tries to bring VGPR usage down so + that it might fit 3 waves per EU. + +``BLOCK_M``, ``BLOCK_N``, ``BLOCK_K`` + Tile sizes to be tuned to balance the memory-to-computation ratio. You want tile sizes large enough to + maximize the efficiency of memory-to-computation ratio, but small enough to parallelize the greatest number of + workgroups at the grid level. + +``matrix_instr_nonkdim`` + Experimental feature for Flash Attention-like kernels that determines the size of the Matrix Fused Multiply-Add + (MFMA) instruction used. + + - ``Matrix_instr_nonkdim = 16``: ``mfma_16x16`` is used. + + - ``Matrix_instr_nonkdim = 32``: ``mfma_32x32`` is used. + + For GEMM kernels on an AMD MI300X accelerator, ``mfma_16x16`` typically outperforms ``mfma_32x32``, even for large + tile/GEMM sizes. + +The following is an environment variable used for tuning. + +``OPTIMIZE_EPILOGUE`` + Setting this variable to ``1`` can improve performance by removing the ``convert_layout`` operation in the epilogue. + It should be turned on (set to ``1``) in most cases. Setting ``OPTIMIZE_EPILOGUE=1`` stores the MFMA instruction + results in the MFMA layout directly; this comes at the cost of reduced global store efficiency, but the impact on + kernel execution time is usually minimal. + + By default (``0``), the results of MFMA instruction are converted to blocked layout, which leads to ``global_store`` + with maximum vector length, that is ``global_store_dwordx4``. + + This is done implicitly with LDS as the intermediate buffer to achieve + data exchange between threads. Padding is used in LDS to avoid bank + conflicts. This usually leads to extra LDS usage, which might reduce + occupancy. + + .. note:: + + This variable is not turned on by default because it only + works with ``tt.store`` but not ``tt.atomic_add``, which is used in split-k and + stream-k GEMM kernels. In the future, it might be enabled with + ``tt.atomic_add`` and turned on by default. + + See :ref:`IR analysis `. + +TorchInductor with Triton tuning knobs +=========================================== + +The following are suggestions for optimizing matrix multiplication (GEMM) and convolution (``conv``) operations in PyTorch +using ``inductor``, a part of the PyTorch compilation framework. The goal is to leverage Triton to achieve better +performance. + +Learn more about TorchInductor environment variables and usage in +`PyTorch documentation `_. + +To enable a ``gemm``/``conv`` lowering to Triton, it requires use of ``inductor``’s ``max_autotune`` mode. This benchmarks a +static list of Triton configurations (``conv`` configurations for max auto-tune + ``matmul`` configurations for max +auto-tune) and uses the fastest for each shape. Note that the Triton is not used if regular :doc:`MIOpen ` +or :doc:`rocBLAS ` is faster for a specific operation. + +* Set ``torch._inductor.config.max_autotune = True`` or ``TORCHINDUCTOR_MAX_AUTOTUNE=1``. + +* Or, for more fine-grained control: + + ``torch._inductor.config.max_autotune.pointwise = True`` + To enable tuning for ``pointwise``/``reduction`` ops. + + ``torch._inductor.config.max_autotune_gemm = True`` + To enable tuning or lowering of ``mm``/``conv``\s. + + ``torch._inductor.max_autotune_gemm_backends/TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDS`` + To select the candidate backends for ``mm`` auto-tuning. Defaults to + ``TRITON,ATEN,NV``. This also includes the ``CUTLASS`` tuning option. Limiting this to + ``TRITON`` might improve performance by enabling more fused ``mm`` kernels + instead of going to rocBLAS. + +* For ``mm`` tuning, tuning ``coordinate_descent`` might improve performance. + + ``torch._inductor.config.coordinate_descent_tuning = True`` or ``TORCHINDUCTOR_COORDINATE_DESCENT_TUNING=1`` + +* Inference can see large improvements on AMD GPUs by utilizing + ``torch._inductor.config.freezing=True`` or the ``TORCHINDUCTOR_FREEZING=1`` variable, which + in-lines weights as constants and enables constant folding optimizations. + +* Enabling ``inductor``’s cpp_wrapper might improve overhead. This generates + C++ code which launches Triton binaries directly with + ``hipModuleLaunchKernel`` and relies on `hipification`. + +* For NHWC convolutions workloads + ``torch._inductor.config.layout_optimization=True`` or ``TORCHINDUCTOR_LAYOUT_OPTIMIZATION=`` + can help be enforcing channels_last format throughout the graph avoiding + any additional transposes added by ``inductor``. Note that + ``PYTORCH_MIOPEN_SUGGEST_NHWC=1`` is recommended if using this. + +* Extracting the Triton kernel ``TORCH_COMPILE_DEBUG`` creates a + ``torch_compile_debug/`` directory at current path, in the ``output_code.py`` + the code-strings for the Triton kernels that are defined. Manual work is + then required to strip out the kernel and create kernel + compilation and launch via Triton. + +* For advanced ``matmul`` or ``conv`` configuration tuning, the ``inductor-gemm-tuner`` can + help. This implements the Triton ``conv``/``mm`` implementations used upstream + and allows specification of inputs and configuration tuning search space if new + tunings are found that can be added to the auto-tune list. + +Other guidelines +================ + +* Performance-critical HIP provides an environment variable, ``export HIP_FORCE_DEV_KERNARG=1``, + that can put HIP kernel arguments directly to + device memory to reduce the latency of accessing kernel arguments. It + can reduce 2 to 3 μs for some kernels. Setting this variable for the FA + decode containing ``splitK`` and reduced kernels can reduce the total time + by around 6 μs in the benchmark test. + +* Set the clock to deterministic. Use the command ``rocm-smi --setperfdeterminism 1900`` to set the max clock speed to + 1900MHz instead of the default 2100MHz. This can reduce the chance of clock speed decrease due to chip high temperature + by setting a lower cap. You can restore this setting to its default value with ``rocm-smi -r``. + +* Set Non-Uniform Memory Access (NUMA) auto-balance. Run the command ``cat /proc/sys/kernel/numa_balancing`` to check the + current setting. An output of ``0`` indicates this setting is available. If output is ``1``, run the command + ``sudo sh -c \\'echo 0 > /proc/sys/kernel/numa_balancing`` to set this. + +For these settings, the ``env_check.sh`` script automates the setting, resetting, and checking of the such +environments. Find the script at ``__. + +.. _fine-tuning-llms-triton-tunableop: + +TunableOp +--------- +`TunableOp `_ +is a feature used to define and optimize kernels that can have tunable parameters. This is useful in +optimizing the performance of custom kernels by exploring different parameter configurations to find the most efficient +setup. See more about PyTorch TunableOp :ref:`Model acceleration libraries `. + +You can easily manipulate the behavior TunableOp through environment variables, though you could use the C++ interface +``at::cuda::tunable::getTuningContext()``. A Python interface to the ``TuningContext`` does not yet exist. + +The default value is ``0``, which means only 1 iteration is attempted. Remember: there’s an overhead to tuning. To try +and minimize the overhead, only a limited number of iterations of a given operation are attempted. If you set this to +``10``, each solution for a given operation can run as many iterations as possible within 10ms. There is a hard-coded +upper limit of 100 iterations attempted per solution. This is a tuning parameter; if you want the tunings to be chosen +based on an average over multiple iterations, increase the allowed tuning duration. diff --git a/docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md b/docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md new file mode 100644 index 000000000..6196f9d76 --- /dev/null +++ b/docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md @@ -0,0 +1,484 @@ + + + + + + +# Optimizing with Composable Kernel + +The AMD ROCm™ Composable Kernel (CK) library provides a programming model for writing performance-critical kernels for machine learning workloads. It generates a general-purpose kernel during the compilation phase through a C++ template, enabling developers to achieve operation fusions on different data precisions. + +This article gives a high-level overview of CK General Matrix Multiplication (GEMM) kernel based on the design example of `03_gemm_bias_relu`. It also outlines the steps to construct the kernel and run it. Moreover, the article provides a detailed implementation of running SmoothQuant quantized INT8 models on AMD Instinct MI300X accelerators using CK. + +## High-level overview: a CK GEMM instance + +GEMM is a fundamental block in linear algebra, machine learning, and deep neural networks. It is defined as the operation: +{math}`E = α \times (A \times B) + β \times (D)`, with A and B as matrix inputs, α and β as scalar inputs, and D as a pre-existing matrix. +Take the commonly used linear transformation in a fully connected layer as an example. These terms correspond to input activation (A), weight (B), bias (D), and output (E), respectively. The example employs a `DeviceGemmMultipleD_Xdl_CShuffle` struct from CK library as the fundamental instance to explore the compute capability of AMD Instinct accelerators for the computation of GEMM. The implementation of the instance contains two phases: + +- [Template parameter definition](#template-parameter-definition) +- [Instantiating and running the templated kernel](#instantiating-and-running-the-templated-kernel) + +### Template parameter definition + +The template parameters of the instance are grouped into four parameter types: + +- [Parameters for determining matrix data precision](matrix-data-precision) +- [Parameters for determining matrix data layout](matrix-data-layout) +- [Parameters for determining extra operations on matrix elements](matrix-element-operation) +- [Performance-oriented tunable parameters](tunable-parameters) + + +```{figure} ../../data/how-to/fine-tuning-llms/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. +``` + +(matrix-data-precision)= + +#### Matrix data precision + +A, B, D, and E are defined as half-precision floating-point datatypes. The multiply-add results of matrix A and B are added with a pre-existing matrix D (half-precision), and the final GEMM results are also half-precision floating-points. + +```c++ +using ADataType = F16; +using BDataType = F16; +using AccDataType = F32; +using CShuffleDataType = F16; +using DDataType = F16; +using EDataType = F16; +``` + +`ADataType` and `BDataType` denote the data precision of the A and B input matrices. `AccDataType` determines the data precision used for representing the multiply-add results of A and B elements. These results are stored in a `CShuffle` module in local data share (LDS), a low-latency and high-bandwidth explicitly-addressed memory used for synchronization within a workgroup LDS for later use. + +`CShuffleDataType` denotes the data precision of `CShuffle` in LDS. + +`DDataType` denotes the data precision of the pre-existing D matrix stored in GPU global memory, while `EDatatype` denotes the data precision of the final output. The CK kernel supports a fusion strategy so that `CShuffle` can be added with a single pre-existing matrix in the same GPU kernel for better performance. + +(matrix-data-layout)= + +#### Matrix data layout + +```c++ +using ALayout = Row; +using BLayout = Col; +using DLayout = Row; +using ELayout = Row; +``` + +Following the convention of various linear algebra libraries, CK assumes that the input matrix A is an M x K matrix, meaning the matrix has M rows and K columns. Similarly, matrix B is assumed to be K x N, meaning it has K rows and N columns. In computing, row-major order and column-major order are commonly used ways to store matrices in linear storage. After understanding the matrix storage pattern, the underlying optimized memory access manner can be applied to achieve better performance depending on the storage ordering of these matrices. + +(matrix-element-operation)= + +#### Matrix element operation + +```c++ +using AElementOp = PassThrough; +using BElementOp = PassThrough; +using CDEElementOp = AddRelu; +``` + +CK supports the pre-processing of the matrix before calculating GEMM, that is, `C = AElementOp(A) * BElementOp(B)`. It similarly supports the post-processing of GEMM results the same way, that is, `E = CDEElementOp(C, D)`. + +`AElementOp` and `BElementOp` determine the operation applied to matrix A and B separately before GEMM, which is achieved by binding the operation with a C++ struct function. + +The above `PassThrough` denotes no operations are performed on the target matrix. `CDEELementOp` determines the operations applied to `CShuffle` output and matrix D. The following binding struct `AddRelu` shows an example of adding the `CShuffle` output and matrix D, and ReLU (Rectified Linear Unit) operations to the addition result. It then passes the results to matrix E. + +```c++ +struct AddRelu +{ + __host__ __device__ void operator()(ck::half_t& e, const ck::half_t& c, const ck::half_t& d) const + { + const ck::half_t x = c + d; + e = x > 0 ? x : 0; + } +}; +``` + +(tunable-parameters)= + +#### Tunable parameters + +The CK instance includes a series of tunable template parameters to control the parallel granularity of the workload to achieve load balancing on different hardware platforms. + +These parameters include Block Size, M/N/K Per Block, M/N per XDL, AK1, BK1, etc. + +- Block Size determines the number of threads in the thread block. +- M/N/K Per Block determines the size of tile that each thread block is responsible for calculating. +- M/N Per XDL refers to M/N size for Instinct accelerator Matrix Fused Multiply Add (MFMA) instructions operating on a per-wavefront basis. +- A/B K1 is related to the data type. It can be any value ranging from 1 to K Per Block. To achieve the optimal load/store performance, 128bit per load is suggested. In addition, the A/B loading parameters must be changed accordingly to match the A/B K1 value; otherwise, it will result in compilation errors. + +Conditions for achieving computational load balancing on different hardware platforms can vary. + +### Instantiating and running the templated kernel + +After determining the template parameters, we instantiate the kernel with actual arguments. Do one of the following: + +- Use `GetDeviceBuffer` from CK’s custom struct `DeviceMem` to pass the element values of the matrices that need to be calculated. +- Allocate device buffer via `hipMalloc`. Ensure the device buffer size can fit the matrix size. +- Pass matrix elements through the `data_ptr` method in the `Tensor` object if the matrix to be calculated is of `Tensor` type. + +The row and column, and stride information of input matrices are also passed to the instance. For batched GEMM, you must pass in additional batch count and batch stride values. The extra operations for pre and post-processing are also passed with an actual argument; for example, α and β for GEMM scaling operations. Afterward, the instantiated kernel is launched by the invoker, as illustrated in Figure 3. + + +```{figure} ../../data/how-to/fine-tuning-llms/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. +``` + +## Developing fused INT8 kernels for SmoothQuant models + +[SmoothQuant](https://github.com/mit-han-lab/smoothquant) (SQ) is a quantization algorithm that enables an INT8 quantization of both weights and activations for all the matrix multiplications in LLM. The required GPU kernel functionalities used to accelerate the inference of SQ models on Instinct accelerators are shown in the following table. + +:::{table} Functionalities used to implement SmoothQuant model inference. + +| Functionality descriptions | Corresponding wrappers | +|:-------------------------------------|-----------------------------------------| +| {math}`E = α \times (A \times B) + β \times (D)`, where A, B, D, E are INT8 2-D tensors; | E = Linear_ABDE_I8(A, B, D, {math}`\alpha`, {math}`\beta`) | +| {math}`E = RELU (α \times (A \times B) + β \times (D))`, where A, B, D, E are INT8 2-D tensors; | E = Linear_ReLU_ABDE_I8(A, B, D, {math}`\alpha`, {math}`\beta`) | +| {math}`E = α \times (A \times B) + β \times (D)`, where A, B are INT8 2-D tensors, D and E are FP32 2-D tensors; | E = Linear_AB_I8_DE_F32(A, B, D, {math}`\alpha`, {math}`\beta`) | +| {math}`E = α \times (A \times B)`, where A, B, E are INT8 3-D tensors; | E = BMM_ABE_I8(A, B, {math}`\alpha`) | +| {math}`E = α \times (A \times B)`, where A, B are INT8 3-D tensors, E is FP32 3-D tensor; | E = BMM_AB_I8_E_F32(A, B, {math}`\alpha`) | +::: + +### Operation flow analysis + +The following section discusses the analysis of the operation flow of `Linear_ReLU_ABDE_I8`. The rest of the wrappers in Table 1 can be analyzed similarly. + +The first operation in the process is to perform the multiplication of input matrices A and B. The resulting matrix C is then scaled with α to obtain T1. At the same time, the process performs a scaling operation on D elements to obtain T2. Afterward, the process performs matrix addition between T1 and T2, element activation calculation using ReLU, and element rounding sequentially. The operations to generate E1, E2, and E are encapsulated and completed by a user-defined template function in CK (given in the next sub-section). This template function is integrated into the fundamental instance directly during the compilation phase so that all these steps can be fused in a single GPU kernel. + + +```{figure} ../../data/how-to/fine-tuning-llms/ck-operation_flow.jpg +Operation flow. +``` + +The CK library contains many fundamental instances that implement different functions. Familiarize yourself with the names of various CK instances and determine whether they meet the target functional requirements. + +Second, consider whether the format of input data meets your actual calculation needs. For SQ models, the 8-bit integer data format (INT8) is applied for matrix calculations. + +Third, consider the platform for implementing CK instances. The instances suffixed with `xdl` only run on AMD Instinct accelerators after being compiled and cannot run on Radeon-series GPUs. This is due to the underlying device-specific instruction sets for implementing these basic instances. + +Here, we use [DeviceBatchedGemmMultiD_Xdl](https://github.com/ROCm/composable_kernel/tree/develop/example/24_batched_gemm) as the fundamental instance to implement the functionalities in the previous table. + + +```{figure} ../../data/how-to/fine-tuning-llms/ck-root_instance.jpg +Use the ‘DeviceBatchedGemmMultiD_Xdl’ instance as a root. +``` + +The `DeviceBatchedGemmMultiD_Xdl` instance realizes the batched GEMM `BMM_ABE_I8` and `BMM_AB_I8_E_F32` kernels directly by using the proper input and output data precision types. + +Based on the two batched GEMM kernels, GEMM kernel `Linear_ABDE_I8` and `Linear_AB_I8_DE_F32` can be implemented by expanding their input 2-D tensors to 3-D tensors. Then, the 3-D output tensors produced by the root instance are squeezed back to 2-D output tensors before returning back. + +For example, unsqueeze A (M, K) to A (1, M, K) before assigning it into the root instance and squeeze E (1, M, N) to (M, N) after the calculations of the root instance return back. `Linear_ReLU_ABDE_I8` is implemented by adding a ReLU operation on the result output of `Linear_ABDE_I8`. + +### Developing the complete function + +The inference of SQ quantized models relies on using PyTorch and Transformer libraries, and a tensor type is used to represent matrices and vectors in `torch`, the C++ data types in CK need to be replaced with the `torch::tensor` type. The data types of the input and output matrices should be a `tensor` type. + +In GEMM, the A and B inputs are two-dimensional matrices, and the required input matrices of the selected fundamental CK instance are three-dimensional matrices. Therefore, we must convert the input 2-D tensors to 3-D tensors, by using `tensor`'s `unsqueeze()` method before passing these matrices to the instance. For batched GEMM in the preceding table, ignore this step. + +```c++ +// Function input and output +torch::Tensor linear_relu_abde_i8( + torch::Tensor A_, + torch::Tensor B_, + torch::Tensor D_, + float alpha, + float beta) +{ + // Convert torch::Tensor A_ (M, K) to torch::Tensor A (1, M, K) + auto A = A_.unsqueeze(0); + + // Convert torch::Tensor B_ (K, N) to torch::Tensor A (1, K, N) + auto B = B_.unsqueeze(0); +... +``` + +As shown in the following code block, we obtain M, N, and K values using input tensor size values. This stride size information is used to reshape the input vector D and allocate the storage space of tensor E. Stride reflects the exact size of continuous elements in memory, which are passed as important parameters to the fundamental instance for GPU kernel use. + +```c++ + // Return the batch count from the size of dimension 0 + int batch_count = A.size(0); + + // Return the M, N, K from the size of dimension 1 & 2 + int M = A.size(1); + int N = B.size(1); + int K = A.size(2); + + // Initialize the stride size for A, B, D and E + int stride_A = K; + int stride_B = K; + int stride_D0 = N; + int stride_E = N; + + // Initialize the stride size for batched A, B, D and E + long long int batch_stride_A = M * K; + long long int batch_stride_B = K * N; + long long int batch_stride_D0 = M * N; + long long int batch_stride_E = M * N; + + // Convert the tensor of 2-D to 3-D + auto D = D_.view({1,-1}).repeat({M, 1}); + + // Allocate memory for E + auto E = torch::empty({batch_count, M, N}, + torch::dtype(torch::kInt8).device(A.device())); +``` + +In the following code block, `ADataType`, `BDataType` and `D0DataType` are used to denote the data precision of the input tensors A, B and D, respectively. `EDataType` is used to denote the data precision of output tensor E. These parameters are specified to `I8` data format (8-bit integer data format) to meet the kernel's design requirements. + +`AccDataType` determines the data precision used to represent the multiply-add results of A and B elements. Generally, a larger range data type is applied to store the multiply-add results of A and B to avoid result overflow; `I32` is applied in this case. The `CShuffleDataType I32` data type indicates that the multiply-add results continue to be stored in LDS as an `I32` data format. All of this is implemented through the following code block. + +```c++ + // Data precision + using ADataType = I8; + using BDataType = I8; + using AccDataType = I32; + using CShuffleDataType = I32; + using D0DataType = I8; + using DsDataType = ck::Tuple; + using EDataType = I8; +``` + +Following the convention of various linear algebra libraries, row-major and column-major orders are used to denote the ways of storing matrices in linear storage. The advantage of specifying matrix B as column major is that all the relevant matrix elements are stored continuously in GPU global memory when a row in A is multiplied by a column in B, which can help GPU achieve data consistency access to improve access performance. + +```c++ + // Specify tensor order + using ALayout = RowMajor; + using BLayout = ColumnMajor; + using D0Layout = RowMajor; + using DsLayout = ck::Tuple; + using ELayout = RowMajor; +``` + +In CK, `PassThrough` is a struct denoting if an operation is applied to the tensor it binds to. To fuse the operations between E1, E2, and E introduced in section [Operation flow analysis](#operation-flow-analysis), we define a custom C++ struct, `ScaleScaleAddRelu`, and bind it to `CDEELementOp`. It determines the operations that will be applied to `CShuffle` (A×B results), tensor D, α, and β. + +```c++ + // No operations bound to the elements of A and B + using AElementOp = PassThrough; + using BElementOp = PassThrough; + + // Operations bound to the elements of C, D and E + using CDEElementOp = ScaleScaleAddRelu; +``` + +In the binding struct, `operator()` performs an addition operation between `CShuffle` and matrix D, a ReLU operation on the addition results, and a rounding operation on the output elements. It then returns the results to E. + +```c++ +struct ScaleScaleAddRelu { + + template <> + __host__ __device__ constexpr void + operator()(I8& e, const I32& c, const I8& d) const + { + // Scale AxB result with alpha + const F32 c_scale = ck::type_convert(c) * alpha; + + // Scale D with beta + const F32 d_scale = ck::type_convert(d) * beta; + + // Perform addition operation + F32 temp = c_scale + d_scale; + + // Perform RELU operation + temp = temp > 0 ? temp : 0; + + // Perform rounding operation + temp = temp > 127 ? 127 : temp; + + // Return to E + e = ck::type_convert(temp); + } + + F32 alpha; + F32 beta; +}; +``` + +The original input tensors need to be padded to meet GPU tile-based parallelism. + +```c++ +static constexpr auto GemmDefault = ck::tensor_operation::device::GemmSpecialization::MNKPadding; +``` + +The template parameters of the target fundamental instance are initialized with the above parameters and includes default tunable parameters. For specific tuning methods, see [Tunable parameters](#tunable-parameters). + +```c++ +using DeviceOpInstance = ck::tensor_operation::device::DeviceBatchedGemmMultiD_Xdl< + // Tensor layout + ALayout, BLayout, DsLayout, ELayout, + // Tensor data type + ADataType, BDataType, AccDataType, CShuffleDataType, DsDataType, EDataType, + // Tensor operation + AElementOp, BElementOp, CDEElementOp, + // Padding strategy + GemmDefault, + // Tunable parameters + tunable parameters>; +``` + +Return the address of the first element of tensors: + +```c++ + auto A_ref = A.data_ptr(); + auto B_ref = B.data_ptr(); + auto D0_ref = D.data_ptr(); + auto E_ref = E.data_ptr(); +``` + +The fundamental instance is then initialized and run with actual arguments: + +```c++ + auto device_op = DeviceOpInstance{}; + auto invoker = device_op.MakeInvoker(); + auto argument = device_op.MakeArgument( + A_ref, B_ref, {D0_ref}, E_ref, + M, N, K, + batch_count, + stride_A, stride_B, {stride_D0}, stride_E, + batch_stride_A, batch_stride_B, {batch_stride_D0}, batch_stride_E, + AElementOp{}, BElementOp{}, CDEElementOp{alpha, beta}); + +invoker.Run(argument, StreamConfig{nullptr, 0}); +``` + +The output of the fundamental instance is a calculated batched matrix E (batch, M, N). Before the return, it needs to be converted to a 2-D matrix if a normal GEMM result is required. + +```c++ +// Convert (1, M, N) to (M, N) +return E.squeeze(0); +``` + +### Binding to Python + +Since these functions are written in C++ and `torch::Tensor`, you can use `pybind11` to bind the functions and import them as Python modules. For the example, the necessary binding code for exposing the functions in the table spans but a few lines. + +```c++ +#include + +PYBIND11_MODULE(TORCH_EXTENSION_NAME, m){ + m.def("linear_ab_i8_de_f32", &linear_ab_i8_de_f32); + m.def("linear_relu_abde_i8", &linear_relu_abde_i8); + m.def("linear_abde_i8", &linear_abde_i8); + m.def("bmm_abe_i8", &bmm_abe_i8); + m.def("bmm_ab_i8_e_f32", &bmm_ab_i8_e_f32); +} +``` + +Build the C++ extension by writing a `setup.py` script that uses `setuptools` to compile the C++ code. A reference implementation of the `setup.py` script is as follows. + +```python +import os +from setuptools import setup, find_packages +from torch.utils import cpp_extension +from torch.utils.cpp_extension import BuildExtension + +os.environ["CC"] = "hipcc" +os.environ["CXX"] = "hipcc" + +sources = [ + 'torch_int/kernels/linear.cpp', + 'torch_int/kernels/bmm.cpp', + 'torch_int/kernels/pybind.cpp', +] + +include_dirs = ['torch_int/kernels/include'] +extra_link_args = ['libutility.a'] +extra_compile_args = ['-O3','-DNDEBUG', '-std=c++17', '--offload-arch=gfx942', '-DCK_ENABLE_INT8', '-D__HIP_PLATFORM_AMD__=1'] + +setup( + name='torch_int', + ext_modules=[ + cpp_extension.CUDAExtension( + name='torch_int.rocm', + sources=sources, + include_dirs=include_dirs, + extra_link_args=extra_link_args, + extra_compile_args=extra_compile_args + ), + ], + cmdclass={ + 'build_ext': BuildExtension.with_options(use_ninja=False) + }, + packages=find_packages( + exclude=['notebook', 'scripts', 'tests']), +) +``` + +Run `python setup.py install` to build and install the extension. It should look something like Figure 6: + + +```{figure} ../../data/how-to/fine-tuning-llms/ck-compilation.jpg +Compilation and installation of the INT8 kernels. +``` + +### INT8 model inference and performance + +The implementation architecture of running SmoothQuant models on MI300X GPUs is illustrated in Figure 7, where (a) shows the decoder layer composition components of the target model, (b) shows the major implementation class for the decoder layer components, and \(c\) denotes the underlying GPU kernels implemented by CK instance. + + +```{figure} ../../data/how-to/fine-tuning-llms/ck-inference_flow.jpg +The implementation architecture of running SmoothQuant models on AMD MI300X accelerators. +``` + +For the target [SQ quantized model](https://huggingface.co/mit-han-lab/opt-13b-smoothquant), each decoder layer contains three major components: attention calculation, layer normalization, and linear transformation in fully connected layers. The corresponding implementation classes for these components are: + +- `Int8OPTAttention` +- `W8A8B8O8LinearReLU` +- `W8A8BF32OF32Linear` + + These classes' underlying implementation logits will harness the functions in previous table. Note that for the example, the `LayerNormQ` module is implemented by the torch native module. + +Testing environment: +The hardware platform used for testing equips with 256 AMD EPYC 9534 64-Core Processor, 8 AMD Instinct MI300X accelerators and 1.5T memory. The testing was done in a publicly available Docker image from Docker Hub: +[`rocm/pytorch:rocm6.1_ubuntu22.04_py3.10_pytorch_2.1.2`](https://hub.docker.com/layers/rocm/pytorch/rocm6.1_ubuntu22.04_py3.10_pytorch_2.1.2/images/sha256-f6ea7cee8aae299c7f6368187df7beed29928850c3929c81e6f24b34271d652b) + +The tested models are OPT-1.3B, 2.7B, 6.7B and 13B FP16 models and the corresponding SmoothQuant INT8 OPT models were obtained from Hugging Face. + +Note that since the default values were used for the tunable parameters of the fundamental instance, the performance of the INT8 kernel is suboptimal. + +Figure 8 shows the performance comparisons between the original FP16 and the SmoothQuant-quantized INT8 models on a single MI300X accelerator. The GPU memory footprints of SmoothQuant-quantized models are significantly reduced. It also indicates the per-sample inference latency is significantly reduced for all SmoothQuant-quantized OPT models (illustrated in (b)). Notably, the performance of the CK instance-based INT8 kernel steadily improves with an increase in model size. + + +```{figure} ../../data/how-to/fine-tuning-llms/ck-comparisons.jpg +Performance comparisons between the original FP16 and the SmoothQuant-quantized INT8 models on a single MI300X accelerator. +``` + +For accuracy comparisons between the original FP16 and INT8 models, the evaluation is done by using the first 1,000 samples from the LAMBADA dataset's validation set. We employ the same Last Token Prediction Accuracy method introduced in [SmoothQuant Real-INT8 Inference for PyTorch](https://github.com/mit-han-lab/smoothquant/blob/main/examples/smoothquant_opt_real_int8_demo.ipynb) as our evaluation metric. The comparison results are shown in Table 2. + +:::{table} The inference accuracy comparisons of SmoothQuant quantized models on Instinct MI300X. + +| Models | Hugging Face FP16 model accuracy | SmoothQuant quantized INT8 model accuracy | +|:-----------------|----------------------------------------|---------------------------------------------| +| opt-1.3B | 0.72 | 0.70 | +| opt-2.7B | 0.76 | 0.75 | +| opt-6.7B | 0.80 | 0.79 | +| opt-13B | 0.79 | 0.77 | +::: + +## Conclusion + +CK provides a rich set of template parameters for generating flexible accelerated computing kernels for difference application scenarios. + +CK supports multiple instruction sets of AMD Instinct GPUs, operator fusion and different data precisions. Its composability helps users quickly construct operator performance verification. + +With CK, you can build more effective AI applications with higher flexibility and better performance on different AMD accelerator platforms. diff --git a/docs/how-to/fine-tuning-llms/overview.rst b/docs/how-to/fine-tuning-llms/overview.rst new file mode 100644 index 000000000..90330cdbd --- /dev/null +++ b/docs/how-to/fine-tuning-llms/overview.rst @@ -0,0 +1,104 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, optimzation, LoRA, walkthrough + +*************************************** +Conceptual overview of fine-tuning LLMs +*************************************** + +Large language models (LLMs) are trained on massive amounts of text data to generate coherent and fluent text. The +underlying *transformer* architecture is the fundamental building block of all LLMs. Transformers serve as the +enable LLMs to understand and generate text by capturing contextual relationships and long-range dependencies. To better +understand the philosophy of the transformer architecture, review the foundational +`Attention is all you need `_ paper. + +By further training pre-trained LLMs, the fine-tuned model can gain knowledge related to specific fields or tasks, +thereby significantly improving its performance in that field or task. The core idea of fine-tuning is to use the +parameters of the pre-trained model as the starting point for new tasks and shape it through a small amount of +specific domain or task data, expanding the original model's capability to new tasks or datasets. + +Fine-tuning can effectively improve the performance of existing pre-trained models in specific application scenarios. +Continuous training and adjustment of the parameters of the base model in the target domain or task can better capture +the semantic characteristics and patterns in specific scenarios, thereby significantly improving the key indicators of +the model in that domain or task. For example, by fine-tuning the Llama 2 model, its performance in certain applications +can be improve over the base model. + +.. _fine-tuning-llms-concept-challenge: + +The challenge of fine-tuning models +=================================== + +However, the computational cost of fine-tuning is still high, especially for complex models and large datasets, which +poses distinct challenges related to substantial computational and memory requirements. This might be a barrier for +accelerators or GPUs with low computing power or limited device memory resources. + +For example, suppose we have a language model with 7 billion (7B) parameters, represented by a weight matrix :math:`W`. +During backpropagation, the model needs to learn a :math:`ΔW` matrix, which updates the original weights to minimize the +value of the loss function. + +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/fine-tuning-llms/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`) + and matrix B (:math:`K\times N`) is :math:`ΔW(M\times N)`; dimension K is a hyperparameter. By representing + :math:`ΔW` as the product of two smaller matrices (A and B) with a lower rank K, the number of trainable parameters + is significantly reduced. + +.. _fine-tuning-llms-concept-optimizations: + +Optimizations for model fine-tuning +=================================== + +Low-Rank Adaptation (LoRA) is a technique allowing fast and cost-effective fine-tuning of state-of-the-art LLMs that can +overcome this issue of high memory consumption. + +LoRA accelerates the adjustment process and reduces related memory costs. To be precise, LoRA decomposes the portion of +weight changes :math:`ΔW` into high-precision low-rank representations, which do not require the calculations of all +:math:`ΔW`. It learns the decomposition representation of :math:`ΔW` during training, as shown in +:ref:`the weight update diagram `. This is how LoRA saves on +computing resources. + +LoRA is integrated into the `Hugging Face Parameter-Efficient Fine-Tuning (PEFT) +`_ library, as well as other computation and memory efficiency optimization +variants for model fine-tuning such as `AdaLoRA `_. This +library efficiently adapts large pre-trained models to various downstream applications without fine-tuning all model +parameters. PEFT methods only fine-tune a few model parameters, significantly decreasing computational and storage +costs while yielding performance comparable to a fully fine-tuned model. PEFT is integrated with the `Hugging Face +Transformers `_ library, providing a faster and easier way to load, +train, and use large models for inference. + +To simplify running a fine-tuning implementation, the `Transformer Reinforcement Learning (TRL) +`_ library provides a set of tools to train transformer language models with +reinforcement learning, from the Supervised Fine-Tuning step (SFT), Reward Modeling step (RM), to the Proximal Policy +Optimization (PPO) step. The ``SFTTrainer`` API in TRL encapsulates these PEFT optimizations so you can easily import +their custom training configuration and run the training process. + +.. _fine-tuning-llms-walkthrough-desc: + +Walkthrough +=========== + +To demonstrate the benefits of LoRA and the ideal compute compatibility of using PEFT and TRL libraries on AMD +ROCm-compatible accelerators and GPUs, let's step through a comprehensive implementation of the fine-tuning process +using the Llama 2 7B model with LoRA tailored specifically for question-and-answer tasks on AMD MI300X accelerators. + +Before starting, review and understand the key components of this walkthrough: + +- `Llama 2 `_: a family of large language models developed and publicly released by + Meta. Its variants range in scale from 7 billion to 70 billion parameters. + +- Fine-tuning: a critical process that refines LLMs for specialized tasks and optimizes performance. + +- LoRA: a memory-efficient implementation of LLM fine-tuning that significantly reduces the number of trainable + parameters. + +- `SFTTrainer `_: an optimized + trainer with a simple interface to easily fine-tune pre-trained models with PEFT adapters, for example, LoRA, for + memory efficiency purposes on a custom dataset. + +Continue the walkthrough in :doc:`Fine-tuning and inference `. diff --git a/docs/how-to/fine-tuning-llms/profiling-and-debugging.rst b/docs/how-to/fine-tuning-llms/profiling-and-debugging.rst new file mode 100644 index 000000000..4371fca4a --- /dev/null +++ b/docs/how-to/fine-tuning-llms/profiling-and-debugging.rst @@ -0,0 +1,217 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, profiling, debugging, performance, Triton + +*********************** +Profiling and debugging +*********************** + +This section discusses profiling and debugging tools and some of their common usage patterns with ROCm applications. + +PyTorch Profiler +================ + +`PyTorch Profiler `_ can be invoked inside Python scripts, letting you +collect CPU and GPU performance metrics while the script is running. See the `PyTorch Profiler tutorial +`_ for more information. + +You can then visualize and view these metrics using an open-source profile visualization tool like +`Perfetto UI `_. + +#. Use the following snippet to invoke PyTorch Profiler in your code. + + .. code-block:: python + + import torch + import torchvision.models as models + from torch.profiler import profile, record_function, ProfilerActivity + model = models.resnet18().cuda() + inputs = torch.randn(2000, 3, 224, 224).cuda() + + with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA]) as prof: + with record_function("model_inference"): + model(inputs) + prof.export_chrome_trace("resnet18_profile.json") + +#. Profile results in ``resnet18_profile.json`` can be viewed by the Perfetto visualization tool. Go to + ``__ and import the file. In your Perfetto visualization, you'll see that the upper section + shows transactions denoting the CPU activities that launch GPU kernels while the lower section shows the actual GPU + activities where it processes the ``resnet18`` inferences layer by layer. + + .. figure:: ../../data/how-to/fine-tuning-llms/perfetto-trace.svg + + Perfetto trace visualization example. + +ROCm profiling tools +==================== + +Heterogenous systems, where programs run on both CPUs and GPUs, introduce additional complexities. Understanding the +critical path and kernel execution is all the more important; so, performance tuning is a necessary component in the +benchmarking process. + +With AMD's profiling tools, developers are able to gain important insight into how efficiently their application is +using hardware resources and effectively diagnose potential bottlenecks contributing to poor performance. Developers +working with AMD Instinct accelerators have multiple tools depending on their specific profiling needs; these are: + +* :ref:`ROCProfiler ` +* :ref:`Omniperf ` +* :ref:`Omnitrace ` + +.. _fine-tuning-llms-profiling-rocprof: + +ROCProfiler +----------- +:doc:`ROCProfiler ` is primarily a low-level API for accessing and extracting GPU hardware performance +metrics, commonly called *performance counters*. These counters quantify the performance of the underlying architecture +showcasing which pieces of the computational pipeline and memory hierarchy are being utilized. + +Your ROCm installation contains a script or executable command called ``rocprof`` which provides the ability to list all +available hardware counters for your specific accelerator or GPU, and run applications while collecting counters during +their execution. + +This ``rocprof`` utility also depends on the :doc:`ROCTracer and ROC-TX libraries `, giving it the +ability to collect timeline traces of the accelerator software stack as well as user-annotated code regions. + +.. note:: + + ``rocprof`` is a CLI-only utility so input and output takes the format of ``.txt`` and CSV files. These + formats provide a raw view of the data and puts the onus on the user to parse and analyze. Therefore, ``rocprof`` + gives the user full access and control of raw performance profiling data, but requires extra effort to analyze the + collected data. + +.. _fine-tuning-llms-profiling-omniperf: + +Omniperf +-------- +`Omniperf `_ is a system performance profiler for high-performance computing (HPC) and +machine learning (ML) workloads using Instinct accelerators. Under the hood, Omniperf uses +:ref:`ROCProfiler ` to collect hardware performance counters. The Omniperf tool performs +system profiling based on all approved hardware counters for Instinct +accelerator architectures. It provides high level performance analysis features including System Speed-of-Light, IP +block Speed-of-Light, Memory Chart Analysis, Roofline Analysis, Baseline Comparisons, and more. + +Omniperf takes the guesswork out of profiling by removing the need to provide text input files with lists of counters +to collect and analyze raw CSV output files as is the case with ROC-profiler. Instead, Omniperf automates the collection +of all available hardware counters in one command and provides a graphical interface to help users understand and +analyze bottlenecks and stressors for their computational workloads on AMD Instinct accelerators. + +.. note:: + + Omniperf collects hardware counters in multiple passes, and will therefore re-run the application during each pass + to collect different sets of metrics. + +.. figure:: ../../data/how-to/fine-tuning-llms/omniperf-analysis.png + + Omniperf memory chat analysis panel. + +In brief, Omniperf provides details about hardware activity for a particular GPU kernel. It also supports both +a web-based GUI or command-line analyzer, depending on your preference. + +.. _fine-tuning-llms-profiling-omnitrace: + +Omnitrace +--------- + +`Omnitrace `_ is a comprehensive profiling and tracing tool for parallel applications, +including HPC and ML packages, written in C, C++, Fortran, HIP, OpenCL, and Python which execute on the CPU or CPU and +GPU. It is capable of gathering the performance information of functions through any combination of binary +instrumentation, call-stack sampling, user-defined regions, and Python interpreter hooks. + +Omnitrace supports interactive visualization of comprehensive traces in the web browser in addition to high-level +summary profiles with ``mean/min/max/stddev`` statistics. Beyond runtime +information, Omnitrace supports the collection of system-level metrics such as CPU frequency, GPU temperature, and GPU +utilization. Process and thread level metrics such as memory usage, page faults, context switches, and numerous other +hardware counters are also included. + +.. tip:: + + When analyzing the performance of an application, it is best not to assume you know where the performance + bottlenecks are and why they are happening. Omnitrace is the ideal tool for characterizing where optimization would + have the greatest impact on the end-to-end execution of the application and to discover what else is happening on the + system during a performance bottleneck. + +.. figure:: ../../data/how-to/fine-tuning-llms/omnitrace-timeline.png + + Omnitrace timeline trace example. + +For details usage and examples of using these tools, refer to the +`Introduction to profiling tools for AMD hardware `_ +developer blog. + +Debugging with ROCm Debug Agent +=============================== + +ROCm Debug Agent (:doc:`ROCdebug-agent `) is a library that can be loaded by the ROCm platform +runtime (:doc:`ROCr `) to provide the following functionalities for all AMD accelerators and GPUs +supported by the ROCm Debugger API (:doc:`ROCdbgapi `). + +* Print the state of all AMD accelerator or GPU wavefronts that caused a queue error; for example, causing a memory + violation, executing an ``s_trap2``, or executing an illegal instruction. + +* Print the state of all AMD accelerator or GPU wavefronts by sending a ``SIGQUIT`` signal to the process in question; + for example, by pressing ``Ctrl + \`` while the process is executing. + +Debugging memory access faults +------------------------------ + +Identifying a faulting kernel is often enough to triage a memory access fault. To that end, the +`ROCm Debug Agent `_ can trap a memory access fault and provide a dump of all +active wavefronts that caused the error as well as the name of the kernel. The +`AMD ROCm Debug Agent Library README `_ provides full +instructions, but in brief: + +* Compiling with ``-ggdb -O0`` is recommended but not required. + +* ``HSA_TOOLS_LIB=/opt/rocm/lib/librocm-debug-agent.so.2 HSA_ENABLE_DEBUG=1 ./my_program`` + +When the debug agent traps the fault, it will produce an extremely +verbose output of all wavefront registers and memory content. +Importantly, it also prints something like: + +.. code-block:: shell + + Disassembly for function vector_add_assert_trap(int*, int*, int*): + + code object: + file:////rocm-debug-agent/build/test/rocm-debug-agent-test#offset=14309&size=31336 + + loaded at: [0x7fd4f100c000-0x7fd4f100e070] + +The kernel name and the code object file should be listed. In the +example above, the kernel name is ``vector_add_assert_trap``, but this might +also look like: + +.. code-block:: shell + + Disassembly for function memory:///path/to/codeobject#offset=1234&size=567: + +In this case, it is an in-memory kernel that was generated at runtime. + +Using the following environment variable, the debug agent will save all code objects to the current directory (use +``--save-code-objects=[DIR]`` to place them in another location). The code objects will be renamed from the URI format +with special characters replaced by ``_``. + +.. code-block:: shell + + ROCM_DEBUG_AGENT_OPTIONS="--all --save-code-objects" + +Use the ``llvm-objdump`` command to disassemble the indicated in-memory +code object that has now been saved to disk. The name of the kernel is +often found inside the disassembled code object. + +.. code-block:: shell + + llvm-objdump --disassemble-all path/to/code-object.co + +Consider turning off memory caching strategies both within the ROCm +stack and PyTorch where possible. This will give the debug agent the +best chance at finding the memory fault where it originates. Otherwise, +it could be masked by writing past the end of a cached block within a +larger allocation. + +.. code-block:: shell + + PYTORCH_NO_HIP_MEMORY_CACHING=1 + + HSA_DISABLE_FRAGMENT_ALLOCATOR=1 + diff --git a/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst b/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst new file mode 100644 index 000000000..48da84446 --- /dev/null +++ b/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst @@ -0,0 +1,509 @@ +.. meta:: + :description: Model fine-tuning and inference on a single-GPU system + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, single-GPU, LoRA, PEFT, inference + +**************************************************** +Fine-tuning and inference using a single accelerator +**************************************************** + +This section explains model fine-tuning and inference techniques on a single-accelerator system. See +:doc:`Multi-accelerator fine-tuning ` for a setup with multiple accelerators or +GPUs. + +.. _fine-tuning-llms-single-gpu-env: + +Environment setup +================= + +This section was tested using the following hardware and software environment. + +.. list-table:: + :stub-columns: 1 + + * - Hardware + - AMD Instinct MI300X accelerator + + * - Software + - ROCm 6.1, Ubuntu 22.04, PyTorch 2.1.2, Python 3.10 + + * - Libraries + - ``transformers`` ``datasets`` ``huggingface-hub`` ``peft`` ``trl`` ``scipy`` + + * - Base model + - ``meta-llama/Llama-2-7b-chat-hf`` + +.. _fine-tuning-llms-single-gpu-env-setup: + +Setting up the base implementation environment +---------------------------------------------- + +#. Install PyTorch for ROCm. Refer to the + :doc:`PyTorch installation guide `. For a consistent + installation, it’s recommended to use official ROCm prebuilt Docker images with the framework pre-installed. + +#. In the Docker container, check the availability of ROCm-capable accelerators using the following command. + + .. code-block:: shell + + rocm-smi -showproductname + + Your output should look like this: + + .. code-block:: shell + + ============================ ROCm System Management Interface ============================ + ====================================== Product Info ====================================== + GPU[0] : Card series: AMD Instinct MI300X OAM + GPU[0] : Card model: 0x74a1 + GPU[0] : Card vendor: Advanced Micro Devices, Inc. [AMD/ATI] + GPU[0] : Card SKU: MI3SRIOV + ========================================================================================== + ================================== End of ROCm SMI Log =================================== + +#. Check that your accelerators are available to PyTorch. + + .. code-block:: python + + import torch + print("Is a ROCm-GPU detected? ", torch.cuda.is_available()) + print("How many ROCm-GPUs are detected? ", torch.cuda.device_count()) + + If successful, your output should look like this: + + .. code-block:: shell + + >>> print("Is a ROCm-GPU detected? ", torch.cuda.is_available()) + Is a ROCm-GPU detected? True + >>> print("How many ROCm-GPUs are detected? ", torch.cuda.device_count()) + How many ROCm-GPUs are detected? 4 + +#. 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`. + + See the :ref:`Optimizations for model fine-tuning ` for a brief discussion on + PEFT and TRL. + + .. code-block:: shell + + # Install `bitsandbytes` for ROCm 6.0+, use -DBNB_ROCM_ARCH to target specific GPU arch + git clone --recurse https://github.com/ROCm/bitsandbytes.git + cd bitsandbytes + git checkout rocm_enabled + pip install -r requirements-dev.txt + cmake -DBNB_ROCM_ARCH="gfx942" -DCOMPUTE_BACKEND=hip -S . + python setup.py install + + # To leverage the SFTTrainer in TRL for model fine-tuning + pip install trl + + # To leverage PEFT for efficiently adapting pre-trained language models + pip install peft + + # Install the other dependencies: + pip install transformers, datasets, huggingface-hub, scipy + +#. Check that the required packages can be imported. + + .. code-block:: python + + import torch + from datasets import load_dataset + from transformers import ( + AutoModelForCausalLM, + AutoTokenizer, + TrainingArguments + ) + from peft import LoraConfig + from trl import SFTTrainer + +.. _fine-tuning-llms-single-gpu-download-model-dataset: + +Download the base model and fine-tuning dataset +----------------------------------------------- + +#. Request to access to download the `Meta's official Llama model `_ from Hugging + Face. After permission is granted, log in with the following command using your personal access tokens: + + .. code-block:: shell + + huggingface-cli login + + .. note:: + + You can also use the `NousResearch Llama-2-7b-chat-hf `_ + as a substitute. It has the same model weights as the original. + +#. Run the following code to load the base model and tokenizer. + + .. code-block:: python + + # Base model and tokenizer names + base_model_name = "meta-llama/Llama-2-7b-chat-hf" + + # Load base model to GPU memory + device = "cuda:0" + base_model = AutoModelForCausalLM.from_pretrained(base_model_name, trust_remote_code = True).to(device) + + # Load tokenizer + tokenizer = AutoTokenizer.from_pretrained( + base_model_name, + trust_remote_code = True) + tokenizer.pad_token = tokenizer.eos_token + tokenizer.padding_side = "right" + +#. Now, let's fine-tune the base model for a question-and-answer task using a small dataset called + `mlabonne/guanaco-llama2-1k `_, which is a 1000 sample + subset of the `timdettmers/openassistant-guanaco `_ dataset. + + .. code-block:: + + # Dataset for fine-tuning + training_dataset_name = "mlabonne/guanaco-llama2-1k" + training_dataset = load_dataset(training_dataset_name, split = "train") + + # Check the data + print(training_dataset) + + # #11 is a QA sample in English + print(training_dataset[11]) + +#. With the base model and the dataset, let's start fine-tuning! + +.. _fine-tuning-llms-single-gpu-configure-params: + +Configure fine-tuning parameters +-------------------------------- + +To set up ``SFTTrainer`` parameters, you can use the following code as reference. + +.. code-block:: python + + # Training Params for SFTTrainer + training_arguments = TrainingArguments( + output_dir = "./results", + num_train_epochs = 1, + per_device_train_batch_size = 4, + gradient_accumulation_steps = 1, + optim = "paged_adamw_32bit", + save_steps = 50, + logging_steps = 50, + learning_rate = 4e-5, + weight_decay = 0.001, + fp16=False, + bf16=False, + max_grad_norm = 0.3, + max_steps = -1, + warmup_ratio = 0.03, + group_by_length = True, + lr_scheduler_type = "constant", + report_to = "tensorboard" + ) + +.. _fine-tuning-llms-single-gpu-start: + +Fine-tuning +=========== + +In this section, you'll see two ways of training: with the LoRA technique and without. See :ref:`Optimizations for model +fine-tuning ` for an introduction to LoRA. Training with LoRA uses the +``SFTTrainer`` API with its PEFT integration. Training without LoRA forgoes these benefits. + +Compare the number of trainable parameters and training time under the two different methodologies. + +.. tab-set:: + + .. tab-item:: Fine-tuning with LoRA and PEFT + :sync: with + + 1. Configure LoRA using the following code snippet. + + .. code-block:: python + + peft_config = LoraConfig( + lora_alpha = 16, + lora_dropout = 0.1, + r = 64, + bias = "none", + task_type = "CAUSAL_LM" + ) + # View the number of Trainable Params + from peft import get_peft_model + peft_model = get_peft_model(base_model, peft_config) + peft_model.print_trainable_parameters() + + The output should look like this. Compare the number of trainable parameters to that when fine-tuning without + LoRA and PEFT. + + .. code-block:: shell + + trainable params: 33,554,432 || all params: 6,771,970,048 || trainable%: 0.49548996469513035 + + 2. Initialize ``SFTTrainer`` with a PEFT LoRA configuration and run the trainer. + + .. code-block:: python + + # Initialize a sft trainer + sft_trainer = SFTTrainer( + model = base_model, + train_dataset = training_dataset, + peft_config = peft_config, + dataset_text_field = "text", + tokenizer = tokenizer, + args = training_arguments + ) + + # Run the trainer + sft_trainer.train() + + The output should look like this: + + .. code-block:: shell + + {'loss': 1.5973, 'grad_norm': 0.25271978974342346, 'learning_rate': 4e-05, 'epoch': 0.16} + {'loss': 2.0519, 'grad_norm': 0.21817368268966675, 'learning_rate': 4e-05, 'epoch': 0.32} + {'loss': 1.6147, 'grad_norm': 0.3046981394290924, 'learning_rate': 4e-05, 'epoch': 0.48} + {'loss': 1.4124, 'grad_norm': 0.11534837633371353, 'learning_rate': 4e-05, 'epoch': 0.64} + {'loss': 1.5627, 'grad_norm': 0.09108350425958633, 'learning_rate': 4e-05, 'epoch': 0.8} + {'loss': 1.417, 'grad_norm': 0.2536439299583435, 'learning_rate': 4e-05, 'epoch': 0.96} + {'train_runtime': 197.4947, 'train_samples_per_second': 5.063, 'train_steps_per_second': 0.633, 'train_loss': 1.6194254455566406, 'epoch': 1.0} + 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████| 125/125 [03:17<00:00, 1.58s/it] + + .. tab-item:: Fine-tuning without LoRA and PEFT + :sync: without + + 1. Use the following code to get started. + + .. code-block:: python + + def print_trainable_parameters(model): + # Prints the number of trainable parameters in the model. + trainable_params = 0 + all_param = 0 + for _, param in model.named_parameters(): + all_param += param.numel() + if param.requires_grad: + trainable_params += param.numel() + print(f"trainable params: {trainable_params} || all params: {all_param} || trainable%: {100 * trainable_params / all_param:.2f}") + + sft_trainer.peft_config = None + print_trainable_parameters(sft_trainer.model) + + The output should look like this. Compare the number of trainable parameters to that when fine-tuning with LoRA + and PEFT. + + .. code-block:: shell + + trainable params: 6,738,415,616 || all params: 6,738,415,616 || trainable%: 100.00 + + + 2. Run the trainer. + + .. code-block:: python + + # Trainer without LoRA config + trainer_full = SFTTrainer( + model = base_model, + train_dataset = training_dataset, + dataset_text_field = "text", + tokenizer = tokenizer, + args = training_arguments + ) + + # Training + trainer_full.train() + + The output should look like this: + + .. code-block:: shell + + {'loss': 1.5975, 'grad_norm': 0.25113457441329956, 'learning_rate': 4e-05, 'epoch': 0.16} + {'loss': 2.0524, 'grad_norm': 0.2180655151605606, 'learning_rate': 4e-05, 'epoch': 0.32} + {'loss': 1.6145, 'grad_norm': 0.2949850261211395, 'learning_rate': 4e-05, 'epoch': 0.48} + {'loss': 1.4118, 'grad_norm': 0.11036080121994019, 'learning_rate': 4e-05, 'epoch': 0.64} + {'loss': 1.5595, 'grad_norm': 0.08962831646203995, 'learning_rate': 4e-05, 'epoch': 0.8} + {'loss': 1.4119, 'grad_norm': 0.25422757863998413, 'learning_rate': 4e-05, 'epoch': 0.96} + {'train_runtime': 419.5154, 'train_samples_per_second': 2.384, 'train_steps_per_second': 0.298, 'train_loss': 1.6171623611450194, 'epoch': 1.0} + 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████| 125/125 [06:59<00:00, 3.36s/it] + +.. _fine-tuning-llms-single-gpu-saving: + +Saving adapters or fully fine-tuned models +------------------------------------------ + +PEFT methods freeze the pre-trained model parameters during fine-tuning and add a smaller number of trainable +parameters, namely the adapters, on top of it. The adapters are trained to learn specific task information. The adapters +trained with PEFT are usually an order of magnitude smaller than the full base model, making them convenient to share, +store, and load. + +.. tab-set:: + + .. tab-item:: Saving a PEFT adapter + :sync: with + + If you're using LoRA and PEFT, use the following code to save a PEFT adapter to your system once the fine-tuning + is completed. + + .. code-block:: python + + # PEFT adapter name + adapter_name = "llama-2-7b-enhanced-adapter" + + # Save PEFT adapter + sft_trainer.model.save_pretrained(adapter_name) + + The saved PEFT adapter should look like this on your system: + + .. code-block:: shell + + # Access adapter directory + cd llama-2-7b-enhanced-adapter + + # List all adapter files + README.md adapter_config.json adapter_model.safetensors + + .. tab-item:: Saving a fully fine-tuned model + :sync: without + + If you're not using LoRA and PEFT so there is no PEFT LoRA configuration used for training, use the following code + to save your fine-tuned model to your system. + + .. code-block:: python + + # fully fine-tuned model name + new_model_name = "llama-2-7b-enhanced" + + # Save the fully fine-tuned model + full_trainer.model.save_pretrained(new_model_name) + + The saved new full model should look like this on your system: + + .. code-block:: shell + + # Access new model directory + cd llama-2-7b-enhanced + + # List all model files + config.json model-00002-of-00006.safetensors model-00005-of-00006.safetensors + generation_config.json model-00003-of-00006.safetensors model-00006-of-00006.safetensors + model-00001-of-00006.safetensors model-00004-of-00006.safetensors model.safetensors.index.json + +.. note:: + + PEFT adapters can’t be loaded by ``AutoModelForCausalLM`` from the Transformers library as they do not contain + full model parameters and model configurations, for example, ``config.json``. To use it as a normal transformer + model, you need to merge them into the base model. + +Basic model inference +===================== + +A trained model can be classified into one of three types: + +* A PEFT adapter + +* A pre-trained language model in Hugging Face + +* A fully fine-tuned model not using PEFT + +Let's look at achieving model inference using these types of models. + +.. tab-set:: + + .. tab-item:: Inference using PEFT adapters + + To use PEFT adapters like a normal transformer model, you can run the generation by loading a base model along with PEFT + adapters as follows. + + .. code-block:: python + + from peft import PeftModel + from transformers import AutoModelForCausalLM + + # Set the path of the model or the name on Hugging face hub + base_model_name = "meta-llama/Llama-2-7b-chat-hf" + + # Set the path of the adapter + adapter_name = "Llama-2-7b-enhanced-adpater" + + # Load base model + base_model = AutoModelForCausalLM.from_pretrained(base_model_name) + + # Adapt the base model with the adapter + new_model = PeftModel.from_pretrained(base_model, adapter_name) + + # Then, run generation as the same with a normal model outlined in 2.1 + + The PEFT library provides a ``merge_and_unload`` method, which merges the adapter layers into the base model. This is + needed if someone wants to save the adapted model into local storage and use it as a normal standalone model. + + .. code-block:: python + + # Load base model + base_model = AutoModelForCausalLM.from_pretrained(base_model_name) + + # Adapt the base model with the adapter + new_model = PeftModel.from_pretrained(base_model, adapter_name) + + # Merge adapter + model = model.merge_and_unload() + + # Save the merged model into local + model.save_pretrained("merged_adpaters") + + .. tab-item:: Inference using pre-trained or fully fine-tuned models + + If you have a fully fine-tuned model not using PEFT, you can load it like any other pre-trained language model in + `Hugging Face Hub `_ using the `Transformers + `_ library. + + .. code-block:: python + + # Import relevant class for loading model and tokenizer + from transformers import AutoTokenizer, AutoModelForCausalLM + + # Set the pre-trained model name on Hugging face hub + model_name = "meta-llama/Llama-2-7b-chat-hf" + + # Set device type + device = "cuda:0" + + # Load model and tokenizer + model = AutoModelForCausalLM.from_pretrained(model_name).to(device) + tokenizer = AutoTokenizer.from_pretrained(model_name) + + # Input prompt encoding + query = "What is a large language model?" + inputs = tokenizer.encode(query, return_tensors="pt").to(device) + + # Token generation + outputs = model.generate(inputs) + + # Outputs decoding + print(tokenizer.decode(outputs[0])) + + In addition, pipelines from Transformers offer simple APIs to use pre-trained models for different tasks, including + sentiment analysis, feature extraction, question answering and so on. You can use the pipeline abstraction to achieve + model inference easily. + + .. code-block:: python + + # Import relevant class for loading model and tokenizer + from transformers import pipeline + + # Set the path of your model or the name on Hugging face hub + model_name_or_path = "meta-llama/Llama-2-7b-chat-hf" + + # Set pipeline + # A positive device value will run the model on associated CUDA device id + pipe = pipeline("text-generation", model=model_name_or_path, device=0) + + # Token generation + print(pipe("What is a large language model?")[0]["generated_text"]) + +If using multiple accelerators, see +:ref:`Multi-accelerator fine-tuning and inference ` to explore +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 `. diff --git a/docs/how-to/rocm-for-ai/train-a-model.rst b/docs/how-to/rocm-for-ai/train-a-model.rst index f9c585445..d7db257ca 100644 --- a/docs/how-to/rocm-for-ai/train-a-model.rst +++ b/docs/how-to/rocm-for-ai/train-a-model.rst @@ -107,7 +107,10 @@ for more information about running AMP on an AMD accelerator. Fine-tuning your model ====================== -ROCm supports multiple fine-tuning techniques, for example, LoRA, QLoRA, PEFT, and FSDP. +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:`../fine-tuning-llms/index`. The following developer blogs showcase examples of how to fine-tune a model on an AMD accelerator or GPU. diff --git a/docs/index.md b/docs/index.md index 3a9c111b9..958ec8a5a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -92,6 +92,7 @@ Our documentation is organized into the following categories: :padding: 2 * [Using ROCm for AI](./how-to/rocm-for-ai/index.rst) +* [Fine-tuning LLMs with ROCm](./how-to/fine-tuning-llms/index.rst) * [System tuning for various architectures](./how-to/tuning-guides.md) * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 827dfb050..e3a86aad1 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -58,6 +58,27 @@ subtrees: - file: how-to/rocm-for-ai/train-a-model.rst - file: how-to/rocm-for-ai/hugging-face-models.rst - file: how-to/rocm-for-ai/deploy-your-model.rst + - file: how-to/fine-tuning-llms/index.rst + title: Fine-tuning LLMs with ROCm + subtrees: + - entries: + - file: how-to/fine-tuning-llms/overview.rst + title: Conceptual overview + - file: how-to/fine-tuning-llms/fine-tuning-and-inference.rst + subtrees: + - entries: + - file: how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst + title: Using a single accelerator + - file: how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst + title: Using multiple accelerators + - file: how-to/fine-tuning-llms/model-quantization.rst + - file: how-to/fine-tuning-llms/model-acceleration-libraries.rst + - file: how-to/fine-tuning-llms/llm-inference-frameworks.rst + - file: how-to/fine-tuning-llms/optimizing-with-composable-kernel.md + title: Optimizing with Composable Kernel + - file: how-to/fine-tuning-llms/optimizing-triton-kernel.rst + title: Optimizing Triton kernels + - file: how-to/fine-tuning-llms/profiling-and-debugging.rst - file: how-to/tuning-guides.md title: System optimization subtrees: From 30f10e01454290d92d13ed6070430cf7bf489356 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Mon, 3 Jun 2024 19:11:19 -0700 Subject: [PATCH 088/175] Update fine-tuning guide: title, improve readibility in code blocks, fix typos (#3222) * Fix typo * Add torchtune link * Add newlines before comments in code blocks for readability * Update title --- docs/how-to/fine-tuning-llms/index.rst | 6 +- .../llm-inference-frameworks.rst | 2 +- .../model-acceleration-libraries.rst | 12 +- .../fine-tuning-llms/model-quantization.rst | 18 +-- .../multi-gpu-fine-tuning-and-inference.rst | 122 +++++++++--------- docs/how-to/fine-tuning-llms/overview.rst | 4 +- .../single-gpu-fine-tuning-and-inference.rst | 49 +++---- docs/index.md | 2 +- docs/sphinx/_toc.yml.in | 2 +- 9 files changed, 111 insertions(+), 106 deletions(-) diff --git a/docs/how-to/fine-tuning-llms/index.rst b/docs/how-to/fine-tuning-llms/index.rst index c197158f2..a966a9b95 100644 --- a/docs/how-to/fine-tuning-llms/index.rst +++ b/docs/how-to/fine-tuning-llms/index.rst @@ -2,9 +2,9 @@ :description: How to fine-tune LLMs with ROCm :keywords: ROCm, LLM, fine-tuning, usage, tutorial -************************** -Fine-tuning LLMs with ROCm -************************** +******************************************* +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, diff --git a/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst b/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst index 9da634d5c..646b99d4e 100644 --- a/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst +++ b/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst @@ -32,7 +32,7 @@ Installing vLLM .. code-block:: shell - # Install from the source + # Install from source git clone https://github.com/ROCm/vllm.git cd vllm PYTORCH_ROCM_ARCH=gfx942 python setup.py install #MI300 series diff --git a/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst b/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst index f1bc7c704..5a57a6b83 100644 --- a/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst +++ b/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst @@ -40,7 +40,7 @@ ROCm provides two different implementations of Flash Attention 2 modules. They c .. code-block:: shell - # Install from the source + # Install from source git clone https://github.com/ROCm/flash-attention.git cd flash-attention/ GPU_ARCHS=gfx942 python setup.py install #MI300 series @@ -156,7 +156,7 @@ of the PyTorch compilation. .. code-block:: python - # Sample script to run LLM with the static key-value cache and pytorch compilation + # Sample script to run LLM with the static key-value cache and PyTorch compilation from transformers import AutoModelForCausalLM, AutoTokenizer, StaticCache import torch from typing import Optional @@ -180,7 +180,8 @@ of the PyTorch compilation. return new_token batch_size, seq_length = inputs["input_ids"].shape - # static key-value cache + + # Static key-value cache max_cache_length = 1024 max_new_tokens = 10 model._setup_cache(StaticCache, batch_size, max_cache_len=max_cache_length) @@ -190,6 +191,7 @@ of the PyTorch compilation. logits = model(**inputs, cache_position=cache_position, return_dict=False, use_cache=True)[0] next_token = torch.argmax(logits[:, -1], dim=-1)[:, None] + # torch compilation decode_one_tokens = torch.compile(decode_one_tokens, mode="max-autotune-no-cudagraphs",fullgraph=True) @@ -221,10 +223,10 @@ page describes the options. .. code-block:: python - # To turn on TunableOps, simply set this environmental variable + # To turn on TunableOp, simply set this environment variable export PYTORCH_TUNABLEOP_ENABLED=1 - # python + # Python import torch import torch.nn as nn import torch.nn.functional as F diff --git a/docs/how-to/fine-tuning-llms/model-quantization.rst b/docs/how-to/fine-tuning-llms/model-quantization.rst index 18d604b3d..c79b4d46a 100644 --- a/docs/how-to/fine-tuning-llms/model-quantization.rst +++ b/docs/how-to/fine-tuning-llms/model-quantization.rst @@ -32,7 +32,7 @@ The AutoGPTQ library implements the GPTQ algorithm. .. code-block:: shell - # This will install pre-built wheel for a specific ROCm version + # This will install pre-built wheel for a specific ROCm version. pip install auto-gptq --no-build-isolation --extra-index-url https://huggingface.github.io/autogptq-index/whl/rocm573/ @@ -40,11 +40,11 @@ The AutoGPTQ library implements the GPTQ algorithm. .. code-block:: shell - # Clone the source code + # Clone the source code. git clone https://github.com/AutoGPTQ/AutoGPTQ.git cd AutoGPTQ - # Speed up the compilation by specifying PYTORCH_ROCM_ARCH to target device + # Speed up the compilation by specifying PYTORCH_ROCM_ARCH to target device. PYTORCH_ROCM_ARCH=gfx942 ROCM_VERSION=6.1 pip install . # Show the package after the installation @@ -93,12 +93,14 @@ Using GPTQ with AutoGPTQ .. code-block:: python - # import auto_gptq class + # Import auto_gptq class. from auto_gptq import AutoGPTQForCausalLM - # load non-quantized model + + # Load non-quantized model. base_model = AutoGPTQForCausalLM.from_pretrained(base_model_name, quantize_config, device_map = "auto") base_model.quantize(examples) - # save quantized model + + # Save quantized model. base_model.save_quantized(quantized_model_name) Using GPTQ with Hugging Face Transformers @@ -201,7 +203,7 @@ Installing bitsandbytes Using bitsandbytes primitives ----------------------------- -To get started with bitsandbytes primitives, use the following code a reference. +To get started with bitsandbytes primitives, use the following code as reference. .. code-block:: python @@ -230,7 +232,7 @@ To load a Transformers model in 4-bit, set ``load_int_4bt=true`` in ``BitsAndByt device_map="auto", quantization_config=quantization_config) - # check the memory footprint with get_memory_footprint method + # Check the memory footprint with get_memory_footprint method print(bnb_model_4bit.get_memory_footprint()) To load a model in 8-bit for inference, use the ``load_in_8bit`` option. diff --git a/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst b/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst index b567c60cb..cb7dc01c1 100644 --- a/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst +++ b/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst @@ -130,8 +130,8 @@ After loading the model in this way, the model is fully ready to use the resourc torchtune for fine-tuning and inference ============================================= -torchtune is a PyTorch-native library for easy single and multi-accelerator or GPU model fine-tuning and inference with -LLMs. +`torchtune `_ is a PyTorch-native library for easy single and multi-accelerator or +GPU model fine-tuning and inference with LLMs. #. Install torchtune using pip. @@ -157,80 +157,80 @@ LLMs. subcommands: {download,ls,cp,run,validate} -torchtune recipes are designed around easily composable components and workable training loops, with minimal abstraction -getting in the way of fine-tuning. Run ``tune ls`` to show built-in torchtune configuration recipes. +#. torchtune recipes are designed around easily composable components and workable training loops, with minimal abstraction + getting in the way of fine-tuning. Run ``tune ls`` to show built-in torchtune configuration recipes. -.. code-block:: shell + .. code-block:: shell - RECIPE CONFIG - full_finetune_single_device llama2/7B_full_low_memory - llama3/8B_full_single_device - mistral/7B_full_low_memory - full_finetune_distributed llama2/7B_full - llama2/13B_full - llama3/8B_full - mistral/7B_full - gemma/2B_full - lora_finetune_single_device llama2/7B_lora_single_device - llama2/7B_qlora_single_device - llama3/8B_lora_single_device - llama3/8B_qlora_single_device - llama2/13B_qlora_single_device - mistral/7B_lora_single_device + RECIPE CONFIG + full_finetune_single_device llama2/7B_full_low_memory + llama3/8B_full_single_device + mistral/7B_full_low_memory + full_finetune_distributed llama2/7B_full + llama2/13B_full + llama3/8B_full + mistral/7B_full + gemma/2B_full + lora_finetune_single_device llama2/7B_lora_single_device + llama2/7B_qlora_single_device + llama3/8B_lora_single_device + llama3/8B_qlora_single_device + llama2/13B_qlora_single_device + mistral/7B_lora_single_device -The ``RECIPE`` column shows the easy-to-use and workable fine-tuning and inference recipes for popular fine-tuning -techniques (such as LoRA). The ``CONFIG`` column lists the YAML configurations for easily configuring training, -evaluation, quantization, or inference recipes. + The ``RECIPE`` column shows the easy-to-use and workable fine-tuning and inference recipes for popular fine-tuning + techniques (such as LoRA). The ``CONFIG`` column lists the YAML configurations for easily configuring training, + evaluation, quantization, or inference recipes. -The snippet shows the architecture of a model's YAML configuration file: + The snippet shows the architecture of a model's YAML configuration file: -.. code-block:: yaml + .. code-block:: yaml - # Model Arguments - model: - _component_: torchtune.models.llama2.lora_llama2_7b - lora_attn_modules: ['q_proj', 'v_proj'] - apply_lora_to_mlp: False - apply_lora_to_output: False - lora_rank: 8 - lora_alpha: 16 - - tokenizer: - _component_: torchtune.models.llama2.llama2_tokenizer - path: /tmp/Llama-2-7b-hf/tokenizer.model - - # Dataset and Sampler - dataset: - _component_: torchtune.datasets.alpaca_cleaned_dataset - train_on_input: True + # Model arguments + model: + _component_: torchtune.models.llama2.lora_llama2_7b + lora_attn_modules: ['q_proj', 'v_proj'] + apply_lora_to_mlp: False + apply_lora_to_output: False + lora_rank: 8 + lora_alpha: 16 + + tokenizer: + _component_: torchtune.models.llama2.llama2_tokenizer + path: /tmp/Llama-2-7b-hf/tokenizer.model + + # Dataset and sampler + dataset: + _component_: torchtune.datasets.alpaca_cleaned_dataset + train_on_input: True -This configuration file defines the fine-tuning base model path, data set, hyper-parameters for optimizer and scheduler, -and training data type. To download the base model for fine-tuning, run the following command: +#. This configuration file defines the fine-tuning base model path, data set, hyper-parameters for optimizer and scheduler, + and training data type. To download the base model for fine-tuning, run the following command: -.. code-block:: shell + .. code-block:: shell - tune download meta-llama/Llama-2-7b-hf --output-dir /tmp/Llama-2-7b-hf --hf-token + tune download meta-llama/Llama-2-7b-hf --output-dir /tmp/Llama-2-7b-hf --hf-token -The output directory argument for ``--output-dir`` should map the model path specified in YAML config file. + The output directory argument for ``--output-dir`` should map the model path specified in YAML config file. -To launch ``lora_finetune_distributed`` on four devices, run the following -command: +#. To launch ``lora_finetune_distributed`` on four devices, run the following + command: -.. code-block:: shell + .. code-block:: shell - tune run --nnodes 1 --nproc_per_node 4 lora_finetune_distributed --config llama2/7B_lora + tune run --nnodes 1 --nproc_per_node 4 lora_finetune_distributed --config llama2/7B_lora -If successful, you should something like the following output: + If successful, you should something like the following output: -.. code-block:: shell + .. code-block:: shell - INFO:torchtune.utils.logging:FSDP is enabled. Instantiating Model on CPU for Rank 0 ... - INFO:torchtune.utils.logging:Model instantiation took 7.32 secs - INFO:torchtune.utils.logging:Memory Stats after model init: - {'peak_memory_active': 9.478172672, 'peak_memory_alloc': 8.953868288, 'peak_memory_reserved': 11.112808448} - INFO:torchtune.utils.logging:Optimizer and loss are initialized. - INFO:torchtune.utils.logging:Dataset and Sampler are initialized. - INFO:torchtune.utils.logging:Learning rate scheduler is initialized. - 1|111|Loss: 1.5790324211120605: 7%|█ | 114/1618 + INFO:torchtune.utils.logging:FSDP is enabled. Instantiating Model on CPU for Rank 0 ... + INFO:torchtune.utils.logging:Model instantiation took 7.32 secs + INFO:torchtune.utils.logging:Memory Stats after model init: + {'peak_memory_active': 9.478172672, 'peak_memory_alloc': 8.953868288, 'peak_memory_reserved': 11.112808448} + INFO:torchtune.utils.logging:Optimizer and loss are initialized. + INFO:torchtune.utils.logging:Dataset and Sampler are initialized. + 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 `. diff --git a/docs/how-to/fine-tuning-llms/overview.rst b/docs/how-to/fine-tuning-llms/overview.rst index 90330cdbd..b4493f071 100644 --- a/docs/how-to/fine-tuning-llms/overview.rst +++ b/docs/how-to/fine-tuning-llms/overview.rst @@ -7,7 +7,7 @@ Conceptual overview of fine-tuning LLMs *************************************** Large language models (LLMs) are trained on massive amounts of text data to generate coherent and fluent text. The -underlying *transformer* architecture is the fundamental building block of all LLMs. Transformers serve as the +underlying *transformer* architecture is the fundamental building block of all LLMs. Transformers enable LLMs to understand and generate text by capturing contextual relationships and long-range dependencies. To better understand the philosophy of the transformer architecture, review the foundational `Attention is all you need `_ paper. @@ -60,7 +60,7 @@ overcome this issue of high memory consumption. LoRA accelerates the adjustment process and reduces related memory costs. To be precise, LoRA decomposes the portion of weight changes :math:`ΔW` into high-precision low-rank representations, which do not require the calculations of all :math:`ΔW`. It learns the decomposition representation of :math:`ΔW` during training, as shown in -:ref:`the weight update diagram `. This is how LoRA saves on +the :ref:`weight update diagram `. This is how LoRA saves on computing resources. LoRA is integrated into the `Hugging Face Parameter-Efficient Fine-Tuning (PEFT) diff --git a/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst b/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst index 48da84446..507bc18e7 100644 --- a/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst +++ b/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst @@ -87,7 +87,8 @@ Setting up the base implementation environment .. code-block:: shell - # Install `bitsandbytes` for ROCm 6.0+, use -DBNB_ROCM_ARCH to target specific GPU arch + # Install `bitsandbytes` for ROCm 6.0+. + # Use -DBNB_ROCM_ARCH to target a specific GPU architecture. git clone --recurse https://github.com/ROCm/bitsandbytes.git cd bitsandbytes git checkout rocm_enabled @@ -95,13 +96,13 @@ Setting up the base implementation environment cmake -DBNB_ROCM_ARCH="gfx942" -DCOMPUTE_BACKEND=hip -S . python setup.py install - # To leverage the SFTTrainer in TRL for model fine-tuning + # To leverage the SFTTrainer in TRL for model fine-tuning. pip install trl - # To leverage PEFT for efficiently adapting pre-trained language models + # To leverage PEFT for efficiently adapting pre-trained language models . pip install peft - # Install the other dependencies: + # Install the other dependencies. pip install transformers, datasets, huggingface-hub, scipy #. Check that the required packages can be imported. @@ -139,14 +140,14 @@ Download the base model and fine-tuning dataset .. code-block:: python - # Base model and tokenizer names + # Base model and tokenizer names. base_model_name = "meta-llama/Llama-2-7b-chat-hf" - # Load base model to GPU memory + # Load base model to GPU memory. device = "cuda:0" base_model = AutoModelForCausalLM.from_pretrained(base_model_name, trust_remote_code = True).to(device) - # Load tokenizer + # Load tokenizer. tokenizer = AutoTokenizer.from_pretrained( base_model_name, trust_remote_code = True) @@ -159,14 +160,14 @@ Download the base model and fine-tuning dataset .. code-block:: - # Dataset for fine-tuning + # Dataset for fine-tuning. training_dataset_name = "mlabonne/guanaco-llama2-1k" training_dataset = load_dataset(training_dataset_name, split = "train") - # Check the data + # Check the data. print(training_dataset) - # #11 is a QA sample in English + # Dataset 11 is a QA sample in English. print(training_dataset[11]) #. With the base model and the dataset, let's start fine-tuning! @@ -180,7 +181,7 @@ To set up ``SFTTrainer`` parameters, you can use the following code as reference .. code-block:: python - # Training Params for SFTTrainer + # Training parameters for SFTTrainer. training_arguments = TrainingArguments( output_dir = "./results", num_train_epochs = 1, @@ -228,7 +229,7 @@ Compare the number of trainable parameters and training time under the two diffe bias = "none", task_type = "CAUSAL_LM" ) - # View the number of Trainable Params + # View the number of trainable parameters. from peft import get_peft_model peft_model = get_peft_model(base_model, peft_config) peft_model.print_trainable_parameters() @@ -244,7 +245,7 @@ Compare the number of trainable parameters and training time under the two diffe .. code-block:: python - # Initialize a sft trainer + # Initialize an SFT trainer. sft_trainer = SFTTrainer( model = base_model, train_dataset = training_dataset, @@ -254,7 +255,7 @@ Compare the number of trainable parameters and training time under the two diffe args = training_arguments ) - # Run the trainer + # Run the trainer. sft_trainer.train() The output should look like this: @@ -302,7 +303,7 @@ Compare the number of trainable parameters and training time under the two diffe .. code-block:: python - # Trainer without LoRA config + # Trainer without LoRA config. trainer_full = SFTTrainer( model = base_model, train_dataset = training_dataset, @@ -311,7 +312,7 @@ Compare the number of trainable parameters and training time under the two diffe args = training_arguments ) - # Training + # Training. trainer_full.train() The output should look like this: @@ -347,20 +348,20 @@ store, and load. .. code-block:: python - # PEFT adapter name + # PEFT adapter name. adapter_name = "llama-2-7b-enhanced-adapter" - # Save PEFT adapter + # Save PEFT adapter. sft_trainer.model.save_pretrained(adapter_name) The saved PEFT adapter should look like this on your system: .. code-block:: shell - # Access adapter directory + # Access adapter directory. cd llama-2-7b-enhanced-adapter - # List all adapter files + # List all adapter files. README.md adapter_config.json adapter_model.safetensors .. tab-item:: Saving a fully fine-tuned model @@ -371,20 +372,20 @@ store, and load. .. code-block:: python - # fully fine-tuned model name + # Fully fine-tuned model name. new_model_name = "llama-2-7b-enhanced" - # Save the fully fine-tuned model + # Save the fully fine-tuned model. full_trainer.model.save_pretrained(new_model_name) The saved new full model should look like this on your system: .. code-block:: shell - # Access new model directory + # Access new model directory. cd llama-2-7b-enhanced - # List all model files + # List all model files. config.json model-00002-of-00006.safetensors model-00005-of-00006.safetensors generation_config.json model-00003-of-00006.safetensors model-00006-of-00006.safetensors model-00001-of-00006.safetensors model-00004-of-00006.safetensors model.safetensors.index.json diff --git a/docs/index.md b/docs/index.md index 958ec8a5a..98c2a12d1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -92,7 +92,7 @@ Our documentation is organized into the following categories: :padding: 2 * [Using ROCm for AI](./how-to/rocm-for-ai/index.rst) -* [Fine-tuning LLMs with ROCm](./how-to/fine-tuning-llms/index.rst) +* [Fine-tuning LLMs and inference optimization](./how-to/fine-tuning-llms/index.rst) * [System tuning for various architectures](./how-to/tuning-guides.md) * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index e3a86aad1..e31bb8156 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -59,7 +59,7 @@ subtrees: - file: how-to/rocm-for-ai/hugging-face-models.rst - file: how-to/rocm-for-ai/deploy-your-model.rst - file: how-to/fine-tuning-llms/index.rst - title: Fine-tuning LLMs with ROCm + title: Fine-tuning LLMs and inference optimization subtrees: - entries: - file: how-to/fine-tuning-llms/overview.rst From 7c448eec8f8f613c2433b0647bcc1017c45785ee Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 4 Jun 2024 09:38:05 -0400 Subject: [PATCH 089/175] add MI250 target to CK --- .azuredevops/components/composable_kernel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index adef93e84..5b0ce17ac 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -57,6 +57,6 @@ jobs: -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release - -DGPU_TARGETS=gfx1030;gfx1100 + -DGPU_TARGETS=gfx1030;gfx1100;gfx90a -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 156215efccc676c22ecd03ab770b03a3bbb74d35 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 4 Jun 2024 09:38:50 -0400 Subject: [PATCH 090/175] Upgrade pool to HIGH --- .azuredevops/components/composable_kernel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index 5b0ce17ac..083534e99 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -27,7 +27,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.MEDIUM_BUILD_POOL }} + pool: ${{ variables.HIGH_BUILD_POOL }} workspace: clean: all steps: From 258e504595aa0a2ef5d85c10d55432d5cfb0f142 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 4 Jun 2024 09:52:36 -0400 Subject: [PATCH 091/175] change pool to medium --- .azuredevops/components/composable_kernel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index 083534e99..5b0ce17ac 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -27,7 +27,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.HIGH_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} workspace: clean: all steps: From 7290ce9030db46209e941b1c7ebb53d7f9ca5ebb Mon Sep 17 00:00:00 2001 From: amitkumar-amd Date: Tue, 4 Jun 2024 09:59:22 -0500 Subject: [PATCH 092/175] Update the links for rocminfo and rocm-bandwidth-test (#3213) * Update the links for rocminfo and rocm-bandwidth-test * Update the links for rocminfo and rocm-bandwidth-test * Update the links for rocminfo and rocm-bandwidth-test * Update links to intersphinx links --------- Co-authored-by: Peter Jun Park --- docs/reference/rocm-tools.md | 4 ++-- docs/what-is-rocm.rst | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/reference/rocm-tools.md b/docs/reference/rocm-tools.md index 1a53a3273..2e76b9ce6 100644 --- a/docs/reference/rocm-tools.md +++ b/docs/reference/rocm-tools.md @@ -34,7 +34,7 @@ :img-alt: Performance tools :padding: 2 -* [RocBandwidthTest](https://github.com/ROCm/rocm_bandwidth_test) +* {doc}`ROCm Bandwidth Test ` * {doc}`ROCProfiler ` * [rocprofiler-register](https://github.com/ROCm/rocprofiler-register) * {doc}`ROCTracer ` @@ -49,8 +49,8 @@ :padding: 2 * {doc}`AMD SMI ` +* {doc}`rocminfo ` * {doc}`ROCm Data Center Tool ` -* [ROCm Info](https://github.com/ROCm/rocminfo) * {doc}`ROCm SMI ` * {doc}`ROCm Validation Suite ` * {doc}`TransferBench ` diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index 14782ce1e..3ae83818d 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -99,14 +99,14 @@ Tools ":doc:`AMD SMI `", "C library for Linux that provides a user space interface for applications to monitor and control AMD devices" ":doc:`HIPIFY `", "Translates CUDA source code into portable HIP C++" - "`RocBandwidthTest `_ ", "Captures the performance characteristics of buffer copying and kernel read/write operations" + ":doc:`ROCm Bandwidth Test `", "Captures the performance characteristics of buffer copying and kernel read/write operations" ":doc:`ROCmCC <./reference/rocmcc>`", "Clang/LLVM-based compiler" ":doc:`ROCm CMake `", "Collection of CMake modules for common build and development tasks" ":doc:`ROCm Data Center Tool `", "Simplifies administration and addresses key infrastructure challenges in AMD GPUs in cluster and data-center environments" "`ROCm Debug Agent (ROCdebug-agent) `_ ", "Prints the state of all AMD GPU wavefronts that caused a queue error by sending a SIGQUIT signal to the process while the program is running" ":doc:`ROCm Debugger (ROCgdb) `", "Source-level debugger for Linux, based on the GNU Debugger (GDB)" ":doc:`ROCdbgapi `", "ROCm debugger API library" - "`rocminfo `_ ", "Reports system information" + ":doc:`rocminfo `", "Reports system information" ":doc:`ROCm SMI `", "C library for Linux that provides a user space interface for applications to monitor and control GPU applications" ":doc:`ROCm Validation Suite `", "Detects and troubleshoots common problems affecting AMD GPUs running in a high-performance computing environment" ":doc:`ROCProfiler `", "Profiling tool for HIP applications" From df864f8f799ff94fe7670efff58518b42c60b6bb Mon Sep 17 00:00:00 2001 From: amitkumar-amd Date: Tue, 4 Jun 2024 09:59:22 -0500 Subject: [PATCH 093/175] Update the links for rocminfo and rocm-bandwidth-test (#3213) * Update the links for rocminfo and rocm-bandwidth-test * Update the links for rocminfo and rocm-bandwidth-test * Update the links for rocminfo and rocm-bandwidth-test * Update links to intersphinx links --------- Co-authored-by: Peter Jun Park --- docs/reference/rocm-tools.md | 4 ++-- docs/what-is-rocm.rst | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/reference/rocm-tools.md b/docs/reference/rocm-tools.md index 1a53a3273..2e76b9ce6 100644 --- a/docs/reference/rocm-tools.md +++ b/docs/reference/rocm-tools.md @@ -34,7 +34,7 @@ :img-alt: Performance tools :padding: 2 -* [RocBandwidthTest](https://github.com/ROCm/rocm_bandwidth_test) +* {doc}`ROCm Bandwidth Test ` * {doc}`ROCProfiler ` * [rocprofiler-register](https://github.com/ROCm/rocprofiler-register) * {doc}`ROCTracer ` @@ -49,8 +49,8 @@ :padding: 2 * {doc}`AMD SMI ` +* {doc}`rocminfo ` * {doc}`ROCm Data Center Tool ` -* [ROCm Info](https://github.com/ROCm/rocminfo) * {doc}`ROCm SMI ` * {doc}`ROCm Validation Suite ` * {doc}`TransferBench ` diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index 14782ce1e..3ae83818d 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -99,14 +99,14 @@ Tools ":doc:`AMD SMI `", "C library for Linux that provides a user space interface for applications to monitor and control AMD devices" ":doc:`HIPIFY `", "Translates CUDA source code into portable HIP C++" - "`RocBandwidthTest `_ ", "Captures the performance characteristics of buffer copying and kernel read/write operations" + ":doc:`ROCm Bandwidth Test `", "Captures the performance characteristics of buffer copying and kernel read/write operations" ":doc:`ROCmCC <./reference/rocmcc>`", "Clang/LLVM-based compiler" ":doc:`ROCm CMake `", "Collection of CMake modules for common build and development tasks" ":doc:`ROCm Data Center Tool `", "Simplifies administration and addresses key infrastructure challenges in AMD GPUs in cluster and data-center environments" "`ROCm Debug Agent (ROCdebug-agent) `_ ", "Prints the state of all AMD GPU wavefronts that caused a queue error by sending a SIGQUIT signal to the process while the program is running" ":doc:`ROCm Debugger (ROCgdb) `", "Source-level debugger for Linux, based on the GNU Debugger (GDB)" ":doc:`ROCdbgapi `", "ROCm debugger API library" - "`rocminfo `_ ", "Reports system information" + ":doc:`rocminfo `", "Reports system information" ":doc:`ROCm SMI `", "C library for Linux that provides a user space interface for applications to monitor and control GPU applications" ":doc:`ROCm Validation Suite `", "Detects and troubleshoots common problems affecting AMD GPUs running in a high-performance computing environment" ":doc:`ROCProfiler `", "Profiling tool for HIP applications" From 4b67c8725bf081e26d20cca0a4c484935ae170d4 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 4 Jun 2024 11:57:18 -0400 Subject: [PATCH 094/175] change compiler to clang++ and build for instance only --- .azuredevops/components/composable_kernel.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index 5b0ce17ac..58bd7de67 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -53,10 +53,10 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release -DGPU_TARGETS=gfx1030;gfx1100;gfx90a + -DINSTANCES_ONLY=ON -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 57506ba947028b25adb0375ba688557a3927fc38 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 4 Jun 2024 11:59:16 -0400 Subject: [PATCH 095/175] upgrade pool to HIGH for CK --- .azuredevops/components/composable_kernel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index 58bd7de67..b6e02269b 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -27,7 +27,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.MEDIUM_BUILD_POOL }} + pool: ${{ variables.HIGH_BUILD_POOL }} workspace: clean: all steps: From a96ec80cb0b5fa44829a9af8229f6427b8eb88a2 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 4 Jun 2024 13:05:41 -0400 Subject: [PATCH 096/175] Increase timeout limites to a day for CK --- .azuredevops/components/composable_kernel.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index b6e02269b..9c7e1d591 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -24,6 +24,7 @@ parameters: jobs: - job: composable_kernel + timeoutInMinutes: 1440 variables: - group: common - template: /.azuredevops/variables-global.yml From b2f0f0acdf56c3c9f7a1b34460f97d3e225a6b58 Mon Sep 17 00:00:00 2001 From: "Wang, Yanyao" Date: Tue, 4 Jun 2024 15:39:16 -0500 Subject: [PATCH 097/175] Update manifest file for ROCm6.1.2 --- default.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/default.xml b/default.xml index 1f81628cd..ffa3b30fc 100644 --- a/default.xml +++ b/default.xml @@ -1,13 +1,11 @@ - - - From 8826b10b92a877b698aaf5a5876183a60a7be0fd Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 4 Jun 2024 17:40:48 -0400 Subject: [PATCH 098/175] Updates cmake flag to run CK with instance_only on all gpu targets --- .azuredevops/components/composable_kernel.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index 9c7e1d591..09f9f2dc5 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -28,7 +28,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.HIGH_BUILD_POOL }} + pool: ${{ variables.ULTRA_BUILD_POOL }} workspace: clean: all steps: @@ -57,7 +57,6 @@ jobs: -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release - -DGPU_TARGETS=gfx1030;gfx1100;gfx90a -DINSTANCES_ONLY=ON -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From bf08674992514693c469558df6f7760d2757888c Mon Sep 17 00:00:00 2001 From: abhimeda <138710508+abhimeda@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:50:36 -0400 Subject: [PATCH 099/175] Built rccl using latest source code (#3230) --- .azuredevops/components/rccl.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/components/rccl.yml b/.azuredevops/components/rccl.yml index f1ef3e669..230a2ff18 100644 --- a/.azuredevops/components/rccl.yml +++ b/.azuredevops/components/rccl.yml @@ -61,6 +61,7 @@ jobs: parameters: dependencyList: ${{ parameters.rocmDependencies }} dependencySource: tag-builds + - script: chmod +x $(Agent.BuildDirectory)/rocm/bin/hipify-perl - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- From 266f502010e67216db43fbd1e4157cd8de6880a3 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Tue, 4 Jun 2024 16:46:17 -0600 Subject: [PATCH 100/175] Update manifest to 6.1.2 --- default.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/default.xml b/default.xml index 1f81628cd..ffa3b30fc 100644 --- a/default.xml +++ b/default.xml @@ -1,13 +1,11 @@ - - - From 6494885359266cc0c9daf7ffa4f42cc6eb46b827 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Wed, 5 Jun 2024 08:11:00 -0700 Subject: [PATCH 101/175] Rename fine-tuning and optimization guide directory and fix index.md (#3242) * Mv fine-tuning and optimization files * Reorder index.md * Rename images directory * Fix internal links --- .../attention-module.png | Bin .../ck-comparisons.jpg | Bin .../ck-compilation.jpg | Bin .../ck-inference_flow.jpg | Bin .../ck-kernel_launch.jpg | Bin .../ck-operation_flow.jpg | Bin .../ck-root_instance.jpg | Bin .../ck-template_parameters.jpg | Bin .../compute-unit.png | Bin .../occupancy-vgpr.png | Bin .../omniperf-analysis.png | Bin .../omnitrace-timeline.png | Bin .../perfetto-trace.svg | 0 .../profiling-perfetto-ui.png | Bin .../tunableop.png | Bin .../vllm-single-gpu-log.png | Bin .../weight-update.png | Bin docs/how-to/deep-learning-rocm.rst | 2 +- .../fine-tuning-and-inference.rst | 0 .../index.rst | 0 .../llm-inference-frameworks.rst | 2 +- .../model-acceleration-libraries.rst | 4 ++-- .../model-quantization.rst | 0 .../multi-gpu-fine-tuning-and-inference.rst | 0 .../optimizing-triton-kernel.rst | 4 ++-- .../optimizing-with-composable-kernel.md | 14 +++++------ .../overview.rst | 2 +- .../profiling-and-debugging.rst | 6 ++--- .../single-gpu-fine-tuning-and-inference.rst | 0 docs/how-to/rocm-for-ai/train-a-model.rst | 2 +- docs/index.md | 6 ++--- docs/sphinx/_toc.yml.in | 22 +++++++++--------- 32 files changed, 32 insertions(+), 32 deletions(-) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/attention-module.png (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/ck-comparisons.jpg (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/ck-compilation.jpg (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/ck-inference_flow.jpg (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/ck-kernel_launch.jpg (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/ck-operation_flow.jpg (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/ck-root_instance.jpg (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/ck-template_parameters.jpg (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/compute-unit.png (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/occupancy-vgpr.png (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/omniperf-analysis.png (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/omnitrace-timeline.png (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/perfetto-trace.svg (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/profiling-perfetto-ui.png (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/tunableop.png (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/vllm-single-gpu-log.png (100%) rename docs/data/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/weight-update.png (100%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/fine-tuning-and-inference.rst (100%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/index.rst (100%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/llm-inference-frameworks.rst (98%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/model-acceleration-libraries.rst (98%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/model-quantization.rst (100%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/multi-gpu-fine-tuning-and-inference.rst (100%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/optimizing-triton-kernel.rst (99%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/optimizing-with-composable-kernel.md (97%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/overview.rst (98%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/profiling-and-debugging.rst (97%) rename docs/how-to/{fine-tuning-llms => llm-fine-tuning-optimization}/single-gpu-fine-tuning-and-inference.rst (100%) diff --git a/docs/data/how-to/fine-tuning-llms/attention-module.png b/docs/data/how-to/llm-fine-tuning-optimization/attention-module.png similarity index 100% rename from docs/data/how-to/fine-tuning-llms/attention-module.png rename to docs/data/how-to/llm-fine-tuning-optimization/attention-module.png diff --git a/docs/data/how-to/fine-tuning-llms/ck-comparisons.jpg b/docs/data/how-to/llm-fine-tuning-optimization/ck-comparisons.jpg similarity index 100% rename from docs/data/how-to/fine-tuning-llms/ck-comparisons.jpg rename to docs/data/how-to/llm-fine-tuning-optimization/ck-comparisons.jpg diff --git a/docs/data/how-to/fine-tuning-llms/ck-compilation.jpg b/docs/data/how-to/llm-fine-tuning-optimization/ck-compilation.jpg similarity index 100% rename from docs/data/how-to/fine-tuning-llms/ck-compilation.jpg rename to docs/data/how-to/llm-fine-tuning-optimization/ck-compilation.jpg diff --git a/docs/data/how-to/fine-tuning-llms/ck-inference_flow.jpg b/docs/data/how-to/llm-fine-tuning-optimization/ck-inference_flow.jpg similarity index 100% rename from docs/data/how-to/fine-tuning-llms/ck-inference_flow.jpg rename to docs/data/how-to/llm-fine-tuning-optimization/ck-inference_flow.jpg diff --git a/docs/data/how-to/fine-tuning-llms/ck-kernel_launch.jpg b/docs/data/how-to/llm-fine-tuning-optimization/ck-kernel_launch.jpg similarity index 100% rename from docs/data/how-to/fine-tuning-llms/ck-kernel_launch.jpg rename to docs/data/how-to/llm-fine-tuning-optimization/ck-kernel_launch.jpg diff --git a/docs/data/how-to/fine-tuning-llms/ck-operation_flow.jpg b/docs/data/how-to/llm-fine-tuning-optimization/ck-operation_flow.jpg similarity index 100% rename from docs/data/how-to/fine-tuning-llms/ck-operation_flow.jpg rename to docs/data/how-to/llm-fine-tuning-optimization/ck-operation_flow.jpg diff --git a/docs/data/how-to/fine-tuning-llms/ck-root_instance.jpg b/docs/data/how-to/llm-fine-tuning-optimization/ck-root_instance.jpg similarity index 100% rename from docs/data/how-to/fine-tuning-llms/ck-root_instance.jpg rename to docs/data/how-to/llm-fine-tuning-optimization/ck-root_instance.jpg diff --git a/docs/data/how-to/fine-tuning-llms/ck-template_parameters.jpg b/docs/data/how-to/llm-fine-tuning-optimization/ck-template_parameters.jpg similarity index 100% rename from docs/data/how-to/fine-tuning-llms/ck-template_parameters.jpg rename to docs/data/how-to/llm-fine-tuning-optimization/ck-template_parameters.jpg diff --git a/docs/data/how-to/fine-tuning-llms/compute-unit.png b/docs/data/how-to/llm-fine-tuning-optimization/compute-unit.png similarity index 100% rename from docs/data/how-to/fine-tuning-llms/compute-unit.png rename to docs/data/how-to/llm-fine-tuning-optimization/compute-unit.png diff --git a/docs/data/how-to/fine-tuning-llms/occupancy-vgpr.png b/docs/data/how-to/llm-fine-tuning-optimization/occupancy-vgpr.png similarity index 100% rename from docs/data/how-to/fine-tuning-llms/occupancy-vgpr.png rename to docs/data/how-to/llm-fine-tuning-optimization/occupancy-vgpr.png diff --git a/docs/data/how-to/fine-tuning-llms/omniperf-analysis.png b/docs/data/how-to/llm-fine-tuning-optimization/omniperf-analysis.png similarity index 100% rename from docs/data/how-to/fine-tuning-llms/omniperf-analysis.png rename to docs/data/how-to/llm-fine-tuning-optimization/omniperf-analysis.png diff --git a/docs/data/how-to/fine-tuning-llms/omnitrace-timeline.png b/docs/data/how-to/llm-fine-tuning-optimization/omnitrace-timeline.png similarity index 100% rename from docs/data/how-to/fine-tuning-llms/omnitrace-timeline.png rename to docs/data/how-to/llm-fine-tuning-optimization/omnitrace-timeline.png diff --git a/docs/data/how-to/fine-tuning-llms/perfetto-trace.svg b/docs/data/how-to/llm-fine-tuning-optimization/perfetto-trace.svg similarity index 100% rename from docs/data/how-to/fine-tuning-llms/perfetto-trace.svg rename to docs/data/how-to/llm-fine-tuning-optimization/perfetto-trace.svg diff --git a/docs/data/how-to/fine-tuning-llms/profiling-perfetto-ui.png b/docs/data/how-to/llm-fine-tuning-optimization/profiling-perfetto-ui.png similarity index 100% rename from docs/data/how-to/fine-tuning-llms/profiling-perfetto-ui.png rename to docs/data/how-to/llm-fine-tuning-optimization/profiling-perfetto-ui.png diff --git a/docs/data/how-to/fine-tuning-llms/tunableop.png b/docs/data/how-to/llm-fine-tuning-optimization/tunableop.png similarity index 100% rename from docs/data/how-to/fine-tuning-llms/tunableop.png rename to docs/data/how-to/llm-fine-tuning-optimization/tunableop.png diff --git a/docs/data/how-to/fine-tuning-llms/vllm-single-gpu-log.png b/docs/data/how-to/llm-fine-tuning-optimization/vllm-single-gpu-log.png similarity index 100% rename from docs/data/how-to/fine-tuning-llms/vllm-single-gpu-log.png rename to docs/data/how-to/llm-fine-tuning-optimization/vllm-single-gpu-log.png diff --git a/docs/data/how-to/fine-tuning-llms/weight-update.png b/docs/data/how-to/llm-fine-tuning-optimization/weight-update.png similarity index 100% rename from docs/data/how-to/fine-tuning-llms/weight-update.png rename to docs/data/how-to/llm-fine-tuning-optimization/weight-update.png diff --git a/docs/how-to/deep-learning-rocm.rst b/docs/how-to/deep-learning-rocm.rst index d638e1cb3..cdd95210b 100644 --- a/docs/how-to/deep-learning-rocm.rst +++ b/docs/how-to/deep-learning-rocm.rst @@ -65,4 +65,4 @@ through the following guides. * :doc:`rocm-for-ai/index` -* :doc:`fine-tuning-llms/index` +* :doc:`llm-fine-tuning-optimization/index` diff --git a/docs/how-to/fine-tuning-llms/fine-tuning-and-inference.rst b/docs/how-to/llm-fine-tuning-optimization/fine-tuning-and-inference.rst similarity index 100% rename from docs/how-to/fine-tuning-llms/fine-tuning-and-inference.rst rename to docs/how-to/llm-fine-tuning-optimization/fine-tuning-and-inference.rst diff --git a/docs/how-to/fine-tuning-llms/index.rst b/docs/how-to/llm-fine-tuning-optimization/index.rst similarity index 100% rename from docs/how-to/fine-tuning-llms/index.rst rename to docs/how-to/llm-fine-tuning-optimization/index.rst diff --git a/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst b/docs/how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst similarity index 98% rename from docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst rename to docs/how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst index 646b99d4e..c7bb5eada 100644 --- a/docs/how-to/fine-tuning-llms/llm-inference-frameworks.rst +++ b/docs/how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst @@ -77,7 +77,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/fine-tuning-llms/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 diff --git a/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst b/docs/how-to/llm-fine-tuning-optimization/model-acceleration-libraries.rst similarity index 98% rename from docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst rename to docs/how-to/llm-fine-tuning-optimization/model-acceleration-libraries.rst index 5a57a6b83..2e473805d 100644 --- a/docs/how-to/fine-tuning-llms/model-acceleration-libraries.rst +++ b/docs/how-to/llm-fine-tuning-optimization/model-acceleration-libraries.rst @@ -18,7 +18,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/fine-tuning-llms/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 @@ -243,7 +243,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/fine-tuning-llms/tunableop.png +.. image:: ../../data/how-to/llm-fine-tuning-optimization/tunableop.png :alt: GEMM and TunableOp :align: center diff --git a/docs/how-to/fine-tuning-llms/model-quantization.rst b/docs/how-to/llm-fine-tuning-optimization/model-quantization.rst similarity index 100% rename from docs/how-to/fine-tuning-llms/model-quantization.rst rename to docs/how-to/llm-fine-tuning-optimization/model-quantization.rst diff --git a/docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst b/docs/how-to/llm-fine-tuning-optimization/multi-gpu-fine-tuning-and-inference.rst similarity index 100% rename from docs/how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst rename to docs/how-to/llm-fine-tuning-optimization/multi-gpu-fine-tuning-and-inference.rst diff --git a/docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst b/docs/how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst similarity index 99% rename from docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst rename to docs/how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst index cac5493dc..28e36fa62 100644 --- a/docs/how-to/fine-tuning-llms/optimizing-triton-kernel.rst +++ b/docs/how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst @@ -31,7 +31,7 @@ Each accelerator or GPU has multiple Compute Units (CUs) and various CUs do comp can a compute kernel can allocate its task to? For the :doc:`AMD MI300X accelerator <../../reference/gpu-arch-specs>`, the grid should have at least 1024 thread blocks or workgroups. -.. figure:: ../../data/how-to/fine-tuning-llms/compute-unit.png +.. figure:: ../../data/how-to/llm-fine-tuning-optimization/compute-unit.png Schematic representation of a CU in the CDNA2 or CDNA3 architecture. @@ -187,7 +187,7 @@ Kernel occupancy .. _fine-tuning-llms-occupancy-vgpr-table: -.. figure:: ../../data/how-to/fine-tuning-llms/occupancy-vgpr.png +.. figure:: ../../data/how-to/llm-fine-tuning-optimization/occupancy-vgpr.png :alt: Occupancy related to VGPR usage in an Instinct MI300X accelerator. :align: center diff --git a/docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md b/docs/how-to/llm-fine-tuning-optimization/optimizing-with-composable-kernel.md similarity index 97% rename from docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md rename to docs/how-to/llm-fine-tuning-optimization/optimizing-with-composable-kernel.md index 6196f9d76..ef7066e6c 100644 --- a/docs/how-to/fine-tuning-llms/optimizing-with-composable-kernel.md +++ b/docs/how-to/llm-fine-tuning-optimization/optimizing-with-composable-kernel.md @@ -32,7 +32,7 @@ The template parameters of the instance are grouped into four parameter types: ================ ### Figure 2 ================ --> -```{figure} ../../data/how-to/fine-tuning-llms/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 +126,7 @@ The row and column, and stride information of input matrices are also passed to ================ ### Figure 3 ================ --> -```{figure} ../../data/how-to/fine-tuning-llms/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 +155,7 @@ The first operation in the process is to perform the multiplication of input mat ================ ### Figure 4 ================ --> -```{figure} ../../data/how-to/fine-tuning-llms/ck-operation_flow.jpg +```{figure} ../../data/how-to/llm-fine-tuning-optimization/ck-operation_flow.jpg Operation flow. ``` @@ -171,7 +171,7 @@ Here, we use [DeviceBatchedGemmMultiD_Xdl](https://github.com/ROCm/composable_ke ================ ### Figure 5 ================ --> -```{figure} ../../data/how-to/fine-tuning-llms/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 +421,7 @@ Run `python setup.py install` to build and install the extension. It should look ================ ### Figure 6 ================ --> -```{figure} ../../data/how-to/fine-tuning-llms/ck-compilation.jpg +```{figure} ../../data/how-to/llm-fine-tuning-optimization/ck-compilation.jpg Compilation and installation of the INT8 kernels. ``` @@ -433,7 +433,7 @@ The implementation architecture of running SmoothQuant models on MI300X GPUs is ================ ### Figure 7 ================ --> -```{figure} ../../data/how-to/fine-tuning-llms/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 +459,7 @@ Figure 8 shows the performance comparisons between the original FP16 and the Smo ================ ### Figure 8 ================ --> -```{figure} ../../data/how-to/fine-tuning-llms/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/fine-tuning-llms/overview.rst b/docs/how-to/llm-fine-tuning-optimization/overview.rst similarity index 98% rename from docs/how-to/fine-tuning-llms/overview.rst rename to docs/how-to/llm-fine-tuning-optimization/overview.rst index b4493f071..061470a99 100644 --- a/docs/how-to/fine-tuning-llms/overview.rst +++ b/docs/how-to/llm-fine-tuning-optimization/overview.rst @@ -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/fine-tuning-llms/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/fine-tuning-llms/profiling-and-debugging.rst b/docs/how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst similarity index 97% rename from docs/how-to/fine-tuning-llms/profiling-and-debugging.rst rename to docs/how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst index 4371fca4a..034b5021c 100644 --- a/docs/how-to/fine-tuning-llms/profiling-and-debugging.rst +++ b/docs/how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst @@ -38,7 +38,7 @@ You can then visualize and view these metrics using an open-source profile visua shows transactions denoting the CPU activities that launch GPU kernels while the lower section shows the actual GPU activities where it processes the ``resnet18`` inferences layer by layer. - .. figure:: ../../data/how-to/fine-tuning-llms/perfetto-trace.svg + .. figure:: ../../data/how-to/llm-fine-tuning-optimization/perfetto-trace.svg Perfetto trace visualization example. @@ -100,7 +100,7 @@ analyze bottlenecks and stressors for their computational workloads on AMD Insti Omniperf collects hardware counters in multiple passes, and will therefore re-run the application during each pass to collect different sets of metrics. -.. figure:: ../../data/how-to/fine-tuning-llms/omniperf-analysis.png +.. figure:: ../../data/how-to/llm-fine-tuning-optimization/omniperf-analysis.png Omniperf memory chat analysis panel. @@ -130,7 +130,7 @@ hardware counters are also included. have the greatest impact on the end-to-end execution of the application and to discover what else is happening on the system during a performance bottleneck. -.. figure:: ../../data/how-to/fine-tuning-llms/omnitrace-timeline.png +.. figure:: ../../data/how-to/llm-fine-tuning-optimization/omnitrace-timeline.png Omnitrace timeline trace example. diff --git a/docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst b/docs/how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst similarity index 100% rename from docs/how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst rename to docs/how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst diff --git a/docs/how-to/rocm-for-ai/train-a-model.rst b/docs/how-to/rocm-for-ai/train-a-model.rst index d7db257ca..ac10ebf12 100644 --- a/docs/how-to/rocm-for-ai/train-a-model.rst +++ b/docs/how-to/rocm-for-ai/train-a-model.rst @@ -110,7 +110,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:`../fine-tuning-llms/index`. +Learn more about challenges and solutions for model fine-tuning in :doc:`../llm-fine-tuning-optimization/index`. The following developer blogs showcase examples of how to fine-tune a model on an AMD accelerator or GPU. diff --git a/docs/index.md b/docs/index.md index 98c2a12d1..90c4d6600 100644 --- a/docs/index.md +++ b/docs/index.md @@ -34,16 +34,16 @@ Our documentation is organized into the following categories: * {doc}`Quick start guide` * {doc}`Linux install guide` * {doc}`Package manager integration` + * {doc}`Install Docker containers` + * {doc}`ROCm & Spack` * Windows * {doc}`Windows install guide` * {doc}`Application deployment guidelines` * [Deep learning frameworks](./how-to/deep-learning-rocm.rst) - * {doc}`Install Docker containers` * {doc}`PyTorch for ROCm` * {doc}`TensorFlow for ROCm` * {doc}`JAX for ROCm` * {doc}`MAGMA for ROCm` - * {doc}`ROCm & Spack` ::: :::{grid-item-card} @@ -92,7 +92,7 @@ Our documentation is organized into the following categories: :padding: 2 * [Using ROCm for AI](./how-to/rocm-for-ai/index.rst) -* [Fine-tuning LLMs and inference optimization](./how-to/fine-tuning-llms/index.rst) +* [Fine-tuning LLMs and inference optimization](./how-to/llm-fine-tuning-optimization/index.rst) * [System tuning for various architectures](./how-to/tuning-guides.md) * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 085035e24..eea43ac4a 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -58,27 +58,27 @@ subtrees: - file: how-to/rocm-for-ai/train-a-model.rst - file: how-to/rocm-for-ai/hugging-face-models.rst - file: how-to/rocm-for-ai/deploy-your-model.rst - - file: how-to/fine-tuning-llms/index.rst + - file: how-to/llm-fine-tuning-optimization/index.rst title: Fine-tuning LLMs and inference optimization subtrees: - entries: - - file: how-to/fine-tuning-llms/overview.rst + - file: how-to/llm-fine-tuning-optimization/overview.rst title: Conceptual overview - - file: how-to/fine-tuning-llms/fine-tuning-and-inference.rst + - file: how-to/llm-fine-tuning-optimization/fine-tuning-and-inference.rst subtrees: - entries: - - file: how-to/fine-tuning-llms/single-gpu-fine-tuning-and-inference.rst + - file: how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst title: Using a single accelerator - - file: how-to/fine-tuning-llms/multi-gpu-fine-tuning-and-inference.rst + - file: how-to/llm-fine-tuning-optimization/multi-gpu-fine-tuning-and-inference.rst title: Using multiple accelerators - - file: how-to/fine-tuning-llms/model-quantization.rst - - file: how-to/fine-tuning-llms/model-acceleration-libraries.rst - - file: how-to/fine-tuning-llms/llm-inference-frameworks.rst - - file: how-to/fine-tuning-llms/optimizing-with-composable-kernel.md + - 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: Optimizing with Composable Kernel - - file: how-to/fine-tuning-llms/optimizing-triton-kernel.rst + - file: how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst title: Optimizing Triton kernels - - file: how-to/fine-tuning-llms/profiling-and-debugging.rst + - file: how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst - file: how-to/tuning-guides.md title: System optimization subtrees: From e65e9307f565b11fb271817f4f86a13a3ecf7d7d Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Wed, 5 Jun 2024 09:25:35 -0600 Subject: [PATCH 102/175] Add 6.1.2 to version list (#3238) --- docs/release/versions.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release/versions.md b/docs/release/versions.md index bb8eb79bf..468f41a4b 100644 --- a/docs/release/versions.md +++ b/docs/release/versions.md @@ -8,6 +8,7 @@ | Version | Release date | | ------- | ------------ | +| [6.1.2](https://rocm.docs.amd.com/en/docs-6.1.2/) | June 4, 2024 | | [6.1.1](https://rocm.docs.amd.com/en/docs-6.1.1/) | May 8, 2024 | | [6.1.0](https://rocm.docs.amd.com/en/docs-6.1.0/) | Apr 16, 2024 | | [6.0.2](https://rocm.docs.amd.com/en/docs-6.0.2/) | Jan 31, 2024 | From 55bb127e9a16bb7aceeeb3b1f168540d0b6ddcf5 Mon Sep 17 00:00:00 2001 From: Young Hui - AMD <145490163+yhuiYH@users.noreply.github.com> Date: Wed, 5 Jun 2024 11:55:11 -0400 Subject: [PATCH 103/175] fix links for MIVisionX (#3240) --- docs/reference/api-libraries.md | 2 +- docs/what-is-rocm.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/api-libraries.md b/docs/reference/api-libraries.md index b59131741..b3eb9c702 100644 --- a/docs/reference/api-libraries.md +++ b/docs/reference/api-libraries.md @@ -22,7 +22,7 @@ * {doc}`Composable Kernel ` * {doc}`MIGraphX ` * {doc}`MIOpen ` -* {doc}`MIVisionX ` +* {doc}`MIVisionX ` * {doc}`rocAL ` * {doc}`rocDecode ` * {doc}`ROCm Performance Primitives (RPP) ` diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index 3ae83818d..a01cc9b38 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -43,7 +43,7 @@ Machine Learning & Computer Vision ":doc:`Composable Kernel `", "Provides a programming model for writing performance critical kernels for machine learning workloads across multiple architectures" ":doc:`MIGraphX `", "Graph inference engine that accelerates machine learning model inference" ":doc:`MIOpen `", "An open source deep-learning library" - ":doc:`MIVisionX `", "Set of comprehensive computer vision and machine learning libraries, utilities, and applications" + ":doc:`MIVisionX `", "Set of comprehensive computer vision and machine learning libraries, utilities, and applications" ":doc:`rocAL `", "An augmentation library designed to decode and process images and videos" ":doc:`rocDecode `", "High-performance SDK for access to video decoding features on AMD GPUs" ":doc:`ROCm Performance Primitives (RPP) `", "Comprehensive high-performance computer vision library for AMD processors with HIP/OpenCL/CPU back-ends" From 6eb6a5bd90dfb3fc12450d459bcca4df38eb8798 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Wed, 5 Jun 2024 14:14:24 -0400 Subject: [PATCH 104/175] change compiler from hipcc to amdclang++ --- .azuredevops/components/hipTensor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 93c02eadb..3007c08cb 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -55,8 +55,8 @@ jobs: parameters: extraBuildFlags: >- -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/llvm - -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc - -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DROCM_PATH="$(Agent.BuildDirectory)/rocm" -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON From ae6eac2823dd8ebcfc93df81e67308ee375d0777 Mon Sep 17 00:00:00 2001 From: "Wang, Yanyao" Date: Tue, 4 Jun 2024 21:20:04 -0700 Subject: [PATCH 105/175] Build ROCm from source --- README.md | 93 +- rocm-build/README.md | 33 + rocm-build/ROCm.mk | 248 ++++ rocm-build/build_amd_smi_lib.sh | 145 ++ rocm-build/build_amdmigraphx.sh | 54 + rocm-build/build_aqlprofile.sh | 150 ++ rocm-build/build_clang-ocl.sh | 136 ++ rocm-build/build_comgr.sh | 151 ++ rocm-build/build_composable_kernel.sh | 185 +++ rocm-build/build_dbgapi.sh | 159 +++ rocm-build/build_devicelibs.sh | 140 ++ rocm-build/build_half.sh | 46 + rocm-build/build_hip_on_rocclr.sh | 295 ++++ rocm-build/build_hipblas.sh | 65 + rocm-build/build_hipblaslt.sh | 69 + rocm-build/build_hipcc.sh | 118 ++ rocm-build/build_hipcub.sh | 60 + rocm-build/build_hipfft.sh | 61 + rocm-build/build_hipfort.sh | 50 + rocm-build/build_hipify_clang.sh | 142 ++ rocm-build/build_hiprand.sh | 90 ++ rocm-build/build_hipsolver.sh | 64 + rocm-build/build_hipsparse.sh | 61 + rocm-build/build_hipsparselt.sh | 89 ++ rocm-build/build_hiptensor.sh | 57 + rocm-build/build_hsa.sh | 135 ++ rocm-build/build_lightning.sh | 1253 +++++++++++++++++ rocm-build/build_miopen-deps.sh | 73 + rocm-build/build_miopen-hip.sh | 62 + rocm-build/build_mivisionx.sh | 59 + rocm-build/build_opencl_on_rocclr.sh | 155 ++ rocm-build/build_openmp_extras.sh | 673 +++++++++ rocm-build/build_rccl.sh | 65 + rocm-build/build_rdc.sh | 234 +++ rocm-build/build_rocalution.sh | 68 + rocm-build/build_rocblas.sh | 76 + rocm-build/build_rocclr.sh | 127 ++ rocm-build/build_rocdecode.sh | 38 + rocm-build/build_rocfft.sh | 62 + rocm-build/build_rocm-cmake.sh | 121 ++ rocm-build/build_rocm-core.sh | 131 ++ rocm-build/build_rocm-dev.sh | 14 + rocm-build/build_rocm-gdb.sh | 437 ++++++ rocm-build/build_rocm_bandwidth_test.sh | 155 ++ rocm-build/build_rocm_smi_lib.sh | 153 ++ rocm-build/build_rocminfo.sh | 133 ++ rocm-build/build_rocmvalidationsuite.sh | 51 + rocm-build/build_rocprim.sh | 61 + rocm-build/build_rocprofiler-register.sh | 139 ++ rocm-build/build_rocprofiler.sh | 179 +++ rocm-build/build_rocr_debug_agent.sh | 153 ++ rocm-build/build_rocrand.sh | 66 + rocm-build/build_rocsolver.sh | 69 + rocm-build/build_rocsparse.sh | 68 + rocm-build/build_rocthrust.sh | 64 + rocm-build/build_roctracer.sh | 180 +++ rocm-build/build_rocwmma.sh | 63 + rocm-build/build_rpp.sh | 78 + rocm-build/build_thunk.sh | 205 +++ rocm-build/ccache-env-mathlib.sh | 9 + rocm-build/compute_helper.sh | 284 ++++ rocm-build/compute_utils.sh | 372 +++++ rocm-build/docker/ubuntu20/Dockerfile | 7 + rocm-build/docker/ubuntu20/README.md | 20 + .../docker/ubuntu20/install-prerequisites.sh | 217 +++ rocm-build/docker/ubuntu20/packages | 137 ++ rocm-build/docker/ubuntu22/Dockerfile | 9 + rocm-build/docker/ubuntu22/README.md | 18 + .../docker/ubuntu22/install-prerequisities.sh | 232 +++ rocm-build/docker/ubuntu22/local-pin-600 | 3 + rocm-build/docker/ubuntu22/packages | 139 ++ rocm-build/envsetup.sh | 191 +++ rocm-build/post_inst_pkg.sh | 82 ++ rocm-build/rocm-6.1.0.xml | 71 + rocm-build/rocm-6.1.1.xml | 71 + rocm-build/upload_packages.sh | 32 + 76 files changed, 10254 insertions(+), 1 deletion(-) create mode 100644 rocm-build/README.md create mode 100644 rocm-build/ROCm.mk create mode 100755 rocm-build/build_amd_smi_lib.sh create mode 100755 rocm-build/build_amdmigraphx.sh create mode 100755 rocm-build/build_aqlprofile.sh create mode 100755 rocm-build/build_clang-ocl.sh create mode 100755 rocm-build/build_comgr.sh create mode 100755 rocm-build/build_composable_kernel.sh create mode 100755 rocm-build/build_dbgapi.sh create mode 100755 rocm-build/build_devicelibs.sh create mode 100755 rocm-build/build_half.sh create mode 100755 rocm-build/build_hip_on_rocclr.sh create mode 100755 rocm-build/build_hipblas.sh create mode 100755 rocm-build/build_hipblaslt.sh create mode 100755 rocm-build/build_hipcc.sh create mode 100755 rocm-build/build_hipcub.sh create mode 100755 rocm-build/build_hipfft.sh create mode 100755 rocm-build/build_hipfort.sh create mode 100755 rocm-build/build_hipify_clang.sh create mode 100755 rocm-build/build_hiprand.sh create mode 100755 rocm-build/build_hipsolver.sh create mode 100755 rocm-build/build_hipsparse.sh create mode 100755 rocm-build/build_hipsparselt.sh create mode 100755 rocm-build/build_hiptensor.sh create mode 100755 rocm-build/build_hsa.sh create mode 100755 rocm-build/build_lightning.sh create mode 100755 rocm-build/build_miopen-deps.sh create mode 100755 rocm-build/build_miopen-hip.sh create mode 100755 rocm-build/build_mivisionx.sh create mode 100755 rocm-build/build_opencl_on_rocclr.sh create mode 100755 rocm-build/build_openmp_extras.sh create mode 100755 rocm-build/build_rccl.sh create mode 100755 rocm-build/build_rdc.sh create mode 100755 rocm-build/build_rocalution.sh create mode 100755 rocm-build/build_rocblas.sh create mode 100755 rocm-build/build_rocclr.sh create mode 100755 rocm-build/build_rocdecode.sh create mode 100755 rocm-build/build_rocfft.sh create mode 100755 rocm-build/build_rocm-cmake.sh create mode 100755 rocm-build/build_rocm-core.sh create mode 100755 rocm-build/build_rocm-dev.sh create mode 100755 rocm-build/build_rocm-gdb.sh create mode 100755 rocm-build/build_rocm_bandwidth_test.sh create mode 100755 rocm-build/build_rocm_smi_lib.sh create mode 100755 rocm-build/build_rocminfo.sh create mode 100755 rocm-build/build_rocmvalidationsuite.sh create mode 100755 rocm-build/build_rocprim.sh create mode 100755 rocm-build/build_rocprofiler-register.sh create mode 100755 rocm-build/build_rocprofiler.sh create mode 100755 rocm-build/build_rocr_debug_agent.sh create mode 100755 rocm-build/build_rocrand.sh create mode 100755 rocm-build/build_rocsolver.sh create mode 100755 rocm-build/build_rocsparse.sh create mode 100755 rocm-build/build_rocthrust.sh create mode 100755 rocm-build/build_roctracer.sh create mode 100755 rocm-build/build_rocwmma.sh create mode 100755 rocm-build/build_rpp.sh create mode 100755 rocm-build/build_thunk.sh create mode 100755 rocm-build/ccache-env-mathlib.sh create mode 100755 rocm-build/compute_helper.sh create mode 100755 rocm-build/compute_utils.sh create mode 100644 rocm-build/docker/ubuntu20/Dockerfile create mode 100644 rocm-build/docker/ubuntu20/README.md create mode 100755 rocm-build/docker/ubuntu20/install-prerequisites.sh create mode 100644 rocm-build/docker/ubuntu20/packages create mode 100644 rocm-build/docker/ubuntu22/Dockerfile create mode 100644 rocm-build/docker/ubuntu22/README.md create mode 100644 rocm-build/docker/ubuntu22/install-prerequisities.sh create mode 100644 rocm-build/docker/ubuntu22/local-pin-600 create mode 100644 rocm-build/docker/ubuntu22/packages create mode 100755 rocm-build/envsetup.sh create mode 100755 rocm-build/post_inst_pkg.sh create mode 100644 rocm-build/rocm-6.1.0.xml create mode 100644 rocm-build/rocm-6.1.1.xml create mode 100755 rocm-build/upload_packages.sh diff --git a/README.md b/README.md index 3c7fd56a0..31744f337 100644 --- a/README.md +++ b/README.md @@ -56,12 +56,103 @@ cd ~/ROCm/ **Note:** Using this sample code will cause the repo tool to download the open source code associated with the specified ROCm release. Ensure that you have ssh-keys configured on your machine for your GitHub ID prior to the download as explained at [Connecting to GitHub with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh). -### Building the ROCm source code +## Building the ROCm source code Each ROCm component repository contains directions for building that component, such as the rocSPARSE documentation [Installation and Building for Linux](https://rocm.docs.amd.com/projects/rocSPARSE/en/latest/install/Linux_Install_Guide.html). Refer to the specific component documentation for instructions on building the repository. Each release of the ROCm software supports specific hardware and software configurations. Refer to [System requirements (Linux)](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html) for the current supported hardware and OS. + +## Build ROCm from source + +The Build will use as many processors as it can find to build in parallel. Some of the compiles can consume as much as 10GB of RAM, so make sure you have plenty of Swap Space ! + +By default the ROCm build will compile for all supported GPU architectures and will take approximately 500 CPU hours. +The Build time will reduce significantly if we limit the GPU Architecture/s against which we need to build by using the environment variable GPU_ARCHS as mentioned below. + +```bash +# -------------------------------------- +# Step1: clone source code +# -------------------------------------- + +mkdir -p ~/WORKSPACE/ # Or any folder name other than WORKSPACE +cd ~/WORKSPACE/ +export ROCM_VERSION=6.1.0 # or 6.1.1 +~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.1.x -m rocm-build/rocm-${ROCM_VERSION}.xml +~/bin/repo sync + +# -------------------------------------- +# Step 2: Prepare build environment +# -------------------------------------- + +# Option 1: Start a docker container +# Pulling required base docker images: +# Ubuntu20.04 built from ROCm/rocm-build/docker/ubuntu20/Dockerfile +docker pull rocm/rocm-build-ubuntu-20.04:6.1 +# Ubuntu22.04 built from ROCm/rocm-build/docker/ubuntu22/Dockerfile +docker pull rocm/rocm-build-ubuntu-22.04:6.1 + +# Start docker container and mount the source code folder: +docker run -ti \ + -e ROCM_VERSION=${ROCM_VERSION} \ + -e CCACHE_DIR=$HOME/.ccache \ + -e CCACHE_ENABLED=true \ + -e DOCK_WORK_FOLD=/src \ + -w /src \ + -v $PWD:/src \ + -v /etc/passwd:/etc/passwd \ + -v /etc/shadow:/etc/shadow \ + -v ${HOME}/.ccache:${HOME}/.ccache \ + -u $(id -u):$(id -g) \ + bash + +# Option 2: Install required packages into the host machine +# For ubuntu20.04 system +cd ROCm/rocm-build/docker/ubuntu20 +bash install-prerequisites.sh +# For ubuntu22.04 system +cd ROCm/rocm-build/docker/ubuntu22 +bash install-prerequisities.sh + +# -------------------------------------- +# Step 3: Run build command line +# -------------------------------------- + +# Select GPU targets before building: +# When GPU_ARCHS is not set, default GPU targets supported by ROCm6.1 will be used. +# To build against a subset of GFX architectures you can use the below env variable. +# Support MI300 (gfx940, gfx941, gfx942). +export GPU_ARCHS="gfx942" # Example +export GPU_ARCHS="gfx940;gfx941;gfx942" # Example + +# Pick and run build commands in the docker container: +# Build rocm-dev packages +make -f ROCm/rocm-build/ROCm.mk -j ${NPROC:-$(nproc)} rocm-dev +# Build all ROCm packages +make -f ROCm/rocm-build/ROCm.mk -j ${NPROC:-$(nproc)} all +# list all ROCm components to find required components +make -f ROCm/rocm-build/ROCm.mk list_components +# Build a single ROCm packages +make -f ROCm/rocm-build/ROCm.mk T_rocblas + +# Find built packages in ubuntu20.04: +out/ubuntu-20.04/20.04/deb/ +# Find built packages in ubuntu22.04: +out/ubuntu-22.04/22.04/deb/ + +# Find built logs in ubuntu20.04: +out/ubuntu-20.04/20.04/logs/ +# Find built logs in ubuntu22.04: +out/ubuntu-22.04/22.04/logs/ +# All logs pertaining to failed components, end with .errrors extension. +out/ubuntu-22.04/22.04/logs/rocblas.errors # Example +# All logs pertaining to building components, end with .inprogress extension. +out/ubuntu-22.04/22.04/logs/rocblas.inprogress # Example +# All logs pertaining to passed components, use the component names. +out/ubuntu-22.04/22.04/logs/rocblas # Example +``` +Note: [Overview for ROCm.mk](rocm-build/README.md) + ## ROCm documentation This repository contains the [manifest file](https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md) diff --git a/rocm-build/README.md b/rocm-build/README.md new file mode 100644 index 000000000..9e95434b2 --- /dev/null +++ b/rocm-build/README.md @@ -0,0 +1,33 @@ +# Overview for ROCm.mk +This Makefile builds the various projects that makes up ROCm in the correct order. +It is expected to be run in an environment with the tooling set up. An easy way +to do this is to use Docker. + +# Targets +- all (default) +- rocm-dev (a subset of all) +- clean +- list_components +- help +- T_foo +- C_foo + + +# Makefile Variables +- PEVAL set to 1 to enable some Makefile debugging code. +- RELEASE\_FLAG set to "" to avoid passing "-r" to builds, effect is package defined. +- NOBUILD="foo bar" to avoid adding foo and bar into the dependencies of top level targets. They still may be + built if they are needed as dependencies of other top level targets. +- toplevel + +# Makefile assumptions + +## Requirements for package "foo" + +### program build\_foo.sh +- Should take option "-c" to clean +- Should take option "-r" to do a normal "RelWithDeb" build + +## For package "foo" we define some targets +- T\_foo - The main build target, calls "build\_foo.sh -r" +- C\_foo - Clean target, calls "build_foo.sh -c" diff --git a/rocm-build/ROCm.mk b/rocm-build/ROCm.mk new file mode 100644 index 000000000..041a173bc --- /dev/null +++ b/rocm-build/ROCm.mk @@ -0,0 +1,248 @@ +# Traditional first make target +all: + +# Use bash as a shell +# On Ubuntu sh is 'dash' +SHELL:=bash + +# Allow RELEASE_FLAG to be overwritten +RELEASE_FLAG?=-r + +# Set SANITIZER_FLAG for sanitizer +ASAN_DEP:= +ifeq (${ENABLE_ADDRESS_SANITIZER},true) + ASAN_DEP=lightning + SANITIZER_FLAG=-a +endif + +export INFRA_REPO:=ROCm/rocm-build + +OUT_DIR:=$(shell . ${INFRA_REPO}/envsetup.sh >/dev/null 2>&1 ; echo $${OUT_DIR}) +ROCM_INSTALL_PATH:=$(shell . ${INFRA_REPO}/envsetup.sh >/dev/null 2>&1 ; echo $${ROCM_INSTALL_PATH}) + +$(info OUT_DIR=${OUT_DIR}) +$(info ROCM_INSTALL_PATH=${ROCM_INSTALL_PATH}) + +# ------------------------------------------------------------------------- +# Internal stuff. Could be put in a different file to hide it. +# Internal macros, they need to be defined before being used. + +# The internal "eval" allows parts of the Makefile to be generated. +# Whilst it is possible to dump the effective Makefile, it can be +# hard to see where parts come from. Set up the "peval" macro which +# optionally prints out the generated makefile snippet and evaluate it. +# Use "make PEVAL=1 all" to see the things being evaluated. +ifeq (,${PEVAL}) + define peval = + $(eval $1) + endef +else + define peval = + $(eval $(info $1)$1) + endef +endif + +# macro to add dependencies. Saves having to put all the OUT_DIR/logs in +# The outer strip is to work around a gnu make 4.1 and earlier bug +# It should not be needed. +define adddep = +$(strip $(call peval,components+= $(1) $(2)) +$(foreach comp,$(strip $2),$(call peval,${OUT_DIR}/logs/${1}: ${OUT_DIR}/logs/${comp})) +) +endef +# End of internal stuff that is needed at the start of the file +# ------------------------------------------------------------------------- + +# Dependencies. These can be updated. Anything that is mentioned in +# either the args to the adddep macro will be added to components. as +# an example there is no need for the adddep of lightning, as it +# depends on nothing and at least one other component includes it. + +# Syntax. Up to the first comma everything is fixed. The "call" is a +# keyword to gnu make. The "adddep" is the name of the variable containing +# the macro. +# The second comma delimited argument is the target. +# The third comma delimited arg is the thing that the target depends on. +# It is a space seperated list with zero or more elements. + +$(call adddep,amd_smi_lib,${ASAN_DEP}) +$(call adddep,aqlprofile,${ASAN_DEP} hsa) +$(call adddep,clang-ocl,lightning rocm-cmake) +$(call adddep,comgr,lightning devicelibs) +$(call adddep,dbgapi,hsa comgr) +$(call adddep,devicelibs,lightning) +$(call adddep,hip_on_rocclr,${ASAN_DEP} rocclr rocprofiler-register) +$(call adddep,hipcc,) +$(call adddep,hipify_clang,hip_on_rocclr lightning) +$(call adddep,hsa,${ASAN_DEP} thunk lightning devicelibs rocprofiler-register) +$(call adddep,lightning,) +$(call adddep,opencl_on_rocclr,${ASAN_DEP} rocclr) +$(call adddep,openmp_extras,thunk lightning devicelibs hsa) +$(call adddep,rdc,${ASAN_DEP} rocm_smi_lib hsa rocprofiler) +$(call adddep,rocclr,${ASAN_DEP} hsa comgr hipcc rocprofiler-register) +$(call adddep,rocm_bandwidth_test,${ASAN_DEP} hsa) +$(call adddep,rocm_smi_lib,${ASAN_DEP}) +$(call adddep,rocm-cmake,${ASAN_DEP}) +$(call adddep,rocm-core,${ASAN_DEP}) +$(call adddep,rocm-gdb,dbgapi) +$(call adddep,rocminfo,${ASAN_DEP} hsa) +$(call adddep,rocprofiler-register,${ASAN_DEP}) +$(call adddep,rocprofiler,${ASAN_DEP} hsa roctracer aqlprofile opencl_on_rocclr hip_on_rocclr comgr dbgapi rocm_smi_lib) +$(call adddep,rocr_debug_agent,${ASAN_DEP} hip_on_rocclr hsa dbgapi) +$(call adddep,roctracer,${ASAN_DEP} hsa hip_on_rocclr) +$(call adddep,thunk,${ASAN_DEP}) + +# rocm-dev points to all possible last finish components of Stage1 build. +rocm-dev-components :=rdc hipify_clang openmp_extras \ + rocm-core amd_smi_lib hipcc clang-ocl \ + rocm_bandwidth_test rocr_debug_agent rocm-gdb +$(call adddep,rocm-dev,$(filter-out ${NOBUILD},${rocm-dev-components})) + +$(call adddep,amdmigraphx,hip_on_rocclr half rocblas miopen-hip lightning hipcc) +$(call adddep,composable_kernel,lightning hipcc hip_on_rocclr rocm-cmake) +$(call adddep,half,rocm-cmake) +$(call adddep,hipblas,hip_on_rocclr rocblas rocsolver lightning hipcc) +$(call adddep,hipblaslt,hip_on_rocclr openmp_extras hipblas lightning hipcc) +$(call adddep,hipcub,hip_on_rocclr rocprim lightning hipcc) +$(call adddep,hipfft,hip_on_rocclr openmp_extras rocfft rocrand hiprand lightning hipcc) +$(call adddep,hipfort,rocblas hipblas rocsparse hipsparse rocfft hipfft rocrand hiprand rocsolver hipsolver lightning hipcc) +$(call adddep,hiprand,hip_on_rocclr rocrand lightning hipcc) +$(call adddep,hipsolver,hip_on_rocclr rocblas rocsolver rocsparse lightning hipcc hipsparse) +$(call adddep,hipsparse,hip_on_rocclr rocsparse lightning hipcc) +$(call adddep,hipsparselt,hip_on_rocclr hipsparse lightning hipcc openmp_extras) +$(call adddep,hiptensor,hip_on_rocclr composable_kernel lightning hipcc) +$(call adddep,miopen-deps,lightning hipcc) +$(call adddep,miopen-hip,composable_kernel half hip_on_rocclr miopen-deps rocblas roctracer lightning hipcc) +$(call adddep,mivisionx,amdmigraphx miopen-hip rpp lightning hipcc) +$(call adddep,rccl,hip_on_rocclr hsa lightning hipcc rocm_smi_lib hipify_clang) +$(call adddep,rocalution,rocblas rocsparse rocrand lightning hipcc) +$(call adddep,rocblas,hip_on_rocclr openmp_extras lightning hipcc) +$(call adddep,rocdecode,hip_on_rocclr lightning hipcc) +$(call adddep,rocfft,hip_on_rocclr rocrand hiprand lightning hipcc openmp_extras) +$(call adddep,rocmvalidationsuite,hip_on_rocclr hsa rocblas rocm-core lightning hipcc rocm_smi_lib) +$(call adddep,rocprim,hip_on_rocclr lightning hipcc) +$(call adddep,rocrand,hip_on_rocclr lightning hipcc) +$(call adddep,rocsolver,hip_on_rocclr rocblas rocsparse lightning hipcc) +$(call adddep,rocsparse,hip_on_rocclr rocprim lightning hipcc) +$(call adddep,rocthrust,hip_on_rocclr rocprim lightning hipcc) +$(call adddep,rocwmma,hip_on_rocclr rocblas lightning hipcc rocm-cmake rocm_smi_lib) +$(call adddep,rpp,half lightning hipcc openmp_extras) + + +# ------------------------------------------------------------------------- +# The rest of the file is internal +# Do not pass jobserver params if -n build +ifneq (,$(findstring n,${MAKEFLAGS})) +RMAKE:= +else +RMAKE := + +endif + + +# disable the builtin rules +.SUFFIXES: + +# Linear +# include moredeps + +# A macro to define a toplevel target, add it to the 'all' target +# Make it depend on the generated log. Generate the log of the build. + +# See if the macro is already defined, if so don't touch it. +# As GNU make allows more than one makefile to be specified with "-f" +# one could put an alternative definition of "toplevel" in a different +# file or even the environment, and use the data in this file for other +# purposes. Uses might include generating output in "dot" format for +# showing the dependency graph, or having a wrapper script to run programs +# to generate code quality tools. +ifeq (${toplevel},) +# { Start of test to see if toplevel is defined +define toplevel = + +# The "target" make, this builds the package if it is out of date +T_$1: ${OUT_DIR}/logs/$1 FRC + : $1 built + +# The "upload" for $1, it uploads the packages for $1 to the central storage +U_$1: T_$1 FRC + source $${INFRA_REPO}/envsetup.sh && $${INFRA_REPO}/upload_packages.sh "$1" + : $1 uploaded + +# The "clean" for $1, it just marks the target as not existing so it will be built +# in the future. +C_$1: FRC + rm -f ${OUT_DIR}/logs/$1 ${OUT_DIR}/logs/$1.repackaged + +# parallel build { +${OUT_DIR}/logs/$1: | ${OUT_DIR}/logs +ifneq ($(wildcard ${OUT_DIR}/logs/$1.repackaged),) + @echo Skipping build of $1 as it has already been repackaged + cat $$@.repackaged > $$@ + rm -f $$@.repackaged +else # } { + @echo $1 started due to $$? | sed "s:${OUT_DIR}/logs/::g" +# Build in a subshell so we get the time output +# Pass in jobserver info using the RMAKE variable + ${RMAKE}@( if set -x && source $${INFRA_REPO}/envsetup.sh && \ + rm -f $$@.errors $$@ $$@.repackaged && \ + $${INFRA_REPO}/build_$1.sh -c && source $${INFRA_REPO}/ccache-env-mathlib.sh && \ + time bash -x $${INFRA_REPO}/build_$1.sh $${RELEASE_FLAG} $${SANITIZER_FLAG} && $${INFRA_REPO}/post_inst_pkg.sh "$1" ; \ + then mv $$@.inprogress $$@ ; \ + else mv $$@.inprogress $$@.errors ; echo Error in $1 >&2 ; exit 1 ;\ + fi ) > $$@.inprogress 2>&1 +endif # } + +# end of toplevel macro +endef +# } End of test to see if toplevel is defined +endif + +components:=$(sort $(components)) + +# Create all the T_xxxx and C_xxxx targets +$(call peval,$(foreach dep,$(strip ${components}),$(call toplevel,${dep}))) + +# Add all the T_xxxx targets to "all" except those listed in NOBUILD +# Note this does not prohibit them from being built, it just means that +# a build of "all" will not force them to be built directly +# example command +# make -f jenkins-utils/scripts/Stage1.mk -j60 + +##help all: Build everything +all: $(addprefix T_,$(filter-out ${NOBUILD},${components})) + @echo All ROCm components built +# Do not document this target +upload: $(addprefix U_,${components}) + @echo All ROCm components built and uploaded + +##help rocm-dev: Build a subset of ROCm +rocm-dev: T_rocm-dev + @echo rocm-dev built + +${OUT_DIR}/logs: + sudo mkdir -p -m 775 "${ROCM_INSTALL_PATH}" && \ + sudo chown -R "$(shell id -u):$(shell id -g)" "${ROCM_INSTALL_PATH}" + sudo chown -R "$(shell id -u):$(shell id -g)" "/home/$(shell id -un)" + mkdir -p "${@}" + mkdir -p ${HOME}/.ccache + +##help clean: remove the output directory and recreate it +clean: + [ -n "${OUT_DIR}" ] && rm -rf "${OUT_DIR}" + mkdir -p ${OUT_DIR}/logs + +.SECONDARY: ${components:%=${OUT_DIR}/logs/%} + +.PHONY: all clean repack help list_components + +##help list_components: output the list of components +##help : Hint make list_components | paste - - - | column -t +list_components: + @echo "${components}" | sed 'y/ /\n/' + +##help help: show this text +help: + @sed -n 's/^##help //p' ${MAKEFILE_LIST} | \ + if type -t column > /dev/null ; then column -s: -t ; else cat ; fi + +FRC: diff --git a/rocm-build/build_amd_smi_lib.sh b/rocm-build/build_amd_smi_lib.sh new file mode 100755 index 000000000..68a45b237 --- /dev/null +++ b/rocm-build/build_amd_smi_lib.sh @@ -0,0 +1,145 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-h] [makeopts]" + echo + echo "Options:" + echo " -c, --clean Removes all amd_smi build artifacts" + echo " -r, --release Build non-debug version amd_smi (default is debug)" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo " -p, --package Specify packaging format" + echo " -h, --help Prints this help" + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +PACKAGE_ROOT="$(getPackageRoot)" +TARGET="build" + +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE="$(getIncludePath)" + +AMDSMI_BUILD_DIR=$(getBuildPath amdsmi) +AMDSMI_PACKAGE_DEB_DIR="$(getPackageRoot)/deb/amdsmi" +AMDSMI_PACKAGE_RPM_DIR="$(getPackageRoot)/rpm/amdsmi" +AMDSMI_BUILD_TYPE="debug" +BUILD_TYPE="Debug" + +MAKETARGET="deb" +MAKEARG="$DASH_JAY O=$AMDSMI_BUILD_DIR" +AMDSMI_MAKE_OPTS="$DASH_JAY O=$AMDSMI_BUILD_DIR -C $AMDSMI_BUILD_DIR" +AMDSMI_PKG_NAME="amd-smi-lib" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + # TODO - support standard option of passing cmake environment vars - CFLAGS,CXXFLAGS etc., to enable address sanitizer + ADDRESS_SANITIZER=true ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_amdsmi() { + rm -rf "$AMDSMI_BUILD_DIR" + rm -rf "$AMDSMI_PACKAGE_DEB_DIR" + rm -rf "$AMDSMI_PACKAGE_RPM_DIR" + rm -rf "$PACKAGE_ROOT/amd_smi" + rm -rf "$PACKAGE_INCLUDE/amd_smi" + rm -f $PACKAGE_LIB/libamd_smi.* + return 0 +} + +build_amdsmi() { + echo "Building AMDSMI" + echo "AMDSMI_BUILD_DIR: ${AMDSMI_BUILD_DIR}" + if [ ! -d "$AMDSMI_BUILD_DIR" ]; then + mkdir -p $AMDSMI_BUILD_DIR + pushd $AMDSMI_BUILD_DIR + print_lib_type $SHARED_LIBS + cmake \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + $(rocm_common_cmake_params) \ + $(rocm_cmake_params) \ + -DENABLE_LDCONFIG=OFF \ + -DAMD_SMI_PACKAGE="${AMDSMI_PKG_NAME}" \ + -DCPACK_PACKAGE_VERSION_MAJOR="1" \ + -DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \ + -DCPACK_PACKAGE_VERSION_PATCH="0" \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + -DBUILD_TESTS=ON \ + "$AMD_SMI_LIB_ROOT" + popd + fi + + echo "Making amd_smi package:" + cmake --build "$AMDSMI_BUILD_DIR" -- $AMDSMI_MAKE_OPTS + cmake --build "$AMDSMI_BUILD_DIR" -- $AMDSMI_MAKE_OPTS install + cmake --build "$AMDSMI_BUILD_DIR" -- $AMDSMI_MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$AMDSMI_PACKAGE_DEB_DIR" $AMDSMI_BUILD_DIR/*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$AMDSMI_PACKAGE_RPM_DIR" $AMDSMI_BUILD_DIR/*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${AMDSMI_PACKAGE_DEB_DIR};; + ("rpm") + echo ${AMDSMI_PACKAGE_RPM_DIR};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean_amdsmi ;; + (build) build_amdsmi ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" +exit 0 diff --git a/rocm-build/build_amdmigraphx.sh b/rocm-build/build_amdmigraphx.sh new file mode 100755 index 000000000..9ddad2151 --- /dev/null +++ b/rocm-build/build_amdmigraphx.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src AMDMIGraphX + +build_amdmigraphx() { + echo "Start build" + + cd $COMPONENT_SRC + + pip3 install https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + mkdir -p ${BUILD_DIR} && rm -rf ${BUILD_DIR}/* && mkdir -p ${HOME}/amdmigraphx && rm -rf ${HOME}/amdmigraphx/* + rbuild package -d "${HOME}/amdmigraphx" -B "${BUILD_DIR}" \ + --cxx="${ROCM_PATH}/llvm/bin/clang++" \ + --cc="${ROCM_PATH}/llvm/bin/clang" \ + $(rocm_common_cmake_params) \ + -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--enable-new-dtags -Wl,--rpath,$ROCM_LIB_RPATH" \ + -DGPU_TARGETS="${GPU_TARGETS}" \ + -DCMAKE_INSTALL_RPATH="" + + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + cd $BUILD_DIR && cmake --build . -- install -j${PROC} + + show_build_cache_stats +} + +clean_amdmigraphx() { + echo "Cleaning AMDMIGraphX build directory: ${BUILD_DIR} ${DEPS_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$DEPS_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_amdmigraphx ;; + outdir) print_output_directory ;; + clean) clean_amdmigraphx ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_aqlprofile.sh b/rocm-build/build_aqlprofile.sh new file mode 100755 index 000000000..61f073f7b --- /dev/null +++ b/rocm-build/build_aqlprofile.sh @@ -0,0 +1,150 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: ${BASH_SOURCE##*/} [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME="hsa-amd-aqlprofile" +PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME" +PROJ_NAME="$API_NAME" +TARGET="build" +BUILD_TYPE="Debug" +MAKETARGET="deb" +MAKE_OPTS="$DASH_JAY -C $BUILD_DIR" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0 +MAKETARGET="deb" +PKGTYPE="deb" + +VALID_STR=$(getopt -o hcro:p: --long help,clean,release,clean,outdir:,package: -- "$@") +eval set -- "$VALID_STR" + +while true; do + case "$1" in + -h | --help) + printUsage + exit 0 + ;; + -c | --clean) + TARGET="clean" + ((CLEAN_OR_OUT |= 1)) + shift + ;; + -r | --release) + BUILD_TYPE="Release" + shift + ;; + -o | --outdir) + TARGET="outdir" + PKGTYPE=$2 + OUT_DIR_SPECIFIED=1 + ((CLEAN_OR_OUT |= 2)) + shift 2 + ;; + --) + shift + break + ;; + *) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2 + exit 20 + ;; + esac + +done + +copy_pkg_files_to_rocm() { + local comp_folder=$1 + local comp_pkg_name=$2 + + cd "${OUT_DIR}/${PKGTYPE}/${comp_folder}"|| exit 2 + if [ "${PKGTYPE}" = 'deb' ]; then + dpkg-deb -x ${comp_pkg_name}_*.deb pkg/ + else + mkdir pkg && pushd pkg/ || exit 2 + if [[ "${comp_pkg_name}" != *-dev* ]]; then + rpm2cpio ../${comp_pkg_name}-*.rpm | cpio -idmv + else + rpm2cpio ../${comp_pkg_name}el-*.rpm | cpio -idmv + fi + popd || exit 2 + fi + ls ./pkg -alt + sudo cp -r ./pkg/*/rocm*/* "${ROCM_PATH}" || exit 2 + rm -rf pkg/ +} + +clean() { + echo "Cleaning $PROJ_NAME package" + rm -rf "$PACKAGE_DEB" +} + +build() { + echo "Downloading $PROJ_NAME" package + if [ "$DISTRO_NAME" = ubuntu ]; then + mkdir -p "$PACKAGE_DEB" + local rocm_ver=${ROCM_VERSION} + if [ ${ROCM_VERSION##*.} = 0 ]; then + rocm_ver=${ROCM_VERSION%.*} + fi + local url="https://repo.radeon.com/rocm/apt/${rocm_ver}/pool/main/h/${API_NAME}/" + local package + package=$(curl -s "$url" | grep -Po 'href="\K[^"]*' | grep "${DISTRO_RELEASE}" | head -n 1) + + if [ -z "$package" ]; then + echo "No package found for Ubuntu version $DISTRO_RELEASE" + exit 1 + fi + + wget -t3 -P "$PACKAGE_DEB" "${url}${package}" + copy_pkg_files_to_rocm ${API_NAME} ${API_NAME} + else + echo "$DISTRO_ID is not supported..." + exit 2 + fi + + echo "Installing $PROJ_NAME" package +} + +print_output_directory() { + case ${PKGTYPE} in + "deb") + echo ${PACKAGE_DEB} + ;; + "rpm") + echo ${PACKAGE_RPM} + ;; + *) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2 + exit 1 + ;; + esac + exit +} + +case "$TARGET" in +clean) clean ;; +build) build ;; +outdir) print_output_directory ;; +*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_clang-ocl.sh b/rocm-build/build_clang-ocl.sh new file mode 100755 index 000000000..25f2e6dba --- /dev/null +++ b/rocm-build/build_clang-ocl.sh @@ -0,0 +1,136 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-h] [makeopts]" + echo + echo "Options:" + echo " -c, --clean Removes all clang-ocl build artifacts" + echo " -r, --release Build non-debug version clang-ocl (default is debug)" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo + + return 0 +} + + +TARGET="build" +CLANG_OCL_DEST="$(getBinPath)" +CLANG_OCL_SRC_ROOT="$CLANG_OCL_ROOT" +CLANG_OCL_BUILD_DIR="$(getBuildPath clang-ocl)" + +MAKEARG="$DASH_JAY" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_UTILS="$(getUtilsPath)" +CLANG_OCL_PACKAGE_DEB="$PACKAGE_ROOT/deb/clang-ocl" +CLANG_OCL_PACKAGE_RPM="$PACKAGE_ROOT/rpm/clang-ocl" +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso:g: --long help,clean,release,clean,static,address_sanitizer,outdir:,gpu_list: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + MAKEARG="$MAKEARG BUILD_TYPE=rel" ; BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-g | --gpu_list ) + GPU_LIST=$2; shift 2 ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_clang-ocl() { + echo "Removing clang-ocl" + rm -rf $CLANG_OCL_DEST/clang-ocl + rm -rf $CLANG_OCL_BUILD_DIR + rm -rf $CLANG_OCL_PACKAGE_DEB + rm -rf $CLANG_OCL_PACKAGE_RPM +} + +build_clang-ocl() { + if [ ! -d "$CLANG_OCL_BUILD_DIR" ]; then + mkdir -p $CLANG_OCL_BUILD_DIR + pushd $CLANG_OCL_BUILD_DIR + + if [ -e $PACKAGE_ROOT/lib/bitcode/opencl.amdgcn.bc ]; then + BC_DIR="$ROCM_INSTALL_PATH/lib" + else + BC_DIR="$ROCM_INSTALL_PATH/amdgcn/bitcode" + fi + + cmake \ + $(rocm_cmake_params) \ + -DDISABLE_CHECKS="ON" \ + -DCLANG_BIN="$ROCM_INSTALL_PATH/llvm/bin" \ + -DBITCODE_DIR="$BC_DIR" \ + $(rocm_common_cmake_params) \ + -DCPACK_SET_DESTDIR="OFF" \ + $CLANG_OCL_SRC_ROOT + + echo "Making clang-ocl:" + cmake --build . -- $MAKEARG + cmake --build . -- $MAKEARG install + cmake --build . -- $MAKEARG package + popd + fi + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$CLANG_OCL_PACKAGE_DEB" $CLANG_OCL_BUILD_DIR/rocm-clang-ocl*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$CLANG_OCL_PACKAGE_RPM" $CLANG_OCL_BUILD_DIR/rocm-clang-ocl*.rpm +} + + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${CLANG_OCL_PACKAGE_DEB};; + ("rpm") + echo ${CLANG_OCL_PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_clang-ocl ;; + (build) build_clang-ocl ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" +exit 0 + diff --git a/rocm-build/build_comgr.sh b/rocm-build/build_comgr.sh new file mode 100755 index 000000000..256af4415 --- /dev/null +++ b/rocm-build/build_comgr.sh @@ -0,0 +1,151 @@ +#!/bin/bash +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -l, --link_llvm_static Link to LLVM statically. Default is to dynamically link to LLVM; requires that LLVM dylibs are created." + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME=amd_comgr +PROJ_NAME=$API_NAME +LIB_NAME=lib${API_NAME} +TARGET=build +MAKETARGET=deb +PACKAGE_ROOT=$(getPackageRoot) +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE=$(getIncludePath) +BUILD_DIR=$(getBuildPath $API_NAME) +PACKAGE_DEB=$(getPackageRoot)/deb/$API_NAME +PACKAGE_RPM=$(getPackageRoot)/rpm/$API_NAME +PACKAGE_PREFIX=$ROCM_INSTALL_PATH +BUILD_TYPE=Debug +MAKE_OPTS="$DASH_JAY CTEST_OUTPUT_ON_FAILURE=1 -C $BUILD_DIR" +VERBOSE_OPTS="AMD_COMGR_EMIT_VERBOSE_LOGS=1 AMD_COMGR_REDIRECT_LOGS=stdout" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" +MAKETARGET="deb" + +LINK_LLVM_DYLIB="OFF" + +VALID_STR=`getopt -o hcraslo:p: --long help,clean,release,address_sanitizer,static,link_llvm_static,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-l | --link_llvm_static) + LINK_LLVM_DYLIB="OFF"; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean() { + echo "Cleaning $PROJ_NAME" + + rm -rf $BUILD_DIR + rm -rf $PACKAGE_DEB + rm -rf $PACKAGE_RPM + rm -rf $PACKAGE_ROOT/${PROJ_NAME} + rm -rf $PACKAGE_LIB/${LIB_NAME}* +} + +build() { + echo "Building $PROJ_NAME" + + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" + if [ "$SHARED_LIBS" == "OFF" ] + then + echo " Building Archive " + else + echo " Building Shared Object " + fi + + cmake \ + $(rocm_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + $(rocm_common_cmake_params) \ + -DCMAKE_DISABLE_FIND_PACKAGE_hip=TRUE \ + -DCMAKE_CTEST_ARGUMENTS="--exclude-regex;multithread_test" \ + -DLLVM_LINK_LLVM_DYLIB=$LINK_LLVM_DYLIB \ + -DLLVM_ENABLE_LIBCXX=$LINK_LLVM_DYLIB \ + $COMGR_ROOT + + popd + cmake --build "$BUILD_DIR" -- $MAKE_OPTS + cmake --build "$BUILD_DIR" -- $MAKE_OPTS $VERBOSE_OPTS test + cmake --build "$BUILD_DIR" -- $MAKE_OPTS install + cmake --build "$BUILD_DIR" -- $MAKE_OPTS package + + mkdir -p $PACKAGE_LIB + cp -R $BUILD_DIR/${LIB_NAME}* $PACKAGE_LIB + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" $BUILD_DIR/comgr*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" $BUILD_DIR/comgr*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} +verifyEnvSetup + +case $TARGET in + (clean) clean ;; + (build) build ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_composable_kernel.sh b/rocm-build/build_composable_kernel.sh new file mode 100755 index 000000000..577c2c6b2 --- /dev/null +++ b/rocm-build/build_composable_kernel.sh @@ -0,0 +1,185 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src composable_kernel + +build_miopen_ck() { + echo "Start Building Composable Kernel" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC + mkdir "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + if [ "${ASAN_CMAKE_PARAMS}" == "true" ] ; then + cmake -DBUILD_DEV=OFF \ + -DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'} \ + -DCMAKE_CXX_COMPILER=${ROCM_PATH}/llvm/bin/clang++ \ + -DCMAKE_CXX_FLAGS=" -O3 " \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH%-*}/lib/cmake;${ROCM_PATH%-*}/$ASAN_LIBDIR;${ROCM_PATH%-*}/llvm;${ROCM_PATH%-*}" \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_LIB_RPATH" \ + -DCMAKE_EXE_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_EXE_RPATH" \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DCMAKE_PACKAGING_INSTALL_PREFIX=${ROCM_PATH} \ + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ + -DROCM_SYMLINK_LIBS=OFF \ + -DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_PATH} \ + -DROCM_DISABLE_LDCONFIG=ON \ + -DROCM_PATH=${ROCM_PATH} \ + -DCPACK_GENERATOR="${PKGTYPE^^}" \ + ${LAUNCHER_FLAGS} \ + -DINSTANCES_ONLY=ON \ + -DENABLE_ASAN_PACKAGING=true \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + "$COMPONENT_SRC" + else + cmake -DBUILD_DEV=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_COMPILER=${ROCM_PATH}/llvm/bin/clang++ \ + -DCMAKE_CXX_FLAGS=" -O3 " \ + -DCMAKE_PREFIX_PATH=${ROCM_PATH%-*} \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT='-Wl,--enable-new-dtags,--rpath,$ORIGIN' \ + -DCMAKE_EXE_LINKER_FLAGS_INIT='-Wl,--enable-new-dtags,--rpath,$ORIGIN/../lib' \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DCMAKE_PACKAGING_INSTALL_PREFIX=${ROCM_PATH} \ + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ + -DROCM_SYMLINK_LIBS=OFF \ + -DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_PATH} \ + -DROCM_DISABLE_LDCONFIG=ON \ + -DROCM_PATH=${ROCM_PATH} \ + -DCPACK_GENERATOR="${PKGTYPE^^}" \ + ${LAUNCHER_FLAGS} \ + -DINSTANCES_ONLY=ON \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + "$COMPONENT_SRC" + fi + + cmake --build . -- -j${PROC} package + cmake --build "$BUILD_DIR" -- install + mkdir -p $PACKAGE_DIR && cp ./*.${PKGTYPE} $PACKAGE_DIR + rm -rf * +} + +unset_asan_env_vars() { + ASAN_CMAKE_PARAMS="false" + export ADDRESS_SANITIZER="OFF" + export LD_LIBRARY_PATH="" + export ASAN_OPTIONS="" +} + +set_address_sanitizer_off() { + export CFLAGS="" + export CXXFLAGS="" + export LDFLAGS="" +} + +build_miopen_ckProf() { + ENABLE_ADDRESS_SANITIZER=false + echo "Start Building Composable Kernel Profiler" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + else + unset_asan_env_vars + set_address_sanitizer_off + fi + + cd $COMPONENT_SRC + cd "$BUILD_DIR" + rm -rf * + + architectures='gfx10 gfx11 gfx90 gfx94' + if [ -n "$GPU_ARCHS" ]; then + architectures=$(echo ${GPU_ARCHS} | awk -F';' '{for(i=1;i<=NF;i++) a[substr($i,1,5)]} END{for(i in a) printf i" "}') + else + architectures='gfx10 gfx11 gfx90 gfx94' + fi + + for arch in ${architectures} + do + if [ "${ASAN_CMAKE_PARAMS}" == "true" ] ; then + cmake -DBUILD_DEV=OFF \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH%-*}/lib/cmake;${ROCM_PATH%-*}/$ASAN_LIBDIR;${ROCM_PATH%-*}/llvm;${ROCM_PATH%-*}" \ + -DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'} \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_LIB_RPATH" \ + -DCMAKE_EXE_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_EXE_RPATH" \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \ + -DCMAKE_INSTALL_PREFIX="${ROCM_PATH}" \ + -DCMAKE_PACKAGING_INSTALL_PREFIX="${ROCM_PATH}" \ + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ + -DROCM_SYMLINK_LIBS=OFF \ + -DCPACK_PACKAGING_INSTALL_PREFIX="${ROCM_PATH}" \ + -DROCM_DISABLE_LDCONFIG=ON \ + -DROCM_PATH="${ROCM_PATH}" \ + -DCPACK_GENERATOR="${PKGTYPE^^}" \ + -DCMAKE_CXX_COMPILER="${ROCM_PATH}/llvm/bin/clang++" \ + -DCMAKE_C_COMPILER="${ROCM_PATH}/llvm/bin/clang" \ + ${LAUNCHER_FLAGS} \ + -DPROFILER_ONLY=ON \ + -DENABLE_ASAN_PACKAGING=true \ + -DGPU_ARCH="${arch}" \ + "$COMPONENT_SRC" + else + cmake -DBUILD_DEV=OFF \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH%-*}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT='-Wl,--enable-new-dtags,--rpath,$ORIGIN' \ + -DCMAKE_EXE_LINKER_FLAGS_INIT='-Wl,--enable-new-dtags,--rpath,$ORIGIN/../lib' \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \ + -DCMAKE_INSTALL_PREFIX="${ROCM_PATH}" \ + -DCMAKE_PACKAGING_INSTALL_PREFIX="${ROCM_PATH}" \ + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ + -DROCM_SYMLINK_LIBS=OFF \ + -DCPACK_PACKAGING_INSTALL_PREFIX="${ROCM_PATH}" \ + -DROCM_DISABLE_LDCONFIG=ON \ + -DROCM_PATH="${ROCM_PATH}" \ + -DCPACK_GENERATOR="${PKGTYPE^^}" \ + -DCMAKE_CXX_COMPILER="${ROCM_PATH}/llvm/bin/clang++" \ + -DCMAKE_C_COMPILER="${ROCM_PATH}/llvm/bin/clang" \ + ${LAUNCHER_FLAGS} \ + -DPROFILER_ONLY=ON \ + -DGPU_ARCH="${arch}" \ + "$COMPONENT_SRC" + fi + + cmake --build . -- -j${PROC} package + cp ./*ckprofiler*.${PKGTYPE} $PACKAGE_DIR + rm -rf * + done + rm -rf _CPack_Packages/ && find -name '*.o' -delete + + echo "Finished building Composable Kernel" + show_build_cache_stats +} + +clean_miopen_ck() { + echo "Cleaning MIOpen-CK build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_miopen_ck; build_miopen_ckProf;; + outdir) print_output_directory ;; + clean) clean_miopen_ck ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_dbgapi.sh b/rocm-build/build_dbgapi.sh new file mode 100755 index 000000000..352331195 --- /dev/null +++ b/rocm-build/build_dbgapi.sh @@ -0,0 +1,159 @@ +#!/bin/bash +source "${BASH_SOURCE%/*}/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE[0]}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " --enable-assertions Enable assertions" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -M, --skip_man_pages Do not build the 'docs' target" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME=rocm-dbgapi +AMD_DBGAPI_NAME=amd-dbgapi +MAKEINSTALL_MANIFEST=makeinstall_manifest.txt +PROJ_NAME=$API_NAME +LIB_NAME=lib${API_NAME}.so +TARGET=build +MAKETARGET=deb +PACKAGE_ROOT=$(getPackageRoot) +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE=$(getIncludePath) +BUILD_DIR=$(getBuildPath $API_NAME) +PACKAGE_DEB=$(getPackageRoot)/deb/$API_NAME +PACKAGE_RPM=$(getPackageRoot)/rpm/$API_NAME +BUILD_TYPE=Debug +MAKE_OPTS=($DASH_JAY -C "$BUILD_DIR") +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" +DODOCSBUILD=true + +VALID_STR=$(getopt -o hcraso:p:M --long help,clean,release,enable-assertions,static,address_sanitizer,outdir:,package:skip_man_pages -- "$@") +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ;; + (-r | --release) + ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS:-"Off"} ; + BUILD_TYPE="RelWithDebInfo" ;; + ( --enable-assertions) + ENABLE_ASSERTIONS="On" ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ;; + (-s | --static) + SHARED_LIBS="OFF" ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; ((CLEAN_OR_OUT|=2)) ; shift 1 ;; + (-M | --skip_man_pages) DODOCSBUILD=false;; + (-p | --package) + MAKETARGET="$2" ; shift 1;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + shift + +done + +check_conflicting_options $CLEAN_OR_OUT "$PKGTYPE" "$MAKETARGET" +if [ "$RET_CONFLICT" -ge 30 ]; then + print_vars "$API_NAME" "$TARGET" "$BUILD_TYPE" "$SHARED_LIBS" "$CLEAN_OR_OUT" "$PKGTYPE" "$MAKETARGET" + exit "$RET_CONFLICT" +fi + +clean() { + echo "Cleaning $PROJ_NAME" + if [ -e "$BUILD_DIR/$MAKEINSTALL_MANIFEST" ] ; then + xargs rm -f < "$BUILD_DIR/$MAKEINSTALL_MANIFEST" + fi + rm -rf "$BUILD_DIR" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "${PACKAGE_ROOT:?}/${PROJ_NAME}" + rm -rf "${PACKAGE_LIB:?}/${LIB_NAME}"* + rm -rf "${PACKAGE_LIB:?}/cmake/${AMD_DBGAPI_NAME}" + rm -rf "${PACKAGE_INCLUDE:?}/${AMD_DBGAPI_NAME}" +} + +build() { + if [ ! -e "$ROCM_DBGAPI_ROOT/CMakeLists.txt" ] + then + echo " No $ROCM_DBGAPI_ROOT/CMakeLists.txt file, skipping rocm-dbgapi" >&2 + echo " No $ROCM_DBGAPI_ROOT/CMakeLists.txt file, skipping rocm-dbgapi" + exit 0 + fi + echo "Building $PROJ_NAME" + + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" || exit 99 + + cmake \ + $(rocm_cmake_params) \ + $(rocm_common_cmake_params) \ + -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS:-"On"} \ + "$ROCM_DBGAPI_ROOT" + + popd || exit 99 + cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" + "$DODOCSBUILD" && cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" doc + cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" install + + mv "$BUILD_DIR/install_manifest.txt" "$BUILD_DIR/$MAKEINSTALL_MANIFEST" + cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" package + + mkdir -p "$PACKAGE_LIB" + ( + shopt -s nullglob + cp -R "$BUILD_DIR/lib/${LIB_NAME}"* "$BUILD_DIR/${LIB_NAME}"* "$PACKAGE_LIB" + ) + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean ;; + (build) build ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_devicelibs.sh b/rocm-build/build_devicelibs.sh new file mode 100755 index 000000000..4d206fad5 --- /dev/null +++ b/rocm-build/build_devicelibs.sh @@ -0,0 +1,140 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Build a release version of the package" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo + + return 0 +} +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_BIN="$(getBinPath)" +PACKAGE_LIB="$(getLibPath)" +BUILD_PATH="$(getBuildPath devicelibs)" +INSTALL_PATH="$(getPackageRoot)" +LIGHTNING_BUILD_PATH="$(getBuildPath lightning)" +DEB_PATH="$(getDebPath devicelibs)" +RPM_PATH="$(getRpmPath devicelibs)" +AMDGCN_LIB_PATH="$PACKAGE_ROOT/amdgcn/bitcode/" + +TARGET="build" +MAKEOPTS="$DASH_JAY" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" +MAKETARGET="deb" + +VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + ASAN_CMAKE_PARAMS="true" + ack_and_ignore_asan ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_devicelibs() { + rm -rf "$BUILD_PATH" + rm -f $PACKAGE_LIB/hc*.bc + rm -f $PACKAGE_LIB/irif*.bc + rm -f $PACKAGE_LIB/ockl*.bc + rm -f $PACKAGE_LIB/oclc*.bc + rm -f $PACKAGE_LIB/ocml*.bc + rm -f $PACKAGE_LIB/opencl*.bc + rm -f $PACKAGE_LIB/openmp*.bc + rm -rf $PACKAGE_ROOT/amdgcn + rm -rf "$DEB_PATH" + rm -rf "$RPM_PATH" +} + +build_devicelibs() { + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + + local clangResourceDir="$($LIGHTNING_BUILD_PATH/bin/clang -print-resource-dir)" + local clangResourceVer=${clangResourceDir#*lib/clang/} + local bitcodeInstallLoc="lib/llvm/lib/clang/${clangResourceVer}/lib" + + export LLVM_BUILD="$LIGHTNING_BUILD_PATH" + if [ ! -e Makefile ]; then + cmake $(rocm_cmake_params) \ + $(rocm_common_cmake_params) \ + -DROCM_DEVICE_LIBS_BITCODE_INSTALL_LOC_NEW="$bitcodeInstallLoc/amdgcn" \ + -DROCM_DEVICE_LIBS_BITCODE_INSTALL_LOC_OLD="amdgcn" \ + "$DEVICELIBS_ROOT" + + echo "CMake complete" + fi + + echo "Building device-libs" + cmake --build . -- $MAKEOPTS + cmake --build . -- $MAKEOPTS install + popd +} + +package_devicelibs() { + mkdir -p "$DEB_PATH" + mkdir -p "$RPM_PATH" + pushd "$BUILD_PATH" + cpack + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$DEB_PATH" *.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RPM_PATH" *.rpm + popd +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} +case $TARGET in + (clean) clean_devicelibs ;; + (build) build_devicelibs; package_devicelibs ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_half.sh b/rocm-build/build_half.sh new file mode 100755 index 000000000..dbab4dd0a --- /dev/null +++ b/rocm-build/build_half.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src half + +build_half() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + ASAN_CMAKE_PARAMS="false" + fi + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + cmake \ + -DCMAKE_INSTALL_PREFIX="$ROCM_PATH" \ + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- package + cmake --build "$BUILD_DIR" -- install + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_half() { + echo "Cleaning half build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_half ;; + outdir) print_output_directory ;; + clean) clean_half ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hip_on_rocclr.sh b/rocm-build/build_hip_on_rocclr.sh new file mode 100755 index 000000000..dd93a85f4 --- /dev/null +++ b/rocm-build/build_hip_on_rocclr.sh @@ -0,0 +1,295 @@ +#!/bin/bash + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -h, --help Prints this help" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo " -t, --offload-arch= Specify arch for catch tests ex: --offload-arch=gfx1030 --offload-arch=gfx1100" + echo " -p, --package Specify packaging format" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" +MAKEOPTS="$DASH_JAY" + +BUILD_PATH="$(getBuildPath hip-on-rocclr)" + +TARGET="build" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_SRC="$(getSrcPath)" +PACKAGE_DEB="$PACKAGE_ROOT/deb/hip-on-rocclr" +PACKAGE_RPM="$PACKAGE_ROOT/rpm/hip-on-rocclr" +PREFIX_PATH="$PACKAGE_ROOT" +CORE_BUILD_DIR="$(getBuildPath hsa-core)" +ROCclr_BUILD_DIR="$(getBuildPath rocclr)" +HIPCC_BUILD_DIR="$(getBuildPath hipcc)" +CATCH_BUILD_DIR="$(getBuildPath catch)" +CATCH_SRC="$HIP_CATCH_TESTS_ROOT/catch" +SAMPLES_SRC="$HIP_CATCH_TESTS_ROOT/samples" +SAMPLES_BUILD_DIR="$(getBuildPath samples)" +if [ ! -e "$CATCH_SRC/CMakeLists.txt" ]; then + echo "Using catch source from hip project" >&2 + CATCH_SRC="$HIP_ON_ROCclr_ROOT/tests/catch" +fi + +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" +OFFLOAD_ARCH=() + +DEFAULT_OFFLOAD_ARCH=(gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx1031 gfx1033 gfx1034 gfx1035 gfx1100 gfx1101 gfx1102 gfx1103) + +VALID_STR=`getopt -o hcrast:o: --long help,clean,release,address_sanitizer,static,offload-arch=:,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-t | --offload-arch=) + OFFLOAD_ARCH+=( "$2" ); ((CLEAN_OR_OUT|=2)); shift 2 ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; + + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +if [ ${#OFFLOAD_ARCH[@]} = 0 ] ; then + OFFLOAD_ARCH=( "${DEFAULT_OFFLOAD_ARCH[@]}" ) +else + echo "Using user defined offload archs ${OFFLOAD_ARCH[@]} for catch tests"; +fi +printf -v OFFLOAD_ARCH_STR -- '--offload-arch=%q ' "${OFFLOAD_ARCH[@]}" + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_hip_on_rocclr() { + rm -rf "$BUILD_PATH" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "$OUT_DIR/hip" +} + +build_hip_on_rocclr() { + if [ -e "$CLR_ROOT/CMakeLists.txt" ]; then + _HIP_CMAKELIST_DIR="$CLR_ROOT" + _HIP_CMAKELIST_OPT="-DCLR_BUILD_HIP=ON -DCLR_BUILD_OCL=OFF" + if [ -e "$HIPOTHER_ROOT/hipnv" ]; then + _HIP_CMAKELIST_OPT="$_HIP_CMAKELIST_OPT -DHIPNV_DIR=$HIPOTHER_ROOT/hipnv" + fi + elif [ ! -e "$HIPAMD_ROOT/CMakeLists.txt" ]; then + echo "No $HIPAMD_ROOT/CMakeLists.txt file, skipping hip on rocclr" >&2 + echo "No $HIPAMD_ROOT/CMakeLists.txt file, skipping hip on rocclr" + exit 0 + else + _HIP_CMAKELIST_DIR="$HIPAMD_ROOT" + _HIP_CMAKELIST_OPT="" + fi + + echo "$_HIP_CMAKELIST_DIR" + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + + if [ ! -e Makefile ]; then + echo "Building HIP-On-ROCclr CMake environment" + print_lib_type $SHARED_LIBS + + cmake $(rocm_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + -DHIP_COMPILER=clang \ + -DHIP_PLATFORM=amd \ + -DHIP_COMMON_DIR="$HIP_ON_ROCclr_ROOT" \ + $(rocm_common_cmake_params) \ + -DCMAKE_HIP_ARCHITECTURES=OFF \ + -DHSA_PATH="$ROCM_INSTALL_PATH" \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE \ + -DCPACK_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + -DROCM_PATH="$ROCM_INSTALL_PATH" \ + -DHIPCC_BIN_DIR="$HIPCC_BUILD_DIR" \ + -DHIP_CATCH_TEST=1 \ + $_HIP_CMAKELIST_OPT \ + "$_HIP_CMAKELIST_DIR" + + echo "CMake complete" + fi + + echo "Build and Install HIP" + cmake --build . -- $MAKEOPTS install "VERBOSE=1" + + popd +} + +build_catch_tests() { + WORKSPACE=`pwd` + echo "Build catch2 tests independently" + if [ ! -e "$CATCH_SRC/CMakeLists.txt" ]; then + echo "catch source not found: $CATCH_SRC" >&2 + exit + fi + # build catch + rm -rf "$CATCH_BUILD_DIR" + mkdir -p "$CATCH_BUILD_DIR" + pushd "$CATCH_BUILD_DIR" + export HIP_PATH="$ROCM_INSTALL_PATH" + export ROCM_PATH="$ROCM_INSTALL_PATH" + cmake \ + -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \ + -DHIP_PLATFORM=amd \ + -DROCM_PATH="$ROCM_INSTALL_PATH" \ + -DOFFLOAD_ARCH_STR="$OFFLOAD_ARCH_STR" \ + $(rocm_common_cmake_params) \ + -DCPACK_RPM_DEBUGINFO_PACKAGE=FALSE \ + -DCPACK_DEBIAN_DEBUGINFO_PACKAGE=FALSE \ + -DCPACK_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + "$CATCH_SRC" + + + make $MAKEOPTS build_tests + echo "Packaging catch tests" + make $MAKEOPTS package_test + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm + popd +} + +package_samples() { + if [ "$ASAN_CMAKE_PARAMS" == "true" ] ; then + echo "Disable the packaging of HIP samples" >&2 + return + fi + WORKSPACE=`pwd` + if [ ! -e "$SAMPLES_SRC/CMakeLists.txt" ]; then + echo "HIP samples source not found at: $SAMPLES_SRC" >&2 + echo "Using samples package from hip project: $BUILD_PATH" >&2 + return + fi + + rm -rf "$SAMPLES_BUILD_DIR" + mkdir -p "$SAMPLES_BUILD_DIR" + pushd "$SAMPLES_BUILD_DIR" + local CMAKE_PATH="$(getCmakePath)" + export HIP_PATH="$ROCM_INSTALL_PATH" + export ROCM_PATH="$ROCM_INSTALL_PATH" + cmake \ + -DROCM_PATH="$ROCM_INSTALL_PATH" \ + $(rocm_common_cmake_params) \ + -DCMAKE_MODULE_PATH="$CMAKE_PATH/hip" \ + -DCPACK_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + "$SAMPLES_SRC" + echo "Packaging hip samples from hip-tests project" + make $MAKEOPTS package_samples + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm + popd +} + +clean_hip_tests(){ + rm -rf "$CATCH_BUILD_DIR" + rm -rf "$PACKAGE_SRC/hip-on-rocclr" + rm -rf "$PACKAGE_SRC/hipamd" + rm -rf "$PACKAGE_SRC/rocclr" + rm -rf "$PACKAGE_SRC/opencl-on-rocclr" + rm -rf "$PACKAGE_SRC/clr" + rm -rf "$PACKAGE_SRC/hip-tests" + rm -rf "$PACKAGE_SRC/hipother" +} +copy_hip_tests() { + clean_hip_tests + + echo "Copy HIP & ROCclr Source and tests" + + mkdir -p "$PACKAGE_SRC/hip-on-rocclr" + echo "Copying hip-on-rocclr" + progressCopy "$HIP_ON_ROCclr_ROOT" "$PACKAGE_SRC/hip-on-rocclr" + + if [ -e "$CLR_ROOT/CMakeLists.txt" ]; then + mkdir -p "$PACKAGE_SRC/clr" + echo "Copying clr" + progressCopy "$CLR_ROOT" "$PACKAGE_SRC/clr" + else + mkdir -p "$PACKAGE_SRC/hipamd" + mkdir -p "$PACKAGE_SRC/rocclr" + mkdir -p "$PACKAGE_SRC/opencl-on-rocclr" + echo "Copying hipamd" + progressCopy "$HIPAMD_ROOT" "$PACKAGE_SRC/hipamd" + echo "Copying rocclr" + progressCopy "$ROCclr_ROOT" "$PACKAGE_SRC/rocclr" + echo "Copying opencl-on-rocclr" + progressCopy "$OPENCL_ON_ROCclr_ROOT" "$PACKAGE_SRC/opencl-on-rocclr" + fi + + if [ -e "$HIPOTHER_ROOT/hipnv" ]; then + mkdir -p "$PACKAGE_SRC/hipother" + echo "Copying hipother" + progressCopy "$HIPOTHER_ROOT" "$PACKAGE_SRC/hipother" + fi + + mkdir -p "$PACKAGE_SRC/hip-tests" + echo "Copying hip-tests" + progressCopy "$HIP_CATCH_TESTS_ROOT" "$PACKAGE_SRC/hip-tests" +} + +package_hip_on_rocclr() +{ + echo "Packagin HIP-on-ROCclr" + pushd "$BUILD_PATH" + cmake --build . -- $MAKEOPTS package + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm + popd +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_hip_on_rocclr; clean_hip_tests ;; + (build) build_hip_on_rocclr; build_catch_tests; package_hip_on_rocclr; package_samples; copy_hip_tests;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_hipblas.sh b/rocm-build/build_hipblas.sh new file mode 100755 index 000000000..8a2b1d8bf --- /dev/null +++ b/rocm-build/build_hipblas.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipBLAS + +build_hipblas() { + echo "Start build" + + CXX="g++" + CLIENTS_SAMPLES="ON" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + CLIENTS_SAMPLES="OFF" + fi + + echo "C compiler: $CC" + echo "CXX compiler: $CXX" + echo "FC compiler: $FC" + + cd $COMPONENT_SRC + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + rebuild_lapack + fi + + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DUSE_CUDA=OFF \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DBUILD_CLIENTS_SAMPLES="${CLIENTS_SAMPLES}" \ + -DCPACK_SET_DESTDIR=OFF \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipblas() { + echo "Cleaning hipBLAS build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipblas ;; + outdir) print_output_directory ;; + clean) clean_hipblas ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipblaslt.sh b/rocm-build/build_hipblaslt.sh new file mode 100755 index 000000000..4895adde2 --- /dev/null +++ b/rocm-build/build_hipblaslt.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipBLASLt + +build_hipblaslt() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + rebuild_lapack + fi + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + # gfx90a:xnack+;gfx90a:xnack-;gfx940;gfx941;gfx942 + GPU_TARGETS=all + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DTensile_LOGIC= \ + -DTensile_CODE_OBJECT_VERSION=default \ + -DTensile_CPU_THREADS= \ + -DTensile_LIBRARY_FORMAT=msgpack \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DCPACK_SET_DESTDIR=OFF \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipblaslt() { + echo "Cleaning hipBLASLt build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipblaslt ;; + outdir) print_output_directory ;; + clean) clean_hipblaslt ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipcc.sh b/rocm-build/build_hipcc.sh new file mode 100755 index 000000000..661c37d12 --- /dev/null +++ b/rocm-build/build_hipcc.sh @@ -0,0 +1,118 @@ +#!/bin/bash +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -h, --help Prints this help" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -r, --release Makes a release build" + echo + + return 0 +} + + +API_NAME=hipcc +PROJ_NAME=$API_NAME + +TARGET="build" +MAKEOPTS="$DASH_JAY" +BUILD_TYPE="Debug" + +BUILD_DIR=$(getBuildPath $API_NAME) +PACKAGE_DEB=$(getPackageRoot)/deb/$API_NAME +PACKAGE_RPM=$(getPackageRoot)/rpm/$API_NAME +PACKAGE_SRC="$(getSrcPath)" + +while [ "$1" != "" ]; +do + case $1 in + (-a | --address_sanitizer) + ack_and_ignore_asan ;; + (-c | --clean) + TARGET="clean" ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 1 ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ;; + (-h | --help) + printUsage ; exit 0 ;; + (*) + echo "Invalid option [$1]" >&2; printUsage; exit 1 ;; + esac + shift 1 +done + +clean() { + echo "Cleaning hipcc" + rm -rf $BUILD_DIR + + echo "Cleaning up hipcc DEB and RPM packages" + rm -rf $PACKAGE_DEB + rm -rf $PACKAGE_RPM +} + +copy_hipcc_sources() { + echo "Clean up hipcc build folder" + rm -rf "$PACKAGE_SRC/hipcc" + echo "Copy hipcc sources" + mkdir -p "$PACKAGE_SRC/hipcc" + progressCopy "$HIPCC_ROOT" "$PACKAGE_SRC/hipcc" +} + +build() { + echo "Build hipcc binary" + mkdir -p "$BUILD_DIR" + + pushd "$BUILD_DIR" + if ! [ -e "$HIPCC_ROOT/CMakeLists.txt" ] ; then + + echo "No source for hipcc, exiting. this is not an error" >&2 + exit 0 + fi + + cmake \ + $(rocm_cmake_params) \ + $(rocm_common_cmake_params) \ + -DHIPCC_BACKWARD_COMPATIBILITY=OFF \ + -DCMAKE_INSTALL_PREFIX="$OUT_DIR" \ + $HIPCC_ROOT + popd + + cmake --build "$BUILD_DIR" -- $MAKEOPTS + + echo "Installing and Packaging hipcc" + cmake --build "$BUILD_DIR" -- $MAKEOPTS install + cmake --build "$BUILD_DIR" -- $MAKEOPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" $BUILD_DIR/hipcc*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" $BUILD_DIR/hipcc*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1 ;; + esac + exit +} + +case $TARGET in + (clean) clean ;; + (build) build ; copy_hipcc_sources ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_hipcub.sh b/rocm-build/build_hipcub.sh new file mode 100755 index 000000000..c559fe102 --- /dev/null +++ b/rocm-build/build_hipcub.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipCUB + +build_hipcub() { + echo "Start build" + + cd $COMPONENT_SRC + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + ASAN_CMAKE_PARAMS="false" + fi + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + -Drocprim_DIR="${ROCM_PATH}/rocprim" \ + -DBUILD_TEST=ON \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipcub() { + echo "Cleaning hipCUB build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipcub ;; + outdir) print_output_directory ;; + clean) clean_hipcub ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipfft.sh b/rocm-build/build_hipfft.sh new file mode 100755 index 000000000..d8d077f1f --- /dev/null +++ b/rocm-build/build_hipfft.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipFFT + +build_hipfft() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + cmake \ + -DCMAKE_CXX_COMPILER=$(set_build_variables CXX) \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip" \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -L \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipfft() { + echo "Cleaning hipFFT build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipfft ;; + outdir) print_output_directory ;; + clean) clean_hipfft ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipfort.sh b/rocm-build/build_hipfort.sh new file mode 100755 index 000000000..df989b5b2 --- /dev/null +++ b/rocm-build/build_hipfort.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipfort + +build_hipfort() { + echo "Start build" + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + cmake --trace \ + -DHIPFORT_INSTALL_DIR="${ROCM_PATH}" \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH}/llvm;${ROCM_PATH}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DHIPFORT_COMPILER="${ROCM_PATH}/${ROCM_LLVMDIR}/bin/flang" \ + -DCMAKE_Fortran_FLAGS="-Mfree" \ + -DHIPFORT_COMPILER_FLAGS="-cpp" \ + -DCMAKE_Fortran_FLAGS_DEBUG="" \ + ${LAUNCHER_FLAGS} \ + -DROCM_SYMLINK_LIBS=OFF \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DHIPFORT_AR="${ROCM_PATH}/${ROCM_LLVMDIR}/bin/llvm-ar" \ + -DHIPFORT_RANLIB="${ROCM_PATH}/${ROCM_LLVMDIR}/bin/llvm-ranlib" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipfort() { + echo "Cleaning hipFORT build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipfort ;; + outdir) print_output_directory ;; + clean) clean_hipfort ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipify_clang.sh b/rocm-build/build_hipify_clang.sh new file mode 100755 index 000000000..41c90b162 --- /dev/null +++ b/rocm-build/build_hipify_clang.sh @@ -0,0 +1,142 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -r, --release Make a release build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo + + return 0 +} + +TARGET="build" +MAKEOPTS="$DASH_JAY" +HIPIFY_CLANG_BUILD_DIR="$(getBuildPath $HIPIFY_ROOT)" +HIPIFY_CLANG_DIST_DIR="$HIPIFY_CLANG_BUILD_DIR/dist" +BUILD_TYPE="Debug" +PACKAGE_ROOT="$(getPackageRoot)" +HIPIFY_CLANG_HASH="" +LIGHTNING_PATH="$ROCM_INSTALL_PATH/llvm" +ADDRESS_SANITIZER=false +DEB_PATH="$(getDebPath hipify)" +RPM_PATH="$(getRpmPath hipify)" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + ADDRESS_SANITIZER=true ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_hipify() { + echo "Cleaning hipify-clang" + rm -rf "$HIPIFY_CLANG_BUILD_DIR" + rm -rf "$HIPIFY_CLANG_DIST_DIR" + rm -rf "$DEB_PATH" + rm -rf "$RPM_PATH" +} + +package_hipify() { + if [ "$PACKAGEEXT" = "deb" ]; then + rm -rf "$DEB_PATH" + mkdir -p "$DEB_PATH" + fi + + if [ "$PACKAGEEXT" = "rpm" ]; then + rm -rf "$RPM_PATH" + mkdir -p "$RPM_PATH" + fi + + pushd "$HIPIFY_CLANG_BUILD_DIR" + make $MAKEOPTS package_hipify-clang + popd + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$DEB_PATH" $HIPIFY_CLANG_BUILD_DIR/hipify*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RPM_PATH" $HIPIFY_CLANG_BUILD_DIR/hipify*.rpm +} + +build_hipify() { + echo "Building hipify-clang binaries" + mkdir -p "$HIPIFY_CLANG_BUILD_DIR" + mkdir -p "$HIPIFY_CLANG_DIST_DIR" + + pushd "$HIPIFY_CLANG_BUILD_DIR" + cmake \ + -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ + $(rocm_common_cmake_params) \ + -DCMAKE_INSTALL_PREFIX="$HIPIFY_CLANG_DIST_DIR" \ + -DCPACK_PACKAGING_INSTALL_PREFIX=$ROCM_INSTALL_PATH \ + -DCMAKE_PREFIX_PATH="$LIGHTNING_PATH" \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + $HIPIFY_ROOT + + cmake --build . -- $MAKEOPTS install + popd + pushd "$HIPIFY_ROOT" + HIPIFY_CLANG_HASH=`git describe --dirty --long --match [0-9]* --always` + popd +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_hipify ;; + (build) build_hipify; package_hipify ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_hiprand.sh b/rocm-build/build_hiprand.sh new file mode 100755 index 000000000..293b05b6c --- /dev/null +++ b/rocm-build/build_hiprand.sh @@ -0,0 +1,90 @@ +#!/bin/bash +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipRAND + +while [ "$1" != "" ]; +do + case $1 in + -o | --outdir ) + shift 1; PKGTYPE=$1 ; TARGET="outdir" ;; + -c | --clean ) + TARGET="clean" ;; + *) + break ;; + esac + shift 1 +done + +build_hiprand() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC + + remote_name=$(git remote show | head -n 1) + [ "$remote_name" == "origin" ] || git remote rename "$remote_name" origin + git submodule update --init --force + + mkdir "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DBUILD_TEST=ON \ + -DBUILD_BENCHMARK=ON \ + -DBUILD_CRUSH_TEST=ON \ + -DDEPENDENCIES_FORCE_DOWNLOAD=ON \ + -DHIP_COMPILER=clang \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip" \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + $SCCACHE_BIN -s || echo "Unable to display sccache stats" +} + +clean_hiprand() { + echo "Cleaning hipRAND build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + build) build_hiprand ;; + outdir) print_output_directory ;; + clean) clean_hiprand ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipsolver.sh b/rocm-build/build_hipsolver.sh new file mode 100755 index 000000000..ded0279df --- /dev/null +++ b/rocm-build/build_hipsolver.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipSOLVER + +build_hipsolver() { + echo "Start build" + + cd $COMPONENT_SRC + + CXX="g++" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + echo "C compiler: $CC" + echo "CXX compiler: $CXX" + echo "FC compiler: $FC" + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + rebuild_lapack + fi + + cmake \ + -DUSE_CUDA=OFF \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DCPACK_SET_DESTDIR=OFF \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipsolver() { + echo "Cleaning hipSOLVER build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipsolver ;; + outdir) print_output_directory ;; + clean) clean_hipsolver ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipsparse.sh b/rocm-build/build_hipsparse.sh new file mode 100755 index 000000000..727421635 --- /dev/null +++ b/rocm-build/build_hipsparse.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +PATH=${ROCM_PATH}/bin:$PATH +set_component_src hipSPARSE + +build_hipsparse() { + echo "Start build" + + cd $COMPONENT_SRC + + CXX="g++" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + echo "C compiler: $CC" + echo "CXX compiler: $CXX" + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + cmake \ + -DCPACK_SET_DESTDIR=OFF \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DUSE_CUDA=OFF \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipsparse() { + echo "Cleaning hipSPARSE build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipsparse ;; + outdir) print_output_directory ;; + clean) clean_hipsparse ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipsparselt.sh b/rocm-build/build_hipsparselt.sh new file mode 100755 index 000000000..99b70edd0 --- /dev/null +++ b/rocm-build/build_hipsparselt.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipSPARSELt + +while [ "$1" != "" ]; +do + case $1 in + -o | --outdir ) + shift 1; PKGTYPE=$1 ; TARGET="outdir" ;; + -c | --clean ) + TARGET="clean" ;; + *) + break ;; + esac + shift 1 +done + +build_hipsparselt() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + # gfx940;gfx941;gfx942 + GPU_TARGETS=all + fi + + FC=gfortran \ + CXX="${ROCM_PATH}/bin/hipcc" \ + cmake \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DTensile_LOGIC= \ + -DTensile_CODE_OBJECT_VERSION=default \ + -DTensile_CPU_THREADS= \ + -DTensile_LIBRARY_FORMAT=msgpack \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DCPACK_SET_DESTDIR=OFF \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + $SCCACHE_BIN -s || echo "Unable to display sccache stats" +} + +clean_hipsparselt() { + echo "Cleaning hipSPARSELt build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + build) build_hipsparselt ;; + outdir) print_output_directory ;; + clean) clean_hipsparselt ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hiptensor.sh b/rocm-build/build_hiptensor.sh new file mode 100755 index 000000000..c239caab9 --- /dev/null +++ b/rocm-build/build_hiptensor.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipTensor + +build_hiptensor() { + echo "Start build hipTensor" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd "$COMPONENT_SRC" + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942" + fi + + cmake \ + -B "${BUILD_DIR}" \ + $(rocm_common_cmake_params) \ + $(set_build_variables CMAKE_C_CXX) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + ${LAUNCHER_FLAGS} \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p "$PACKAGE_DIR" && cp ${BUILD_DIR}/*.${PKGTYPE} "$PACKAGE_DIR" + + show_build_cache_stats +} + +clean_hiptensor() { + echo "Cleaning hipTensor build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hiptensor ;; + outdir) print_output_directory ;; + clean) clean_hiptensor ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hsa.sh b/rocm-build/build_hsa.sh new file mode 100755 index 000000000..9fc76ffd2 --- /dev/null +++ b/rocm-build/build_hsa.sh @@ -0,0 +1,135 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...] [make options]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo + echo + + return 0 +} + +TARGET="build" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_SRC="$(getSrcPath)" +PACKAGE_LIB="$(getLibPath)" +PACKAGE_BIN="$(getBinPath)" +PACKAGE_DEB="$(getPackageRoot)/deb/rocr" +PACKAGE_RPM="$(getPackageRoot)/rpm/rocr" +MAKEARG="" +CORE_BUILD_DIR="$(getBuildPath hsa-core)" +ROCR_DEV_BUILD_DIR="$(getBuildPath hsa-rocr-dev)" +PREFIX_PATH="$PACKAGE_ROOT" +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + +unset HIP_DEVICE_LIB_PATH +unset ROCM_PATH + +VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_hsa() { + echo "Cleaning HSA" + + rm -rf "$CORE_BUILD_DIR" + rm -rf "$PACKAGE_RPM" + rm -rf "$PACKAGE_DEB" + rm -f "$PACKAGE_ROOT"/lib/libhsa-runtime* + rm -rf "$PACKAGE_ROOT/lib/cmake/hsa-runtime64" + rm -rf "$PACKAGE_ROOT/include/hsa" + rm -rf "$PACKAGE_ROOT/share/doc/hsa-runtime64" + rm -rf "$PACKAGE_ROOT/hsa" +} + + +build_hsa_core() { + echo "Build HSA" + local coreMakeOpts="$DASH_JAY -C $CORE_BUILD_DIR" + + echo "$HSA_CORE_ROOT" + + if [ ! -d "$CORE_BUILD_DIR" ]; then + mkdir -p "$CORE_BUILD_DIR" + pushd "$CORE_BUILD_DIR" + print_lib_type $SHARED_LIBS + + cmake $(rocm_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + -DENABLE_LDCONFIG=OFF \ + $(rocm_common_cmake_params) \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + "$HSA_CORE_ROOT" + popd + fi + time cmake --build "$CORE_BUILD_DIR" -- $coreMakeOpts + time cmake --build "$CORE_BUILD_DIR" -- $coreMakeOpts install + time cmake --build "$CORE_BUILD_DIR" -- $coreMakeOpts package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" $CORE_BUILD_DIR/hsa-rocr*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" $CORE_BUILD_DIR/hsa-rocr*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_hsa ;; + (build) build_hsa_core;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_lightning.sh b/rocm-build/build_lightning.sh new file mode 100755 index 000000000..dbf9fae22 --- /dev/null +++ b/rocm-build/build_lightning.sh @@ -0,0 +1,1253 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" +export JOB_DESIGNATOR +export BUILD_ID +export SLES_BUILD_ID_PREFIX +export ROCM_LIBPATCH_VERSION + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -t, --alt Build the 'alt' variant" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -d, --debug Build a debug version of llvm (excludes packaging)" + echo " -r, --release Build a release version of the package" + echo " -a, --address_sanitizer Enable address sanitizer (enabled by default)" + echo " -A --no_address_sanitizer Disable address sanitizer" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -l, --build_llvm_static Build LLVM libraries statically linked. Default is to build dynamic linked libs" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -B, --build Build and install binary files into /opt/rocm folder" + echo " -P, --package Generate packages" + echo " -N, --skip_lit_tests Skip llvm lit testing (llvm lit testing is enabled by default)" + echo " -M, --skip_man_pages Skip llvm documentation generation (man pages and rocm-llvm-docs package generation is enabled by default)" + echo " -h, --help Prints this help" + echo + echo + + return 0 +} + +ROCM_LLVM_LIB_RPATH='\$ORIGIN' +ROCM_LLVM_EXE_RPATH='\$ORIGIN/../lib:\$ORIGIN/../../../lib' + +PACKAGE_OUT="$(getPackageRoot)" + +BUILD_PATH="$(getBuildPath lightning)" +DEB_PATH="$(getDebPath lightning)" +RPM_PATH="$(getRpmPath lightning)" +INSTALL_PATH="${ROCM_INSTALL_PATH}/lib/llvm" +LLVM_ROOT_LCL="${LLVM_ROOT}" + +TARGET="all" +MAKEOPTS="$DASH_JAY" +BUILD_TYPE="Release" +case "${JOB_NAME}" in + ( *"rel"* | \ + *"afar"* | \ + *"nfar"* ) + ENABLE_ASSERTIONS=0 ;; + ( * ) + ENABLE_ASSERTIONS=1 ;; +esac +SHARED_LIBS="ON" + +BUILD_LLVM_DYLIB="OFF" + +FLANG_NEW=0 +BUILD_ALT=0 +CLEAN_OR_OUT=0; +PKGTYPE="deb" +MAKETARGET="deb" + +ASSERT_LLVM_VERSION_MAJOR="" +ASSERT_LLVM_VERSION_MINOR="" + +SKIP_LIT_TESTS=0 +BUILD_MANPAGES="ON" + +SANITIZER_AMDGPU=1 +HSA_INC_PATH="$WORK_ROOT/ROCR-Runtime/src/inc" +COMGR_INC_PATH="$WORK_ROOT/llvm-project/amd/comgr/include" + +VALID_STR=`getopt -o htcV:v:draAslo:BPNM --long help,alt,clean,assert_llvm_ver_major:,assert_llvm_ver_minor:,debug,release,address_sanitizer,no_address_sanitizer,static,build_llvm_static,build,package,skip_lit_tests,skip_man_pages,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-t | --alt) + BUILD_ALT=1 ; shift ;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-V | --assert_llvm_ver_major) + ASSERT_LLVM_VERSION_MAJOR=$2 ; shift 2 ;; + (-v | --assert_llvm_ver_minor) + ASSERT_LLVM_VERSION_MINOR=$2 ; shift 2 ;; + (-d | --debug) + BUILD_TYPE="Debug" ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + SANITIZER_AMDGPU=1 ; + HSA_INC_PATH="$WORK_ROOT/hsa/runtime/opensrc/hsa-runtime/inc" ; + COMGR_INC_PATH="$WORK_ROOT/external/llvm-project/amd/comgr/include" ; shift ;; + (-A | --no_address_sanitizer) + SANITIZER_AMDGPU=0 ; + unset HSA_INC_PATH ; + unset COMGR_INC_PATH ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-l | --build_llvm_static) + BUILD_LLVM_DYLIB="OFF"; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-B | --build) + TARGET="build"; shift ;; + (-P | --package) + TARGET="package"; shift ;; + (-N | --skip_lit_tests) + SKIP_LIT_TESTS=1; shift ;; + (-M | --skip_man_pages) + BUILD_MANPAGES="OFF"; shift ;; + --) shift; break;; # end delimiter + (*) + echo " This should not happen : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +LLVM_PROJECTS="clang;lld;clang-tools-extra" +ENABLE_RUNTIMES="compiler-rt;libunwind" +BOOTSTRAPPING_BUILD_LIBCXX=0 +BUILD_AMDCLANG="ON" +if [ $BUILD_ALT -eq 1 ]; then + BUILD_PATH="${BUILD_PATH}-alt" + DEB_PATH="${DEB_PATH}-alt" + RPM_PATH="${RPM_PATH}-alt" + INSTALL_PATH="${INSTALL_PATH}/alt" + LLVM_ROOT_LCL="${LLVM_ALT_ROOT}" + BUILD_AMDCLANG="OFF" + BUILD_MANPAGES="OFF" + SANITIZER_AMDGPU=0 + unset HSA_INC_PATH + unset COMGR_INC_PATH +else + ENABLE_RUNTIMES="$ENABLE_RUNTIMES;libcxx;libcxxabi"; + BOOTSTRAPPING_BUILD_LIBCXX=1 +fi + +clean_lightning() { + rm -rf "$BUILD_PATH" + rm -rf "$DEB_PATH" + rm -rf "$RPM_PATH" +} + +setup_llvm_info() { + set +e + mkdir -p "$LLVM_ROOT_LCL" + pushd "$LLVM_ROOT_LCL" + local LLVM_REMOTE_NAME + local LLVM_URL_NAME + local LLVM_BRANCH_NAME + local LLVM_URL_BRANCH + + if [[ "${JOB_NAME}" == *rel* ]]; then + if [ $BUILD_ALT -eq 1 ]; then + LLVM_URL_BRANCH=$(git rev-parse HEAD) + else + LLVM_URL_NAME="https://github.com/RadeonOpenCompute/llvm-project" + LLVM_BRANCH_NAME="roc-${ROCM_VERSION}" + LLVM_URL_BRANCH="${LLVM_URL_NAME} ${LLVM_BRANCH_NAME}" + fi + else + LLVM_REMOTE_NAME=$(git remote) + LLVM_URL_NAME=$(git config --get remote."${LLVM_REMOTE_NAME}".url) + if [ $BUILD_ALT -eq 1 ]; then + LLVM_BRANCH_NAME=$(repo manifest | sed -n 's/.*path="external\/llvm-project-alt\/llvm-project".* upstream="\([^"]*\)".*/\1/p' ) + else + LLVM_BRANCH_NAME=$(repo manifest | sed -n 's/.*path="external\/llvm-project".* upstream="\([^"]*\)".*/\1/p' ) + fi + LLVM_URL_BRANCH="${LLVM_URL_NAME} ${LLVM_BRANCH_NAME}" + fi + + LLVM_COMMIT_GITDATE=$(git show -s --format=@%ct | xargs | date -f - --utc +%y%U%w) + LLVM_REPO_INFO="${LLVM_URL_BRANCH} ${LLVM_COMMIT_GITDATE}" + + popd + set -e +} + +LLVM_VERSION_MAJOR="" +LLVM_VERSION_MINOR="" +LLVM_VERSION_PATCH="" +LLVM_VERSION_SUFFIX="" +get_llvm_version() { + local LLVM_VERSIONS=($(awk '/set\(LLVM_VERSION/ {print substr($2,1,length($2)-1)}' ${LLVM_ROOT_LCL}/CMakeLists.txt)) + LLVM_VERSION_MAJOR=${LLVM_VERSIONS[0]} + LLVM_VERSION_MINOR=${LLVM_VERSIONS[1]} + LLVM_VERSION_PATCH=${LLVM_VERSIONS[2]} + LLVM_VERSION_SUFFIX=${LLVM_VERSIONS[3]} + + echo "Detected LLVM version from source: ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}" +} + +create_compiler_config_files() { + local llvm_bin_dir="${INSTALL_PATH}/bin" + local rocm_cfg="rocm.cfg" + + { + echo "-Wl,--enable-new-dtags" + echo "--rocm-path='/../../..'" + echo "-frtlib-add-rpath" + } > "${llvm_bin_dir}/$rocm_cfg" + + local compiler_commands=("clang" "clang++" "clang-cpp" "clang-${LLVM_VERSION_MAJOR}" "clang-cl" "flang" "flang-new") + for i in "${compiler_commands[@]}"; do + if [ -f "$llvm_bin_dir/$i" ]; then + local config_file="${llvm_bin_dir}/${i}.cfg" + echo "@${rocm_cfg}" > $config_file + fi + done +} + +contains(){ + + local target=$1 element + shift + for element ; do + [ "$target" = "$element" ] && return 0 + done + return 1 +} + +build_lightning() { + setup_llvm_info + + get_llvm_version + if [ -n "${ASSERT_LLVM_VERSION_MAJOR}" ]; then + echo "Assert LLVM major version: ${ASSERT_LLVM_VERSION_MAJOR}"; + if [ "${ASSERT_LLVM_VERSION_MAJOR}" != "${LLVM_VERSION_MAJOR}" ]; then + echo "LLVM major version assertion failed, expected ${ASSERT_LLVM_VERSION_MAJOR} but detected ${LLVM_VERSION_MAJOR}!" + exit 1; + fi + fi + if [ -n "${ASSERT_LLVM_VERSION_MINOR}" ]; then + echo "Assert LLVM minor version: ${ASSERT_LLVM_VERSION_MINOR}"; + if [ "${ASSERT_LLVM_VERSION_MINOR}" != "${LLVM_VERSION_MINOR}" ]; then + echo "LLVM minor version assertion failed, expected ${ASSERT_LLVM_VERSION_MINOR} but detected ${LLVM_VERSION_MINOR}!" + exit 1; + fi + fi + + DISABLE_PIE=0 + + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + + if [ ! -e Makefile ]; then + echo "Building LLVM CMake environment" + if [ -e "$LLVM_ROOT_LCL/../flang/docs/AssumedRank.md" ]; then + FLANG_NEW=1 + LLVM_PROJECTS="$LLVM_PROJECTS;flang;mlir" + else + echo "NOT building project flang" + fi + + set -x + cmake $(rocm_cmake_params) ${GEN_NINJA} \ + -DCMAKE_INSTALL_PREFIX="$INSTALL_PATH" \ + -DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" \ + -DLLVM_ENABLE_PROJECTS="$LLVM_PROJECTS" \ + -DLLVM_ENABLE_RUNTIMES="$ENABLE_RUNTIMES" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_ENABLE_STATIC=ON \ + -DLIBCXX_INSTALL_LIBRARY=OFF \ + -DLIBCXX_INSTALL_HEADERS=OFF \ + -DLIBCXXABI_ENABLE_SHARED=OFF \ + -DLIBCXXABI_ENABLE_STATIC=ON \ + -DLIBCXXABI_INSTALL_STATIC_LIBRARY=OFF \ + -DLLVM_BUILD_DOCS="$BUILD_MANPAGES" \ + -DLLVM_ENABLE_SPHINX="$BUILD_MANPAGES" \ + -DSPHINX_WARNINGS_AS_ERRORS=OFF \ + -DSPHINX_OUTPUT_MAN="$BUILD_MANPAGES" \ + -DLLVM_ENABLE_ASSERTIONS="$ENABLE_ASSERTIONS" \ + -DLLVM_ENABLE_Z3_SOLVER=OFF \ + -DLLVM_ENABLE_ZLIB=ON \ + -DLLVM_AMDGPU_ALLOW_NPI_TARGETS=ON \ + -DCLANG_REPOSITORY_STRING="$LLVM_REPO_INFO" \ + -DCLANG_DEFAULT_PIE_ON_LINUX="$DISABLE_PIE" \ + -DCLANG_DEFAULT_LINKER=lld \ + -DCLANG_DEFAULT_RTLIB=compiler-rt \ + -DCLANG_DEFAULT_UNWINDLIB=libgcc \ + -DCLANG_ENABLE_AMDCLANG="$BUILD_AMDCLANG" \ + -DSANITIZER_AMDGPU="$SANITIZER_AMDGPU" \ + -DPACKAGE_VENDOR="AMD" \ + -DSANITIZER_HSA_INCLUDE_PATH="$HSA_INC_PATH" \ + -DSANITIZER_COMGR_INCLUDE_PATH="$COMGR_INC_PATH" \ + -DLLVM_BUILD_LLVM_DYLIB="$BUILD_LLVM_DYLIB" \ + -DLLVM_LINK_LLVM_DYLIB="$BUILD_LLVM_DYLIB" \ + -DLLVM_ENABLE_LIBCXX="$BUILD_LLVM_DYLIB" \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE\ + -DCMAKE_SKIP_INSTALL_RPATH=TRUE\ + -DCMAKE_EXE_LINKER_FLAGS=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_LLVM_EXE_RPATH \ + -DCMAKE_SHARED_LINKER_FLAGS=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_LLVM_LIB_RPATH \ + -DROCM_LLVM_BACKWARD_COMPAT_LINK="$ROCM_INSTALL_PATH/llvm" \ + -DROCM_LLVM_BACKWARD_COMPAT_LINK_TARGET="./lib/llvm" \ + -DCLANG_LINK_FLANG_LEGACY=ON \ + -DCMAKE_CXX_STANDARD=17 \ + -DFLANG_INCLUDE_DOCS=OFF \ + "$LLVM_ROOT_LCL" + set +x + echo "CMake complete" + fi + + echo "Building LLVM" + + if [ $BOOTSTRAPPING_BUILD_LIBCXX -eq 1 ]; then + cmake --build . -- $MAKEOPTS clang lld compiler-rt + cmake --build . -- $MAKEOPTS runtimes cxx + fi + + echo "Workaround for race condition" + echo "End Workaround for race condition" + cmake --build . -- $MAKEOPTS + + if [ $SKIP_LIT_TESTS -eq 0 ]; then + if [ "$DISTRO_NAME" != "sles" ] && [ $BUILD_ALT != 1 ]; then + if [ $FLANG_NEW -eq 1 ]; then + cmake --build . -- $MAKEOPTS check-llvm check-clang check-lld check-mlir + else + cmake --build . -- $MAKEOPTS check-llvm check-clang check-lld + fi + fi + fi + cmake --build . -- $MAKEOPTS clang-tidy + cmake --build . -- $MAKEOPTS install + + popd +} + +package_lightning_dynamic(){ + + if [ "$BUILD_TYPE" == "Debug" ]; then + return + fi + + get_llvm_version + local llvmParsedVersion="${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}" + + if [ $BUILD_ALT -eq 1 ]; then + local packageName="rocm-llvm-alt" + local packageSummary="Proprietary ROCm compiler" + local packageSummaryLong="ROCm compiler, including proprietary optimizations, based on LLVM $llvmParsedVersion" + local installPath="$ROCM_INSTALL_PATH/lib/llvm/alt" + else + local packageName="rocm-llvm" + local packageSummary="ROCm compiler" + local packageSummaryLong="ROCm compiler based on LLVM $llvmParsedVersion" + local installPath="$ROCM_INSTALL_PATH/lib/llvm/" + + if [ "$BUILD_LLVM_DYLIB" == "ON" ] ; then + local packageNameCore="rocm-llvm-core" + local packageSummaryCore="ROCm core compiler dylibs" + local packageSummaryLongCore="ROCm compiler based on LLVM $llvmParsedVersion" + fi + fi + + local packageArch="amd64" + local packageVersion="${llvmParsedVersion}.${LLVM_COMMIT_GITDATE}" + local packageMaintainer="ROCm Compiler Support " + local distBin="$INSTALL_PATH/bin" + local distInc="$INSTALL_PATH/include" + local distLib="$INSTALL_PATH/lib" + local distMan="$INSTALL_PATH/share/man" + local licenseDir="$ROCM_INSTALL_PATH/share/doc/$packageName" + local licenseDirCore="$ROCM_INSTALL_PATH/share/doc/$packageNameCore" + local packageDir="$BUILD_PATH/package" + local backwardsCompatibleSymlink="$ROCM_INSTALL_PATH/llvm" + + local packageDeb="$packageDir/deb" + local controlFile="$packageDeb/DEBIAN/control" + local postinstFile="$packageDeb/DEBIAN/postinst" + local prermFile="$packageDeb/DEBIAN/prerm" + local specFile="$packageDir/$packageName.spec" + local debDependencies="python3, libc6, libstdc++6|libstdc++8, libstdc++-5-dev|libstdc++-7-dev|libstdc++-11-dev, libgcc-5-dev|libgcc-7-dev|libgcc-11-dev, rocm-core" + if [ $BUILD_ALT -eq 1 ]; then + debDependencies="${debDependencies}, rocm-llvm" + fi + local debRecommends="gcc, g++, gcc-multilib, g++-multilib" + + local packageRpm="$packageDir/rpm" + local packageRpmCore="$packageDir/rpm" + local specFile="$packageDir/$packageName.spec" + local specFileCore="$packageDir/$packageNameCore.spec" + local rpmRequires="rocm-core" + if [ "$BUILD_LLVM_DYLIB" == "ON" ] ; then + rpmRequires+=", rocm-llvm-core" + fi + local rpmRequiresCore="rocm-core" + local rpmRecommends="gcc, gcc-c++, devtoolset-7-gcc-c++" + + rm -rf "$packageDir" + echo "rm -rf $packageDir" + rm -rf "$DEB_PATH" + + local amd_compiler_commands=("amdclang" "amdclang++" "amdclang-cl" "amdclang-cpp" "amdflang" "amdlld" "offload-arch") + local amd_man_pages=("amdclang.1.gz" "flang.1.gz" "amdflang.1.gz") + local man_pages=("bugpoint.1" "FileCheck.1" "llvm-ar.1" "llvm-cxxmap.1" "llvm-extract.1" "llvm-lipo.1" "llvm-otool.1" "llvm-readobj.1" "llvm-symbolizer.1" "tblgen.1" + "clang.1" "lit.1" "llvm-as.1" "llvm-diff.1" "llvm-ifs.1" "llvm-locstats.1" "llvm-pdbutil.1" "llvm-remarkutil.1" "llvm-tblgen.1" "clang-tblgen.1" + "llc.1" "llvm-bcanalyzer.1" "llvm-dis.1" "llvm-install-name-tool.1" "llvm-mca.1" "llvm-profdata.1" "llvm-size.1" "llvm-tli-checker.1" "diagtool.1" + "lldb-tblgen.1" "llvm-config.1" "llvm-dwarfdump.1" "llvm-lib.1" "llvm-nm.1" "llvm-profgen.1" "llvm-stress.1" "mlir-tblgen.1" "dsymutil.1" "lli.1" + "llvm-cov.1" "llvm-dwarfutil.1" "llvm-libtool-darwin.1" "llvm-objcopy.1" "llvm-ranlib.1" "llvm-strings.1" "opt.1" "extraclangtools.1" "llvm-addr2line.1" + "llvm-cxxfilt.1" "llvm-exegesis.1" "llvm-link.1" "llvm-objdump.1" "llvm-readelf.1" "llvm-strip.1") + + if [ "$PACKAGEEXT" = "deb" ]; then + + mkdir -p "$packageDeb/$installPath" + mkdir -p "$(dirname $controlFile)" + mkdir -p "$DEB_PATH" + mkdir -p "$packageDeb/$licenseDir" + + if [ "$BUILD_LLVM_DYLIB" == "ON" ] ; then + + mkdir -p "$packageDeb/$licenseDirCore" + + cp -r "$LLVM_ROOT_LCL/LICENSE.TXT" "$packageDeb/$licenseDirCore" + + cp -P "$distLib/libLLVM"*"so"* "$packageDeb/$installPath/" + cp -P "$distLib/libFortran"*"so"* "$packageDeb/$installPath/" + cp -P "$distLib/libclang"*"so"* "$packageDeb/$installPath/" + + echo "Package: $packageNameCore" > $controlFile + echo "Architecture: $packageArch" >> $controlFile + echo "Section: devel" >> $controlFile + echo "Priority: optional" >> $controlFile + echo "Maintainer: $packageMaintainer" >> $controlFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Release: ${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Depends: $debDependencies" >> $controlFile + echo "Recommends: $debRecommends" >> $controlFile + echo "Description: $packageSummaryCore" >> $controlFile + echo " $packageSummaryLongCore" >> $controlFile + + fakeroot dpkg-deb -Zgzip --build $packageDeb \ + "${DEB_PATH}/${packageNameCore}_${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}_${packageArch}.deb" + + rm -rf "$controlFile" + rm -rf "$packageDeb/$licenseDirCore" + + rm -f "$packageDeb/$installPath/libLLVM"*"so"* + rm -f "$packageDeb/$installPath/libFortran"*"so"* + rm -f "$packageDeb/$installPath/libclang"*"so"* + + mkdir -p "$(dirname $controlFile)" + + rm -rf "$packageDeb/$installPath/*" + + debDependencies="${debDependencies}, ${packageNameCore}" + fi + + if [ $BUILD_ALT -eq 0 ] ; then + cp -r "$LLVM_ROOT_LCL/LICENSE.TXT" "$packageDeb/$licenseDir" + else + cp -r "$LLVM_PROJECT_ALT_ROOT/EULA" "$packageDeb/$licenseDir" + cp -r "$LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt" "$packageDeb/$licenseDir" + fi + cp -r "$distBin" "$packageDeb/$installPath/bin" + cp -r "$distInc" "$packageDeb/$installPath/include" + cp -r "$distLib" "$packageDeb/$installPath/lib" + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + for i in "${man_pages[@]}"; do + gzip -f "$distMan/man1/$i" + done + if [ -f "$distMan/man1/clang.1.gz" ]; then + for i in "${amd_man_pages[@]}"; do + ln -sf "clang.1.gz" "$distMan/man1/$i" + done + fi + fi + fi + cp -r "$distMan" "$packageDeb/$installPath/share" + + if [ $BUILD_ALT -eq 0 ]; then + touch "$postinstFile" "$prermFile" + echo "mkdir -p \"$ROCM_INSTALL_PATH/bin\"" >> $postinstFile + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$packageDeb/$installPath/bin/$i" ]; then + echo "ln -s \"../lib/llvm/bin/$i\" \"$ROCM_INSTALL_PATH/bin/$i\"" >> $postinstFile + echo "rm -f \"$ROCM_INSTALL_PATH/bin/$i\"" >> $prermFile + fi + done + echo "rmdir --ignore-fail-on-non-empty \"$ROCM_INSTALL_PATH/bin\"" >> $prermFile + chmod 0555 "$postinstFile" "$prermFile" + cp -P "$backwardsCompatibleSymlink" "$packageDeb/$ROCM_INSTALL_PATH" + fi + + echo "Package: $packageName" > $controlFile + echo "Architecture: $packageArch" >> $controlFile + echo "Section: devel" >> $controlFile + echo "Priority: optional" >> $controlFile + echo "Maintainer: $packageMaintainer" >> $controlFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Release: ${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Depends: $debDependencies" >> $controlFile + echo "Recommends: $debRecommends" >> $controlFile + echo "Description: $packageSummary" >> $controlFile + echo " $packageSummaryLong" >> $controlFile + + fakeroot dpkg-deb -Zgzip --build $packageDeb \ + "${DEB_PATH}/${packageName}_${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}_${packageArch}.deb" + fi + + if [ "$PACKAGEEXT" = "rpm" ]; then + mkdir -p "$(dirname $specFile)" + rm -rf "$RPM_PATH" + mkdir -p "$RPM_PATH" + + if [ "$BUILD_LLVM_DYLIB" == "ON" ] ; then + echo "Name: $packageNameCore" > $specFileCore + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}" >> $specFileCore + echo "Release: ${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}%{?dist}" >> $specFileCore + echo "Summary: $packageSummaryCore" >> $specFileCore + echo "Group: System Environment/Libraries" >> $specFileCore + echo "License: ASL 2.0 with exceptions" >> $specFileCore + echo "Requires: $rpmRequiresCore" >> $specFileCore + + echo "%description" >> $specFileCore + echo "$packageSummaryLongCore" >> $specFileCore + + echo "%prep" >> $specFileCore + echo "%setup -T -D -c -n $packageNameCore" >> $specFileCore + + echo "%install" >> $specFileCore + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFileCore + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/lib" >> $specFileCore + echo "mkdir -p \$RPM_BUILD_ROOT/$licenseDirCore" >> $specFileCore + + echo "cp -R $LLVM_ROOT_LCL/LICENSE.TXT \$RPM_BUILD_ROOT/$licenseDirCore" >> $specFileCore + + echo "cp -RP $distLib/libLLVM*so* \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFileCore + echo "cp -RP $distLib/libFortran*so* \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFileCore + echo "cp -RP $distLib/libclang*so* \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFileCore + + echo "%clean" >> $specFileCore + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFileCore + echo "%files " >> $specFileCore + echo "%defattr(-,root,root,-)" >> $specFileCore + echo "$ROCM_INSTALL_PATH" >> $specFileCore + + echo "%post" >> $specFileCore + echo "%preun" >> $specFileCore + echo "%postun" >> $specFileCore + + echo "rpmbuild --define _topdir $packageRpmCore -ba $specFileCore" + rpmbuild --define "_topdir $packageRpmCore" -ba $specFileCore + + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH + fi + + echo "Name: $packageName" > $specFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}" >> $specFile + echo "Release: ${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}%{?dist}" >> $specFile + echo "Summary: $packageSummary" >> $specFile + echo "Group: System Environment/Libraries" >> $specFile + if [ $BUILD_ALT -eq 1 ]; then + echo "License: AMD Proprietary" >> $specFile + else + echo "License: ASL 2.0 with exceptions" >> $specFile + fi + echo "Requires: $rpmRequires" >> $specFile + + if [ $BUILD_ALT -eq 1 ]; then + echo "%define _build_id_links none" >> $specFile + fi + + echo "%description" >> $specFile + echo "$packageSummaryLong" >> $specFile + + echo "%prep" >> $specFile + echo "%setup -T -D -c -n $packageName" >> $specFile + + echo "%install" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/bin" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/include" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/lib" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/share/man" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + + if [ $BUILD_ALT -eq 0 ]; then + echo "cp -R $LLVM_ROOT_LCL/LICENSE.TXT \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + echo "cp -P $backwardsCompatibleSymlink \$RPM_BUILD_ROOT/$ROCM_INSTALL_PATH" >> $specFile + else + echo "cp -R $LLVM_PROJECT_ALT_ROOT/EULA \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + echo "cp -R $LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + fi + + echo "cp -R $distBin \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "cp -R $distInc \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "cp -R $distLib \$RPM_BUILD_ROOT/$installPath" >> $specFile + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + for i in "${man_pages[@]}"; do + echo "gzip -f $distMan/man1/$i" >> $specFile + done + if [ -f "$distMan/man1/clang.1.gz" ]; then + for i in "${amd_man_pages[@]}"; do + echo "ln -sf clang.1.gz \"$distMan/man1/$i\"" >> $specFile + done + fi + fi + fi + echo "cp -R $distMan \$RPM_BUILD_ROOT/$installPath/share" >> $specFile + + echo "%clean" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "%files " >> $specFile + if [ "$BUILD_LLVM_DYLIB" == "ON" ] ; then + echo "%exclude $installPath/lib/libLLVM*so*" >> $specFile + echo "%exclude $installPath/lib/libFortran*so*" >> $specFile + echo "%exclude $installPath/lib/libclang*so*" >> $specFile + fi + + echo "%defattr(-,root,root,-)" >> $specFile + echo "$ROCM_INSTALL_PATH" >> $specFile + + echo "%post" >> $specFile + if [ $BUILD_ALT -eq 0 ]; then + echo "mkdir -p \"$ROCM_INSTALL_PATH/bin\"" >> $specFile + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$distBin/$i" ]; then + echo "ln -sf ../lib/llvm/bin/$i \"$ROCM_INSTALL_PATH/bin/$i\"" >> $specFile + fi + done + fi + + echo "%preun" >> $specFile + if [ $BUILD_ALT -eq 0 ]; then + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$distBin/$i" ]; then + echo "rm -f \"$ROCM_INSTALL_PATH/bin/$i\"" >> $specFile + fi + done + echo "rmdir --ignore-fail-on-non-empty \"$ROCM_INSTALL_PATH/bin\"" >> $specFile + fi + + echo "%postun" >> $specFile + + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH + fi +} + +package_lightning_static() { + + if [ "$BUILD_TYPE" == "Debug" ]; then + return + fi + + get_llvm_version + local llvmParsedVersion="${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}" + + if [ $BUILD_ALT -eq 1 ]; then + local packageName="rocm-llvm-alt" + local packageSummary="Proprietary ROCm core compiler" + local packageSummaryLong="ROCm core compiler, including proprietary optimizations based on LLVM $llvmParsedVersion" + if [ "$PACKAGEEXT" = "deb" ]; then + local packageNameExtra="rocm-llvm-alt-dev" + else + local packageNameExtra="rocm-llvm-alt-devel" + fi + local packageSummaryExtra="Proprietary ROCm compiler dev tools" + local packageSummaryLongExtra="ROCm compiler dev tools and documentation, including proprietary optimizations, based on LLVM $llvmParsedVersion" + local installPath="$ROCM_INSTALL_PATH/lib/llvm/alt" + else + local packageName="rocm-llvm" + local packageSummary="ROCm core compiler" + local packageSummaryLong="ROCm core compiler based on LLVM $llvmParsedVersion" + if [ "$PACKAGEEXT" = "deb" ]; then + local packageNameExtra="rocm-llvm-dev" + else + local packageNameExtra="rocm-llvm-devel" + fi + local packageSummaryExtra="ROCm compiler dev tools" + local packageSummaryLongExtra="ROCm compiler dev tools and documentation, based on LLVM $llvmParsedVersion" + local installPath="$ROCM_INSTALL_PATH/lib/llvm/" + + fi + + local packageArch="amd64" + local packageVersion="${llvmParsedVersion}.${LLVM_COMMIT_GITDATE}" + local packageMaintainer="ROCm Compiler Support " + local distBin="$INSTALL_PATH/bin" + local distInc="$INSTALL_PATH/include" + local distLib="$INSTALL_PATH/lib" + local distMan="$INSTALL_PATH/share/man" + local licenseDir="$ROCM_INSTALL_PATH/share/doc/$packageName" + local licenseDirExtra="$ROCM_INSTALL_PATH/share/doc/$packageNameExtra" + local packageDir="$BUILD_PATH/package" + local backwardsCompatibleSymlink="$ROCM_INSTALL_PATH/llvm" + + local packageDeb="$packageDir/deb" + local controlFile="$packageDeb/DEBIAN/control" + local postinstFile="$packageDeb/DEBIAN/postinst" + local prermFile="$packageDeb/DEBIAN/prerm" + local specFile="$packageDir/$packageName.spec" + local debDependencies="python3, libc6, libstdc++6|libstdc++8, libstdc++-5-dev|libstdc++-7-dev|libstdc++-11-dev, libgcc-5-dev|libgcc-7-dev|libgcc-11-dev, rocm-core" + if [ $BUILD_ALT -eq 1 ]; then + debDependencies="${debDependencies}, rocm-llvm" + fi + local debRecommends="gcc, g++, gcc-multilib, g++-multilib" + + local packageRpm="$packageDir/rpm" + local packageRpmExtra="$packageDir/rpm" + local specFile="$packageDir/$packageName.spec" + local specFileExtra="$packageDir/$packageNameExtra.spec" + local rpmRequires="rocm-core" + local rpmRequiresExtra="rocm-core, $packageName" + if [ $BUILD_ALT -eq 1 ]; then + rpmRequires+=", rocm-llvm" + rpmRequiresExtra+=", rocm-llvm-devel" + fi + local rpmRecommends="gcc, gcc-c++, devtoolset-7-gcc-c++" + + rm -rf "$packageDir" + echo "rm -rf $packageDir" + rm -rf "$DEB_PATH" + + local amd_compiler_commands=("amdclang" "amdclang++" "amdclang-cl" "amdclang-cpp" "amdflang" "amdlld" "offload-arch") + local amd_man_pages=("amdclang.1.gz" "flang.1.gz" "amdflang.1.gz") + local core_bin=("amdgpu-arch" "amdgpu-offload-arch" "amdlld" "amdllvm" "clang" "clang++" "clang-${LLVM_VERSION_MAJOR}" "clang-cl" + "clang-cpp" "clang-build-select-link" "clang-offload-bundler" "clang-offload-packager" "clang-offload-wrapper" "flang" "flang-new" + "ld64.lld" "ld.lld" "llc" "lld" "lld-link" "llvm-ar" "llvm-bitcode-strip" "llvm-dwarfdump" "llvm-install-name-tool" + "llvm-link" "llvm-mc" "llvm-objcopy" "llvm-objdump" "llvm-otool" "llvm-ranlib" "llvm-readelf" "llvm-readobj" "llvm-strip" + "nvidia-arch" "nvptx-arch" "offload-arch" "opt" "wasm-ld" "amdclang" "amdclang++" "amdclang-${LLVM_VERSION_MAJOR}" "amdclang-cl" + "amdclang-cpp" "amdflang" + "clang++.cfg" "clang-${LLVM_VERSION_MAJOR}.cfg" "clang-cl.cfg" "clang-cpp.cfg" "clang.cfg" "rocm.cfg") + local core_lib=("libclang-cpp.so.${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}" "libclang-cpp.so" "libclang.so" + "libclang.so.${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}" + "libclang.so.${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}" + "libFortranSemantics.a" "libFortranLower.a" "libFortranParser.a" "libFortranCommon.a" + "libFortranRuntime.a" "libFortran_main.a" "libFortranDecimal.a" "libFortranEvaluate.a") + local core_man_pages=("llvm-otool.1" "llvm-readobj.1" "clang.1" "lit.1" "llc.1" "llvm-ar.1" "llvm-dwarfdump.1" "llvm-objcopy.1" "opt.1" + "llvm-link.1" "llvm-mc.1" "llvm-objdump.1" "llvm-ranlib.1" "llvm-readelf.1" "llvm-strip.1") + local dev_man_pages=("bugpoint.1" "FileCheck.1" "llvm-cxxmap.1" "llvm-extract.1" "llvm-lipo.1" "llvm-symbolizer.1" + "tblgen.1" "llvm-as.1" "llvm-diff.1" "llvm-ifs.1" "llvm-locstats.1" "llvm-pdbutil.1" "llvm-remarkutil.1" + "llvm-tblgen.1" "clang-tblgen.1" "llvm-bcanalyzer.1" "llvm-dis.1" "llvm-install-name-tool.1" "llvm-mca.1" + "llvm-profdata.1" "llvm-size.1" "llvm-tli-checker.1" "diagtool.1" "lldb-tblgen.1" "llvm-config.1" "llvm-lib.1" + "llvm-nm.1" "llvm-opt-report.1" "llvm-profgen.1" "llvm-reduce.1" "llvm-stress.1" "mlir-tblgen.1" "dsymutil.1" + "lli.1" "llvm-cov.1" "llvm-dwarfutil.1" "llvm-libtool-darwin.1" "llvm-strings.1" + "extraclangtools.1" "llvm-addr2line.1" "llvm-cxxfilt.1" "llvm-exegesis.1" "scan-build.1") + + if [ "$PACKAGEEXT" = "deb" ]; then + mkdir -p "$packageDeb/$installPath" + mkdir "${controlFile%/*}" + mkdir -p "$DEB_PATH" + mkdir -p "$packageDeb/$licenseDir" + + if [ $BUILD_ALT -eq 0 ] ; then + cp -r "$LLVM_ROOT_LCL/LICENSE.TXT" "$packageDeb/$licenseDir" + else + cp -r "$LLVM_PROJECT_ALT_ROOT/EULA" "$packageDeb/$licenseDir" + cp -r "$LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt" "$packageDeb/$licenseDir" + fi + + mkdir -p "$packageDeb/$installPath/bin" + for i in "${core_bin[@]}"; do + if [ -f "$distBin/$i" ]; then + cp -d "$distBin"/$i "$packageDeb/$installPath/bin/" + fi + done + + cp -d "$distBin/flang" "$packageDeb/$installPath/bin/" + + mkdir -p "$packageDeb/$installPath/lib/clang" + cp -r "$distLib/clang/" "$packageDeb/$installPath/lib/" + + if [ $FLANG_NEW -eq 1 ]; then + mkdir -p "$packageDeb/$installPath/include/flang" + cp -r "$distInc/flang/" "$packageDeb/$installPath/include/" + fi + + for i in "${core_lib[@]}"; do + if [ -f "$distLib/$i" ]; then + cp -dr "$distLib"/$i "$packageDeb/$installPath/lib" + fi + done + + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + mkdir -p "$packageDeb/$installPath/share/man1" + for i in "${core_man_pages[@]}"; do + if [ -f "$distMan/man1/$i" ]; then + gzip -f "$distMan/man1/$i" + cp -d "$distMan/man1/${i}.gz" "$packageDeb/$installPath/share/man1/" + fi + done + if [ -f "$distMan/man1/clang.1.gz" ]; then + for i in "${amd_man_pages[@]}"; do + ln -sf "clang.1.gz" "$distMan/man1/$i" + cp -d "$distMan/man1/${i}" "$packageDeb/$installPath/share/man1/" + done + fi + fi + fi + + if [ $BUILD_ALT -eq 0 ]; then + touch "$postinstFile" "$prermFile" + echo "mkdir -p \"$ROCM_INSTALL_PATH/bin\"" >> $postinstFile + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$packageDeb/$installPath/bin/$i" ]; then + echo "ln -s \"../lib/llvm/bin/$i\" \"$ROCM_INSTALL_PATH/bin/$i\"" >> $postinstFile + echo "rm -f \"$ROCM_INSTALL_PATH/bin/$i\"" >> $prermFile + fi + done + echo "rmdir --ignore-fail-on-non-empty \"$ROCM_INSTALL_PATH/bin\"" >> $prermFile + chmod 0555 "$postinstFile" "$prermFile" + cp -P "$backwardsCompatibleSymlink" "$packageDeb/$ROCM_INSTALL_PATH" + fi + + { + echo "Package: $packageName" + echo "Architecture: $packageArch" + echo "Section: devel" + echo "Priority: optional" + echo "Maintainer: $packageMaintainer" + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" + echo "Release: ${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" + echo "Depends: $debDependencies" + echo "Recommends: $debRecommends" + echo "Description: $packageSummary" + echo " $packageSummaryLong" + } >> "$controlFile" + + fakeroot dpkg-deb -Zgzip --build $packageDeb \ + "${DEB_PATH}/${packageName}_${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}_${packageArch}.deb" + + rm -rf "$controlFile" + rm -rf "$packageDeb" + + mkdir -p "$packageDeb/$installPath" + mkdir "${controlFile%/*}" + mkdir -p "$DEB_PATH" + mkdir -p "$packageDeb/$licenseDirExtra" + + if [ $BUILD_ALT -eq 0 ] ; then + cp -r "$LLVM_ROOT_LCL/LICENSE.TXT" "$packageDeb/$licenseDirExtra" + else + cp -r "$LLVM_PROJECT_ALT_ROOT/EULA" "$packageDeb/$licenseDirExtra" + cp -r "$LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt" "$packageDeb/$licenseDirExtra" + fi + + mkdir -p "$packageDeb/$installPath/bin" + for i in "$distBin"/*; do + bin=$(basename "$i") + contains "$bin" "${core_bin[@]}" "${amd_compiler_commands[@]}" && continue + cp -d "$i" "$packageDeb/$installPath/bin/" + done + + for i in "$distLib"/*; do + lib=$(basename "$i") + contains "$lib" "${core_lib[@]}" && continue + cp -dr "$i" "$packageDeb/$installPath/lib/" + done + rm -rf "$packageDeb/$installPath/lib/clang" + + cp -r "$distInc" "$packageDeb/$installPath/include" + + if [ $FLANG_NEW -eq 1 ]; then + rm -rf "$packageDeb/$installPath/include/flang" + fi + + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + mkdir -p "$packageDeb/$installPath/share/man1" + for i in "${dev_man_pages[@]}"; do + if [ -f "$distMan/man1/$i" ]; then + gzip -f "$distMan/man1/$i" + cp -d "$distMan/man1/${i}.gz" "$packageDeb/$installPath/share/man1/" + fi + done + fi + fi + + debDependencies="${debDependencies}, ${packageName}" + if [ $BUILD_ALT -eq 1 ]; then + debDependencies="${debDependencies}, rocm-llvm-dev" + fi + + echo "Package: $packageNameExtra" > $controlFile + echo "Architecture: $packageArch" >> $controlFile + echo "Section: devel" >> $controlFile + echo "Priority: optional" >> $controlFile + echo "Maintainer: $packageMaintainer" >> $controlFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Release: ${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Depends: $debDependencies" >> $controlFile + echo "Recommends: $debRecommends" >> $controlFile + echo "Description: $packageSummaryExtra" >> $controlFile + echo " $packageSummaryLongExtra" >> $controlFile + + fakeroot dpkg-deb -Zgzip --build $packageDeb \ + "${DEB_PATH}/${packageNameExtra}_${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}_${packageArch}.deb" + fi + + if [ "$PACKAGEEXT" = "rpm" ]; then + + mkdir -p "$(dirname $specFile)" + rm -rf "$RPM_PATH" + mkdir -p "$RPM_PATH" + + echo "Name: $packageName" > $specFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}" >> $specFile + echo "Release: ${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}%{?dist}" >> $specFile + echo "Summary: $packageSummary" >> $specFile + echo "Group: System Environment/Libraries" >> $specFile + echo "License: ASL 2.0 with exceptions" >> $specFile + echo "Requires: $rpmRequires" >> $specFile + + echo "%description" >> $specFile + echo "$packageSummaryLong" >> $specFile + + echo "%prep" >> $specFile + echo "%setup -T -D -c -n $packageName" >> $specFile + + echo "%install" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/bin" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + + if [ $BUILD_ALT -eq 0 ]; then + echo "cp -R $LLVM_ROOT_LCL/LICENSE.TXT \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + echo "cp -P $backwardsCompatibleSymlink \$RPM_BUILD_ROOT/$ROCM_INSTALL_PATH" >> $specFile + else + echo "cp -R $LLVM_PROJECT_ALT_ROOT/EULA \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + echo "cp -R $LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + fi + + for i in "${core_bin[@]}"; do + if [ -f "$distBin/$i" ]; then + echo "cp -d \"$distBin\"/$i \$RPM_BUILD_ROOT/$installPath/bin/" >> $specFile + fi + done + + echo "cp -d \"$distBin/flang\" \$RPM_BUILD_ROOT/$installPath/bin/" >> $specFile + + # Copy the config files + if [ $BUILD_ALT -eq 0 ]; then + echo "cp -d \"$distBin\"/*.cfg \$RPM_BUILD_ROOT/$installPath/bin/" >> $specFile + fi + + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/lib/clang" >> $specFile + echo "cp -R \"$distLib/clang/\" \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFile + + if [ $FLANG_NEW -eq 1 ]; then + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/include/flang" >> $specFile + echo "cp -R \"$distInc/flang/\" \$RPM_BUILD_ROOT/$installPath/include/" >> $specFile + fi + + for i in "${core_lib[@]}"; do + if [ -f "$distLib/$i" ]; then + echo "cp -dr \"$distLib\"/$i \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFile + fi + done + + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/share/man/man1" >> $specFile + + for i in "${core_man_pages[@]}"; do + if [ -f "$distMan/man1/$i" ]; then + echo "gzip -f $distMan/man1/$i" >> $specFile + echo "cp -d $distMan/man1/${i}.gz \$RPM_BUILD_ROOT/$installPath/share/man/man1/" >> $specFile + fi + done + + if [ -f "$distMan/man1/clang.1.gz" ]; then + for i in "${amd_man_pages[@]}"; do + echo "ln -sf clang.1.gz \"$distMan/man1/$i\"" >> $specFile + echo "cp -d $distMan/man1/${i} \$RPM_BUILD_ROOT/$installPath/share/man/man1/" >> $specFile + done + fi + fi + fi + + echo "%clean" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "%files " >> $specFile + echo "%defattr(-,root,root,-)" >> $specFile + { + echo "$ROCM_INSTALL_PATH" + + echo "%post" + if [ $BUILD_ALT -eq 0 ]; then + echo "mkdir -p \"$ROCM_INSTALL_PATH/bin\"" + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$distBin/$i" ]; then + echo "ln -sf ../lib/llvm/bin/$i \"$ROCM_INSTALL_PATH/bin/$i\"" + fi + done + fi + + echo "%preun" + if [ $BUILD_ALT -eq 0 ]; then + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$distBin/$i" ]; then + echo "rm -f \"$ROCM_INSTALL_PATH/bin/$i\"" + fi + done + echo "rmdir --ignore-fail-on-non-empty \"$ROCM_INSTALL_PATH/bin\"" + fi + + echo "%postun" + } >> "$specFile" + + echo "rpmbuild --define _topdir $packageRpm -ba $specFile" + rpmbuild --define "_topdir $packageRpm" -ba $specFile + + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH + + echo "Name: $packageNameExtra" > $specFileExtra + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}" >> $specFileExtra + echo "Release: ${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}%{?dist}" >> $specFileExtra + echo "Summary: $packageSummaryExtra" >> $specFileExtra + echo "Group: System Environment/Libraries" >> $specFileExtra + if [ $BUILD_ALT -eq 1 ]; then + echo "License: AMD Proprietary" >> $specFileExtra + else + echo "License: ASL 2.0 with exceptions" >> $specFileExtra + fi + echo "Requires: $rpmRequiresExtra" >> $specFileExtra + + if [ $BUILD_ALT -eq 1 ]; then + echo "%define _build_id_links none" >> $specFileExtra + fi + + echo "%description" >> $specFileExtra + echo "$packageSummaryLongExtra" >> $specFileExtra + + echo "%prep" >> $specFileExtra + echo "%setup -T -D -c -n $packageNameExtra" >> $specFileExtra + + echo "%install" >> $specFileExtra + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFileExtra + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/bin" >> $specFileExtra + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/include" >> $specFileExtra + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/lib" >> $specFileExtra + echo "mkdir -p \$RPM_BUILD_ROOT/$licenseDirExtra" >> $specFileExtra + + if [ $BUILD_ALT -eq 0 ]; then + echo "cp -R $LLVM_ROOT_LCL/LICENSE.TXT \$RPM_BUILD_ROOT/$licenseDirExtra" >> $specFileExtra + echo "cp -P $backwardsCompatibleSymlink \$RPM_BUILD_ROOT/$ROCM_INSTALL_PATH" >> $specFileExtra + else + echo "cp -R $LLVM_PROJECT_ALT_ROOT/EULA \$RPM_BUILD_ROOT/$licenseDirExtra" >> $specFileExtra + echo "cp -R $LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt \$RPM_BUILD_ROOT/$licenseDirExtra" >> $specFileExtra + fi + + for i in "$distBin"/*; do + bin=$(basename "$i") + contains "$bin" "${core_bin[@]}" "${amd_compiler_commands[@]}" && continue + echo "cp -d \"$i\" \$RPM_BUILD_ROOT/$installPath/bin/" >> $specFileExtra + done + + for i in "$distLib"/*; do + lib=$(basename "$i") + contains "$lib" "${core_lib[@]}" && continue + echo "cp -dr \"$i\" \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFileExtra + done + + echo "cp -R $distInc \$RPM_BUILD_ROOT/$installPath" >> $specFileExtra + + echo "rm -rf \$RPM_BUILD_ROOT/$installPath/lib/clang" >> $specFileExtra + + if [ $FLANG_NEW -eq 1 ]; then + + echo "rm -rf \$RPM_BUILD_ROOT/$installPath/include/flang" >> $specFileExtra + fi + + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/share/man/man1" >> $specFileExtra + + for i in "${extra_man_pages[@]}"; do + if [ -f "$distMan/man1/$i" ]; then + echo "gzip -f $distMan/man1/$i" >> $specFileExtra + echo "cp -d \"$distMan/man1/${i}.gz\" \$RPM_BUILD_ROOT/$installPath/share/man/man1/" >> $specFileExtra + fi + done + fi + fi + + echo "%clean" >> $specFileExtra + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFileExtra + echo "%files " >> $specFileExtra + + echo "%defattr(-,root,root,-)" >> $specFileExtra + echo "$ROCM_INSTALL_PATH" >> $specFileExtra + + echo "%post" >> $specFileExtra + echo "%preun" >> $specFileExtra + echo "%postun" >> $specFileExtra + + rpmbuild --define "_topdir $packageRpmExtra" -ba $specFileExtra + mv $packageRpmExtra/RPMS/x86_64/*.rpm $RPM_PATH + fi +} + +package_docs() { + + if [ "$BUILD_TYPE" == "Debug" ]; then + return + fi + + if [ "$BUILD_MANPAGES" == "OFF" ]; then + return + fi + + get_llvm_version + local llvmParsedVersion="${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}" + + local packageName="rocm-llvm-docs" + local packageSummary="ROCm LLVM compiler documentation" + local packageSummaryLong="Documenation for LLVM $llvmParsedVersion" + local installPath="$ROCM_INSTALL_PATH/lib/llvm/share" + + local packageArch="amd64" + local packageVersion="${llvmParsedVersion}.${LLVM_COMMIT_GITDATE}" + local packageMaintainer="ROCm Compiler Support " + local distDoc="$INSTALL_PATH/share/doc" + + local licenseDir="$ROCM_INSTALL_PATH/share/doc/$packageName" + local packageDir="$BUILD_PATH/package" + + local packageDeb="$packageDir/deb" + local controlFile="$packageDeb/DEBIAN/control" + + local packageRpm="$packageDir/rpm" + local specFile="$packageDir/$packageName.spec" + + rm -rf "$packageDir" + echo "rm -rf $packageDir" + + if [ "$PACKAGEEXT" = "deb" ]; then + + mkdir -p "$packageDeb/$installPath" + mkdir "${controlFile%/*}" + mkdir -p "$packageDeb/$licenseDir" + + cp -r "$LLVM_ROOT_LCL/LICENSE.TXT" "$packageDeb/$licenseDir" + + cp -r "$distDoc" "$packageDeb/$installPath/doc" + + { + echo "Package: $packageName" + echo "Architecture: $packageArch" + echo "Section: devel" + echo "Priority: optional" + echo "Maintainer: $packageMaintainer" + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" + echo "Release: ${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" + echo "Recommends: $debRecommends" + echo "Description: $packageSummary" + echo " $packageSummaryLong" + } >> "$controlFile" + + fakeroot dpkg-deb -Zgzip --build $packageDeb \ + "${DEB_PATH}/${packageName}_${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}_${packageArch}.deb" + fi + + if [ "$PACKAGEEXT" = "rpm" ]; then + + mkdir -p "$(dirname $specFile)" + mkdir -p "$RPM_PATH" + + echo "Name: $packageName" > $specFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}" >> $specFile + echo "Release: ${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}%{?dist}" >> $specFile + echo "Summary: $packageSummary" >> $specFile + echo "Group: System Environment/Libraries" >> $specFile + echo "License: ASL 2.0 with exceptions" >> $specFile + + echo "%description" >> $specFile + echo "$packageSummaryLong" >> $specFile + + echo "%prep" >> $specFile + echo "%setup -T -D -c -n $packageName" >> $specFile + + echo "%install" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/doc" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + + echo "cp -R $LLVM_ROOT_LCL/LICENSE.TXT \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + + echo "cp -R \"$distDoc\" \$RPM_BUILD_ROOT/$installPath" >> $specFile + + echo "%clean" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "%files " >> $specFile + echo "%defattr(-,root,root,-)" >> $specFile + + echo "$ROCM_INSTALL_PATH" >> $specFile + + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH + + fi + +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +build() { + mkdir -p "${INSTALL_PATH}" + build_lightning + if [ $BUILD_ALT -eq 0 ] ; then + create_compiler_config_files + fi +} + +case $TARGET in + (clean) clean_lightning ;; + (all) + time build + time package_lightning_static + time package_docs + ;; + (build) + build + ;; + (package) + package_lightning_static + package_docs + ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_miopen-deps.sh b/rocm-build/build_miopen-deps.sh new file mode 100755 index 000000000..48910fac0 --- /dev/null +++ b/rocm-build/build_miopen-deps.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src MIOpen + +build_miopen_mlir() { + echo "Building rocMLIR" + mlir_commit="$1" + if [ -z "$mlir_commit" ]; then + echo "rocMLIR entry was not found in requirements.txt" + return + fi + mkdir -p /var/tmp/rocMLIR && cd /var/tmp/rocMLIR + wget -nv "https://www.github.com/ROCmSoftwarePlatform/rocMLIR/archive/${mlir_commit}.tar.gz" + tar -xzf "${mlir_commit}.tar.gz" + cd "rocMLIR-${mlir_commit}" + mkdir build && cd build + cmake \ + -G Ninja \ + -DCMAKE_C_COMPILER="${ROCM_PATH}/llvm/bin/clang" \ + -DCMAKE_CXX_COMPILER="${ROCM_PATH}/llvm/bin/clang++" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH};${HOME}/miopen-deps" \ + -DCMAKE_INSTALL_PREFIX="$ROCM_PATH" \ + -DBUILD_FAT_LIBROCKCOMPILER=1 \ + .. + cmake --build . -- librockCompiler -j${PROC} + cmake --build . -- install + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + + echo "Finished building rocMLIR" +} + +clean_miopen_mlir() { + echo "Cleaning rocMLIR" + rm -rf /var/tmp/rocMLIR +} + +build_miopen_deps() { + echo "Start build" + cd "$COMPONENT_SRC" + + # Commenting the rocMLIR & composable_kernel from requirements.txt + sed -i '/ROCmSoftwarePlatform\/rocMLIR@\|ROCmSoftwarePlatform\/composable_kernel@/s/^/#/' requirements.txt + # Extract MLIR commit from requirements.txt + MLIR_COMMIT="$(awk '/rocMLIR/ {split($1, s, "@"); print s[2]}' requirements.txt)" + + + pip3 install https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz + PATH="${PATH}:${ROCM_PATH}:${HOME}/.local/bin" rbuild prepare -d "$HOME/miopen-deps" --cxx=${ROCM_PATH}/llvm/bin/clang++ --cc ${ROCM_PATH}/llvm/bin/clang + build_miopen_mlir "$MLIR_COMMIT" + + show_build_cache_stats +} + +clean_miopen_deps() { + echo "Cleaning MIOpen-Deps build directory: ${BUILD_DIR}" + rm -rf "$BUILD_DIR" + clean_miopen_mlir + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_miopen_deps ;; + outdir) ;; + clean) clean_miopen_deps ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_miopen-hip.sh b/rocm-build/build_miopen-hip.sh new file mode 100755 index 000000000..e4267b96d --- /dev/null +++ b/rocm-build/build_miopen-hip.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src MIOpen + +PACKAGE_DIR=${PACKAGE_DIR%\/*}/miopen-hip +DEB_PATH=$PACKAGE_DIR +RPM_PATH=$PACKAGE_DIR + +build_miopen_hip() { + echo "Start build" + + cd $COMPONENT_SRC + + checkout_lfs + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + mkdir "$BUILD_DIR" && cd "$BUILD_DIR" + cmake \ + $(rocm_common_cmake_params) \ + -DMIOPEN_BACKEND=HIP \ + -DCMAKE_CXX_COMPILER="${ROCM_PATH}/llvm/bin/clang++" \ + -DCMAKE_C_COMPILER="${ROCM_PATH}/llvm/bin/clang" \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH};${ROCM_PATH}/hip;${HOME}/miopen-deps" \ + -DHIP_OC_COMPILER="${ROCM_PATH}/bin/clang-ocl" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf $BUILD_DIR/_CPack_Packages/ && find $BUILD_DIR -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_miopen_hip() { + echo "Cleaning MIOpen-HIP build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +checkout_lfs() { + git lfs install --local --force + git lfs pull --exclude= +} + +stage2_command_args "$@" + +case $TARGET in + build) build_miopen_hip ;; + outdir) print_output_directory ;; + clean) clean_miopen_hip ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_mivisionx.sh b/rocm-build/build_mivisionx.sh new file mode 100755 index 000000000..7bfe40dc3 --- /dev/null +++ b/rocm-build/build_mivisionx.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src MIVisionX +BUILD_DEV=ON + +build_mivisionx() { + echo "Start build" + + mkdir -p $BUILD_DIR && cd $BUILD_DIR + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + BUILD_DEV=OFF + fi + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100" + fi + + cmake \ + $(rocm_common_cmake_params) \ + -DROCM_PATH="$ROCM_PATH" \ + -DBUILD_DEV=$BUILD_DEV \ + -DCMAKE_INSTALL_LIBDIR=$(getInstallLibDir) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DROCM_DEP_ROCMCORE=ON \ + -DROCAL_PYTHON=OFF \ + ${LAUNCHER_FLAGS} \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cpack -G ${PKGTYPE^^} + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR + cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_mivisionx() { + echo "Cleaning MIVisionX build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_mivisionx ;; + outdir) print_output_directory ;; + clean) clean_mivisionx ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_opencl_on_rocclr.sh b/rocm-build/build_opencl_on_rocclr.sh new file mode 100755 index 000000000..59fd3984d --- /dev/null +++ b/rocm-build/build_opencl_on_rocclr.sh @@ -0,0 +1,155 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...] [make options]" + echo + echo "Options:" + echo " -h, --help Prints this help" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} +MAKEOPTS="$DASH_JAY" + +BUILD_PATH="$(getBuildPath opencl-on-rocclr)" + +TARGET="build" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_DEB="$PACKAGE_ROOT/deb/opencl-on-rocclr" +PACKAGE_RPM="$PACKAGE_ROOT/rpm/opencl-on-rocclr" +CORE_BUILD_DIR="$(getBuildPath hsa-core)" +ROCclr_BUILD_DIR="$(getBuildPath rocclr)" +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_opencl_on_rocclr() { + rm -rf "$BUILD_PATH" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "$PACKAGE_ROOT/bin/clinfo" + rm -rf "$PACKAGE_ROOT/lib/libOpenCL.so*" + rm -rf "$PACKAGE_ROOT/lib/libamdocl64.so" + rm -rf "$PACKAGE_ROOT/lib/libcltrace.so" +} + +build_opencl_on_rocclr() { + if [ -e "$CLR_ROOT/CMakeLists.txt" ]; then + _OCL_CMAKELIST_DIR="$CLR_ROOT" + _OCL_CMAKELIST_OPT="-DCLR_BUILD_HIP=OFF -DCLR_BUILD_OCL=ON" + elif [ ! -e "$OPENCL_ON_ROCclr_ROOT/CMakeLists.txt" ]; then + echo "No $OPENCL_ON_ROCclr_ROOT/CMakeLists.txt file, skipping opencl on rocclr" >&2 + echo "No $OPENCL_ON_ROCclr_ROOT/CMakeLists.txt file, skipping opencl on rocclr" + exit 0 + else + _OCL_CMAKELIST_DIR="$OPENCL_ON_ROCclr_ROOT" + _OCL_CMAKELIST_OPT="" + fi + + echo "$_OCL_CMAKELIST_DIR" + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + + if [ ! -e Makefile ]; then + echo "Building OpenCL-On-ROCclr CMake environment" + + cmake \ + $(rocm_cmake_params) \ + -DUSE_COMGR_LIBRARY=ON \ + $(rocm_common_cmake_params) \ + -DLINK_COMGR_STATIC="no" \ + -DBUILD_TESTS=ON \ + $_OCL_CMAKELIST_OPT \ + "$_OCL_CMAKELIST_DIR" + + echo "CMake complete" + fi + + echo "Building OpenCL-On-ROCclr" + cmake --build . -- $MAKEOPTS + + echo "Installing OpenCL-On-ROCclr" + cmake --build . -- $MAKEOPTS install + + popd +} + +package_opencl_on_rocclr() { + echo "Packaging OpenCL-On-ROCclr" + pushd "$BUILD_PATH" + cmake --build . -- package + mkdir -p $PACKAGE_DEB + mkdir -p $PACKAGE_RPM + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm + popd +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_opencl_on_rocclr ;; + (build) build_opencl_on_rocclr ; package_opencl_on_rocclr ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_openmp_extras.sh b/rocm-build/build_openmp_extras.sh new file mode 100755 index 000000000..2331b0671 --- /dev/null +++ b/rocm-build/build_openmp_extras.sh @@ -0,0 +1,673 @@ +#!/bin/bash + +source ${BASH_SOURCE%/*}/compute_utils.sh + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +packageMajorVersion="17.60" +packageMinorVersion="0" +packageVersion="${packageMajorVersion}.${packageMinorVersion}.${ROCM_LIBPATCH_VERSION}" +BUILD_PATH="$(getBuildPath openmp-extras)" +DEB_PATH="$(getDebPath openmp-extras)" +RPM_PATH="$(getRpmPath openmp-extras)" +TARGET="build" +MAKEOPTS="$DASH_JAY" + +export INSTALL_PREFIX=${ROCM_INSTALL_PATH} + +while [ "$1" != "" ]; +do + case $1 in + -c | --clean ) + TARGET="clean" ;; + -p | --package ) + TARGET="package" ;; + -r | --release ) + ;; + -a | --address_sanitizer ) + set_asan_env_vars + set_address_sanitizer_on + export ROCM_CMAKECONFIG_PATH="$INSTALL_PREFIX/lib/asan/cmake" + export VERBOSE=1 + export LDSHARED="$INSTALL_PREFIX/lib/llvm/bin/clang -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2" + export SANITIZER=1 ;; + -o | --outdir ) + shift 1; PKGTYPE=$1 ; TARGET="outdir" ;; + -h | --help ) + printUsage ; exit 0 ;; + *) + MAKEARG=$@ ; break ;; + esac + shift 1 +done + + +clean_openmp_extras() { + rm -rf "$BUILD_PATH" + rm -rf "$INSTALL_PREFIX/openmp-extras" +} + +toStdoutStderr(){ + printf '%s\n' "$@" >&2 + printf '%s\n' "$@" +} + +clean_examples(){ + rm -f "$1"/*.sh + rm -f "$1"/fortran/*.sh + rm -f "$1"/openmp/*.sh +} + +build_openmp_extras() { + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + echo "Building openmp-extras" + echo BUILD_PATH: $BUILD_PATH + echo "INSTALL_PREFIX:$INSTALL_PREFIX" + export AOMP_STANDALONE_BUILD=0 + set +e + checkDevel=$(grep "ENABLE_DEVEL_PACKAGE=ON" $AOMP_REPOS/aomp/bin/build_openmp.sh) + set -e + if [ "$checkDevel" == "" ]; then + export AOMP=$INSTALL_PREFIX/lib/llvm + else + export DEVEL_PACKAGE="devel/" + export AOMP=$INSTALL_PREFIX/openmp-extras + fi + export BUILD_AOMP=$BUILD_PATH + + if [ "$EPSDB" == "1" ]; then + export ROCM_DIR=$ROCM_INSTALL_PATH + else + export ROCM_DIR=$INSTALL_PREFIX + fi + + if [ -d "$ROCM_DIR" ]; then + echo "--------------------------" + echo "ROCM_DIR:" + echo "----------" + ls $ROCM_DIR + echo "--------------------------" + fi + if [ -d "$ROCM_DIR"/include ]; then + echo "ROCM_DIR/include:" + echo "----------" + ls $ROCM_DIR/include + echo "--------------------------" + fi + if [ -d "$ROCM_DIR"/include/hsa ]; then + echo "ROCM_DIR/include/hsa:" + echo "----------" + ls $ROCM_DIR/include/hsa + echo "--------------------------" + fi + + export AOMP_JENKINS_BUILD_LIST="extras openmp pgmath flang flang_runtime" + echo "BEGIN Build of openmp-extras" + "$AOMP_REPOS"/aomp/bin/build_aomp.sh $MAKEARG + popd +} + +package_openmp_extras_deb() { + local packageName=$1 + local packageDeb="$packageDir/deb" + local packageArch="amd64" + local packageMaintainer="Openmp Extras Support " + local packageSummary="OpenMP Extras provides openmp and flang libraries." + local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + local debDependencies="rocm-llvm, rocm-device-libs, rocm-core" + local debRecommends="gcc, g++" + local controlFile="$packageDeb/openmp-extras/DEBIAN/control" + + if [ "$packageName" == "openmp-extras-runtime" ]; then + packageType="runtime" + debDependencies="rocm-core, hsa-rocr" + else + local debProvides="openmp-extras" + local debConflicts="openmp-extras" + local debReplaces="openmp-extras" + packageType="devel" + debDependencies="$debDependencies, openmp-extras-runtime, hsa-rocr-dev" + fi + + if [ -f "$BUILD_PATH"/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras/devel ]; then + if [ "$packageType" == "runtime" ]; then + rm -rf "$packageDir" + rm -rf "$DEB_PATH" + mkdir -p "$DEB_PATH" + mkdir -p $packageDeb/openmp-extras + + mkdir -p $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras + cp -r $AOMP_REPOS/aomp/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.apache2 + cp -r $AOMP_REPOS/aomp-extras/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.mit + cp -r $AOMP_REPOS/flang/LICENSE.txt $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.flang + else + rm -rf $packageDeb/openmp-extras/* + mkdir -p $packageDeb/openmp-extras$copyPath/bin + cp -r --parents "$installPath"/lib-debug/src $packageDeb/openmp-extras + fi + else + if [ "$packageType" == "runtime" ]; then + rm -rf "$packageDir" + rm -rf "$DEB_PATH" + mkdir -p "$DEB_PATH" + mkdir -p $packageDeb/openmp-extras$installPath + mkdir -p $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include + mkdir -p $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras + cp -r $AOMP_REPOS/aomp/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.apache2 + cp -r $AOMP_REPOS/aomp-extras/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.mit + cp -r $AOMP_REPOS/flang/LICENSE.txt $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.flang + else + rm -rf $packageDeb/openmp-extras$installPath/* + rm -rf $packageDeb/openmp-extras/bin + rm -rf $packageDeb/openmp-extras$copyPath/share + echo mkdir -p $packageDeb/openmp-extras$copyPath/bin + mkdir -p $packageDeb/openmp-extras$copyPath/bin + mkdir -p $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include + fi + fi + + mkdir -p "$(dirname $controlFile)" + + if [ -f "$BUILD_PATH"/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras/devel ]; then + if [ "$packageType" == "runtime" ]; then + cat "$BUILD_PATH"/build/installed_files.txt | grep -P '\.so|\.a' | cut -d":" -f2 | cut -d" " -f2 | xargs -I {} cp -d --parents {} "$packageDeb"/openmp-extras + + cp -d --parents "$installPath/lib/libgomp.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib/libiomp5.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib-debug/libgomp.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib-debug/libiomp5.so" "$packageDeb"/openmp-extras + else + cat "$BUILD_PATH"/build/installed_files.txt | grep -Pv '\.so|\.a' | cut -d":" -f2 | cut -d" " -f2 | xargs -I {} cp -d --parents {} "$packageDeb"/openmp-extras + fi + else + cp -r "$AOMP"/"$packageType"/* "$packageDeb"/openmp-extras"$installPath" + fi + + if [ "$packageType" == "devel" ]; then + mkdir -p "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + echo cp -r "$AOMP_REPOS"/aomp/examples/fortran "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + cp -r "$AOMP_REPOS"/aomp/examples/fortran "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + cp -r "$AOMP_REPOS"/aomp/examples/openmp "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + cp -r "$AOMP_REPOS"/aomp/examples/tools "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + clean_examples "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + fi + + if [ "$packageType" == "devel" ]; then + ln -s ../../../../include/omp.h $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include/omp.h + ln -s ../../../../include/ompt.h $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include/ompt.h + ln -s ../../../../include/omp-tools.h $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include/omp-tools.h + if [ ! -h "$packageDeb"/openmp-extras"$copyPath"/bin/aompcc ] && [ -e "$packageDeb"/openmp-extras"$installPath"/bin/aompcc ]; then + ln -s ../lib/llvm/bin/aompcc "$packageDeb"/openmp-extras"$copyPath"/bin/aompcc + fi + if [ -e "$packageDeb"/openmp-extras"$installPath"/bin/mymcpu ]; then + ln -s ../lib/llvm/bin/mymcpu "$packageDeb"/openmp-extras"$copyPath"/bin/mymcpu + fi + if [ -e "$packageDeb"/openmp-extras"$installPath"/bin/mygpu ]; then + ln -s ../lib/llvm/bin/mygpu "$packageDeb"/openmp-extras"$copyPath"/bin/mygpu + fi + fi + + ls -l "$packageDeb"/openmp-extras"$installPath" + if [ "$packageType" == "devel" ]; then + ls -l "$packageDeb"/openmp-extras"$installPath"/bin + ls -l "$packageDeb"/openmp-extras"$copyPath"/bin + fi + + { + echo "Package: $packageName" + echo "Architecture: $packageArch" + echo "Section: devel" + echo "Priority: optional" + echo "Maintainer: $packageMaintainer" + echo "Version: $packageVersion-${CPACK_DEBIAN_PACKAGE_RELEASE}" + echo "Depends: $debDependencies" + echo "Recommends: $debRecommends" + if [ "$packageType" == "devel" ]; then + echo "Provides: $debProvides" + echo "Conflicts: $debConflicts" + echo "Replaces: $debReplaces" + fi + echo "Description: $packageSummary" + echo " $packageSummaryLong" + } > $controlFile + fakeroot dpkg-deb -Zgzip --build $packageDeb/openmp-extras \ + "$DEB_PATH/${packageName}_${packageVersion}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${packageArch}.deb" +} + +package_openmp_extras_asan_deb() { + local packageName=$1 + local packageDeb="$packageDir/deb" + local packageArch="amd64" + local packageMaintainer="Openmp Extras Support " + local packageSummary="AddressSanitizer OpenMP Extras provides instrumented openmp and flang libraries." + local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + local debDependencies="hsa-rocr-asan, rocm-core-asan" + local debRecommends="gcc, g++" + local controlFile="$packageDeb/openmp-extras/DEBIAN/control" + local asanLibDir="runtime" + + rm -rf "$packageDir" + rm -rf "$DEB_PATH" + mkdir -p "$DEB_PATH" + local licenseDir="$packageDeb/openmp-extras$copyPath/share/doc/openmp-extras-asan" + mkdir -p $licenseDir + cp -r $AOMP_REPOS/aomp/LICENSE $licenseDir/LICENSE.apache2 + cp -r $AOMP_REPOS/aomp-extras/LICENSE $licenseDir/LICENSE.mit + cp -r $AOMP_REPOS/flang/LICENSE.txt $licenseDir/LICENSE.flang + + mkdir -p "$(dirname $controlFile)" + if [ -f "$BUILD_PATH"/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras ]; then + cat "$BUILD_PATH"/build/installed_files.txt | grep -P 'asan' | cut -d":" -f2 | cut -d" " -f2 | xargs -I {} cp -d --parents {} "$packageDeb"/openmp-extras + + cp -d --parents "$installPath/lib/asan/libgomp.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib/asan/libiomp5.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib-debug/asan/libgomp.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib-debug/asan/libiomp5.so" "$packageDeb"/openmp-extras + + else + mkdir -p $packageDeb/openmp-extras$installPath/lib/asan + mkdir -p $packageDeb/openmp-extras$installPath/lib-debug/asan + cp -r "$AOMP"/lib/asan/* "$packageDeb"/openmp-extras"$installPath"/lib/asan/ + cp -r "$AOMP"/lib-debug/asan/* "$packageDeb"/openmp-extras"$installPath"/lib-debug/asan/ + cp -r "$AOMP"/"$asanLibDir"/lib/asan/* "$packageDeb"/openmp-extras"$installPath"/lib/asan/ + cp -r "$AOMP"/"$asanLibDir"/lib-debug/asan/* "$packageDeb"/openmp-extras"$installPath"/lib-debug/asan/ + cp -r "$AOMP"/devel/lib/asan/* "$packageDeb"/openmp-extras"$installPath"/lib/asan/ + cp -r "$AOMP"/devel/lib-debug/asan/* "$packageDeb"/openmp-extras"$installPath"/lib-debug/asan/ + fi + + { + echo "Package: $packageName" + echo "Architecture: $packageArch" + echo "Section: devel" + echo "Priority: optional" + echo "Maintainer: $packageMaintainer" + echo "Version: $packageVersion-${CPACK_DEBIAN_PACKAGE_RELEASE}" + echo "Depends: $debDependencies" + echo "Recommends: $debRecommends" + echo "Description: $packageSummary" + echo " $packageSummaryLong" + } > $controlFile + fakeroot dpkg-deb -Zgzip --build $packageDeb/openmp-extras \ + "$DEB_PATH/${packageName}_${packageVersion}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${packageArch}.deb" +} + + +package_openmp_extras_rpm() { + local packageName=$1 + local packageRpm="$packageDir/rpm" + local specFile="$packageDir/$packageName.spec" + local packageSummary="OpenMP Extras provides openmp and flang libraries." + local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + local rpmRequires="rocm-llvm, rocm-device-libs, rocm-core" + if [ "$packageName" == "openmp-extras-runtime" ]; then + packageType="runtime" + rpmRequires="rocm-core, hsa-rocr" + else + local rpmProvides="openmp-extras" + local rpmObsoletes="openmp-extras" + packageType="devel" + rpmRequires="$rpmRequires, openmp-extras-runtime, hsa-rocr-devel" + fi + + rm -f "$AOMP_REPOS"/aomp/examples/*.sh + rm -f "$AOMP_REPOS"/aomp/examples/fortran/*.sh + rm -f "$AOMP_REPOS"/aomp/examples/openmp/*.sh + + + if [ "$packageType" == "runtime" ]; then + rm -rf "$packageDir" + rm -rf "$RPM_PATH" + mkdir -p "$RPM_PATH" + fi + echo RPM_PATH: $RPM_PATH + echo mkdir -p $(dirname $specFile) + mkdir -p "$(dirname $specFile)" + + { + echo "%define is_runtime %( if [ $packageType == runtime ]; then echo "1" ; else echo "0"; fi )" + echo "%define is_devel %( if [ $packageType == devel ]; then echo "1" ; else echo "0"; fi )" + + echo "Name: $packageName" + echo "Version: $packageVersion" + echo "Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}" + echo "Summary: $packageSummary" + echo "Group: System Environment/Libraries" + echo "License: MIT and ASL 2.0 and ASL 2.0 with exceptions" + echo "Vendor: Advanced Micro Devices, Inc." + echo "Requires: $rpmRequires" + echo "%if %is_devel" + echo "Provides: $rpmProvides" + echo "Obsoletes: $rpmObsoletes" + echo "%endif" + echo "%define debug_package %{nil}" + echo "%define __os_install_post %{nil}" + echo "%description" + echo "$packageSummaryLong" + + echo "%prep" + echo "%setup -T -D -c -n $packageName" + echo "%build" + + echo "%install" + echo "if [ -f $BUILD_PATH/build/installed_files.txt ] && [ ! -d $INSTALL_PREFIX/openmp-extras/devel ]; then" + echo " %if %is_runtime" + echo " mkdir -p \$RPM_BUILD_ROOT/openmp-extras" + echo " %else" + echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/bin" + echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib/clang/$llvm_ver/include" + echo " %endif" + echo "else" + echo " %if %is_runtime" + echo " mkdir -p \$RPM_BUILD_ROOT$installPath" + echo " %else" + echo " rm -rf \$RPM_BUILD_ROOT/openmp-extras$installPath/*" + echo " echo mkdir -p \$RPM_BUILD_ROOT$copyPath/bin" + echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/bin" + echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib/clang/$llvm_ver/include" + echo " %endif" + echo "fi" + + echo "if [ -f $BUILD_PATH/build/installed_files.txt ] && [ ! -d $INSTALL_PREFIX/openmp-extras/devel ]; then" + echo " %if %is_runtime" + echo " cat $BUILD_PATH/build/installed_files.txt | grep -P '\.so|\.a' | cut -d':' -f2 | cut -d' ' -f2 | xargs -I {} cp -d --parents {} \$RPM_BUILD_ROOT" + + echo " cp -d --parents "$installPath/lib/libgomp.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib/libiomp5.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib-debug/libgomp.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib-debug/libiomp5.so" \$RPM_BUILD_ROOT" + echo " %endif" + echo "%if %is_devel" + echo " cat "$BUILD_PATH"/build/installed_files.txt | grep -Pv '\.so|\.a' | cut -d':' -f2 | cut -d' ' -f2 | xargs -I {} cp -d --parents {} \$RPM_BUILD_ROOT" + echo "%endif" + + echo "else" + echo " cp -r $AOMP/$packageType/* \$RPM_BUILD_ROOT$installPath" + echo " %if %is_devel" + echo " rm -rf \$RPM_BUILD_ROOT$installPath/share" + echo " %endif" + echo "fi" + + echo "%if %is_devel" + echo " if [ ! -h \$RPM_BUILD_ROOT$copyPath/bin/aompcc ] && [ -e \$RPM_BUILD_ROOT$installPath/bin/aompcc ]; then" + echo " ln -s ../lib/llvm/bin/aompcc \$RPM_BUILD_ROOT$copyPath/bin/aompcc" + echo " fi" + echo " if [ -e \$RPM_BUILD_ROOT$installPath/bin/mymcpu ]; then" + echo " ln -s ../lib/llvm/bin/mymcpu \$RPM_BUILD_ROOT$copyPath/bin/mymcpu" + echo " fi" + echo " if [ -e \$RPM_BUILD_ROOT$installPath/bin/mygpu ]; then" + echo " ln -s ../lib/llvm/bin/mygpu \$RPM_BUILD_ROOT$copyPath/bin/mygpu" + echo " fi" + echo " ls \$RPM_BUILD_ROOT$copyPath" + + echo " ln -s ../../../../include/omp.h \$RPM_BUILD_ROOT/$installPath/lib/clang/$llvm_ver/include/omp.h" + echo " ln -s ../../../../include/ompt.h \$RPM_BUILD_ROOT/$installPath/lib/clang/$llvm_ver/include/ompt.h" + echo " ln -s ../../../../include/omp-tools.h \$RPM_BUILD_ROOT/$installPath/lib/clang/$llvm_ver/include/omp-tools.h" + echo "%endif" + echo 'find $RPM_BUILD_ROOT \! -type d | sed "s|$RPM_BUILD_ROOT||"> files.list' + + echo "%if %is_runtime" + echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras" + echo " cp -r $AOMP_REPOS/aomp/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras/LICENSE.apache2" + echo " cp -r $AOMP_REPOS/aomp-extras/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras/LICENSE.mit" + echo " cp -r $AOMP_REPOS/flang/LICENSE.txt \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras/LICENSE.flang" + echo "%else" + echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples" + echo " cp -r $AOMP_REPOS/aomp/examples/fortran \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples" + echo " cp -r $AOMP_REPOS/aomp/examples/openmp \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples" + echo " cp -r $AOMP_REPOS/aomp/examples/tools \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples" + clean_examples \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples + echo "%endif" + echo "%clean" + echo "rm -rf \$RPM_BUILD_ROOT" + + echo "%files -f files.list" + echo "%if %is_runtime" + echo " $copyPath/share/doc/openmp-extras" + echo "%else" + echo " $copyPath/share/openmp-extras" + echo "%endif" + echo "%defattr(-,root,root,-)" + echo "%if %is_runtime || %is_devel" + echo " $copyPath" + echo "%endif" + + } > $specFile + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH +} + +package_openmp_extras_asan_rpm() { + local packageName=$1 + local packageRpm="$packageDir/rpm" + local specFile="$packageDir/$packageName.spec" + local packageSummary="AddressSanitizer OpenMP Extras provides instrumented openmp and flang libraries." + local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + local rpmRequires="hsa-rocr-asan, rocm-core-asan" + local asanLibDir="runtime" + + rm -rf "$packageDir" + rm -rf "$RPM_PATH" + mkdir -p "$RPM_PATH" + echo RPM_PATH: $RPM_PATH + echo mkdir -p $(dirname $specFile) + mkdir -p "$(dirname $specFile)" + + { + echo "Name: $packageName" + echo "Version: $packageVersion" + echo "Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}" + echo "Summary: $packageSummary" + echo "Group: System Environment/Libraries" + echo "License: MIT and ASL 2.0 and ASL 2.0 with exceptions" + echo "Vendor: Advanced Micro Devices, Inc." + echo "Requires: $rpmRequires" + echo "%define __os_install_post %{nil}" + echo "%description" + echo "%undefine _debugsource_packages" + echo "$packageSummaryLong" + + echo "%prep" + echo "%setup -T -D -c -n $packageName" + echo "%build" + + echo "%install" + echo "if [ -f $BUILD_PATH/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras ]; then" + echo " cat $BUILD_PATH/build/installed_files.txt | grep -P 'asan' | cut -d':' -f2 | cut -d' ' -f2 | xargs -I {} cp -d --parents {} \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib/asan/libgomp.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib/asan/libiomp5.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib-debug/asan/libgomp.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib-debug/asan/libiomp5.so" \$RPM_BUILD_ROOT" + echo "else" + echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib/asan" + echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib-debug/asan" + echo " cp -r $AOMP/lib/asan/* \$RPM_BUILD_ROOT$installPath/lib/asan" + echo " cp -r $AOMP/lib-debug/asan/* \$RPM_BUILD_ROOT$installPath/lib-debug/asan" + echo " cp -r $AOMP/$asanLibDir/lib/asan/* \$RPM_BUILD_ROOT$installPath/lib/asan" + echo " cp -r $AOMP/$asanLibDir/lib-debug/asan/* \$RPM_BUILD_ROOT$installPath/lib-debug/asan" + echo " cp -r $AOMP/devel/lib/asan/* \$RPM_BUILD_ROOT$installPath/lib/asan" + echo " cp -r $AOMP/devel/lib-debug/asan/* \$RPM_BUILD_ROOT$installPath/lib-debug/asan" + echo "fi" + + echo 'find $RPM_BUILD_ROOT \! -type d | sed "s|$RPM_BUILD_ROOT||"> files.list' + + echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan" + echo " cp -r $AOMP_REPOS/aomp/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan/LICENSE.apache2" + echo " cp -r $AOMP_REPOS/aomp-extras/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan/LICENSE.mit" + echo " cp -r $AOMP_REPOS/flang/LICENSE.txt \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan/LICENSE.flang" + echo "%clean" + echo "rm -rf \$RPM_BUILD_ROOT" + + echo "%files -f files.list" + echo " $copyPath/share/doc/openmp-extras-asan" + echo "%defattr(-,root,root,-)" + echo " $copyPath" + + } > $specFile + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH +} + + +package_openmp_extras() { + local DISTRO_NAME=$(cat /etc/os-release | grep -e ^NAME=) + local installPath="$ROCM_INSTALL_PATH/lib/llvm" + local copyPath="$ROCM_INSTALL_PATH" + local packageDir="$BUILD_PATH/package" + local llvm_ver=`$INSTALL_PREFIX/lib/llvm/bin/clang --print-resource-dir | sed 's^/llvm/lib/clang/^ ^' | awk '{print $2}'` + local debNames="openmp-extras-runtime openmp-extras-dev" + local rpmNames="openmp-extras-runtime openmp-extras-devel" + if [ "$SANITIZER" == "1" ]; then + local asanPkgName="openmp-extras-asan" + if [[ $DISTRO_NAME =~ "Ubuntu" ]]; then + package_openmp_extras_asan_deb $asanPkgName + else + package_openmp_extras_asan_rpm $asanPkgName + fi + return 0 + fi + + if [[ $DISTRO_NAME =~ "Ubuntu" ]]; then + for name in $debNames; do + package_openmp_extras_deb $name + done + else + for name in $rpmNames; do + package_openmp_extras_rpm $name + done + fi +} + +package_tests_deb(){ + local packageDir="$BUILD_PATH/package" + local packageDeb="$packageDir/deb" + local packageArch="amd64" + local packageMaintainer="Openmp Extras Support " + local packageSummary="Tests for openmp-extras." + local packageSummaryLong="Tests for openmp-extras $packageMajorVersion-$packageMinorVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + local debDependencies="rocm-core" + local debRecommends="gcc, g++" + local controlFile="$packageDeb/openmp-extras/DEBIAN/control" + local installPath="$ROCM_INSTALL_PATH/share/openmp-extras/tests" + local packageName="openmp-extras-tests" + + rm -rf "$packageDir" + + mkdir -p $packageDeb/openmp-extras$installPath; mkdir -p $packageDeb/openmp-extras$copyPath/bin + if [ -e $(dirname $controlFile) ]; then + rm $(dirname $controlFile) + fi + mkdir -p "$(dirname $controlFile)" + cp -r "$AOMP_REPOS/aomp/test/smoke" "$packageDeb$installPath" + { + echo "Package: $packageName" + echo "Architecture: $packageArch" + echo "Section: devel" + echo "Priority: optional" + echo "Maintainer: $packageMaintainer" + echo "Version: $packageVersion-${CPACK_DEBIAN_PACKAGE_RELEASE}" + echo "Depends: $debDependencies" + echo "Recommends: $debRecommends" + echo "Description: $packageSummary" + echo " $packageSummaryLong" + } > $controlFile + fakeroot dpkg-deb -Zgzip --build $packageDeb/openmp-extras \ + "${DEB_PATH}/${packageName}_${packageVersion}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${packageArch}.deb" +} + +package_tests_rpm(){ + AOMP_STANDALONE_BUILD=1 $AOMP_REPOS/aomp/bin/build_fixups.sh + local copyPath="$ROCM_INSTALL_PATH" + local packageDir="$BUILD_PATH/package" + local packageRpm="$packageDir/rpm" + local installPath="$ROCM_INSTALL_PATH/share/openmp-extras/tests" + local packageName="openmp-extras-tests" + local specFile="$packageDir/$packageName.spec" + local packageSummary="Tests for openmp-extras." + local packageSummaryLong="Tests for openmp-extras $packageVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + + rm -rf "$packageDir" + mkdir -p "$packageRpm$installPath" + { + echo "Name: $packageName" + echo "Version: $packageVersion" + echo "Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}" + echo "Summary: $packageSummary" + echo "Group: System Environment/Libraries" + echo "License: Advanced Micro Devices, Inc." + echo "Vendor: Advanced Micro Devices, Inc." + echo "%define debug_package %{nil}" + echo "%define __os_install_post %{nil}" + echo "%description" + echo "$packageSummaryLong" + + echo "%prep" + echo "%setup -T -D -c -n $packageName" + echo "%build" + + echo "%install" + echo "mkdir -p \$RPM_BUILD_ROOT$copyPath/share/aomp/tests" + echo "cp -R $AOMP_REPOS/aomp/test/smoke \$RPM_BUILD_ROOT$copyPath/share/aomp/tests" + echo 'find $RPM_BUILD_ROOT \! -type d | sed "s|$RPM_BUILD_ROOT||"> files.list' + + echo "%clean" + echo "rm -rf \$RPM_BUILD_ROOT" + + echo "%files -f files.list" + echo "%defattr(-,root,root,-)" + + echo "%postun" + echo "rm -rf $ROCM_INSTALL_PATH/share/aomp" + } > $specFile + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH +} + +package_tests() { + local DISTRO_NAME=$(cat /etc/os-release | grep -e ^NAME=) + if [[ $DISTRO_NAME =~ "Ubuntu" ]]; then + package_tests_deb + else + package_tests_rpm + fi +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_openmp_extras ;; + (build) build_openmp_extras; package_openmp_extras ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rccl.sh b/rocm-build/build_rccl.sh new file mode 100755 index 000000000..f6c420474 --- /dev/null +++ b/rocm-build/build_rccl.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rccl + +ENABLE_ADDRESS_SANITIZER=false + +build_rccl() { + echo "Start build" + + mkdir -p $ROCM_PATH/.info/ + echo $ROCM_VERSION | tee $ROCM_PATH/.info/version + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + mkdir -p $BUILD_DIR && cd $BUILD_DIR + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + + CC=${ROCM_PATH}/bin/amdclang \ + CXX=$(set_build_variables CXX) \ + cmake \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DHIP_COMPILER=clang \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH};${ROCM_PATH}/share/rocm/cmake/" \ + -DCPACK_GENERATOR="${PKGTYPE^^}" \ + -DROCM_PATCH_VERSION=$ROCM_LIBPATCH_VERSION \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -DBUILD_TESTS=ON \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rccl() { + echo "Cleaning rccl build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rccl ;; + outdir) print_output_directory ;; + clean) clean_rccl ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rdc.sh b/rocm-build/build_rdc.sh new file mode 100755 index 000000000..b6d5417fc --- /dev/null +++ b/rocm-build/build_rdc.sh @@ -0,0 +1,234 @@ +#!/bin/bash + +source "$(dirname "$BASH_SOURCE")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename $0) [-c|-r|-h] [makeopts]" + echo + echo "Options:" + echo " -c, --clean Removes all rdc build artifacts, except grpc" + echo " -g, --clean_grpc Removes the grpc files and artifacts" + echo " -r, --release Build release version of RDC (default is debug)" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -h, --help Prints this help" + echo + return 0 +} + +PACKAGE_ROOT="$(getPackageRoot)" +RDC_BUILD_DIR=$(getBuildPath rdc) +GRPC_BUILD_DIR=$(getBuildPath grpc) +TARGET="build" +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE="$(getIncludePath)" +PACKAGE_BIN="$(getBinPath)" +RDC_PACKAGE_DEB_DIR="$PACKAGE_ROOT/deb/rdc" +RDC_PACKAGE_RPM_DIR="$PACKAGE_ROOT/rpm/rdc" +BUILD_TYPE="Debug" +MAKETARGET="deb" +MAKEARG="$DASH_JAY O=$RDC_BUILD_DIR" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +CLEAN_GRPC="no" +PKGTYPE="deb" +RDC_MAKE_OPTS="$DASH_JAY O=$RDC_BUILD_DIR -C $RDC_BUILD_DIR" +BUILD_DOCS="no" +RDC_PKG_NAME_ROOT="rdc" +RDC_PKG_NAME="${RDC_PKG_NAME_ROOT}" +GRPC_PROTOC_ROOT="${RDC_BUILD_DIR}/grpc" +GRPC_SEARCH_ROOT="/usr/grpc" +GRPC_DESIRED_VERSION="1.59.1" # do not include 'v' + +RDC_LIB_RPATH='$ORIGIN' +RDC_LIB_RPATH=$RDC_LIB_RPATH:'$ORIGIN/..' +RDC_LIB_RPATH=$RDC_LIB_RPATH:'$ORIGIN/rdc/grpc/lib' +RDC_LIB_RPATH=$RDC_LIB_RPATH:'$ORIGIN/grpc/lib' +RDC_EXE_RPATH='$ORIGIN/../lib' +RDC_EXE_RPATH=$RDC_EXE_RPATH:'$ORIGIN/../lib/rdc/grpc/lib' + +VALID_STR=`getopt -o hcgradso:p: --long help,clean,clean_grpc,release,documentation,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-g | --clean_grpc) + TARGET="clean_grpc" ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-d | --documentation ) + BUILD_DOCS="yes" ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_rdc() { + rm -rf "$RDC_BUILD_DIR" + rm -rf "$RDC_PACKAGE_DEB_DIR" + rm -rf "$RDC_PACKAGE_RPM_DIR" + rm -rf "$RDC_BUILD_DIR/rdc" + + rm -rf "$PACKAGE_INCLUDE/rdc" + rm -f $PACKAGE_LIB/librdc* + rm -f $PACKAGE_BIN/rdci + return 0 +} + +clean_grpc() { + rm -rf "$GRPC_BUILD_DIR" +} + +find_grpc() { + grep -s -F "$GRPC_DESIRED_VERSION" ${GRPC_SEARCH_ROOT}/*/cmake/grpc/gRPCConfigVersion.cmake && + GRPC_PROTOC_ROOT=$GRPC_SEARCH_ROOT +} + +build_grpc() { + if find_grpc; then + return 0 + fi + echo "GRPC SEARCH FAILED! Building from scratch..." + + mkdir -p $PACKAGE_ROOT/build + pushd $PACKAGE_ROOT/build + + if [ ! -d $PACKAGE_ROOT/build/grpc/.git ]; then + git clone \ + --shallow-submodules \ + --recurse-submodules \ + $DASH_JAY \ + -b v${GRPC_DESIRED_VERSION} \ + --depth 1 \ + https://github.com/grpc/grpc + fi + + cd grpc + mkdir -p cmake/build + cd cmake/build + + cmake \ + -DgRPC_INSTALL=ON \ + -DgRPC_BUILD_TESTS=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${GRPC_PROTOC_ROOT} \ + ../.. + cmake --build . -- $DASH_JAY + cmake --build . -- install + + cp ../../LICENSE ${GRPC_PROTOC_ROOT} + popd +} + +rdc_backwards_compat_cmake_params() { + grep -q "RDC_CLIENT_INSTALL_PREFIX" "$RDC_ROOT/CMakeLists.txt" && + echo "-DRDC_CLIENT_INSTALL_PREFIX=$PACKAGE_ROOT" +} + +build_rdc() { + echo "Building RDC" + echo "RDC_BUILD_DIR: ${RDC_BUILD_DIR}" + echo "GRPC_PROTOC_ROOT: ${GRPC_PROTOC_ROOT}" + + export LD_PRELOAD="$ASAN_LIB_PATH" + + if [ ! -d "$RDC_BUILD_DIR/rdc_libs" ]; then + mkdir -p $RDC_BUILD_DIR + pushd $RDC_BUILD_DIR + cmake \ + -DGRPC_ROOT="$GRPC_PROTOC_ROOT" \ + -DGRPC_DESIRED_VERSION="$GRPC_DESIRED_VERSION" \ + -DCMAKE_MODULE_PATH="$RDC_ROOT/cmake_modules" \ + $(rocm_cmake_params) \ + $(rdc_backwards_compat_cmake_params) \ + $(rocm_common_cmake_params) \ + -DROCM_DIR=$ROCM_INSTALL_PATH \ + -DRDC_PACKAGE="${RDC_PKG_NAME}" \ + -DCPACK_PACKAGE_VERSION_MAJOR="1" \ + -DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \ + -DCPACK_PACKAGE_VERSION_PATCH="0" \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + -DBUILD_TESTS=ON \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE \ + -DCMAKE_EXE_LINKER_FLAGS_INIT="-Wl,--no-as-needed,-z,origin,--enable-new-dtags,--build-id=sha1,--rpath,$RDC_EXE_RPATH" \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--no-as-needed,-z,origin,--enable-new-dtags,--build-id=sha1,--rpath,$RDC_LIB_RPATH" \ + "$RDC_ROOT" + popd + fi + echo "Making rdc package:" + cmake --build "$RDC_BUILD_DIR" -- $RDC_MAKE_OPTS + cmake --build "$RDC_BUILD_DIR" -- $RDC_MAKE_OPTS install + + unset LD_PRELOAD + cmake --build "$RDC_BUILD_DIR" -- $RDC_MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$RDC_PACKAGE_DEB_DIR" "$RDC_BUILD_DIR/$RDC_PKG_NAME"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RDC_PACKAGE_RPM_DIR" "$RDC_BUILD_DIR/$RDC_PKG_NAME"*.rpm + + if [ ! -e $ROCM_INSTALL_PATH/include/rdc/rdc.h ]; then + cp -r "$ROCM_INSTALL_PATH/rdc/lib/." "$PACKAGE_LIB" + cp -r "$ROCM_INSTALL_PATH/rdc/bin/." "$PACKAGE_BIN" + cp -r "$ROCM_INSTALL_PATH/rdc/include/." "$PACKAGE_INCLUDE" + fi + + if [ "$BUILD_DOCS" = "yes" ]; then + echo "Building Docs" + cmake --build "$RDC_BUILD_DIR" -- $RDC_MAKE_OPTS doc + pushd $RDC_BUILD_DIR/latex + cmake --build . -- + mv refman.pdf "$ROCM_INSTALL_PATH/rdc/RDC_Manual.pdf" + popd + fi +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${RDC_PACKAGE_DEB_DIR};; + ("rpm") + echo ${RDC_PACKAGE_RPM_DIR};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean_rdc ;; + (clean_grpc) clean_grpc ;; + (build) build_grpc; build_rdc ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocalution.sh b/rocm-build/build_rocalution.sh new file mode 100755 index 000000000..d60b6c055 --- /dev/null +++ b/rocm-build/build_rocalution.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +PATH=${ROCM_PATH}/bin:$PATH +set_component_src rocALUTION + +build_rocalution() { + echo "Start build" + + cd $COMPONENT_SRC + + CXX="g++" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + echo "C compiler: $CC" + echo "CXX compiler: $CXX" + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + cmake \ + -DSUPPORT_HIP=ON \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DCPACK_SET_DESTDIR=OFF \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocalution() { + echo "Cleaning rocALUTION build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocalution ;; + outdir) print_output_directory ;; + clean) clean_rocalution ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocblas.sh b/rocm-build/build_rocblas.sh new file mode 100755 index 000000000..28593c648 --- /dev/null +++ b/rocm-build/build_rocblas.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rocBLAS +DEPS_DIR=${HOME}/rocblas + +stage2_command_args "$@" + +build_rocblas() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + export ASAN_OPTIONS="detect_leaks=0:verify_asan_link_order=0" + fi + + cd $COMPONENT_SRC + + mkdir -p $DEPS_DIR && cp -r /usr/blis $DEPS_DIR + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + cmake \ + -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake \ + -DBUILD_DIR="${BUILD_DIR}" \ + $(rocm_common_cmake_params) \ + -DROCM_DIR="${ROCM_PATH}" \ + ${LAUNCHER_FLAGS} \ + -DCMAKE_PREFIX_PATH="${DEPS_DIR};${ROCM_PATH}" \ + -DCPACK_SET_DESTDIR=OFF \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DLINK_BLIS=ON \ + -DAMDGPU_TARGETS="${GPU_TARGETS}" \ + -DTensile_CODE_OBJECT_VERSION=default \ + -DTensile_LOGIC=asm_full \ + -DTensile_SEPARATE_ARCHITECTURES=ON \ + -DTensile_LAZY_LIBRARY_LOADING=ON \ + -DTensile_LIBRARY_FORMAT=msgpack \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -DTENSILE_VENV_UPGRADE_PIP=ON \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && rm -rf ./library/src/build_tmp && find -name '*.o' -delete + + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocblas() { + echo "Cleaning rocBLAS build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +case $TARGET in + build) build_rocblas ;; + outdir) print_output_directory ;; + clean) clean_rocblas ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocclr.sh b/rocm-build/build_rocclr.sh new file mode 100755 index 000000000..9df898f78 --- /dev/null +++ b/rocm-build/build_rocclr.sh @@ -0,0 +1,127 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...] [make options]" + echo + echo "Options:" + echo " -h, --help Prints this help" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +MAKEOPTS="$DASH_JAY" + +BUILD_PATH="$(getBuildPath rocclr)" + +TARGET="build" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_DEB="$(getPackageRoot)/deb/rocclr" +PACKAGE_RPM="$(getPackageRoot)/rpm/rocclr" +CORE_BUILD_DIR="$(getBuildPath hsa-core)" +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_rocclr() { + rm -rf "$BUILD_PATH" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" +} + +build_rocclr() { + if [ "$SHARED_LIBS" = "ON" ]; then + echo "rocclr not a standalone repo. skipping build" >&2 + echo "rocclr not a standalone repo. skipping build" + exit 0 + fi + + if [ ! -e "$CLR_ROOT/CMakeLists.txt" ]; then + _ROCclr_CMAKELIST_DIR="$CLR_ROOT" + elif [ ! -e "$ROCclr_ROOT/CMakeLists.txt" ]; then + echo "No $ROCclr_ROOT/CMakeLists.txt file, skipping rocclr" >&2 + echo "No $ROCclr_ROOT/CMakeLists.txt file, skipping rocclr" + exit 0 + else + _ROCclr_CMAKELIST_DIR="$ROCclr_ROOT" + fi + echo "$_ROCclr_CMAKELIST_DIR" + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + print_lib_type $SHARED_LIBS + if [ ! -e Makefile ]; then + echo "Building ROCclr CMake environment" + + cmake -DUSE_COMGR_LIBRARY=ON \ + $(rocm_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + -DLLVM_INCLUDES="$LLVM_ROOT/include" \ + $(rocm_common_cmake_params) \ + "$_ROCclr_CMAKELIST_DIR" + + echo "CMake complete" + fi + + echo "Building ROCclr" + cmake --build . -- $MAKEOPTS "VERBOSE=1" + + popd +} + +case $TARGET in + (clean) clean_rocclr ;; + (build) build_rocclr ;; + (outdir) exit ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocdecode.sh b/rocm-build/build_rocdecode.sh new file mode 100755 index 000000000..bc768c8ee --- /dev/null +++ b/rocm-build/build_rocdecode.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" +set_component_src rocDecode +BUILD_DEV=ON +build_rocdecode() { + if [ "$DISTRO_ID" = "centos-7" ] ; then + echo "Not building rocDecode for ${DISTRO_ID}. Exiting..." + return 0 + fi + + echo "Start build" + mkdir -p $BUILD_DIR && cd $BUILD_DIR + + cmake ${COMPONENT_SRC} + make -j8 + make install + make package + + cmake --build "$BUILD_DIR" -- -j${PROC} + cpack -G ${PKGTYPE^^} -B ${BUILD_DIR} + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR + cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + show_build_cache_stats +} +clean_rocdecode() { + echo "Cleaning rocDecode build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} +stage2_command_args "$@" +case $TARGET in + build) build_rocdecode ;; + outdir) print_output_directory ;; + clean) clean_rocdecode ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocfft.sh b/rocm-build/build_rocfft.sh new file mode 100755 index 000000000..180406fa1 --- /dev/null +++ b/rocm-build/build_rocfft.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +PATH=${ROCM_PATH}/bin:$PATH +set_component_src rocFFT + +build_rocfft() { + echo "Start Build" + + cd $COMPONENT_SRC + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX="${ROCM_PATH}/bin/hipcc" \ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DUSE_HIP_CLANG=ON \ + -DHIP_COMPILER=clang \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_RIDER=ON \ + -DCPACK_SET_DESTDIR=OFF \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocfft() { + echo "Cleaning rocFFT build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocfft ;; + outdir) print_output_directory ;; + clean) clean_rocfft ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocm-cmake.sh b/rocm-build/build_rocm-cmake.sh new file mode 100755 index 000000000..267313c13 --- /dev/null +++ b/rocm-build/build_rocm-cmake.sh @@ -0,0 +1,121 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Build a release version of the package" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -p, --package Specify packaging format" + echo " -h, --help Prints this help" + echo + echo + + return 0 +} + +TARGET="build" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_DEB="$(getPackageRoot)/deb/rocm-cmake" +PACKAGE_RPM="$(getPackageRoot)/rpm/rocm-cmake" +ROCM_CMAKE_BUILD_DIR="$(getBuildPath rocm-cmake)" + +ROCM_CMAKE_BUILD_DIR="$(getBuildPath rocm-cmake)" +ROCM_CMAKE_PACKAGE_DEB="$(getPackageRoot)/deb/rocm-cmake" +ROCM_CMAKE_PACKAGE_RPM="$(getPackageRoot)/rpm/rocm-cmake" +ROCM_CMAKE_BUILD_TYPE="debug" +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" +MAKETARGET="deb" + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + ack_and_ignore_asan ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_rocm_cmake() { + rm -rf $ROCM_CMAKE_BUILD_DIR + rm -rf $ROCM_CMAKE_PACKAGE_DEB + rm -rf $ROCM_CMAKE_PACKAGE_RPM +} + +build_rocm_cmake() { + echo "Building ROCm cmake" + + if [ ! -d "$ROCM_CMAKE_BUILD_DIR" ]; then + mkdir -p "$ROCM_CMAKE_BUILD_DIR" + pushd "$ROCM_CMAKE_BUILD_DIR" + + cmake \ + $(rocm_cmake_params) \ + -DCPACK_SET_DESTDIR="OFF" \ + -DROCM_DISABLE_LDCONFIG=ON \ + $ROCM_CMAKE_ROOT + cmake --build . -- install + cmake --build . -- package + popd + fi + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CMAKE_PACKAGE_DEB" $ROCM_CMAKE_BUILD_DIR/rocm-cmake*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CMAKE_PACKAGE_RPM" $ROCM_CMAKE_BUILD_DIR/rocm-cmake*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${ROCM_CMAKE_PACKAGE_DEB};; + ("rpm") + echo ${ROCM_CMAKE_PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_rocm_cmake ;; + (build) build_rocm_cmake ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocm-core.sh b/rocm-build/build_rocm-core.sh new file mode 100755 index 000000000..839e36ea4 --- /dev/null +++ b/rocm-build/build_rocm-core.sh @@ -0,0 +1,131 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +PACKAGE_ROOT="$(getPackageRoot)" +ROCM_CORE_BUILD_DIR="$(getBuildPath rocm_core)" +ROCM_CORE_PACKAGE_DEB="$(getPackageRoot)/deb/rocm-core" +ROCM_CORE_PACKAGE_RPM="$(getPackageRoot)/rpm/rocm-core" +ROCM_CORE_MAKE_OPTS="$DASH_JAY -C $ROCM_CORE_BUILD_DIR" +BUILD_TYPE="Debug" +TARGET="build" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" +ADDRESS_SANITIZER=false + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + ADDRESS_SANITIZER=true ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package ) + MAKETARGET=$2 ; shift 2 ;; + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_rocm_core() { + rm -rf "$ROCM_CORE_BUILD_DIR" + rm -rf "$ROCM_CORE_PACKAGE_DEB" + rm -rf "$ROCM_CORE_PACKAGE_RPM" +} + +build_rocm_core() { + echo "Building rocm-core " + + if [ ! -d "$ROCM_CORE_BUILD_DIR" ]; then + mkdir -p "$ROCM_CORE_BUILD_DIR" + fi + + pushd "$ROCM_CORE_BUILD_DIR" + cmake \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + $(rocm_common_cmake_params) \ + -DCMAKE_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + -DCPACK_PACKAGING_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + -DCPACK_GENERATOR="${CPACKGEN:-"DEB;RPM"}" \ + -DCPACK_DEBIAN_PACKAGE_RELEASE=$CPACK_DEBIAN_PACKAGE_RELEASE \ + -DCPACK_RPM_PACKAGE_RELEASE=$CPACK_RPM_PACKAGE_RELEASE \ + -DROCM_VERSION="$ROCM_VERSION" \ + -DBUILD_ID="$BUILD_ID" \ + $ROCM_CORE_ROOT + + make && make install && make package + popd + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CORE_PACKAGE_DEB" $ROCM_CORE_BUILD_DIR/rocm*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CORE_PACKAGE_RPM" $ROCM_CORE_BUILD_DIR/rocm*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${ROCM_CORE_PACKAGE_DEB};; + ("rpm") + echo ${ROCM_CORE_PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean_rocm_core ;; + (build) build_rocm_core ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocm-dev.sh b/rocm-build/build_rocm-dev.sh new file mode 100755 index 000000000..4ae59283b --- /dev/null +++ b/rocm-build/build_rocm-dev.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +stage2_command_args "$@" + +case $TARGET in + build) echo "end of rocm-dev build..." ;; + outdir) ;; + clean) echo "Cleaning rocm-dev is not required..." ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocm-gdb.sh b/rocm-build/build_rocm-gdb.sh new file mode 100755 index 000000000..0dffbd110 --- /dev/null +++ b/rocm-build/build_rocm-gdb.sh @@ -0,0 +1,437 @@ +#!/bin/bash + +source "${BASH_SOURCE%/*}/compute_utils.sh" || return + +remove_make_r_flags + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +toStdoutStderr(){ + printf '%s\n' "$@" >&2 + printf '%s\n' "$@" +} + +linkFiles(){ + cp -lfR "$1" "$2" || cp -fR "$1" "$2" +} + +PROJ_NAME=rocm-gdb +TARGET=build +MAKETARGET=deb +BUILD_DIR=$(getBuildPath $PROJ_NAME) +PACKAGE_DEB=$(getPackageRoot)/deb/$PROJ_NAME +PACKAGE_RPM=$(getPackageRoot)/rpm/$PROJ_NAME +MAKE_OPTS="$DASH_JAY" +BUG_URL="https://github.com/ROCm-Developer-Tools/ROCgdb/issues" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" +LDFLAGS="$LDFLAGS -Wl,--enable-new-dtags" + + +tokeep=( + main${ROCM_INSTALL_PATH}/bin/rocgdb + main${ROCM_INSTALL_PATH}/bin/roccoremerge + main${ROCM_INSTALL_PATH}/share/rocgdb/python/gdb/.* + main${ROCM_INSTALL_PATH}/share/rocgdb/syscalls/amd64-linux.xml + main${ROCM_INSTALL_PATH}/share/rocgdb/syscalls/gdb-syscalls.dtd + main${ROCM_INSTALL_PATH}/share/rocgdb/syscalls/i386-linux.xml + main${ROCM_INSTALL_PATH}/share/doc/rocgdb/NOTICES.txt + main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocannotate.pdf + main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocgdb.pdf + main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocrefcard.pdf + main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocstabs.pdf + main${ROCM_INSTALL_PATH}/share/info/rocgdb/dir + main${ROCM_INSTALL_PATH}/share/info/rocgdb/annotate.info + main${ROCM_INSTALL_PATH}/share/info/rocgdb/gdb.info + main${ROCM_INSTALL_PATH}/share/info/rocgdb/stabs.info + main${ROCM_INSTALL_PATH}/share/man/man1/rocgdb.1 + main${ROCM_INSTALL_PATH}/share/man/man1/roccoremerge.1 + main${ROCM_INSTALL_PATH}/share/man/man5/rocgdbinit.5 + main${ROCM_INSTALL_PATH}/share/html/rocannotate/.* + main${ROCM_INSTALL_PATH}/share/html/rocgdb/.* + main${ROCM_INSTALL_PATH}/share/html/rocstabs/.* +) + +keep_wanted_files(){ + ( + cd "$BUILD_DIR/package/" + printf -v keeppattern '%s\n' "${tokeep[@]}" + find main/opt -type f | grep -xv "$keeppattern" | xargs -r rm + find main/opt -type d -empty -delete + ) + return 0 +} + +copy_testsuite_files() { +( +dest="$BUILD_DIR/package/tests${ROCM_INSTALL_PATH}/test/gdb/" +cd "$ROCM_GDB_ROOT" +find \ + config.guess \ + config.sub \ + contrib/dg-extract-results.py \ + contrib/dg-extract-results.sh \ + gdb/contrib \ + gdb/disable-implicit-rules.mk \ + gdb/features \ + gdb/silent-rules.mk \ + gdb/testsuite \ + include/dwarf2.def \ + include/dwarf2.h \ + install-sh \ + -print0 | cpio -pdu0 "$dest" +) +} + +clean() { + echo "Cleaning $PROJ_NAME" + + rm -rf $BUILD_DIR + rm -rf $PACKAGE_DEB + rm -rf $PACKAGE_RPM +} + +get_version(){ + VERSION=$(sed -n 's/^.*char version[^"]*"\([^"]*\)".*;.*/\1/p' $BUILD_DIR/gdb/version.c || : ) + VERSION=${VERSION:-$1} +} + +package_deb(){ + mkdir -p "$BUILD_DIR/package/main/DEBIAN" + local VERSION + get_version unknown + VERSION="${VERSION}.${ROCM_LIBPATCH_VERSION}" + + grep -v '^# ' > "$BUILD_DIR/package/main/DEBIAN/control" < +Description: ROCgdb + This is ROCgdb, the AMD ROCm source-level debugger for Linux, + based on GDB, the GNU source-level debugger. +# Optional fields +Section: utils +Architecture: amd64 +Essential: no +Priority: optional +Depends: libexpat1, libtinfo5, libncurses5, rocm-dbgapi, libpython3.10 | libpython3.8, libbabeltrace-ctf1 (>= 1.2.1), libbabeltrace1 (>= 1.2.1), rocm-core +EOF + + mkdir -p "$OUT_DIR/deb/$PROJ_NAME" + fakeroot dpkg-deb -Zgzip --build "$BUILD_DIR/package/main" "$OUT_DIR/deb/$PROJ_NAME" + + mkdir -p "$BUILD_DIR/package/tests/DEBIAN" + mkdir -p "$BUILD_DIR/package/tests/${ROCM_INSTALL_PATH}/test/gdb" + + grep -v '^# ' > "$BUILD_DIR/package/tests/DEBIAN/control" < +Description: ROCgdb tests + Test Suite for ROCgdb +# Optional fields +Section: utils +Architecture: amd64 +Essential: no +Priority: optional +# rocm-core as policy says everything to depend on rocm-core +Depends: ${PROJ_NAME} (=${VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}), dejagnu, rocm-core, make +EOF + + copy_testsuite_files + fakeroot dpkg-deb -Zgzip --build "$BUILD_DIR/package/tests" "$OUT_DIR/deb/$PROJ_NAME" +} + +package_rpm(){ + set -- rocm-gdb + local packageDir="$BUILD_DIR/package_rpm/$1" + local specFile="$packageDir/$1.spec" + local packageRpm="$packageDir/rpm" + + local VERSION + get_version 0.0.0 + + VERSION=${VERSION}.${ROCM_LIBPATCH_VERSION} + + local ospost="$(echo '%define __os_install_post \' + rpm --showrc | sed '1,/^-14: __os_install_post/d; + /^-14:/,$d;/^%{nil}/!s/$/ \\/; + /brp-python-bytecompile/d')" + + echo "specFile: $specFile" + echo "packageRpm: $packageRpm" + + mkdir -p "$packageDir" + + grep -v '^## ' <<- EOF > $specFile +## Set up where this stuff goes +%define _topdir $packageRpm +%define _rpmfilename %%{ARCH}/%%{NAME}-${VERSION}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.%%{ARCH}.rpm +## The __os_install_post macro on centos creates .pyc and .pyo objects +## by calling brp-python-bytecompile +## This then creates an issue as the script doesn't package these files +## override it +$ospost +## +Name: ${PROJ_NAME} +Group: Development/Tools/Debuggers +Summary: ROCm source-level debugger for Linux +## rpm requires the version to be dot separated numbers +Version: ${VERSION//-/_} +Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist} +License: GPL +Requires: rocm-core + +%description +This is ROCgdb, the ROCm source-level debugger for Linux, based on +GDB, the GNU source-level debugger. + +The ROCgdb documentation is available at: +https://github.com/RadeonOpenCompute/ROCm + +## these things are commented out as they are not needed, but are +## left in for documentation. +# %prep +# : Should not need to do anything in prep +# %build +# : Should not need to do anything in build as make does that +# %clean +# : Should not need to do anything in clean +## This is the meat. Get a copy of the files from where we built them +## into the local RPM_BUILD_ROOT and left the defaults take over. Need +## to quote the dollar signs as we want rpm to expand them when it is +## run, rather than the shell when we build the spec file. +%install +rm -rf \$RPM_BUILD_ROOT +mkdir -p \$RPM_BUILD_ROOT +# Get a copy of the built tree. +cp -ar $BUILD_DIR/package/main/opt \$RPM_BUILD_ROOT/opt +## The file section is generated by walking the tree. +%files +EOF + + find $BUILD_DIR/package/main/opt -type d | sed "s:$BUILD_DIR/package/main:%dir :" >> $specFile + find $BUILD_DIR/package/main/opt ! -type d | sed "s:$BUILD_DIR/package/main::" >> $specFile + + rpmbuild --define "_topdir $packageRpm" -ba $specFile + + mkdir -p "$PACKAGE_RPM" # e.g. out/ubuntu-16.04/16.04/rpm/rocm-gdb + mv $packageRpm/RPMS/x86_64/*.rpm "$PACKAGE_RPM" +} + +package_rpm_tests(){ + set -- rocm-gdb-tests + local packageDir="$BUILD_DIR/package_rpm/$1" + local specFile="$packageDir/$1.spec" + local packageRpm="$packageDir/rpm" + + local VERSION + get_version 0.0.0 + VERSION=${VERSION}.${ROCM_LIBPATCH_VERSION} + local RELEASE=${CPACK_RPM_PACKAGE_RELEASE}%{?dist} + + echo "specFile: $specFile" + echo "packageRpm: $packageRpm" + + mkdir -p "$packageRpm" + + local ospost="$(echo '%define __os_install_post \' + rpm --showrc | sed '1,/^-14: __os_install_post/d; + /^-14:/,$d;/^%{nil}/!s/$/ \\/; + /brp-python-bytecompile/d')" + grep -v '^## ' <<- EOF > $specFile +## Set up where this stuff goes +%define _topdir $packageRpm +%define _rpmfilename %%{ARCH}/%%{NAME}-${VERSION}-${RELEASE}.%%{ARCH}.rpm +## The __os_install_post macro on centos creates .pyc and .pyo objects +## by calling brp-python-bytecompile +## This then creates an issue as the script doesn't package these files +## override it +$ospost +## +Name: ${PROJ_NAME}-tests +Group: Development/Tools/Debuggers +Summary: Tests for gdb enhanced to debug AMD GPUs +Version: ${VERSION//-/_} +Release: ${RELEASE} +License: GPL +Requires: dejagnu, ${PROJ_NAME} = ${VERSION//-/_}-${RELEASE}, rocm-core, make + +%description +Tests for ROCgdb + +## these things are commented out as they are not needed, but are +## left in for documentation. +# %prep +# : Should not need to do anything in prep +# %build +# : Should not need to do anything in build as make does that +# %clean +# : Should not need to do anything in clean +## This is the meat. Get a copy of the files from where we built them +## into the local RPM_BUILD_ROOT and left the defaults take over. Need +## to quote the dollar signs as we want rpm to expand them when it is +## run, rather than the shell when we build the spec file. +%install +rm -rf \$RPM_BUILD_ROOT +mkdir -p \$RPM_BUILD_ROOT +# Get a copy of the built tree. +cp -ar $BUILD_DIR/package/tests/opt \$RPM_BUILD_ROOT/opt +## The file section is generated by walking the tree. +%files +## package everything in \$RPM_BUILD_ROOT/${ROCM_INSTALL_PATH}/test. +## A little excessive but this is just an internal test package +${ROCM_INSTALL_PATH}/test +EOF + + copy_testsuite_files + + find $BUILD_DIR/package/tests/opt -type f -exec sed -i '1s:^#! */usr/bin/python\>:&3:' {} + + + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mkdir -p "$PACKAGE_RPM" + mv $packageRpm/RPMS/x86_64/*.rpm "$PACKAGE_RPM" +} + +build() { + if [ ! -e "$ROCM_GDB_ROOT/configure" ] + then + toStdoutStderr "No $ROCM_GDB_ROOT/configure file, skippping rocm-gdb" + exit 0 + fi + local pythonver=python3 + if [[ "$DISTRO_ID" == "ubuntu-18.04" ]]; then + pythonver=python3.8 + fi + + if [[ "$DISTRO_ID" == "centos-9" ]] || [[ "$DISTRO_ID" == "rhel-9.0" ]]; then + fmtutil-user --missing + fi + echo "Building $PROJ_NAME" + mkdir -p "$BUILD_DIR" + cd "$BUILD_DIR" || die "Failed to cd to '$BUILD_DIR'" + + $ROCM_GDB_ROOT/configure --program-prefix=roc --prefix="${ROCM_INSTALL_PATH}" \ + --htmldir="\${prefix}/share/html" --pdfdir="\${prefix}/share/doc/rocgdb" \ + --infodir="\${prefix}/share/info/rocgdb" \ + --with-separate-debug-dir="\${prefix}/lib/debug:/usr/lib/debug" \ + --with-gdb-datadir="\${prefix}/share/rocgdb" --enable-64-bit-bfd \ + --with-bugurl="$BUG_URL" --with-pkgversion="${ROCM_BUILD_ID:-ROCm}" \ + --enable-targets="x86_64-linux-gnu,amdgcn-amd-amdhsa" \ + --disable-ld --disable-gas --disable-gdbserver --disable-sim --enable-tui \ + --disable-gdbtk --disable-shared --disable-gprofng \ + --with-expat --with-system-zlib --without-guile --with-babeltrace --with-lzma \ + --with-python=$pythonver --with-rocm-dbgapi=$ROCM_INSTALL_PATH \ + --with-amd-dbgapi PKG_CONFIG_PATH="${ROCM_INSTALL_PATH}/share/pkgconfig" \ + LDFLAGS="$LDFLAGS" + LD_RUN_PATH='${ORIGIN}/../lib' make $MAKE_OPTS + mkdir -p $BUILD_DIR/package/main${ROCM_INSTALL_PATH}/{share/rocgdb,bin} + + make $MAKE_OPTS -C gdb DESTDIR=$BUILD_DIR/package/main install install-pdf install-html + + make $MAKE_OPTS -C binutils DESTDIR=$BUILD_DIR/package/main install + + linkFiles $ROCM_GDB_ROOT/gdb/NOTICES.txt $BUILD_DIR/package/main${ROCM_INSTALL_PATH}/share/doc/rocgdb + keep_wanted_files + + [ "${CPACKGEN}" = "DEB" ] || package_rpm && package_rpm_tests + [ "${CPACKGEN}" = "RPM" ] || package_deb +} + + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +main(){ + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ; MAKEARG="$MAKEARG REL=1" ;; # For compatability with other scripts + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) #FIXME + MAKETARGET="$2" ; shift 2;; + # I think it would be better to use -- to indicate end of args + # and insert an error message about unknown args at this point. + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac +done + +if [[ $CXX == *"clang++" ]] +then + CXX="$CXX -std=gnu++17" +fi + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + case $TARGET in + ("clean") clean ;; + ("build") build ;; + ("outdir") print_output_directory ;; + (*) die "Invalid target $TARGET" ;; + esac + echo "Operation complete" +} + +if [ "$0" = "$BASH_SOURCE" ] +then + main "$@" +else + set +e +fi diff --git a/rocm-build/build_rocm_bandwidth_test.sh b/rocm-build/build_rocm_bandwidth_test.sh new file mode 100755 index 000000000..4b7ff11e8 --- /dev/null +++ b/rocm-build/build_rocm_bandwidth_test.sh @@ -0,0 +1,155 @@ +#!/bin/bash -x + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +TEST_BIN_DIR="$(getBinPath)" +TEST_NAME="rocm-bandwidth-test" +TEST_UTILS_DIR="$(getUtilsPath)" +TEST_SRC_DIR="rocm_bandwidth_test" +TEST_BLD_DIR="$(getBuildPath $TEST_SRC_DIR)" + +ROCM_PKG_PREFIX="$ROCM_INSTALL_PATH" +TEST_PKG_ROOT="$(getPackageRoot)" +TEST_PKG_DEB="$(getPackageRoot)/deb/$TEST_SRC_DIR" +TEST_PKG_RPM="$(getPackageRoot)/rpm/$TEST_SRC_DIR" + +ROCR_LIB_DIR="$(getPackageRoot)/lib" +ROCR_INC_DIR="$(getPackageRoot)/hsa/include" + +RUN_SCRIPT=$(echo $(basename "${BASH_SOURCE}") | sed "s/build_/run_/") + +TARGET="build" +MAKETARGET="all" +BUILD_TYPE="Debug" +MAKEARG="$DASH_JAY" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; MAKEARG="$MAKEARG REL=1" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; CPACKGEN="${2^^}" ; shift 2;; + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_rocm_bandwidth_test() { + echo "Cleaning $TEST_NAME" + + rm -rf $TEST_BLD_DIR + rm -rf $TEST_PKG_DEB + rm -rf $TEST_PKG_RPM + rm -rf $TEST_BIN_DIR/$TEST_NAME + rm -f $TEST_UTILS_DIR/$RUN_SCRIPT +} + +build_rocm_bandwidth_test() { + + echo "Building $TEST_NAME" + + if [ ! -d "$TEST_BLD_DIR" ]; then + mkdir -p "$TEST_BLD_DIR" + pushd "$TEST_BLD_DIR" + + cmake \ + -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DCMAKE_INSTALL_PREFIX="$TEST_PKG_ROOT" \ + -DCPACK_PACKAGING_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + -DCMAKE_PREFIX_PATH="$ROCM_INSTALL_PATH" \ + $(rocm_common_cmake_params) \ + -DCPACK_GENERATOR="${CPACKGEN:-"DEB;RPM"}" \ + -DROCM_PATCH_VERSION=$ROCM_LIBPATCH_VERSION \ + -DCMAKE_MODULE_PATH="$ROCM_BANDWIDTH_TEST_ROOT/cmake_modules" \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + "$ROCM_BANDWIDTH_TEST_ROOT" + + popd + fi + + echo "Building $TEST_NAME" + cmake --build "$TEST_BLD_DIR" -- $MAKEARG -C $TEST_BLD_DIR + + echo "Installing $TEST_NAME" + cmake --build "$TEST_BLD_DIR" -- $MAKEARG -C $TEST_BLD_DIR install + + echo "Packaging $TEST_NAME" + cmake --build "$TEST_BLD_DIR" -- $MAKEARG -C $TEST_BLD_DIR package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$TEST_PKG_DEB" $TEST_BLD_DIR/*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$TEST_PKG_RPM" $TEST_BLD_DIR/*.rpm + +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${TEST_PKG_DEB};; + ("rpm") + echo ${TEST_PKG_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} +verifyEnvSetup + +case $TARGET in + (clean) clean_rocm_bandwidth_test ;; + (build) build_rocm_bandwidth_test ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocm_smi_lib.sh b/rocm-build/build_rocm_smi_lib.sh new file mode 100755 index 000000000..232c326ba --- /dev/null +++ b/rocm-build/build_rocm_smi_lib.sh @@ -0,0 +1,153 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-32|-h] [makeopts]" + echo + echo "Options:" + echo " -c, --clean Removes all rocm_smi build artifacts" + echo " -r, --release Build non-debug version rocm_smi (default is debug)" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo " -p, --package Specify packaging format" + echo " -32, Build 32b version (default is 64b)" + echo " -h, --help Prints this help" + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +PACKAGE_ROOT="$(getPackageRoot)" +TARGET="build" + +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE="$(getIncludePath)" + +RSMI_BUILD_DIR=$(getBuildPath rsmi) +RSMI_PACKAGE_DEB_DIR="$(getPackageRoot)/deb/rsmi" +RSMI_PACKAGE_RPM_DIR="$(getPackageRoot)/rpm/rsmi" +RSMI_BUILD_TYPE="debug" +BUILD_TYPE="Debug" + +MAKETARGET="deb" +MAKEARG="$DASH_JAY O=$RSMI_BUILD_DIR" +RSMI_MAKE_OPTS="$DASH_JAY O=$RSMI_BUILD_DIR -C $RSMI_BUILD_DIR" +ROCM_SMI_BLD_BITS=64 +RSMI_PKG_NAME_ROOT="rocm-smi-lib" +RSMI_PKG_NAME="${RSMI_PKG_NAME_ROOT}${ROCM_SMI_BLD_BITS}" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + # TODO - support standard option of passing cmake environment vars - CFLAGS,CXXFLAGS etc., to enable address sanitizer + ADDRESS_SANITIZER=true ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + (-32) + ROCM_SMI_BLD_BITS="32"; shift ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_rsmi() { + rm -rf "$RSMI_BUILD_DIR" + rm -rf "$RSMI_PACKAGE_DEB_DIR" + rm -rf "$RSMI_PACKAGE_RPM_DIR" + rm -rf "$PACKAGE_ROOT/rocm_smi" + rm -rf "$PACKAGE_INCLUDE/rocm_smi" + rm -f $PACKAGE_LIB/librocm_smi${ROCM_SMI_BLD_BITS}.* + rm -f $PACKAGE_LIB/librocm_smi${ROCM_SMI_BLD_BITS}.* + return 0 +} + +build_rsmi() { + echo "Building RSMI" + echo "RSMI_BUILD_DIR: ${RSMI_BUILD_DIR}" + if [ ! -d "$RSMI_BUILD_DIR" ]; then + mkdir -p $RSMI_BUILD_DIR + pushd $RSMI_BUILD_DIR + print_lib_type $SHARED_LIBS + + cmake \ + -DCMAKE_MODULE_PATH="$ROCM_SMI_LIB_ROOT/cmake_modules" \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + $(rocm_common_cmake_params) \ + $(rocm_cmake_params) \ + -DENABLE_LDCONFIG=OFF \ + -DROCM_SMI_PACKAGE="${RSMI_PKG_NAME}" \ + -DCPACK_PACKAGE_VERSION_MAJOR="1" \ + -DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \ + -DCPACK_PACKAGE_VERSION_PATCH="0" \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + -DBUILD_TESTS=ON \ + "$ROCM_SMI_LIB_ROOT" + popd + fi + + echo "Making rocm_smi package:" + cmake --build "$RSMI_BUILD_DIR" -- $RSMI_MAKE_OPTS + cmake --build "$RSMI_BUILD_DIR" -- $RSMI_MAKE_OPTS install + cmake --build "$RSMI_BUILD_DIR" -- $RSMI_MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$RSMI_PACKAGE_DEB_DIR" $RSMI_BUILD_DIR/*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RSMI_PACKAGE_RPM_DIR" $RSMI_BUILD_DIR/*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${RSMI_PACKAGE_DEB_DIR};; + ("rpm") + echo ${RSMI_PACKAGE_RPM_DIR};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean_rsmi ;; + (build) build_rsmi ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" +exit 0 diff --git a/rocm-build/build_rocminfo.sh b/rocm-build/build_rocminfo.sh new file mode 100755 index 000000000..e9d5b03d7 --- /dev/null +++ b/rocm-build/build_rocminfo.sh @@ -0,0 +1,133 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-h] [makeopts]" + echo + echo "Options:" + echo " -c, --clean Removes all rocminfo build artifacts" + echo " -r, --release Build non-debug version rocminfo (default is debug)" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + + +TARGET="build" +ROCMINFO_DEST="$(getBinPath)" +ROCMINFO_SRC_ROOT="$ROCMINFO_ROOT" +ROCMINFO_BUILD_DIR="$(getBuildPath rocminfo)" + +MAKEARG="$DASH_JAY" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_UTILS="$(getUtilsPath)" +ROCMINFO_PACKAGE_DEB="$(getPackageRoot)/deb/rocminfo" +ROCMINFO_PACKAGE_RPM="$(getPackageRoot)/rpm/rocminfo" +BUILD_TYPE="debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso:g: --long help,clean,release,static,address_sanitizer,outdir:,gpu_list: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + MAKEARG="$MAKEARG BUILD_TYPE=rel"; BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-g | --gpu_list) + GPU_LIST="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_rocminfo() { + echo "Removing rocminfo" + rm -rf $ROCMINFO_DEST/rocminfo + rm -rf $ROCMINFO_BUILD_DIR + rm -rf $ROCMINFO_PACKAGE_DEB + rm -rf $ROCMINFO_PACKAGE_RPM +} + +build_rocminfo() { + if [ ! -d "$ROCMINFO_BUILD_DIR" ]; then + mkdir -p $ROCMINFO_BUILD_DIR + pushd $ROCMINFO_BUILD_DIR + + cmake \ + $(rocm_cmake_params) \ + -DROCRTST_BLD_TYPE="$BUILD_TYPE" \ + $(rocm_common_cmake_params) \ + -DCPACK_PACKAGE_VERSION_MAJOR="1" \ + -DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \ + -DCPACK_PACKAGE_VERSION_PATCH="0" \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE\ + $ROCMINFO_SRC_ROOT + + echo "Making rocminfo:" + cmake --build . -- $MAKEARG + cmake --build . -- $MAKEARG install + cmake --build . -- $MAKEARG package + popd + fi + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$ROCMINFO_PACKAGE_DEB" $ROCMINFO_BUILD_DIR/*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$ROCMINFO_PACKAGE_RPM" $ROCMINFO_BUILD_DIR/*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${ROCMINFO_PACKAGE_DEB};; + ("rpm") + echo ${ROCMINFO_PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_rocminfo ;; + (build) build_rocminfo ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" +exit 0 diff --git a/rocm-build/build_rocmvalidationsuite.sh b/rocm-build/build_rocmvalidationsuite.sh new file mode 100755 index 000000000..6c71a797e --- /dev/null +++ b/rocm-build/build_rocmvalidationsuite.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src ROCmValidationSuite + +ROCM_RVS_LIB_RPATH="\$ORIGIN/.." + +build_rocmvalidationsuite() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd "${COMPONENT_SRC}" + mkdir -p "$BUILD_DIR" + + cmake \ + $(rocm_common_cmake_params) \ + -DFETCH_ROCMPATH_FROM_ROCMCORE=ON \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--rpath,$ROCM_LIB_RPATH:$ROCM_RVS_LIB_RPATH" \ + -B "$BUILD_DIR" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p "${PACKAGE_DIR}" && cp "${BUILD_DIR}"/*."${PKGTYPE}" "${PACKAGE_DIR}" + + show_build_cache_stats +} + +clean_rocmvalidationsuite() { + echo "Cleaning ROCmValidationSuite build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "${BUILD_DIR}" "${PACKAGE_DIR}" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocmvalidationsuite ;; + outdir) print_output_directory ;; + clean) clean_rocmvalidationsuite ;; + *) die "Invalid target ${TARGET}" ;; +esac diff --git a/rocm-build/build_rocprim.sh b/rocm-build/build_rocprim.sh new file mode 100755 index 000000000..e00cd8038 --- /dev/null +++ b/rocm-build/build_rocprim.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rocPRIM + +build_rocprim() { + echo "Start build" + + cd $COMPONENT_SRC + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + ASAN_CMAKE_PARAMS="false" + fi + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX="${ROCM_PATH}/bin/hipcc" \ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DBUILD_BENCHMARK=OFF \ + -DBUILD_BENCHMARK=OFF \ + -DBUILD_TEST=ON \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocprim() { + echo "Cleaning rocPRIM build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocprim ;; + outdir) print_output_directory ;; + clean) clean_rocprim ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocprofiler-register.sh b/rocm-build/build_rocprofiler-register.sh new file mode 100755 index 000000000..c4bcd69c1 --- /dev/null +++ b/rocm-build/build_rocprofiler-register.sh @@ -0,0 +1,139 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: ${BASH_SOURCE##*/} [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME="rocprofiler-register" +PROJ_NAME="$API_NAME" +LIB_NAME="lib${API_NAME}" +TARGET="build" +MAKETARGET="deb" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_LIB="$(getLibPath)" +PACKAGE_INCLUDE="$(getIncludePath)" +BUILD_DIR="$(getBuildPath $API_NAME)" +PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME" +PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME" +PACKAGE_PREFIX="$ROCM_INSTALL_PATH" +BUILD_TYPE="Debug" +MAKE_OPTS="$DASH_JAY -C $BUILD_DIR" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean() { + echo "Cleaning $PROJ_NAME" + + rm -rf "$BUILD_DIR" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "$PACKAGE_ROOT/${PROJ_NAME}" + rm -rf "$PACKAGE_LIB/${LIB_NAME}"* +} + +build() { + echo "Building $PROJ_NAME" + + if [ ! -d "$BUILD_DIR" ]; then + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" + print_lib_type $SHARED_LIBS + cmake \ + $(rocm_cmake_params) \ + $(rocm_common_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + -DENABLE_LDCONFIG=OFF \ + -DROCPROFILER_REGISTER_BUILD_CI=1 \ + -DROCPROFILER_REGISTER_BUILD_TESTS=1 \ + -DROCPROFILER_REGISTER_BUILD_SAMPLES=1 \ + "$ROCPROFILER_REGISTER_ROOT" + popd + fi + make $MAKE_OPTS + make $MAKE_OPTS install + make $MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case "$TARGET" in + (clean) clean ;; + (build) build ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocprofiler.sh b/rocm-build/build_rocprofiler.sh new file mode 100755 index 000000000..d7be08e5c --- /dev/null +++ b/rocm-build/build_rocprofiler.sh @@ -0,0 +1,179 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: ${BASH_SOURCE##*/} [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME="rocprofiler" +PROJ_NAME="$API_NAME" +LIB_NAME="lib${API_NAME}" +TARGET="build" +MAKETARGET="deb" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_LIB="$(getLibPath)" +PACKAGE_INCLUDE="$(getIncludePath)" +BUILD_DIR="$(getBuildPath $API_NAME)" +PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME" +PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME" +PACKAGE_PREFIX="$ROCM_INSTALL_PATH" +BUILD_TYPE="Debug" +MAKE_OPTS="$DASH_JAY -C $BUILD_DIR" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0 +MAKETARGET="deb" +PKGTYPE="deb" +GPU_LIST="gfx900,gfx906,gfx908,gfx90a,gfx940,gfx941,gfx942,gfx1030,gfx1100,gfx1101,gfx1102" + +VALID_STR=$(getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@") +eval set -- "$VALID_STR" + +while true; do + case "$1" in + -h | --help) + printUsage + exit 0 + ;; + -c | --clean) + TARGET="clean" + ((CLEAN_OR_OUT |= 1)) + shift + ;; + -r | --release) + BUILD_TYPE="RelWithDebInfo" + shift + ;; + -a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + shift + ;; + -s | --static) + SHARED_LIBS="OFF" + shift + ;; + -o | --outdir) + TARGET="outdir" + PKGTYPE=$2 + OUT_DIR_SPECIFIED=1 + ((CLEAN_OR_OUT |= 2)) + shift 2 + ;; + -p | --package) + MAKETARGET="$2" + shift 2 + ;; + --) + shift + break + ;; + *) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2 + exit 20 + ;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean() { + echo "Cleaning $PROJ_NAME" + rm -rf "$BUILD_DIR" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "$PACKAGE_ROOT/${PROJ_NAME}" + rm -rf "$PACKAGE_ROOT/libexec/${PROJ_NAME}" + rm -rf "$PACKAGE_INCLUDE/${PROJ_NAME}" + rm -rf "$PACKAGE_LIB/${LIB_NAME}"* + rm -rf "$PACKAGE_LIB/${PROJ_NAME}" +} + +build_rocprofiler() { + echo "Building $PROJ_NAME" + + sed -i 's/set(CPACK_GENERATOR "DEB" "RPM" "TGZ")/set(CPACK_GENERATOR "DEB" "TGZ")/' "${ROCPROFILER_ROOT}/CMakeLists.txt" + + PACKAGE_CMAKE="$(getCmakePath)" + if [ ! -d "$BUILD_DIR" ]; then + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" + print_lib_type $SHARED_LIBS + + cmake \ + $(rocm_cmake_params) \ + -DCMAKE_MODULE_PATH="$ROCPROFILER_ROOT/cmake_modules;$PACKAGE_CMAKE/hip" \ + $(rocm_common_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + -DENABLE_LDCONFIG=OFF \ + -DUSE_PROF_API=1 \ + -DGPU_TARGETS="$GPU_LIST" \ + -DPROF_API_HEADER_PATH="$WORK_ROOT/roctracer/inc/ext" \ + -DHIP_HIPCC_FLAGS=$HIP_HIPCC_FLAGS";--offload-arch=$GPU_LIST" \ + -DCPACK_OBJCOPY_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objcopy" \ + -DCPACK_READELF_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-readelf" \ + -DCPACK_STRIP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-strip" \ + -DCPACK_OBJDUMP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objdump" \ + "$ROCPROFILER_ROOT" + + popd + fi + cmake --build "$BUILD_DIR" -- $MAKE_OPTS + cmake --build "$BUILD_DIR" -- $MAKE_OPTS mytest + cmake --build "$BUILD_DIR" -- $MAKE_OPTS install + cmake --build "$BUILD_DIR" -- $MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + "deb") + echo ${PACKAGE_DEB} + ;; + "rpm") + echo ${PACKAGE_RPM} + ;; + *) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2 + exit 1 + ;; + esac + exit +} + +verifyEnvSetup + +case "$TARGET" in +clean) clean ;; +build) build_rocprofiler ;; +outdir) print_output_directory ;; +*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocr_debug_agent.sh b/rocm-build/build_rocr_debug_agent.sh new file mode 100755 index 000000000..7a57284c7 --- /dev/null +++ b/rocm-build/build_rocr_debug_agent.sh @@ -0,0 +1,153 @@ +#!/bin/bash +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME=rocm-debug-agent +PROJ_NAME=$API_NAME +LIB_NAME=lib${API_NAME}.so +TARGET=build +MAKETARGET=deb +PACKAGE_ROOT=$(getPackageRoot) +PACKAGE_BIN="$(getBinPath)" +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE=$(getIncludePath) +BUILD_DIR=$(getBuildPath $API_NAME) +PACKAGE_DEB=$(getPackageRoot)/deb/$API_NAME +PACKAGE_RPM=$(getPackageRoot)/rpm/$API_NAME +PACKAGE_PREFIX=$ROCM_INSTALL_PATH +BUILD_TYPE=Debug +MAKE_OPTS="$DASH_JAY -C" + +TEST_PACKAGE_DIR="$(getBinPath)/rocm-debug-agent-test" +PACKAGE_UTILS=$(getUtilsPath) + +BC_DIR="$PACKAGE_ROOT/lib/bitcode" +if [ -d "$BC_DIR" ] ; then + export DEVICE_LIB_PATH=$BC_DIR +fi + + +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean() { + echo "Cleaning $PROJ_NAME" + rm -rf $BUILD_DIR + rm -rf $TEST_PACKAGE_DIR + rm -rf $PACKAGE_DEB + rm -rf $PACKAGE_RPM + rm -rf $PACKAGE_ROOT/${PROJ_NAME} + rm -rf $PACKAGE_LIB/${LIB_NAME}* + rm -f $PACKAGE_UTILS/run_rocr_debug_agent_test.sh +} + +build() { + echo "Building $PROJ_NAME" + + PACKAGE_CMAKE="$(getCmakePath)" + export HIPCC_COMPILE_FLAGS_APPEND="--rocm-path=$ROCM_PATH" + if [ ! -d "$BUILD_DIR" ]; then + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" + + cmake $(rocm_cmake_params) \ + -DCMAKE_PREFIX_PATH="$PACKAGE_CMAKE/amd-dbgapi" \ + -DCMAKE_MODULE_PATH="$PACKAGE_CMAKE/hip" \ + $(rocm_common_cmake_params) \ + -DCMAKE_HIP_ARCHITECTURES=OFF \ + $ROCR_DEBUG_AGENT_ROOT + + popd + fi + cmake --build "$BUILD_DIR" -- $MAKE_OPTS $BUILD_DIR + cmake --build "$BUILD_DIR" -- $MAKE_OPTS $BUILD_DIR install + cmake --build "$BUILD_DIR" -- $MAKE_OPTS $BUILD_DIR package + + mkdir -p $PACKAGE_LIB + cp -R $BUILD_DIR/${LIB_NAME}* $PACKAGE_LIB + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DEB}" "$BUILD_DIR/${API_NAME}"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_RPM}" "$BUILD_DIR/${API_NAME}"*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean ;; + (build) build ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $target" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocrand.sh b/rocm-build/build_rocrand.sh new file mode 100755 index 000000000..8e7aa13af --- /dev/null +++ b/rocm-build/build_rocrand.sh @@ -0,0 +1,66 @@ +#!/bin/bash +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rocRAND + +build_rocrand() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC && mkdir "$BUILD_DIR" + + remote_name=$(git remote show | head -n 1) + [ "$remote_name" == "origin" ] || git remote rename "$remote_name" origin + git submodule update --init --force + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DBUILD_TEST=ON \ + -DBUILD_BENCHMARK=ON \ + -DBUILD_CRUSH_TEST=ON \ + -DDEPENDENCIES_FORCE_DOWNLOAD=OFF \ + -DHIP_COMPILER=clang \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip" \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -B "${BUILD_DIR}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocrand() { + echo "Cleaning rocRAND build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocrand ;; + outdir) print_output_directory ;; + clean) clean_rocrand ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocsolver.sh b/rocm-build/build_rocsolver.sh new file mode 100755 index 000000000..fbffc5dfd --- /dev/null +++ b/rocm-build/build_rocsolver.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rocSOLVER + +build_rocsolver() { + echo "Start build" + + cd $COMPONENT_SRC + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + rebuild_lapack + fi + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX="${ROCM_PATH}/bin/hipcc" \ + cmake \ + -DCPACK_SET_DESTDIR=OFF \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -Drocblas_DIR="${ROCM_PATH}/rocblas/lib/cmake/rocblas" \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_TESTING=ON \ + -DBUILD_CLIENTS_EXTRA_TESTS=ON \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocsolver() { + echo "Cleaning rocSOLVER build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocsolver ;; + outdir) print_output_directory ;; + clean) clean_rocsolver ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocsparse.sh b/rocm-build/build_rocsparse.sh new file mode 100755 index 000000000..2426b98c9 --- /dev/null +++ b/rocm-build/build_rocsparse.sh @@ -0,0 +1,68 @@ + + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +PATH=${ROCM_PATH}/bin:$PATH +set_component_src rocSPARSE + +build_rocsparse() { + echo "Start build" + + cd $COMPONENT_SRC + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + MIRROR="http://compute-artifactory.amd.com/artifactory/list/rocm-generic-local/mathlib/sparse/" + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + ROCSPARSE_TEST_MIRROR=$MIRROR \ + CXX=$(set_build_variables CXX)\ + CC=$(set_build_variables CC)\ + cmake \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DCPACK_SET_DESTDIR=OFF \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocsparse() { + echo "Cleaning rocSPARSE build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocsparse ;; + outdir) print_output_directory ;; + clean) clean_rocsparse ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocthrust.sh b/rocm-build/build_rocthrust.sh new file mode 100755 index 000000000..cd7cc16e4 --- /dev/null +++ b/rocm-build/build_rocthrust.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +ENABLE_ADDRESS_SANITIZER=false +build_release=true +set_component_src rocThrust + +build_rocthrust() { + echo "Start build" + + cd $COMPONENT_SRC + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + ASAN_CMAKE_PARAMS="false" + fi + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + -DROCPRIM_ROOT="${ROCM_PATH}/rocprim" \ + -DBUILD_TEST=ON \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + + show_build_cache_stats +} + +clean_rocthrust() { + echo "Cleaning rocThrust build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + (clean) clean_rocthrust ;; + (build) build_rocthrust ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_roctracer.sh b/rocm-build/build_roctracer.sh new file mode 100755 index 000000000..b64b4e71e --- /dev/null +++ b/rocm-build/build_roctracer.sh @@ -0,0 +1,180 @@ +#!/bin/bash +source "$(dirname $BASH_SOURCE)/compute_utils.sh" + +printUsage() { + echo + echo "Usage: ${BASH_SOURCE##*/} [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo + + return 0 +} + +API_NAME="roctracer" +PROJ_NAME="$API_NAME" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_INCLUDE="$(getIncludePath)" +BUILD_DIR="$(getBuildPath $API_NAME)" +PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME" +PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME" +PACKAGE_PREFIX="$ROCM_INSTALL_PATH" + +export HIP_PATH="${ROCM_INSTALL_PATH}" +export HCC_HOME="${PACKAGE_ROOT}/hcc" + +TARGET="build" +BUILD_TYPE="Debug" +MAKE_OPTS="$DASH_JAY -C $BUILD_DIR" +HIP_VDI=1 +SHARED_LIBS="ON" +CLEAN_OR_OUT=0 +MAKETARGET="deb" +PKGTYPE="deb" + +GPU_LIST="gfx900;gfx906;gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101;gfx1102" + +VALID_STR=$(getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@") +eval set -- "$VALID_STR" + +while true; do + case "$1" in + -h | --help) + printUsage + exit 0 + ;; + -c | --clean) + TARGET="clean" + ((CLEAN_OR_OUT |= 1)) + shift + ;; + -r | --release) + BUILD_TYPE="RelWithDebInfo" + shift + ;; + -a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + shift + ;; + -s | --static) + SHARED_LIBS="OFF" + shift + ;; + -o | --outdir) + TARGET="outdir" + PKGTYPE=$2 + OUT_DIR_SPECIFIED=1 + ((CLEAN_OR_OUT |= 2)) + shift 2 + ;; + --) + shift + break + ;; + *) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2 + exit 20 + ;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean() { + echo "Cleaning $PROJ_NAME" + rm -rf "$BUILD_DIR" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "$PACKAGE_INCLUDE/${PROJ_NAME}" + rm -rf "$PACKAGE_ROOT/${PROJ_NAME}" +} + +copy_libs_to_workspace() { + if [ "$ASAN_CMAKE_PARAMS" != "true" ]; then + cp -R "${ROCM_INSTALL_PATH}/lib/roctracer/" "${OUT_DIR}/lib/roctracer/" + fi +} + +build() { + echo "Building $PROJ_NAME" + PACKAGE_CMAKE="$(getCmakePath)" + export ROCM_PATH="${ROCM_INSTALL_PATH}" + export HIPCC_COMPILE_FLAGS_APPEND="--rocm-path=$ROCM_PATH" + + if [ ! -d "$BUILD_DIR" ]; then + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" + print_lib_type $SHARED_LIBS + export HIPCC_COMPILE_FLAGS_APPEND="--rocm-path=$ROCM_PATH --offload-arch=gfx900 --offload-arch=gfx906 --offload-arch=gfx908 \ + --offload-arch=gfx90a --offload-arch=gfx940 --offload-arch=gfx1030 \ + --offload-arch=gfx1100 --offload-arch=gfx1101 --offload-arch=gfx1102" + + cmake $(rocm_cmake_params) \ + -DCPACK_PACKAGING_INSTALL_PREFIX="$PACKAGE_PREFIX/$PROJ_NAME" \ + -DCMAKE_MODULE_PATH="$PACKAGE_CMAKE/hip" \ + -DCMAKE_HIP_ARCHITECTURES=OFF \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + $(rocm_common_cmake_params) \ + -DCMAKE_HIP_ARCHITECTURES=OFF \ + -DENABLE_LDCONFIG=OFF \ + -DROCM_ROOT_DIR="$ROCM_INSTALL_PATH" \ + -DHIP_VDI="$HIP_VDI" \ + -DROCM_RPATH="$ROCM_RPATH" \ + -DGPU_TARGETS="$GPU_LIST" \ + -DCPACK_OBJCOPY_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objcopy" \ + -DCPACK_READELF_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-readelf" \ + -DCPACK_STRIP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-strip" \ + -DCPACK_OBJDUMP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objdump" \ + "$ROCTRACER_ROOT" + + popd + fi + cmake --build "$BUILD_DIR" -- $MAKE_OPTS + cmake --build "$BUILD_DIR" -- $MAKE_OPTS mytest + cmake --build "$BUILD_DIR" -- $MAKE_OPTS doc + cmake --build "$BUILD_DIR" -- $MAKE_OPTS install + cmake --build "$BUILD_DIR" -- $MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + "deb") + echo ${PACKAGE_DEB} + ;; + "rpm") + echo ${PACKAGE_RPM} + ;; + *) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2 + exit 1 + ;; + esac + exit +} +verifyEnvSetup + +case $TARGET in +clean) clean ;; +build) build && copy_libs_to_workspace ;; +outdir) print_output_directory ;; +*) die "$BASH_SOURCE Invalid target $TARGET - exiting" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocwmma.sh b/rocm-build/build_rocwmma.sh new file mode 100755 index 000000000..54eca1a11 --- /dev/null +++ b/rocm-build/build_rocwmma.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rocWMMA + +build_rocwmma() { + echo "Start build" + + if [ ! -e $COMPONENT_SRC/CMakeLists.txt ]; then + echo "Skipping rocWMMA as source is not available" + mkdir -p $COMPONENT_SRC + exit 0 + fi + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + ASAN_CMAKE_PARAMS="false" + fi + mkdir -p $BUILD_DIR && cd $BUILD_DIR + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1100;gfx1101" + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + $(rocm_common_cmake_params) \ + ${LAUNCHER_FLAGS} \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DROCWMMA_BUILD_VALIDATION_TESTS=ON \ + -DROCWMMA_VALIDATE_WITH_ROCBLAS=ON \ + -DROCWMMA_BUILD_BENCHMARK_TESTS=ON \ + -DROCWMMA_BENCHMARK_WITH_ROCBLAS=ON \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + show_build_cache_stats +} + +clean_rocwmma() { + echo "Cleaning rocWMMA build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocwmma ;; + outdir) print_output_directory ;; + clean) clean_rocwmma ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rpp.sh b/rocm-build/build_rpp.sh new file mode 100755 index 000000000..b1051a9d8 --- /dev/null +++ b/rocm-build/build_rpp.sh @@ -0,0 +1,78 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rpp +DEPS_DIR="$RPP_DEPS_LOCATION" + +LLVM_LIBDIR="${ROCM_PATH}/llvm/lib" +ROCM_LLVM_LIB_RPATH="\$ORIGIN/llvm/lib" + +rpp_specific_cmake_params() { + local rpp_cmake_params + if [ "${ASAN_CMAKE_PARAMS}" == "true" ] ; then + rpp_cmake_params="-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_EXE_RPATH:$LLVM_LIBDIR" + else + rpp_cmake_params="" + fi + printf '%s ' "${rpp_cmake_params}" +} + +build_rpp() { + echo "Start build" + + if [ ! -e $COMPONENT_SRC/CMakeLists.txt ]; then + echo "Skipping RPP build as source is not available" + mkdir -p $COMPONENT_SRC + exit 0 + fi + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + mkdir -p $BUILD_DIR && cd $BUILD_DIR + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100" + fi + + cmake \ + $(rocm_common_cmake_params) \ + ${LAUNCHER_FLAGS} \ + -DBACKEND=HIP \ + -DCMAKE_INSTALL_LIBDIR=$(getInstallLibDir) \ + $(rpp_specific_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fno-openmp-implicit-rpath -Wl,--enable-new-dtags,--rpath,${ROCM_LIB_RPATH}:${DEPS_DIR}/lib:${ROCM_LLVM_LIB_RPATH}" \ + -DCMAKE_PREFIX_PATH="${DEPS_DIR};${ROCM_PATH}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cpack -G ${PKGTYPE^^} + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR + cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + show_build_cache_stats +} + +clean_rpp() { + echo "Cleaning rpp build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rpp ;; + outdir) print_output_directory ;; + clean) clean_rpp ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_thunk.sh b/rocm-build/build_thunk.sh new file mode 100755 index 000000000..5e2f58ff9 --- /dev/null +++ b/rocm-build/build_thunk.sh @@ -0,0 +1,205 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_DEB="$(getPackageRoot)/deb/libhsakmt" +PACKAGE_RPM="$(getPackageRoot)/rpm/libhsakmt" +THUNK_BUILD_DIR="$(getBuildPath thunk)" +TARGET="build" +MAKETARGET="deb" +MAKEARG="$DASH_JAY O=$THUNK_BUILD_DIR" +PACKAGE_LIB="$(getLibPath)" +PACKAGE_INCLUDE="$(getIncludePath)" + +ROCT_BUILD_DIR="$(getBuildPath roct)" +ROCT_PACKAGE_DEB="$(getPackageRoot)/deb/roct" +ROCT_PACKAGE_RPM="$(getPackageRoot)/rpm/roct" +ROCT_BUILD_TYPE="debug" +BUILD_TYPE="Debug" +ROCT_MAKE_OPTS="$DASH_JAY -C $ROCT_BUILD_DIR" +CLEAN_OR_OUT=0; + +print_vars() { +echo " Var status thunk " +echo "TARGET= $TARGET" +echo "BUILD_TYPE = $BUILD_TYPE" +echo "MAKETARGE = $MAKETARGET" +echo "CLEAN_OR_OUT = $CLEAN_OR_OUT" +echo "PKGTYPE= $PKGTYPE" +} + +check_conflicting_options() { + + if [ "$MAKETARGET" != "deb" ] && [ "$MAKETARGET" != "rpm" ] && [ "$MAKETARGET" != "tar" ]; then + echo " Wrong Param Passed for Package Type. Aborting .. " + print_vars + exit 30 + fi + + if [ $CLEAN_OR_OUT -ge 2 ]; then + if [ "$PKGTYPE" != "deb" ] && [ "$PKGTYPE" != "rpm" ] && [ "$PKGTYPE" != "tar" ]; then + echo " Wrong Param Passed for Package Type for the Outdir. Aborting .. " + print_vars + exit 40 + fi + fi + + if [ $CLEAN_OR_OUT -ge 3 ]; then + echo " Clean & Out Both are sepcified. Not accepted. Bailing .. " + exit 50 + fi +} + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,address_sanitizer,clean,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s) + shift ;; # Static build requested, NO-OP for this package. Required for static Jenkins builds + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +check_conflicting_options + + +clean_roct() { + rm -rf "$ROCT_BUILD_DIR" + rm -rf "$ROCT_PACKAGE_DEB" + rm -rf "$ROCT_PACKAGE_RPM" + rm -rf "$PACKAGE_ROOT/libhsakmt" + rm -rf "$PACKAGE_INCLUDE/libhsakmt" + rm -f $PACKAGE_LIB/libhsakmt.so* + rm -f $PACKAGE_LIB/libhsakmt.a + rm -f $PACKAGE_INCLUDE/hsakmt*.h $PACKAGE_INCLUDE/linux/kfd_ioctl.h +} + +build_roct() { + echo "Building ROCt" + + rm -f $ROCT_BUILD_DIR/hsakmt-roct*.deb + rm -f $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.deb + rm -f "$ROCT_PACKAGE_DEB"/* + + rm -f $ROCT_BUILD_DIR/hsakmt-roct*.rpm + rm -f $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.rpm + rm -f "$ROCT_PACKAGE_RPM"/* + + if [ "${DISTRO_ID}" = "centos-7" ]; then + libdrm_cmake_var="-DHSAKMT_REQUIRES_LIBDRM=true" + fi + + if [ ! -d "$ROCT_BUILD_DIR" ]; then + mkdir -p "$ROCT_BUILD_DIR" + pushd "$ROCT_BUILD_DIR" + + cmake \ + -DCMAKE_MODULE_PATH="$THUNK_ROOT/cmake_modules" \ + -DBUILD_SHARED_LIBS="OFF" \ + $(rocm_cmake_params) \ + $(rocm_common_cmake_params) \ + -DHSAKMT_INSTALL_PREFIX="$PACKAGE_ROOT" \ + -DHSAKMT_INSTALL_LIBDIR="$PACKAGE_LIB" \ + -DHSAKMT_PACKAGING_INSTALL_PREFIX="$ROCM_PATH" \ + -DENABLE_LDCONFIG=OFF \ + -DHSAKMT_WERROR=1 \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + $libdrm_cmake_var \ + "$THUNK_ROOT" + popd + fi + cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS + cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS install + cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS package + + if [ -e "$THUNK_ROOT/hsakmt-dev.txt" ]; then + cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS install-dev + cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS package-dev + fi + + mkdir -p "$PACKAGE_LIB" + if [ -e "$ROCT_BUILD_DIR/libhsakmt.so" ]; then + cp -R "$ROCT_BUILD_DIR/libhsakmt.so"* "$PACKAGE_LIB" + fi + if [ -e "$ROCT_BUILD_DIR/libhsakmt.a" ]; then + cp -R "$ROCT_BUILD_DIR/libhsakmt.a" "$PACKAGE_LIB" + fi + + mkdir -p "$ROCT_PACKAGE_DEB" + if [[ "${CPACKGEN:-"DEB;RPM"}" =~ "DEB" ]] ; then + cp -a $ROCT_BUILD_DIR/hsakmt*.deb "$ROCT_PACKAGE_DEB" + if [ -e "$THUNK_ROOT/hsakmt-dev.txt" ]; then + cp -a $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.deb "$ROCT_PACKAGE_DEB" + fi + fi + + mkdir -p "$ROCT_PACKAGE_RPM" + if [[ "${CPACKGEN:-"DEB;RPM"}" =~ "RPM" ]] ; then + cp -a $ROCT_BUILD_DIR/hsakmt*.rpm "$ROCT_PACKAGE_RPM" + if [ -e "$THUNK_ROOT/hsakmt-dev.txt" ]; then + cp -a $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.rpm "$ROCT_PACKAGE_RPM" + fi + fi +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${ROCT_PACKAGE_DEB};; + ("rpm") + echo ${ROCT_PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean_roct ;; + (build) build_roct ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/ccache-env-mathlib.sh b/rocm-build/ccache-env-mathlib.sh new file mode 100755 index 000000000..eae60dec3 --- /dev/null +++ b/rocm-build/ccache-env-mathlib.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# set ccache environment variable for math libraries +if [ "${CCACHE_ENABLED}" == "true" ] && [ -f "${OUT_DIR}"/logs/lightning ]; then + export LAUNCHER_FLAGS="-DCMAKE_CXX_COMPILER_LAUNCHER=/usr/local/bin/ccache -DCMAKE_C_COMPILER_LAUNCHER=/usr/local/bin/ccache" + export CCACHE_IGNOREHEADERS=${ROCM_PATH}/include:${ROCM_PATH}/llvm/include:${ROCM_PATH}/lib/llvm/lib/clang/17/include:${ROCM_PATH}/lib/llvm/include + export CCACHE_COMPILERCHECK=none + export CCACHE_EXTRAFILES=${OUT_DIR}/rocm_compilers_hash_file +fi diff --git a/rocm-build/compute_helper.sh b/rocm-build/compute_helper.sh new file mode 100755 index 000000000..08412ad4c --- /dev/null +++ b/rocm-build/compute_helper.sh @@ -0,0 +1,284 @@ +#!/bin/bash + +# compute_helper.sh is created to add common functions similar to compute_utils.sh in stg1 +# stg2 build scripts can make use of common function +# TODO: Component build scripts can be optimized by adding common function in this file(ex for ASAN, Debugging etc) +# All build scripts should use the common function. + +set -e +set -o pipefail +# Set the LLVM directory path with respect to ROCM_PATH +# LLVM is installed in $ROCM_PATH/lib/llvm +ROCM_LLVMDIR="lib/llvm" +# Set ADDRESS_SANITIZER to OFF by default +export ADDRESS_SANITIZER="OFF" +# Print message to stderr +# param message string to print on exit +# Example: printErr "file not found" +printErr() { + echo "$@" 1>&2 +} + +# Print message to stderr and terminate current program +# param message string to print on exit +# Example: die "Your program" has terminated +die() { + printErr "FATAL: $@" + exit 1 +} + +# Die if first argument is empty +# param string to validate +# param error message +# Example: die "$VARIABLE" "Your program" has terminated +dieIfEmpty() { + if [ "$1" == "" ]; then + shift + die "$@" + fi +} + +# Copy a file or directory to target location and show single line progress +progressCopy() { + if [ -d "$1" ]; then + rsync -a "$1"/* "$2" + else + rsync -a "$1" "$2" + fi +} + +# Get OS identification string +# xargs will remove the trailing whitespaces +getOsVersion() { + lsb_release -d | cut -d: -f2 | xargs +} + +# Get kernel identification string +getKernelVersion() { + uname -r +} + +# Trim excessive whitespace from a string +strTrim() { + echo "$@" | xargs +} + +# Return whether the booted OS is Fedora or not +isFedora() { + grep -iq fedora /etc/os-release +} + +# Return whether the booted system is EFI or not +isEFI() { + [ -d "/sys/firmware/efi" ] +} + +print_lib_type() { + if [ "$1" == "OFF" ]; + then + echo " Building Archive " + else + echo " Building Shared Object " + fi +} + +# Get CMAKE build flags for CMAKE build trigger +set_build_variables() { + local cmake_cxx_flag_params + local cmake_cc_flag_params + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ] ; then + cmake_cxx_flag_params="$ROCM_PATH/llvm/bin/clang++" + cmake_cc_flag_params="$ROCM_PATH/llvm/bin/clang" + cmake_comp_params=( + "-DCMAKE_C_COMPILER=$ROCM_PATH/llvm/bin/clang" + "-DCMAKE_CXX_COMPILER=$ROCM_PATH/llvm/bin/clang++" + ) + else + cmake_cxx_flag_params="$ROCM_PATH/bin/hipcc" + cmake_cc_flag_params="$ROCM_PATH/bin/hipcc" + cmake_comp_params=( + "-DCMAKE_C_COMPILER=$ROCM_PATH/bin/hipcc" + "-DCMAKE_CXX_COMPILER=$ROCM_PATH/bin/hipcc" + ) + fi + + case "$1" in + ("CXX") + printf "%s" "${cmake_cxx_flag_params}" + ;; + ("CC") + printf "%s" "${cmake_cc_flag_params}" + ;; + ("CMAKE_C_CXX") + printf '%s ' "${cmake_comp_params[@]}" + ;; + (*) + exit 1 + ;; + esac + exit +} + +# Get the directory containing the cmake config files +getCmakePath() { + local rocmInstallPath=${ROCM_PATH} + local cmakePath="lib/cmake" + dieIfEmpty "$rocmInstallPath" + echo "$rocmInstallPath/$cmakePath" +} + +# Get the install directory name for libraries +# lib - For normal builds +# lib/asan -For ASAN builds +getInstallLibDir() { + local libDir="lib" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ] ; then + libDir="lib/asan" + fi + echo "$libDir" +} + +# TODO: Use the function to set the LDFLAGS and CXXFLAGS for ASAN +# rather than setting in individual build scripts +set_asan_env_vars() { + # Flag to set cmake build params for ASAN builds + ASAN_CMAKE_PARAMS="true" + export ADDRESS_SANITIZER="ON" + LLVM_BIN_DIR="${ROCM_PATH}/llvm/bin" + export CC="$LLVM_BIN_DIR/clang" + export CXX="$LLVM_BIN_DIR/clang++" + export FC="$LLVM_BIN_DIR/flang" + export PATH="$LLVM_BIN_DIR/:$PATH" + # get exact path to ASAN lib containing clang version + ASAN_LIB_PATH=$(clang --print-file-name=libclang_rt.asan-x86_64.so) + export LD_LIBRARY_PATH="${ASAN_LIB_PATH%/*}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + export ASAN_OPTIONS="detect_leaks=0" +} + +set_address_sanitizer_on() { + export CFLAGS="-fsanitize=address -shared-libasan -g -gz" + export CXXFLAGS="-fsanitize=address -shared-libasan -g -gz" + export LDFLAGS="-Wl,--enable-new-dtags -fuse-ld=lld -fsanitize=address -shared-libasan -g -gz -Wl,--build-id=sha1 -L${ROCM_PATH}/lib/asan" +} + +rebuild_lapack() { + wget -nv -O lapack-3.9.1.tar.gz \ + http://compute-artifactory.amd.com/artifactory/rocm-generic-thirdparty-deps/ubuntu/lapack-v3.9.1.tar.gz + sh -c "echo 'd0085d2caf997ff39299c05d4bacb6f3d27001d25a4cc613d48c1f352b73e7e0 *lapack-3.9.1.tar.gz' | sha256sum -c" + tar xzf lapack-3.9.1.tar.gz --one-top-level=lapack-src --strip-components 1 + rm lapack-3.9.1.tar.gz + + cmake -Slapack-src -Blapack-bld \ + ${LAUNCHER_FLAGS} \ + -DBUILD_TESTING=OFF \ + -DCBLAS=ON \ + -DLAPACKE=OFF + cmake --build lapack-bld -- -j${PROC} + cmake --build lapack-bld -- install + rm -r lapack-src lapack-bld +} + +# debug function #dumping values in case of error to solve the same +print_vars() { +echo " Status of Vars in $1 build " +echo " TARGET= $2 " +echo " BUILD_TYPE = $3 " +echo " SHARED_LIBS = $4 " +echo " CLEAN_OR_OUT = $5 " +echo " PKGTYPE= $6 " +echo " MAKETARGET = $7 " +} + +# Common cmake parameters can be set +# component build scripts can use this function +rocm_common_cmake_params() { + local cmake_params + if [ "${ASAN_CMAKE_PARAMS}" == "true" ] ; then + local ASAN_LIBDIR="lib/asan" + local CMAKE_PATH=$(getCmakePath) + cmake_params=( + "-DCMAKE_PREFIX_PATH=$CMAKE_PATH;${ROCM_PATH}/$ASAN_LIBDIR;$ROCM_PATH/llvm;$ROCM_PATH" + "-DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'}" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_LIB_RPATH" + "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_EXE_RPATH" + "-DENABLE_ASAN_PACKAGING=true" + ) + else + cmake_params=( + "-DCMAKE_PREFIX_PATH=${ROCM_PATH}/llvm;${ROCM_PATH}" + "-DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'Release'}" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--rpath,$ROCM_LIB_RPATH" + "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--rpath,$ROCM_EXE_RPATH" + ) + fi + printf '%s ' "${cmake_params[@]}" + + local common_cmake_params + common_cmake_params=( + "-DCMAKE_VERBOSE_MAKEFILE=1" + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE" + "-DCMAKE_INSTALL_PREFIX=${ROCM_PATH}" + "-DCMAKE_PACKAGING_INSTALL_PREFIX=${ROCM_PATH}" + "-DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF" + "-DROCM_SYMLINK_LIBS=OFF" + "-DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_PATH}" + "-DROCM_DISABLE_LDCONFIG=ON" + "-DROCM_PATH=${ROCM_PATH}" + ) + printf '%s ' "${common_cmake_params[@]}" +} + +# Setup a number of variables to specify where to find the source +# where to do the build and where to put the packages +# Note the PACKAGE_DIR downcases the package name +# This could be extended to do different things based on $1 +set_component_src(){ + COMPONENT_SRC="$LIBS_WORK_DIR/$1" + + BUILD_DIR="$OUT_DIR/build/$1" + DEB_PATH="$OUT_DIR/${PKGTYPE}/${1,,}" + RPM_PATH="$OUT_DIR/${PKGTYPE}/${1,,}" + PACKAGE_DIR="$OUT_DIR/${PKGTYPE}/${1,,}" +} + +# Standard definition of function to print the package location. If +# for some reason a custom version is needed then it can overwrite +# this definition +# TODO: Don't use a global PKGTYPE, pass the value in as a parameter +print_output_directory() { + case ${1:-$PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +# Standard argument processing +# Here to avoid repetition +TARGET="build" # default target +stage2_command_args(){ + while [ "$1" != "" ]; + do + case $1 in + -o | --outdir ) + shift 1; PKGTYPE=$1 ; TARGET="outdir" ;; + -c | --clean ) + TARGET="clean" ;; + *) + break ;; + esac + shift 1 + done +} + +show_build_cache_stats(){ + if [ "$CCACHE_ENABLED" = "true" ] ; then + if ! ccache -s ; then + echo "Unable to display ccache stats" + fi + fi +} diff --git a/rocm-build/compute_utils.sh b/rocm-build/compute_utils.sh new file mode 100755 index 000000000..5687d1864 --- /dev/null +++ b/rocm-build/compute_utils.sh @@ -0,0 +1,372 @@ +#!/bin/bash + +: <<'END_COMMENT' + This script retains only those functions from the original compute_utils.sh + that the ROCm build scripts utilize. +END_COMMENT + +set -e +set -o pipefail + + +# Set a sensible default value for DASH_JAY in case none is provided +DASH_JAY=${DASH_JAY:-"-j $(nproc)"} + +# Enable ccache by default unless requested otherwhise +if [[ "$ROCM_USE_CCACHE" != "0" ]] ; then + for d in /usr/lib/ccache /usr/lib64/ccache ;do + if [ -d "$d" ]; then + PATH="$d:$PATH" + break # Only add one ccache at most + fi + done +fi + +# Print message to stderr +# param message string to print on exit +# Example: printErr "file not found" +printErr() { + echo "$@" 1>&2 +} + +# Print message to stderr and terminate current program +# param message string to print on exit +# Example: die "Your program" has terminated +die() { + printErr "FATAL: $@" + exit 1 +} + +# Die if first argument is empty +# param string to validate +# param error message +# Example: die "$VARIABLE" "Your program" has terminated +dieIfEmpty() { + if [ "$1" == "" ]; then + shift + die "$@" + fi +} + +# Get directory with build output package +# Precedence: +# 1. PWD +# 2. Caller's folder +# 3. Known build output folder +getPackageRoot() { + local scriptPath=$(readlink -f $(dirname $BASH_SOURCE)) + local testFile="build.version" + + if [ -a "$PWD/$testFile" ]; then + echo "$PWD" + elif [ -a "$scriptPath/../$testFile" ]; then + echo "$scriptPath/.." + elif [ -a "$scriptPath/$testFile" ]; then + echo "$scriptPath" + elif [ ! -z "$OUT_DIR" ]; then + echo "$OUT_DIR" + else + die "Failed to determine package directory" + fi +} + +# Get a list of directories containing the build output +# shared objects. +# Important: PWD takes precedence over build output folder +getLibPath() { + local packageRoot="$(getPackageRoot)" + dieIfEmpty "$packageRoot" + echo "$packageRoot/lib" +} + +# Get a list of directories containing the output executables +# param binDir (optional) - package name +# Important: PWD takes precedence over build output folder +getBinPath() { + local binDir="$1" + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + + if [ "$binDir" == "" ]; then + echo "$packageRoot/bin" + else + echo "$packageRoot/bin/$binDir" + fi +} + +# Get a list of directories containing the output source files +# Important: PWD takes precedence over build output folder +getSrcPath() { + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + echo "$packageRoot/src" +} + +# Get a list of directories to place build output +# param moduleName - name of the module for the build path +# Important: PWD takes precedence over build output folder +getBuildPath() { + local moduleName="$1" + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + echo "$packageRoot/build/$moduleName" +} + +# Get a list of directories containing the output etc files +# Important: PWD takes precedence over build output folder +getUtilsPath() { + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + echo "$packageRoot/utils" +} + +# Get a list of directories containing the output include files +# Important: PWD takes precedence over build output folder +getIncludePath() { + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + echo "$packageRoot/include" +} + +# Get the directory containing the cmake config files +getCmakePath() { + local rocmInstallPath=${ROCM_INSTALL_PATH} + local cmakePath="lib/cmake" + if [ "$ASAN_CMAKE_PARAMS" == "true" ] ; then + cmakePath="lib/asan/cmake" + fi + dieIfEmpty "$rocmInstallPath" + echo "$rocmInstallPath/$cmakePath" +} + +# Get a list of directories containing the output debian files +# Important: PWD takes precedence over build output folder +getDebPath() { + local packageName="$1" + dieIfEmpty "$packageName" "No valid package name specified" + + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + + echo "$packageRoot/deb/$packageName" +} + +# Get a list of directories containing the output rpm files +# Important: PWD takes precedence over build output folder +getRpmPath() { + local packageName="$1" + dieIfEmpty "$packageName" "No valid package name specified" + + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + + echo "$packageRoot/rpm/$packageName" +} + + + +verifyEnvSetup() { + if [ -z "$OUT_DIR" ]; then + die "Please source build/envsetup.sh first." + fi +} + +# Copy a file or directory to target location and show single line progress +progressCopy() { + if [ -d "$1" ]; then + rsync -a "$1"/* "$2" + else + rsync -a "$1" "$2" + fi +} + + +#following three common functions have been written to addition of static libraries +print_lib_type() { + if [ "$1" == "OFF" ]; + then + echo " Building Archive " + else + echo " Building Shared Object " + fi +} + +check_conflicting_options() { + # 1->CLEAN_OR_OUT 2->PKGTYPE 3->MAKETARGET + RET_CONFLICT=0 + if [ $1 -ge 2 ]; then + if [ "$2" != "deb" ] && [ "$2" != "rpm" ] && [ "$2" != "tar" ]; then + echo " Wrong Param Passed for Package Type for the Outdir... " + RET_CONFLICT=30 + fi + fi + # check Clean Vs Outdir + if [ $1 -ge 3 ] && [ $RET_CONFLICT -eq 0 ] ; then + echo " Clean & Out Both are sepcified. Not accepted. Bailing .. " + RET_CONFLICT=40 + fi + if [ $RET_CONFLICT -eq 0 ] && [ "$3" != "deb" ] && [ "$3" != "rpm" ] && [ "$3" != "all" ] && [ "$3" != "tar" ]; then + echo " Wrong Param Passed for Package Type... " + RET_CONFLICT=50 + fi +} + +set_asan_env_vars() { + # Flag to set cmake build params for ASAN builds + ASAN_CMAKE_PARAMS="true" + # Pass the LLVM bin path as the first parameter + LLVM_BIN_DIR=${1:-"${ROCM_INSTALL_PATH}/llvm/bin"} + export CC="$LLVM_BIN_DIR/clang" + export CXX="$LLVM_BIN_DIR/clang++" + export PATH="$PATH:$LLVM_BIN_DIR/" + # get exact path to ASAN lib containing clang version + ASAN_LIB_PATH=$(clang --print-file-name=libclang_rt.asan-x86_64.so) + export LD_LIBRARY_PATH="${ASAN_LIB_PATH%/*}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + export ASAN_OPTIONS="detect_leaks=0" +} + +set_address_sanitizer_on() { + # In SLES and RHEL debuginfo package is not getting generated + # when compiler is set to clang. Using default -gdwarf-5 is getting unhandled in these distros + # So setting -gdwarf-4 as a quick fix + # TODO: -gdwarf-5 unhandling when compiler set to clang need to be fixed + SET_DWARF_VERSION_4="" + if [[ $DISTRO_ID == sles* ]] || [[ $DISTRO_ID == rhel* ]]; then + SET_DWARF_VERSION_4="-gdwarf-4" + fi + export CFLAGS="-fsanitize=address -shared-libasan -g $SET_DWARF_VERSION_4" + export CXXFLAGS="-fsanitize=address -shared-libasan -g $SET_DWARF_VERSION_4" + export LDFLAGS="-Wl,--enable-new-dtags -fuse-ld=lld -fsanitize=address -shared-libasan -g -Wl,--build-id=sha1 -L$ROCM_INSTALL_PATH/lib/asan" +} + +ack_and_ignore_asan() { + echo "-a parameter accepted but ignored" +} + +#debug function #dumping values in case of error to solve the same +print_vars() { +echo " Status of Vars in $1 build " +echo " TARGET= $2 " +echo " BUILD_TYPE = $3 " +echo " SHARED_LIBS = $4 " +echo " CLEAN_OR_OUT = $5 " +echo " PKGTYPE= $6 " +echo " MAKETARGET = $7 " +} + +# Provide this as a function, rather than a variable to delay the evaluation +# of variables. In particular we might want to put code in here which changes +# depending on if we are building with the address sanitizer or not +# Can do things like set the packaging type - no point in packaging RPM on debian and +# vica versa. +# Set CPACK_RPM_INSTALL_WITH_EXEC so it packages debug info for shared libraries. +rocm_common_cmake_params(){ + if [ "$BUILD_TYPE" = "RelWithDebInfo" ] ; then + printf '%s ' "-DCPACK_RPM_DEBUGINFO_PACKAGE=TRUE" \ + "-DCPACK_DEBIAN_DEBUGINFO_PACKAGE=TRUE" \ + "-DCPACK_RPM_INSTALL_WITH_EXEC=TRUE" \ + # end of list comment or blank line + fi + printf '%s ' "-DROCM_DEP_ROCMCORE=ON" \ + "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_EXE_RPATH" \ + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_LIB_RPATH" \ + "-DFILE_REORG_BACKWARD_COMPATIBILITY=OFF" \ + "-DINCLUDE_PATH_COMPATIBILITY=OFF" \ + # set lib directory to lib/asan for ASAN builds + # Disable file reorg backward compatibilty for ASAN builds + # ENABLE_ASAN_PACKAGING - Used for enabling ASAN packaging + if [ "$ASAN_CMAKE_PARAMS" == "true" ] ; then + local asan_common_cmake_params + local ASAN_LIBDIR="lib/asan" + local CMAKE_PATH=$(getCmakePath) + asan_common_cmake_params=( + "-DCMAKE_INSTALL_LIBDIR=$ASAN_LIBDIR" + "-DCMAKE_PREFIX_PATH=$CMAKE_PATH;${ROCM_INSTALL_PATH}/$ASAN_LIBDIR;$ROCM_INSTALL_PATH/llvm;$ROCM_INSTALL_PATH" + "-DENABLE_ASAN_PACKAGING=$ASAN_CMAKE_PARAMS" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_ASAN_LIB_RPATH" + ) + printf '%s ' "${asan_common_cmake_params[@]}" + else + printf '%s ' "-DCMAKE_INSTALL_LIBDIR=lib" \ + # end of list comment or blank line + fi +} + +rocm_cmake_params() { + local cmake_params + + cmake_params=( + "-DCMAKE_PREFIX_PATH=${ROCM_INSTALL_PATH}/llvm;${ROCM_INSTALL_PATH}" + "-DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'}" + "-DCMAKE_VERBOSE_MAKEFILE=1" + "-DCPACK_GENERATOR=${CPACKGEN:-'DEB;RPM'}" + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE" + "-DROCM_PATCH_VERSION=${ROCM_LIBPATCH_VERSION}" + "-DCMAKE_INSTALL_PREFIX=${ROCM_INSTALL_PATH}" + "-DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_INSTALL_PATH}" + ) + + printf '%s ' "${cmake_params[@]}" +} + +copy_if(){ + local type=$1 selector=$2 dir=$3 + shift 3 + mkdir -p "$dir" + if [[ "$selector" =~ "$type" ]] ; then + cp -a "$@" "$dir" + fi + # handle ddeb files as well, renaming them on the way + for f + do + case "$f" in + # Properly formed debian package name is a number of _ separated fields + # The first is the package name. + # Second is version number + # third is architecture + # Ensure we have at least one _ in the name + (*"_"*".deb") + local deb=${f%.deb} + local basename=${deb##*/} + local dirname=${f%/*} + # filename($f) can be either /some/path/pkgname.deb or pkgname.deb + # If its pkgname.deb, then directory should be . + [[ "$dirname" == "$f" ]] && dirname=. + local pkgname=${basename%%_*} + local pkgextra=${basename#*_} + # cmake 3.22 creates the filename by replacing .deb with -dbgsym.ddeb + # at least for hostcall. Mind you hostcall looks to be incorrectly packaged. + if [ -e "${deb}-dbgsym.ddeb" ] + then + dest=${deb##*/} + dest="${dest%%_*}-dbgsym_${dest#*_}" + cp -a "${deb}-dbgsym.ddeb" "$dir/${dest##*/}.deb" + fi + # This is needed for comgr + if [ -e "$dirname/${pkgname}-dbgsym_${pkgextra}.ddeb" ] + then + cp "$dirname/${pkgname}-dbgsym_${pkgextra}.ddeb" "$dir/${pkgname}-dbgsym_${pkgextra}.deb" + fi + ;; + esac + done +} + + +# Function to remove -r or -R from MAKEFLAGS +remove_make_r_flags(){ + local firstword='^[^ ]*' + if [[ "$MAKEFLAGS" =~ ${firstword}r ]] ; then MAKEFLAGS=${MAKEFLAGS/r/} ; fi + if [[ "$MAKEFLAGS" =~ ${firstword}R ]] ; then MAKEFLAGS=${MAKEFLAGS/R/} ; fi +} + +# Set a variable to the value needed by cmake to use ninja if it is available +# If GEN_NINJA is already defined, even as the empty string, then leave the value alone +# Intended use in build_xxxx.sh is ${GEN_NINJA:+"$GEN_NINJA"} to cope with potentially weird values +# but in practice just ${GEN_NINJA} without quotes will be fine. +# e.g. cmake -DCMAKE_BUILD_TYPE="$BUILD_TYPE" $GEN_NINJA +# If for some reason you wanted to build without ninja just export an empty GEN_NINJA variable +if [ "${GEN_NINJA+defined}" != "defined" ] && command -v ninja >/dev/null ; then + GEN_NINJA=-GNinja +fi + diff --git a/rocm-build/docker/ubuntu20/Dockerfile b/rocm-build/docker/ubuntu20/Dockerfile new file mode 100644 index 000000000..125f1f134 --- /dev/null +++ b/rocm-build/docker/ubuntu20/Dockerfile @@ -0,0 +1,7 @@ +FROM ubuntu:focal as builder +COPY packages /tmp/packages +COPY install-prerequisites.sh /tmp/install-prerequisites.sh +ENV KBUILD_PKG_ROOTCMD= +ENV RPP_DEPS_LOCATION=/usr/local/rpp-deps +RUN /tmp/install-prerequisites.sh +WORKDIR /src diff --git a/rocm-build/docker/ubuntu20/README.md b/rocm-build/docker/ubuntu20/README.md new file mode 100644 index 000000000..a6afb0bc2 --- /dev/null +++ b/rocm-build/docker/ubuntu20/README.md @@ -0,0 +1,20 @@ +## Steps to build the Docker Image +1. Clone this repositry + ```bash + git clone -b roc-6.1.x https://github.com/ROCm/ROCm.git + ``` +2. Go into the OS specific docker directory in build-infra + ```bash + cd ROCm/rocm-build/docker/ubuntu20 + ``` + +3. Build the Docker image + ```bash + docker build -t . + ``` + replace the `` with the new Docker image Name of your choice, +5. After successful build, verify your \ in the list all available docker images. + ```bash + docker images + ``` + diff --git a/rocm-build/docker/ubuntu20/install-prerequisites.sh b/rocm-build/docker/ubuntu20/install-prerequisites.sh new file mode 100755 index 000000000..0c73e06b1 --- /dev/null +++ b/rocm-build/docker/ubuntu20/install-prerequisites.sh @@ -0,0 +1,217 @@ +#! /usr/bin/bash + +set -ex + + +apt-get update +DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get install --no-install-recommends -y $(grep -v '^#' /tmp/packages) +apt-get clean +rm -rf /var/cache/apt/ /var/lib/apt/lists/* /etc/apt/apt.conf.d/01proxy + +#Install git 2.17.1 version +curl -o git.tar.gz https://cdn.kernel.org/pub/software/scm/git/git-2.17.1.tar.gz +tar -zxf git.tar.gz +cd git-* +make prefix=/usr/local all +make prefix=/usr/local install +git --version + +#install argparse and CppHeaderParser python modules for roctracer and rocprofiler +# CppHeader needs setuptools. setuptools needs wheel. +pip3 install --no-cache-dir setuptools wheel tox +pip3 install --no-cache-dir CppHeaderParser argparse requests lxml barectf recommonmark jinja2==3.0.0 websockets matplotlib numpy scipy minimal msgpack pytest sphinx joblib cmake==3.25.2 pandas myst-parser + +# Allow sudo for everyone user +echo 'ALL ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/everyone + +# Install OCaml packages to build LLVM's OCaml bindings to be used in lightning compiler test pipeline +wget -nv https://sourceforge.net/projects/opam.mirror/files/2.1.4/opam-2.1.4-x86_64-linux -O /usr/local/bin/opam +chmod +x /usr/local/bin/opam +opam init --yes --disable-sandboxing +opam install ctypes --yes + +# Install and modify git-repo (#!/usr/bin/env python -> #!/usr/bin/env python3) +curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo +chmod a+x /usr/bin/repo + +# Build a newer version of doxygen because of issue 6456 +#Install doxygen 1.8.11 for dbgapi +mkdir /tmp/doxygen +cd /tmp/doxygen +curl -LO https://sourceforge.net/projects/doxygen/files/rel-1.8.18/doxygen-1.8.18.src.tar.gz +tar xzf doxygen-1.8.18.src.tar.gz +cd doxygen-1.8.18 +mkdir -p build +cd build +cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -Wno-dev .. +make -j install +cd ../.. +rm -rf /tmp/doxygen + +# Build ccache from the source +cd /tmp +git clone https://github.com/ccache/ccache -b v4.7.5 +cd ccache +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release .. +make +make install +cd /tmp +rm -rf ccache + +# Install sharp from MLNX_OFED_LINUX as dependency for rccl-rdma-sharp-plugins +cd /var/tmp +mkdir mlnx +wget -O mlnx/tar.tgz https://content.mellanox.com/ofed/MLNX_OFED-5.2-1.0.4.0/MLNX_OFED_LINUX-5.2-1.0.4.0-ubuntu20.04-x86_64.tgz +tar -xz -C mlnx -f mlnx/tar.tgz +apt-key add mlnx/*/RPM-GPG-KEY-Mellanox +echo "deb [arch=amd64] file:$(echo $PWD/mlnx/*/DEBS) ./" > /etc/apt/sources.list.d/sharp.list +apt update +apt install -y sharp +apt clean +rm -rf /var/cache/apt/ /var/lib/apt/lists/* mlnx /etc/apt/sources.list.d/sharp.list + +#Install older version of hwloc-devel package for rocrtst +curl -lO https://download.open-mpi.org/release/hwloc/v1.11/hwloc-1.11.13.tar.bz2 +tar -xvf hwloc-1.11.13.tar.bz2 +cd hwloc-1.11.13 +./configure +make +make install +cp /usr/local/lib/libhwloc.so.5 /usr/lib +hwloc-info --version + +## Install googletest from source +mkdir -p /tmp/gtest +cd /tmp/gtest +wget https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip -O googletest.zip +unzip googletest.zip +cd googletest-1.14.0/ +mkdir build +cd build +cmake .. +make -j$(nproc) +make install +rm -rf /tmp/gtest + +## Install gRPC from source +## RDC Pre-requisites +GRPC_ARCHIVE=grpc-1.61.0.tar.gz +mkdir /tmp/grpc +mkdir /usr/grpc +cd /tmp +git clone --recurse-submodules -b v1.61.0 https://github.com/grpc/grpc +cd grpc +mkdir -p cmake/build +cd cmake/build +cmake -DgRPC_INSTALL=ON -DBUILD_SHARED_LIBS=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr/grpc -DCMAKE_CXX_STANDARD=14 ../.. +make -j$(nproc) +make install +cd / +rm -rf /tmp/grpc + +## Download prebuilt AMD multithreaded blis (2.0) +## Reference : https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/install.sh#L403 +mkdir -p /tmp/blis +cd /tmp/blis +wget -O - https://github.com/amd/blis/releases/download/2.0/aocl-blis-mt-ubuntu-2.0.tar.gz | tar xfz - +mv amd-blis-mt /usr/blis +cd / +rm -rf /tmp/blis + +## Download aocl-linux-aocc-4.0_1_amd64.deb +mkdir -p /tmp/aocl +cd /tmp/aocl +wget -nv https://download.amd.com/developer/eula/aocl/aocl-4-0/aocl-linux-aocc-4.0_1_amd64.deb +apt install ./aocl-linux-aocc-4.0_1_amd64.deb +rm -rf /tmp/aocl + +## lapack(3.9.1v) +## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L174 +lapack_version=3.9.1 +lapack_srcdir=lapack-$lapack_version +lapack_blddir=lapack-$lapack_version-bld +mkdir -p /tmp/lapack +cd /tmp/lapack +mkdir -p /tmp/lapack +cd /tmp/lapack +rm -rf "$lapack_srcdir" "$lapack_blddir" +wget -O - https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.9.1.tar.gz | tar xzf - +cmake -H$lapack_srcdir -B$lapack_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls -DBUILD_TESTING=OFF -DCBLAS=ON -DLAPACKE=OFF +make -j$(nproc) -C "$lapack_blddir" +make -C "$lapack_blddir" install +cd $lapack_blddir +cp -r ./include/* /usr/local/include/ +cp -r ./lib/* /usr/local/lib +cd / +rm -rf /tmp/lapack + +## FMT(7.1.3v) +## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L152 +fmt_version=7.1.3 +fmt_srcdir=fmt-$fmt_version +fmt_blddir=fmt-$fmt_version-bld +rm -rf "$fmt_srcdir" "$fmt_blddir" +wget -O - https://github.com/fmtlib/fmt/archive/refs/tags/$fmt_version.tar.gz | tar xzf - +cmake -H$fmt_srcdir -B$fmt_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_EXTENSIONS=OFF -DCMAKE_CXX_STANDARD_REQUIRED=ON -DFMT_DOC=OFF -DFMT_TEST=OFF +make -j$(nproc) -C "$fmt_blddir" +make -C "$fmt_blddir" install + +# Build and install libjpeg-turbo +mkdir -p /tmp/libjpeg-turbo +cd /tmp/libjpeg-turbo +wget -nv https://github.com/rrawther/libjpeg-turbo/archive/refs/heads/2.0.6.2.zip -O libjpeg-turbo-2.0.6.2.zip +unzip libjpeg-turbo-2.0.6.2.zip +cd libjpeg-turbo-2.0.6.2 +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RELEASE -DENABLE_STATIC=FALSE -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib .. +make -j$(nproc) install +rm -rf /tmp/libjpeg-turbo + +# Get released ninja from source +mkdir -p /tmp/ninja +cd /tmp/ninja +wget -nv https://codeload.github.com/Kitware/ninja/zip/refs/tags/v1.11.1.g95dee.kitware.jobserver-1 -O ninja.zip +unzip ninja.zip +cd ninja-1.11.1.g95dee.kitware.jobserver-1 +./configure.py --bootstrap +cp ninja /usr/local/bin/ +rm -rf /tmp/ninja + +# Install pre-built FFmpeg and dependencies +# See docker/build-deps for instructions on how to build these packages +wget -qO- https://www.ffmpeg.org/releases/ffmpeg-4.4.2.tar.gz | tar -xzv -C /usr/local + +command -v lbzip2 +ln -sf $(command -v lbzip2) /usr/local/bin/compressor || ln -sf $(command -v bzip2) /usr/local/bin/compressor + +# Install Google Benchmark +mkdir -p /tmp/Gbenchmark +cd /tmp/Gbenchmark +wget -qO- https://github.com/google/benchmark/archive/refs/tags/v1.6.1.tar.gz | tar xz +cmake -Sbenchmark-1.6.1 -Bbuild -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_CXX_STANDARD=14 +make -j -C build +cd /tmp/Gbenchmark/build +make install + +# Build boost-1.82.0 from source for RPP +# Installing in a non-standard location since the test packages of hipFFT and rocFFT pick up the version of +# the installed Boost library and declare a package dependency on that specific version of Boost. +# For example, if this was installed in the standard location it would declare a dependency on libboost-dev(el)1.82.0 +# which is not available as a package in any distro. +# Once this is fixed, we can remove the Boost package from the requirements list and install this +# in the standard location +# export RPP_DEPS_LOCATION=/usr/local/rpp-deps +mkdir -p /tmp/boost-1.82.0 +cd /tmp/boost-1.82.0 +wget -nv https://sourceforge.net/projects/boost/files/boost/1.82.0/boost_1_82_0.tar.bz2 -O ./boost_1_82_0.tar.bz2 +tar -xf boost_1_82_0.tar.bz2 --use-compress-program="/usr/local/bin/compressor" +cd boost_1_82_0 +./bootstrap.sh --prefix=${RPP_DEPS_LOCATION} --with-python=python3 +./b2 stage -j$(nproc) threading=multi link=shared cxxflags="-std=c++11" +./b2 install threading=multi link=shared --with-system --with-filesystem +./b2 stage -j$(nproc) threading=multi link=static cxxflags="-std=c++11 -fpic" cflags="-fpic" +./b2 install threading=multi link=static --with-system --with-filesystem +rm -rf /tmp/boost-1.82.0 diff --git a/rocm-build/docker/ubuntu20/packages b/rocm-build/docker/ubuntu20/packages new file mode 100644 index 000000000..bdcc0d3e3 --- /dev/null +++ b/rocm-build/docker/ubuntu20/packages @@ -0,0 +1,137 @@ +# List of packages needed for stage1 build +apt-utils +aria2 +autoconf +automake +bc +bison +bridge-utils +build-essential +bzip2 +check +chrpath +cifs-utils +cpio +curl +devscripts +dkms +dos2unix +fakeroot +flex +freeglut3-dev +g++ +g++-multilib +# gawk is needed for aomp +gawk +gcc +gcc-multilib +gfortran +git-lfs +gnupg +graphviz +kernel-wedge +lbzip2 +# less is needed by repo +less +libass-dev +libatlas-base-dev +libbabeltrace-ctf-dev +libbabeltrace-dev +libboost-all-dev +libboost-dev +libboost-filesystem-dev +libboost-program-options-dev +libboost-system-dev +libbz2-dev +libc++-dev +libc++1 +libc++abi-dev +libc++abi1 +libc6-dev-i386 +libcap-dev +libcurl4-openssl-dev +libdrm-dev +libdw-dev +libdw1 +libdwarf-dev +libelf-dev +libelf1 +libexpat1-dev +libfftw3-dev +libfile-find-rule-perl +libgflags-dev +libglew-dev +libgmp-dev +libgoogle-glog-dev +libgtk2.0-dev +libhdf5-serial-dev +libjpeg-dev +libleveldb-dev +liblmdb-dev +liblzma-dev +libmpfr-dev +libmpich-dev +libmsgpack-dev +libncurses5-dev +libnuma-dev +libomp-dev +libopenblas-base +libopenblas-dev +libpci-dev +libpci3 +libpciaccess-dev +libpciaccess0 +libprotobuf-dev +libpython2.7-dev +libpython3-dev +libreadline-dev +libsnappy-dev +libssl-dev +libsuitesparse-dev +libsystemd-dev +libtinfo-dev +libtool +libunwind-dev +liburi-encode-perl +libva-dev +libvirt-clients +libvirt-daemon-system +libyaml-cpp-dev +llvm +llvm-6.0-dev +llvm-dev +llvm-runtime +mesa-common-dev +mpich +ocaml +ocaml-findlib +patchelf +pigz +pkg-config +protobuf-compiler +python-is-python3 +python-pip-whl +python-yaml +python3-dev +python3-pip +python3-venv +python3-yaml +python3.8-dev +re2c +redis-tools +rpm +rsync +ssh +strace +sudo +systemtap-sdt-dev +texinfo +texlive +texlive-extra-utils +texlive-plain-generic +texlive-xetex +unzip +vim +wget +xsltproc +zlib1g-dev diff --git a/rocm-build/docker/ubuntu22/Dockerfile b/rocm-build/docker/ubuntu22/Dockerfile new file mode 100644 index 000000000..45a602f74 --- /dev/null +++ b/rocm-build/docker/ubuntu22/Dockerfile @@ -0,0 +1,9 @@ +FROM ubuntu:jammy as builder +COPY packages /tmp/packages +COPY local-pin-600 /tmp/local-pin-600 +COPY install-prerequisities.sh /tmp/install-prerequisities.sh +RUN chmod +x /tmp/install-prerequisities.sh +ENV KBUILD_PKG_ROOTCMD= +ENV RPP_DEPS_LOCATION=/usr/local/rpp-deps +RUN /tmp/install-prerequisities.sh +WORKDIR /src diff --git a/rocm-build/docker/ubuntu22/README.md b/rocm-build/docker/ubuntu22/README.md new file mode 100644 index 000000000..6dc60c845 --- /dev/null +++ b/rocm-build/docker/ubuntu22/README.md @@ -0,0 +1,18 @@ +## Steps to build the Docker Image +1. Clone this repositry + ```bash + git clone -b roc-6.1.x https://github.com/ROCm/ROCm.git + ``` +2. Go into the OS specific docker directory in build-infra + ```bash + cd ROCm/rocm-build/docker/ubuntu22 + ``` +3. Build the docker image + ```bash + docker build -t . + ``` + replace the `` with the new Docker image Name of your choice, +4. After successful build, verify your \ in the list all available docker images. + ```bash + docker images + ``` diff --git a/rocm-build/docker/ubuntu22/install-prerequisities.sh b/rocm-build/docker/ubuntu22/install-prerequisities.sh new file mode 100644 index 000000000..3ea039bc4 --- /dev/null +++ b/rocm-build/docker/ubuntu22/install-prerequisities.sh @@ -0,0 +1,232 @@ +#! /usr/bin/bash + +set -ex + +apt-get -y update +DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get install --no-install-recommends -y $(sed 's/#.*//' /tmp/packages) +apt-get clean +rm -rf /var/cache/apt/ /var/lib/apt/lists/* /etc/apt/apt.conf.d/01proxy + +#Install 2.17.1 version of git as we are seeing issues with 2.25 , where it was not allowing to add git submodules if the user is different for parent git directory +curl -o git.tar.gz https://cdn.kernel.org/pub/software/scm/git/git-2.17.1.tar.gz +tar -zxf git.tar.gz +cd git-* +make prefix=/usr/local all +make prefix=/usr/local install +git --version + +#install argparse and CppHeaderParser python modules for roctracer and rocprofiler +#install rocm-docs-core for the docs-as-code project. Only needed on one OS +# CppHeader needs setuptools. setuptools needs wheel. +# Looks like I need them as seperate commands +# Sigh, install both python2 and python 3 version +pip3 install --no-cache-dir setuptools wheel tox +pip3 install --no-cache-dir CppHeaderParser argparse requests lxml barectf recommonmark jinja2==3.0.0 websockets matplotlib numpy scipy minimal msgpack pytest sphinx joblib PyYAML rocm-docs-core cmake==3.25.2 pandas myst-parser + +# Allow sudo for everyone user +echo 'ALL ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/everyone + +# Install OCaml packages to build LLVM's OCaml bindings to be used in lightning compiler test pipeline +wget -nv https://sourceforge.net/projects/opam.mirror/files/2.1.4/opam-2.1.4-x86_64-linux -O /usr/local/bin/opam +chmod +x /usr/local/bin/opam +opam init --yes --disable-sandboxing +opam install ctypes --yes + +# Install and modify git-repo (#!/usr/bin/env python -> #!/usr/bin/env python3) +curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo +chmod a+x /usr/bin/repo + +# Build ccache from the source +cd /tmp +git clone https://github.com/ccache/ccache -b v4.7.5 +cd ccache +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release .. +make +make install +cd /tmp +rm -rf ccache + +# Install sharp from MLNX_OFED_LINUX as dependency for rccl-rdma-sharp-plugins +cd /var/tmp +mkdir mlnx +wget -O mlnx/tar.tgz https://content.mellanox.com/ofed/MLNX_OFED-24.01-0.3.3.1/MLNX_OFED_LINUX-24.01-0.3.3.1-ubuntu22.04-x86_64.tgz +tar -xz -C mlnx -f mlnx/tar.tgz +apt-key add mlnx/*/RPM-GPG-KEY-Mellanox +echo "deb [arch=amd64] file:$(echo $PWD/mlnx/*/DEBS) ./" > /etc/apt/sources.list.d/sharp.list +apt update +apt install -y sharp +apt clean +rm -rf /var/cache/apt/ /var/lib/apt/lists/* mlnx /etc/apt/sources.list.d/sharp.list + + +apt update +apt -y install libunwind-dev +apt -y install libgoogle-glog-dev + +# Install python3.8 from source +curl -LO https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tar.xz +tar -xvf Python-3.8.13.tar.xz +pwd +ls /var/tmp/ +ls Python-3.8.13 +mv Python-3.8.13 /opt/ +apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev pkg-config make -y +cd /opt/Python-3.8.13/ +./configure --enable-optimizations --enable-shared +make +make -j 6 +make altinstall +ldconfig /opt/Python3.8.13 +python3.8 --version + +# roctracer and rocprofiler needs this python3.8 +python3.8 -m pip install setuptools wheel +python3.8 -m pip install CppHeaderParser argparse requests lxml PyYAML joblib + +#Install older version of hwloc-devel package for rocrtst +curl -lO https://download.open-mpi.org/release/hwloc/v1.11/hwloc-1.11.13.tar.bz2 +tar -xvf hwloc-1.11.13.tar.bz2 +cd hwloc-1.11.13 +./configure +make +make install +cp /usr/local/lib/libhwloc.so.5 /usr/lib +hwloc-info --version + +# Install gtest +mkdir -p /tmp/gtest +cd /tmp/gtest +wget https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip -O googletest.zip +unzip googletest.zip +cd googletest-1.14.0/ +mkdir build +cd build +cmake .. +make -j$(nproc) +make install +rm -rf /tmp/gtest + +## Install gRPC from source +## RDC Pre-requisites +GRPC_ARCHIVE=grpc-1.61.0.tar.gz +mkdir /tmp/grpc +mkdir /usr/grpc +cd /tmp +git clone --recurse-submodules -b v1.61.0 https://github.com/grpc/grpc +cd grpc +mkdir -p build +cd build +cmake -DgRPC_INSTALL=ON -DBUILD_SHARED_LIBS=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr/grpc -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=14 .. +make -j $(nproc) install +rm -rf /tmp/grpc + +## rocBLAS Pre-requisites +## Download prebuilt AMD multithreaded (2.0) +## Reference : https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/install.sh#L403 +mkdir -p /tmp/blis +cd /tmp/blis +wget -O - https://github.com/amd/blis/releases/download/2.0/aocl-blis-mt-ubuntu-2.0.tar.gz | tar xfz - +mv amd-blis-mt /usr/blis +cd / +rm -rf /tmp/blis +## rocBLAS Pre-requisites(SWDEV-404612) +## Download aocl-linux-aocc-4.0_1_amd64 +mkdir -p /tmp/aocl +cd /tmp/aocl +wget -nv https://download.amd.com/developer/eula/aocl/aocl-4-0/aocl-linux-aocc-4.0_1_amd64.deb +apt install ./aocl-linux-aocc-4.0_1_amd64.deb +rm -rf /tmp/aocl + +## hipBLAS Pre-requisites +## lapack(3.9.1v) +## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L174 +lapack_version=3.9.1 +lapack_srcdir=lapack-$lapack_version +lapack_blddir=lapack-$lapack_version-bld +mkdir -p /tmp/lapack +cd /tmp/lapack +rm -rf "$lapack_srcdir" "$lapack_blddir" +wget -O - https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.9.1.tar.gz | tar xzf - +cmake -H$lapack_srcdir -B$lapack_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls -DBUILD_TESTING=OFF -DCBLAS=ON -DLAPACKE=OFF +make -j$(nproc) -C "$lapack_blddir" +make -C "$lapack_blddir" install +cd $lapack_blddir +cp -r ./include/* /usr/local/include/ +cp -r ./lib/* /usr/local/lib +cd / +rm -rf /tmp/lapack + +## rocSOLVER Pre-requisites +## FMT(7.1.3v) +## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L152 +fmt_version=7.1.3 +fmt_srcdir=fmt-$fmt_version +fmt_blddir=fmt-$fmt_version-bld +mkdir -p /tmp/fmt +cd /tmp/fmt +rm -rf "$fmt_srcdir" "$fmt_blddir" +wget -O - https://github.com/fmtlib/fmt/archive/refs/tags/7.1.3.tar.gz | tar xzf - +cmake -H$fmt_srcdir -B$fmt_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_EXTENSIONS=OFF -DCMAKE_CXX_STANDARD_REQUIRED=ON -DFMT_DOC=OFF -DFMT_TEST=OFF +make -j$(nproc) -C "$fmt_blddir" +make -C "$fmt_blddir" install + +# Build and install libjpeg-turbo +mkdir -p /tmp/libjpeg-turbo +cd /tmp/libjpeg-turbo +wget -nv https://github.com/rrawther/libjpeg-turbo/archive/refs/heads/2.0.6.2.zip -O libjpeg-turbo-2.0.6.2.zip +unzip libjpeg-turbo-2.0.6.2.zip +cd libjpeg-turbo-2.0.6.2 +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RELEASE -DENABLE_STATIC=FALSE -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib .. +make -j$(nproc) install +rm -rf /tmp/libjpeg-turbo + +# Get released ninja from source +mkdir -p /tmp/ninja +cd /tmp/ninja +wget -nv https://codeload.github.com/Kitware/ninja/zip/refs/tags/v1.11.1.g95dee.kitware.jobserver-1 -O ninja.zip +unzip ninja.zip +cd ninja-1.11.1.g95dee.kitware.jobserver-1 +./configure.py --bootstrap +cp ninja /usr/local/bin/ +rm -rf /tmp/ninja + +# Install pre-built FFmpeg and dependencies +# See docker/build-deps for instructions on how to build these packages +wget -qO- https://www.ffmpeg.org/releases/ffmpeg-4.4.2.tar.gz | tar -xzv -C /usr/local + +cp /tmp/local-pin-600 /etc/apt/preferences.d + +command -v lbzip2 +ln -sf $(command -v lbzip2) /usr/local/bin/compressor || ln -sf $(command -v bzip2) /usr/local/bin/compressor + +# Install Google Benchmark +mkdir -p /tmp/Gbenchmark +cd /tmp/Gbenchmark +wget -qO- https://github.com/google/benchmark/archive/refs/tags/v1.6.1.tar.gz | tar xz +cmake -Sbenchmark-1.6.1 -Bbuild -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_CXX_STANDARD=14 +make -j -C build +cd /tmp/Gbenchmark/build +make install + +# Build boost-1.82.0 from source for RPP +# Installing in a non-standard location since the test packages of hipFFT and rocFFT pick up the version of +# the installed Boost library and declare a package dependency on that specific version of Boost. +# For example, if this was installed in the standard location it would declare a dependency on libboost-dev(el)1.82.0 +# which is not available as a package in any distro. +# Once this is fixed, we can remove the Boost package from the requirements list and install this +# in the standard location +mkdir -p /tmp/boost-1.82.0 +cd /tmp/boost-1.82.0 +wget -nv https://sourceforge.net/projects/boost/files/boost/1.82.0/boost_1_82_0.tar.bz2 -O ./boost_1_82_0.tar.bz2 +tar -xf boost_1_82_0.tar.bz2 --use-compress-program="/usr/local/bin/compressor" +cd boost_1_82_0 +./bootstrap.sh --prefix=${RPP_DEPS_LOCATION} --with-python=python3 +./b2 stage -j$(nproc) threading=multi link=shared cxxflags="-std=c++11" +./b2 install threading=multi link=shared --with-system --with-filesystem +./b2 stage -j$(nproc) threading=multi link=static cxxflags="-std=c++11 -fpic" cflags="-fpic" +./b2 install threading=multi link=static --with-system --with-filesystem +rm -rf /tmp/boost-1.82.0 diff --git a/rocm-build/docker/ubuntu22/local-pin-600 b/rocm-build/docker/ubuntu22/local-pin-600 new file mode 100644 index 000000000..4282294af --- /dev/null +++ b/rocm-build/docker/ubuntu22/local-pin-600 @@ -0,0 +1,3 @@ +Package: * +Pin: origin "" +Pin-Priority: 600 \ No newline at end of file diff --git a/rocm-build/docker/ubuntu22/packages b/rocm-build/docker/ubuntu22/packages new file mode 100644 index 000000000..56a22631a --- /dev/null +++ b/rocm-build/docker/ubuntu22/packages @@ -0,0 +1,139 @@ +# List of packages needed for stage1 build +apt-utils +aria2 +autoconf +automake +bc +bison +bridge-utils +build-essential +bzip2 +check +chrpath +cifs-utils +cpio +curl +devscripts +dos2unix +doxygen +fakeroot +flex +freeglut3-dev +g++ +g++-multilib +# gawk is needed for aomp +gawk +gcc +gcc-multilib +gfortran +git-lfs +gnupg +googletest-tools +graphviz +grpc-proto +kernel-wedge +# kmod for kernel build +kmod +lbzip2 +# less is needed by repo +less +libass-dev +libatlas-base-dev +libbabeltrace-ctf-dev +libbabeltrace-dev +libboost-all-dev +libboost-dev +libboost-filesystem-dev +libboost-program-options-dev +libboost-system-dev +libbz2-dev +libc++-dev +libc++1 +libc++abi-dev +libc++abi1 +libc6-dev-i386 +libcap-dev +libcurl4-openssl-dev +libdrm-dev +libdw-dev +libdw1 +libdwarf-dev +libelf-dev +libelf1 +libexpat1-dev +libfftw3-dev +libfile-find-rule-perl +libgflags-dev +libglew-dev +libgmp-dev +libgtk2.0-dev +libhdf5-serial-dev +libjpeg-dev +libleveldb-dev +liblmdb-dev +liblzma-dev +libmpfr-dev +libmpich-dev +libmsgpack-dev +libncurses5-dev +libnuma-dev +libomp-dev +libopenblas-base +libopenblas-dev +libpci-dev +libpci3 +libpciaccess-dev +libpciaccess0 +libprotobuf-dev +libpython2.7-dev +libpython3-dev +libreadline-dev +libsnappy-dev +libssl-dev +libsuitesparse-dev +libsystemd-dev +libtinfo-dev +libtool +liburi-encode-perl +libva-dev +libvirt-clients +libvirt-daemon-system +libyaml-cpp-dev +llvm +llvm-dev +llvm-runtime +mesa-common-dev +mpich +ocaml +ocaml-findlib +patchelf +pigz +pkg-config +protobuf-compiler +python-is-python3 +python3-dev +python3-pip +python3-pip-whl +python3-venv +python3-yaml +python3-yaml +python3.8-dev +re2c +redis-tools +# hipclang needs rpm +rpm +rsync +ssh +# This makes life more pleasent inside the container +strace +sudo +systemtap-sdt-dev +texinfo +texlive +texlive-extra-utils +texlive-plain-generic +texlive-xetex +unzip +vim +wget +xsltproc diff --git a/rocm-build/envsetup.sh b/rocm-build/envsetup.sh new file mode 100755 index 000000000..9cf30190d --- /dev/null +++ b/rocm-build/envsetup.sh @@ -0,0 +1,191 @@ +#!/bin/bash + +set_WORK_ROOT(){ + [ -n "$WORK_ROOT" ] && return 0 + export WORK_ROOT=$PWD + while :; do + [ -d "$WORK_ROOT/.repo/manifests" ] && return 0 + WORK_ROOT=$WORK_ROOT/.. + ( cd -P "$WORK_ROOT" && [ "$PWD" != "/" ] ) || break + done + echo "Unable to find a .repo/manifests directory above '$PWD'" >&2 + unset WORK_ROOT # No point in saying we have one when we don't + return 1 +} +set_WORK_ROOT || exit 2 + +if [ "$DASH_JAY" == "" ]; then + if [ -x "$(command -v nproc)" ]; then + export DASH_JAY="-j $(nproc)" + else + export DASH_JAY="-j 4" + fi +fi + +export JOB_NAME=release +export JOB_DESIGNATOR= +echo "JOB_DESIGNATOR=${JOB_DESIGNATOR}" +export SLES_BUILD_ID_PREFIX +echo "SLES_BUILD_ID_PREFIX=${SLES_BUILD_ID_PREFIX}" + +if [ -z "${BUILD_ID}" ]; then + export BUILD_ID=9999 +fi + +if [ -n "${JOB_NAME}" ]; then + export ROCM_BUILD_ID=${JOB_NAME/compute-/}-${BUILD_ID} +fi + +source /etc/os-release +#re-export the variables with less generic names +export DISTRO_NAME=$ID +export DISTRO_RELEASE=$VERSION_ID +export DISTRO_ID=$ID-$VERSION_ID + +case "${DISTRO_NAME}" in + ("ubuntu") export CPACKGEN=DEB PACKAGEEXT=deb PKGTYPE=deb ROCM_PKGTYPE=DEB ;; + ("centos") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ;; + ("sles") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ;; + ("rhel") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ;; + ("mariner") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ;; +esac + +# set up package file name variables for CPACK_GENERATOR +# rpm packages name are set with jenkins job designator and build no +# deb package is appendeded with OS version as well +export CPACK_DEBIAN_PACKAGE_RELEASE="${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}~$VERSION_ID" +export CPACK_RPM_PACKAGE_RELEASE="${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}" + +OUT_DIR="${OUT_DIR:=$WORK_ROOT/out/$DISTRO_ID/$DISTRO_RELEASE}" +export OUT_DIR +export RT_TMP=$OUT_DIR/tmp/rt + +#source transform, for things like ocl_lc +export SRC_TF_ROOT=$OUT_DIR/srctf + +# Read ROCm Version and calculate ROCm libpatch version from rocm_version.txt +# Using logic from calculateRocmPatchVersion() in common.gvy +get_rocm_libpatch_version() { + rocm_version=$1 + if [[ "${rocm_version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + libpatch_version=${rocm_version//\./0} + echo "${libpatch_version}" + else + echo "Invalid ROCm Version: ${rocm_version}" + exit 10 + fi +} + +# Read the default ROCm version from rocm_version.txt if the ROCM_VERSION +# variable is either not set, empty or only contains spaces. +if [ -f "${WORK_ROOT}/build/rocm_version.txt" ] && [ -z $ROCM_VERSION ]; then + ROCM_VERSION="$(cat ${WORK_ROOT}/build/rocm_version.txt)" +fi + +: ${ROCM_VERSION:="6.1.0"} +ROCM_LIBPATCH_VERSION=$(get_rocm_libpatch_version $ROCM_VERSION) +echo "ROCM_VERSION=${ROCM_VERSION}" +echo "ROCM_LIBPATCH_VERSION=${ROCM_LIBPATCH_VERSION}" +export ROCM_VERSION ROCM_LIBPATCH_VERSION + +export ROCM_INSTALL_PATH="/opt/rocm-${ROCM_VERSION}-${BUILD_ID}" +# check if the job = release +if [[ "${JOB_NAME}" == *rel* ]]; then + export ROCM_INSTALL_PATH="/opt/rocm-${ROCM_VERSION}" +fi + +# Setting the ROCM_INSTALL_PATH id to Last Know Good build ID, PSDB incremental built packages will install into /opt/rocm- +if [ -n "${LKG_BUILD_ID}" ]; then + export ROCM_INSTALL_PATH="/opt/rocm-${ROCM_VERSION}-${LKG_BUILD_ID}" +fi + +echo "Setting ROCM_INSTALL_PATH=${ROCM_INSTALL_PATH}" + +export ROCM_PATH="$ROCM_INSTALL_PATH" +export ROCM_LIBPATH="" +export DEVTOOLSET_LIBPATH="/opt/rh/devtoolset-7/root/usr/lib64;/opt/rh/devtoolset-7/root/usr/lib" + +# Source directories +# TODO: We should have autodiscoverable makefiles +export DIST_NO_DEBUG=yes +export OPENCL_MAINLINE=1 +export HSA_SOURCE_ROOT=$WORK_ROOT/ROCR-Runtime +export HSA_OPENSOURCE_ROOT=$HSA_SOURCE_ROOT/src +export ROCRTST_ROOT=$HSA_SOURCE_ROOT/rocrtst +export HSA_CORE_ROOT=$HSA_OPENSOURCE_ROOT +export HSA_IMAGE_ROOT=$HSA_OPENSOURCE_ROOT/hsa-ext-image +export HSA_FINALIZE_ROOT=$HSA_OPENSOURCE_ROOT/hsa-ext-finalize +export HSA_TOOLS_ROOT=$HSA_OPENSOURCE_ROOT/hsa-runtime-tools +export OCL_RT_SRC_TF_ROOT=$SRC_TF_ROOT/ocl_lc +export SCRIPT_ROOT=$WORK_ROOT/build +export THUNK_ROOT=$WORK_ROOT/ROCT-Thunk-Interface +if [ -d "$HSA_OPENSOURCE_ROOT/ROCT-Thunk-Interface" ]; then + export THUNK_ROOT=$HSA_OPENSOURCE_ROOT/ROCT-Thunk-Interface +fi +export AQLPROFILE_ROOT=$WORK_ROOT/hsa/aqlprofile +export ROCPROFILER_ROOT=$WORK_ROOT/rocprofiler +export ROCTRACER_ROOT=$WORK_ROOT/roctracer +export ROCPROFILER_REGISTER_ROOT=$WORK_ROOT/rocprofiler-register +export RDC_ROOT=$WORK_ROOT/rdc +export RDCTST_ROOT=$RDC_ROOT/tests/rdc_tests +export UTILS_ROOT=$WORK_ROOT/rocm-utils +export KFDTEST_ROOT=$THUNK_ROOT/tests/kfdtest +if [ -d "$HSA_OPENSOURCE_ROOT/tests/kfdtest" ]; then + export KFDTEST_ROOT=$HSA_OPENSOURCE_ROOT/tests/kfdtest +fi +export HIPIFY_ROOT=$WORK_ROOT/HIPIFY +export AMD_SMI_LIB_ROOT=$WORK_ROOT/amdsmi +export ROCM_SMI_LIB_ROOT=$WORK_ROOT/rocm_smi_lib +export RSMITST_ROOT=$ROCM_SMI_LIB_ROOT/tests/rocm_smi_test +export LLVM_PROJECT_ROOT=$WORK_ROOT/llvm-project +export LLVM_ROOT=$LLVM_PROJECT_ROOT/llvm +export CLANG_ROOT=$LLVM_PROJECT_ROOT/clang +export LLD_ROOT=$LLVM_PROJECT_ROOT/lld +export HIPCC_ROOT=$LLVM_PROJECT_ROOT/amd/hipcc +export DEVICELIBS_ROOT=$LLVM_PROJECT_ROOT/amd/device-libs +export ROCM_CORE_ROOT=$WORK_ROOT/rocm-core +export ROCM_CMAKE_ROOT=$WORK_ROOT/rocm-cmake +export ROCM_BANDWIDTH_TEST_ROOT=$WORK_ROOT/rocm_bandwidth_test +export ROCMINFO_ROOT=$WORK_ROOT/rocminfo +export CLANG_OCL_ROOT=$WORK_ROOT/clang-ocl +export ROCR_DEBUG_AGENT_ROOT=$WORK_ROOT/rocr_debug_agent +export COMGR_ROOT=$LLVM_PROJECT_ROOT/amd/comgr +export COMGR_LIB_PATH=$OUT_DIR/build/amd_comgr +export RCCL_ROOT=$WORK_ROOT/rccl +export ROCM_DBGAPI_ROOT=$WORK_ROOT/ROCdbgapi +export ROCM_GDB_ROOT=$WORK_ROOT/ROCgdb +export HIP_ON_ROCclr_ROOT=$WORK_ROOT/HIP +export HIPAMD_ROOT=$WORK_ROOT/hipamd +export HIP_CATCH_TESTS_ROOT=$WORK_ROOT/hip-tests +export CLR_ROOT=$WORK_ROOT/clr +export AOMP_REPOS=$WORK_ROOT/openmp-extras +export HIPOTHER_ROOT=$WORK_ROOT/hipother + +# For libraries $ORIGIN +# For binaries $ORIGIN/../lib +export ROCM_LIB_RPATH='$ORIGIN' +export ROCM_EXE_RPATH='$ORIGIN/../lib' + +# For ASAN Libraries since the asan lib path is lib/asan/ +export ROCM_ASAN_LIB_RPATH='$ORIGIN:$ORIGIN/..' +export ROCM_ASAN_EXE_RPATH="\$ORIGIN/../lib/asan:\$ORIGIN/../lib" + +export PATH=$PATH:$SCRIPT_ROOT + +# From setup_env.sh +export LIBS_WORK_DIR=$WORK_ROOT +export BUILD_ARTIFACTS=$OUT_DIR/$PACKAGEEXT + +export HIPCC_COMPILE_FLAGS_APPEND="-O3 -Wno-format-nonliteral -parallel-jobs=4" +export HIPCC_LINK_FLAGS_APPEND="-O3 -parallel-jobs=4" + +export PATH="${ROCM_PATH}/lib/llvm/bin:${PATH}" + +export LC_ALL=C.UTF-8 +export LANG=C.UTF-8 + +export PROC=${PROC:-"$(nproc)"} +export RELEASE_FLAG=${RELEASE_FLAG:-"-r"} +export SUDO=sudo +export PATH=/usr/local/bin:${PATH}:${HOME}/.local/bin +export CCACHE_DIR=${HOME}/.ccache diff --git a/rocm-build/post_inst_pkg.sh b/rocm-build/post_inst_pkg.sh new file mode 100755 index 000000000..bbfb132d8 --- /dev/null +++ b/rocm-build/post_inst_pkg.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +set -x + + +UNTAR_COMPONENT_NAME=$1 + + +copy_pkg_files_to_rocm() { + local comp_folder=$1 + local comp_pkg_name=$2 + + cd "${OUT_DIR}/${PKGTYPE}/${comp_folder}"|| exit 2 + if [ "${PKGTYPE}" = 'deb' ]; then + dpkg-deb -x ${comp_pkg_name}_*.deb pkg/ + else + mkdir pkg && pushd pkg/ || exit 2 + if [[ "${comp_pkg_name}" != *-dev* ]]; then + rpm2cpio ../${comp_pkg_name}-*.rpm | cpio -idmv + else + rpm2cpio ../${comp_pkg_name}el-*.rpm | cpio -idmv + fi + popd || exit 2 + fi + ls ./pkg -alt + ${SUDO} cp -r ./pkg${ROCM_PATH}/* "${ROCM_PATH}" || exit 2 + rm -rf pkg/ +} + +get_os_name() { + local os_name + os_name=$(grep -oP '^NAME="\K.*(?=")' < /etc/os-release) + echo "${os_name,,}" +} + +set_pkg_type() { + local os_name + os_name=$(grep -oP '^NAME="\K.*(?=")' < /etc/os-release) + [ "${os_name,,}" = ubuntu ] && echo "deb" || echo "rpm" +} + +setup_rocm_compilers_hash_file() { + local clang_version + clang_version="$("${ROCM_PATH}/llvm/bin/clang" --version | head -n 1)" + printf '%s: %s\n' 'clang version' "${clang_version}" | tee "${OUT_DIR}/rocm_compilers_hash_file" +} + +PKGTYPE=$(set_pkg_type) + +case $UNTAR_COMPONENT_NAME in + (lightning) + if [ "${CCACHE_ENABLED}" == "true" ] ; then + setup_rocm_compilers_hash_file + fi + + mkdir -p ${ROCM_PATH}/bin + printf '%s\n' > ${ROCM_PATH}/bin/target.lst gfx900 gfx906 gfx908 gfx803 gfx1030 + + if [ -e "${ROCM_PATH}/lib/llvm/bin/rocm.cfg" ]; then + sed -i '/-frtlib-add-rpath/d' ${ROCM_PATH}/lib/llvm/bin/rocm.cfg + elif [ -e "${ROCM_PATH}/llvm/bin/rocm.cfg" ]; then + sed -i '/-frtlib-add-rpath/d' ${ROCM_PATH}/llvm/bin/rocm.cfg + fi + ;; + (hipify_clang) + copy_pkg_files_to_rocm hipify hipify-clang + ;; + (hip_on_rocclr) + rm -f ${ROCM_PATH}/bin/hipcc.bat + ;; + (openmp_extras) + copy_pkg_files_to_rocm openmp-extras openmp-extras-runtime + copy_pkg_files_to_rocm openmp-extras openmp-extras-dev + ;; + (rocblas) + copy_pkg_files_to_rocm rocblas rocblas-dev + ;; + (*) + echo "post processing is not required for ${UNTAR_COMPONENT_NAME}" + ;; +esac + diff --git a/rocm-build/rocm-6.1.0.xml b/rocm-build/rocm-6.1.0.xml new file mode 100644 index 000000000..4bb977a09 --- /dev/null +++ b/rocm-build/rocm-6.1.0.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rocm-build/rocm-6.1.1.xml b/rocm-build/rocm-6.1.1.xml new file mode 100644 index 000000000..1f7847add --- /dev/null +++ b/rocm-build/rocm-6.1.1.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rocm-build/upload_packages.sh b/rocm-build/upload_packages.sh new file mode 100755 index 000000000..6f4d3bfa4 --- /dev/null +++ b/rocm-build/upload_packages.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -x + + +BUILD_COMPONENT="$1" +PACKAGEEXT=${PACKAGEEXT:-$2} + +COMP_DIR=$(./${INFRA_REPO}/build/build_${BUILD_COMPONENT}.sh -o ${PACKAGEEXT}) + +TARGET_ARTI_URL=${TARGET_ARTI_URL:-$3} + + +[ -z "$JFROG_TOKEN" ] && echo "JFrog token is not set, skip uploading..." && exit 0 +[ -z "$TARGET_ARTI_URL" ] && echo "Target URL is not set, skip uploading..." && exit 0 +[ -z "$COMP_DIR" ] && echo "No packages in ${BUILD_COMPONENT}" && exit 0 +[ ! -d "$COMP_DIR" ] && echo "NO ${COMP_DIR} folder..." && exit 0 + +PKG_NAME_LIST=( "${COMP_DIR}"/* ) + +for pkg in "${PKG_NAME_LIST[@]}"; do + if [[ "${ENABLE_ADDRESS_SANITIZER}" != "true" ]] || [[ "${pkg##*/}" =~ "-asan" ]]; then + echo "Uploading $pkg ..." + if ! curl -f -H "X-JFrog-Art-Api:${JFROG_TOKEN}" \ + -X PUT "${TARGET_ARTI_URL}/$(basename ${pkg})" \ + -T "${COMP_DIR}/$(basename ${pkg})"; then + echo "Unable to upload $pkg ..." >&2 && exit 1 + fi + echo "$pkg uploaded..." + fi +done + From ba7afa98084698957ac307c63f2ea00c18e22022 Mon Sep 17 00:00:00 2001 From: "Wang, Yanyao" Date: Wed, 5 Jun 2024 09:50:20 -0700 Subject: [PATCH 106/175] Update the branch of ROCm repo after testing --- rocm-build/rocm-6.1.0.xml | 2 +- rocm-build/rocm-6.1.1.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rocm-build/rocm-6.1.0.xml b/rocm-build/rocm-6.1.0.xml index 4bb977a09..83f1b0e41 100644 --- a/rocm-build/rocm-6.1.0.xml +++ b/rocm-build/rocm-6.1.0.xml @@ -6,7 +6,7 @@ sync-c="true" sync-j="4" /> - + diff --git a/rocm-build/rocm-6.1.1.xml b/rocm-build/rocm-6.1.1.xml index 1f7847add..868fabfd9 100644 --- a/rocm-build/rocm-6.1.1.xml +++ b/rocm-build/rocm-6.1.1.xml @@ -6,7 +6,7 @@ sync-c="true" sync-j="4" /> - + From 73b7b02c4f6370d51f79d23d783f0d0340588fc3 Mon Sep 17 00:00:00 2001 From: "Wang, Yanyao" Date: Wed, 5 Jun 2024 10:41:25 -0700 Subject: [PATCH 107/175] Fix Markdown formate for the linter check --- README.md | 2 +- rocm-build/README.md | 46 +++++++++++++++------------- rocm-build/docker/ubuntu20/README.md | 10 ++++-- rocm-build/docker/ubuntu22/README.md | 8 +++++ 4 files changed, 42 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 31744f337..819c18743 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,6 @@ Each ROCm component repository contains directions for building that component, Each release of the ROCm software supports specific hardware and software configurations. Refer to [System requirements (Linux)](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html) for the current supported hardware and OS. - ## Build ROCm from source The Build will use as many processors as it can find to build in parallel. Some of the compiles can consume as much as 10GB of RAM, so make sure you have plenty of Swap Space ! @@ -151,6 +150,7 @@ out/ubuntu-22.04/22.04/logs/rocblas.inprogress # Example # All logs pertaining to passed components, use the component names. out/ubuntu-22.04/22.04/logs/rocblas # Example ``` + Note: [Overview for ROCm.mk](rocm-build/README.md) ## ROCm documentation diff --git a/rocm-build/README.md b/rocm-build/README.md index 9e95434b2..d8d81941e 100644 --- a/rocm-build/README.md +++ b/rocm-build/README.md @@ -1,33 +1,37 @@ # Overview for ROCm.mk + This Makefile builds the various projects that makes up ROCm in the correct order. It is expected to be run in an environment with the tooling set up. An easy way to do this is to use Docker. -# Targets -- all (default) -- rocm-dev (a subset of all) -- clean -- list_components -- help -- T_foo -- C_foo +## Targets +* all (default) +* rocm-dev (a subset of all) +* clean +* list_components +* help +* T_foo +* C_foo -# Makefile Variables -- PEVAL set to 1 to enable some Makefile debugging code. -- RELEASE\_FLAG set to "" to avoid passing "-r" to builds, effect is package defined. -- NOBUILD="foo bar" to avoid adding foo and bar into the dependencies of top level targets. They still may be +## Makefile Variables + +* PEVAL set to 1 to enable some Makefile debugging code. +* RELEASE\_FLAG set to "" to avoid passing "-r" to builds, effect is package defined. +* NOBUILD="foo bar" to avoid adding foo and bar into the dependencies of top level targets. They still may be built if they are needed as dependencies of other top level targets. -- toplevel +* toplevel -# Makefile assumptions +## Makefile assumptions -## Requirements for package "foo" +### Requirements for package "foo" -### program build\_foo.sh -- Should take option "-c" to clean -- Should take option "-r" to do a normal "RelWithDeb" build +#### program build\_foo.sh -## For package "foo" we define some targets -- T\_foo - The main build target, calls "build\_foo.sh -r" -- C\_foo - Clean target, calls "build_foo.sh -c" +* Should take option "-c" to clean +* Should take option "-r" to do a normal "RelWithDeb" build + +### For package "foo" we define some targets + +* T\_foo - The main build target, calls "build\_foo.sh -r" +* C\_foo - Clean target, calls "build_foo.sh -c" diff --git a/rocm-build/docker/ubuntu20/README.md b/rocm-build/docker/ubuntu20/README.md index a6afb0bc2..57ab88c4f 100644 --- a/rocm-build/docker/ubuntu20/README.md +++ b/rocm-build/docker/ubuntu20/README.md @@ -1,20 +1,26 @@ ## Steps to build the Docker Image + 1. Clone this repositry + ```bash git clone -b roc-6.1.x https://github.com/ROCm/ROCm.git ``` + 2. Go into the OS specific docker directory in build-infra + ```bash cd ROCm/rocm-build/docker/ubuntu20 ``` 3. Build the Docker image + ```bash docker build -t . ``` + replace the `` with the new Docker image Name of your choice, -5. After successful build, verify your \ in the list all available docker images. +4. After successful build, verify your \ in the list all available docker images. + ```bash docker images ``` - diff --git a/rocm-build/docker/ubuntu22/README.md b/rocm-build/docker/ubuntu22/README.md index 6dc60c845..29c8eea91 100644 --- a/rocm-build/docker/ubuntu22/README.md +++ b/rocm-build/docker/ubuntu22/README.md @@ -1,18 +1,26 @@ ## Steps to build the Docker Image + 1. Clone this repositry + ```bash git clone -b roc-6.1.x https://github.com/ROCm/ROCm.git ``` + 2. Go into the OS specific docker directory in build-infra + ```bash cd ROCm/rocm-build/docker/ubuntu22 ``` + 3. Build the docker image + ```bash docker build -t . ``` + replace the `` with the new Docker image Name of your choice, 4. After successful build, verify your \ in the list all available docker images. + ```bash docker images ``` From 35835c4289a0c9e869984894aa5bc4d8ec99cdcf Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Wed, 5 Jun 2024 13:48:27 -0600 Subject: [PATCH 108/175] Fix first link in compatibility matrix table (#3239) * Fix first link in compatibility matrix table * Revert "Fix first link in compatibility matrix table" This reverts commit 069c5c116adf93245a1ce40d03021550c7c4e841. * Remove sticky header and unused css * Remove container from hardware specs matrix --------- Co-authored-by: Peter Jun Park --- docs/reference/gpu-arch-specs.rst | 1282 ++++++++++++------------ docs/sphinx/static/css/rocm_custom.css | 49 +- 2 files changed, 641 insertions(+), 690 deletions(-) diff --git a/docs/reference/gpu-arch-specs.rst b/docs/reference/gpu-arch-specs.rst index 8686e3303..8c17e87e1 100644 --- a/docs/reference/gpu-arch-specs.rst +++ b/docs/reference/gpu-arch-specs.rst @@ -7,657 +7,655 @@ Accelerator and GPU hardware specifications The following tables provide an overview of the hardware specifications for AMD Instinct™ accelerators, and AMD Radeon™ PRO and Radeon™ GPUs. -.. container:: horizontal-scrolling-container +.. tab-set:: - .. tab-set:: + .. tab-item:: AMD Instinct accelerators - .. tab-item:: AMD Instinct accelerators + .. list-table:: + :header-rows: 1 + :name: instinct-arch-spec-table - .. list-table:: - :header-rows: 1 - :name: instinct-arch-spec-table + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - L3 Cache (MiB) + - L2 Cache (MiB) + - L1 Vector Cache (KiB) + - L1 Scalar Cache (KiB) + - L1 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - MI300X + - CDNA3 + - gfx941 or gfx942 + - 192 + - 304 + - 64 + - 64 + - 256 + - 32 + - 32 + - 16 per 2 CUs + - 64 per 2 CUs + - 512 + - 12.5 + * + - MI300A + - CDNA3 + - gfx940 or gfx942 + - 128 + - 228 + - 64 + - 64 + - 256 + - 24 + - 32 + - 16 per 2 CUs + - 64 per 2 CUs + - 512 + - 12.5 + * + - MI250X + - CDNA2 + - gfx90a + - 128 + - 220 (110 per GCD) + - 64 + - 64 + - + - 16 (8 per GCD) + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI250 + - CDNA2 + - gfx90a + - 128 + - 208 + - 64 + - 64 + - + - 16 (8 per GCD) + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI210 + - CDNA2 + - gfx90a + - 64 + - 104 + - 64 + - 64 + - + - 8 + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI100 + - CDNA + - gfx908 + - 32 + - 120 + - 64 + - 64 + - + - 8 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 VGPR and 256 AccVGPR + - 12.5 + * + - MI60 + - GCN5.1 + - gfx906 + - 32 + - 64 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI50 (32GB) + - GCN5.1 + - gfx906 + - 32 + - 60 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI50 (16GB) + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI25 + - GCN5.0 + - gfx900 + - 16  + - 64 + - 64 + - 64  + - + - 4  + - 16  + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI8 + - GCN3.0 + - gfx803 + - 4 + - 64 + - 64 + - 64 + - + - 2 + - 16 + - 16 per 4 CUs + - 32 per 4 CUs + - 256 + - 12.5 + * + - MI6 + - GCN4.0 + - gfx803 + - 16 + - 36 + - 64 + - 64 + - + - 2 + - 16 + - 16 per 4 CUs + - 32 per 4 CUs + - 256 + - 12.5 - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - L3 Cache (MiB) - - L2 Cache (MiB) - - L1 Vector Cache (KiB) - - L1 Scalar Cache (KiB) - - L1 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - MI300X - - CDNA3 - - gfx941 or gfx942 - - 192 - - 304 - - 64 - - 64 - - 256 - - 32 - - 32 - - 16 per 2 CUs - - 64 per 2 CUs - - 512 - - 12.5 - * - - MI300A - - CDNA3 - - gfx940 or gfx942 - - 128 - - 228 - - 64 - - 64 - - 256 - - 24 - - 32 - - 16 per 2 CUs - - 64 per 2 CUs - - 512 - - 12.5 - * - - MI250X - - CDNA2 - - gfx90a - - 128 - - 220 (110 per GCD) - - 64 - - 64 - - - - 16 (8 per GCD) - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI250 - - CDNA2 - - gfx90a - - 128 - - 208 - - 64 - - 64 - - - - 16 (8 per GCD) - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI210 - - CDNA2 - - gfx90a - - 64 - - 104 - - 64 - - 64 - - - - 8 - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI100 - - CDNA - - gfx908 - - 32 - - 120 - - 64 - - 64 - - - - 8 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 VGPR and 256 AccVGPR - - 12.5 - * - - MI60 - - GCN5.1 - - gfx906 - - 32 - - 64 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI50 (32GB) - - GCN5.1 - - gfx906 - - 32 - - 60 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI50 (16GB) - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI25 - - GCN5.0 - - gfx900 - - 16  - - 64 - - 64 - - 64  - - - - 4  - - 16  - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI8 - - GCN3.0 - - gfx803 - - 4 - - 64 - - 64 - - 64 - - - - 2 - - 16 - - 16 per 4 CUs - - 32 per 4 CUs - - 256 - - 12.5 - * - - MI6 - - GCN4.0 - - gfx803 - - 16 - - 36 - - 64 - - 64 - - - - 2 - - 16 - - 16 per 4 CUs - - 32 per 4 CUs - - 256 - - 12.5 + .. tab-item:: AMD Radeon PRO GPUs - .. tab-item:: AMD Radeon PRO GPUs + .. list-table:: + :header-rows: 1 + :name: radeon-pro-arch-spec-table - .. list-table:: - :header-rows: 1 - :name: radeon-pro-arch-spec-table + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - Infinity Cache (MiB) + - L2 Cache (MiB) + - Graphics L1 Cache (KiB) + - L0 Vector Cache (KiB) + - L0 Scalar Cache (KiB) + - L0 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - Radeon PRO W7900 + - RDNA3 + - gfx1100 + - 48 + - 96 + - 32 + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W7800 + - RDNA3 + - gfx1100 + - 32 + - 70 + - 32 + - 128 + - 64 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W7700 + - RDNA3 + - gfx1101 + - 16 + - 48 + - 32 + - 128 + - 64 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W6800 + - RDNA2 + - gfx1030 + - 32 + - 60 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon PRO W6600 + - RDNA2 + - gfx1032 + - 8 + - 28 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon PRO V620 + - RDNA2 + - gfx1030 + - 32 + - 72 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon Pro W5500 + - RDNA + - gfx1012 + - 8 + - 22 + - 32 + - 128 + - + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon Pro VII + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 + - + - 4 + - + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - Infinity Cache (MiB) - - L2 Cache (MiB) - - Graphics L1 Cache (KiB) - - L0 Vector Cache (KiB) - - L0 Scalar Cache (KiB) - - L0 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - Radeon PRO W7900 - - RDNA3 - - gfx1100 - - 48 - - 96 - - 32 - - 128 - - 96 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W7800 - - RDNA3 - - gfx1100 - - 32 - - 70 - - 32 - - 128 - - 64 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W7700 - - RDNA3 - - gfx1101 - - 16 - - 48 - - 32 - - 128 - - 64 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W6800 - - RDNA2 - - gfx1030 - - 32 - - 60 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon PRO W6600 - - RDNA2 - - gfx1032 - - 8 - - 28 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon PRO V620 - - RDNA2 - - gfx1030 - - 32 - - 72 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon Pro W5500 - - RDNA - - gfx1012 - - 8 - - 22 - - 32 - - 128 - - - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon Pro VII - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 - - - - 4 - - - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 + .. tab-item:: AMD Radeon GPUs - .. tab-item:: AMD Radeon GPUs + .. list-table:: + :header-rows: 1 + :name: radeon-arch-spec-table - .. list-table:: - :header-rows: 1 - :name: radeon-arch-spec-table - - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - Infinity Cache (MiB) - - L2 Cache (MiB) - - Graphics L1 Cache (KiB) - - L0 Vector Cache (KiB) - - L0 Scalar Cache (KiB) - - L0 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - Radeon RX 7900 XTX - - RDNA3 - - gfx1100 - - 24 - - 96 - - 32 - - 128 - - 96 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7900 XT - - RDNA3 - - gfx1100 - - 20 - - 84 - - 32 - - 128 - - 80 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7900 GRE - - RDNA3 - - gfx1100 - - 16 - - 80 - - 32 - - 128 - - 64 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7800 XT - - RDNA3 - - gfx1101 - - 16 - - 60 - - 32 - - 128 - - 64 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7700 XT - - RDNA3 - - gfx1101 - - 12 - - 54 - - 32 - - 128 - - 48 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7600 - - RDNA3 - - gfx1102 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 256 - - 32 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6950 XT - - RDNA2 - - gfx1030 - - 16 - - 80 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6900 XT - - RDNA2 - - gfx1030 - - 16 - - 80 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6800 XT - - RDNA2 - - gfx1030 - - 16 - - 72 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6800 - - RDNA2 - - gfx1030 - - 16 - - 60 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6750 XT - - RDNA2 - - gfx1031 - - 12 - - 40 - - 32 - - 128 - - 96 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6700 XT - - RDNA2 - - gfx1031 - - 12 - - 40 - - 32 - - 128 - - 96 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6700 - - RDNA2 - - gfx1031 - - 10 - - 36 - - 32 - - 128 - - 80 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6650 XT - - RDNA2 - - gfx1032 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6600 XT - - RDNA2 - - gfx1032 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6600 - - RDNA2 - - gfx1032 - - 8 - - 28 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon VII - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 per CU - - - - 4 - - - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - Infinity Cache (MiB) + - L2 Cache (MiB) + - Graphics L1 Cache (KiB) + - L0 Vector Cache (KiB) + - L0 Scalar Cache (KiB) + - L0 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - Radeon RX 7900 XTX + - RDNA3 + - gfx1100 + - 24 + - 96 + - 32 + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7900 XT + - RDNA3 + - gfx1100 + - 20 + - 84 + - 32 + - 128 + - 80 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7900 GRE + - RDNA3 + - gfx1100 + - 16 + - 80 + - 32 + - 128 + - 64 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7800 XT + - RDNA3 + - gfx1101 + - 16 + - 60 + - 32 + - 128 + - 64 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7700 XT + - RDNA3 + - gfx1101 + - 12 + - 54 + - 32 + - 128 + - 48 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7600 + - RDNA3 + - gfx1102 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 256 + - 32 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6950 XT + - RDNA2 + - gfx1030 + - 16 + - 80 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6900 XT + - RDNA2 + - gfx1030 + - 16 + - 80 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6800 XT + - RDNA2 + - gfx1030 + - 16 + - 72 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6800 + - RDNA2 + - gfx1030 + - 16 + - 60 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6750 XT + - RDNA2 + - gfx1031 + - 12 + - 40 + - 32 + - 128 + - 96 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6700 XT + - RDNA2 + - gfx1031 + - 12 + - 40 + - 32 + - 128 + - 96 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6700 + - RDNA2 + - gfx1031 + - 10 + - 36 + - 32 + - 128 + - 80 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6650 XT + - RDNA2 + - gfx1032 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6600 XT + - RDNA2 + - gfx1032 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6600 + - RDNA2 + - gfx1032 + - 8 + - 28 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon VII + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 per CU + - + - 4 + - + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 Glossary ======== diff --git a/docs/sphinx/static/css/rocm_custom.css b/docs/sphinx/static/css/rocm_custom.css index 7d14bb961..3649fe537 100644 --- a/docs/sphinx/static/css/rocm_custom.css +++ b/docs/sphinx/static/css/rocm_custom.css @@ -1,53 +1,6 @@ /* Adds container for big tables, used for Compatibility Matrix */ - -/* Header row to have opaque background colour when sticky */ -.format-big-table th { - background-color: var(--pst-color-background); +.format-big-table { white-space: nowrap; } - - /* Turn on borders for whole table */ - .format-big-table th, - .format-big-table td { - border-width: 1px; - } - - /* .format-big-table th.head { */ - /* background-color: var(--pst-color-on-surface); */ - /* } */ - - /* Sticky header for table excluding the stub*/ - .format-big-table th.head:not(.stub) { - position: sticky; - top: 3rem; - z-index: 1; - } - - /* Sticky header for the head & stub: top left cell */ - .format-big-table th.head.stub { - position: sticky; - top: 3rem; - z-index: 1; - background-color: var(--pst-color-background); - white-space: nowrap; - } - - /* Sticky for the stub column */ - /*.format-big-table tbody th:not(:empty) { - position: sticky; - top: 3rem; - z-index: 2; - }*/ - - /* Removes borders for stub column */ - .format-big-table tbody th { - border-top: none; - border-bottom: none; - } - - /* For horizontal scrolling only. Can't be combined with format-big-table container */ - .horizontal-scrolling-container { - overflow-x: scroll; - } From 68c45d30b55e2da7a379d6da6a9916895da1c2a3 Mon Sep 17 00:00:00 2001 From: "Wang, Yanyao" Date: Tue, 4 Jun 2024 21:20:04 -0700 Subject: [PATCH 109/175] Build ROCm from source --- README.md | 93 +- rocm-build/README.md | 33 + rocm-build/ROCm.mk | 248 ++++ rocm-build/build_amd_smi_lib.sh | 145 ++ rocm-build/build_amdmigraphx.sh | 54 + rocm-build/build_aqlprofile.sh | 150 ++ rocm-build/build_clang-ocl.sh | 136 ++ rocm-build/build_comgr.sh | 151 ++ rocm-build/build_composable_kernel.sh | 185 +++ rocm-build/build_dbgapi.sh | 159 +++ rocm-build/build_devicelibs.sh | 140 ++ rocm-build/build_half.sh | 46 + rocm-build/build_hip_on_rocclr.sh | 295 ++++ rocm-build/build_hipblas.sh | 65 + rocm-build/build_hipblaslt.sh | 69 + rocm-build/build_hipcc.sh | 118 ++ rocm-build/build_hipcub.sh | 60 + rocm-build/build_hipfft.sh | 61 + rocm-build/build_hipfort.sh | 50 + rocm-build/build_hipify_clang.sh | 142 ++ rocm-build/build_hiprand.sh | 90 ++ rocm-build/build_hipsolver.sh | 64 + rocm-build/build_hipsparse.sh | 61 + rocm-build/build_hipsparselt.sh | 89 ++ rocm-build/build_hiptensor.sh | 57 + rocm-build/build_hsa.sh | 135 ++ rocm-build/build_lightning.sh | 1253 +++++++++++++++++ rocm-build/build_miopen-deps.sh | 73 + rocm-build/build_miopen-hip.sh | 62 + rocm-build/build_mivisionx.sh | 59 + rocm-build/build_opencl_on_rocclr.sh | 155 ++ rocm-build/build_openmp_extras.sh | 673 +++++++++ rocm-build/build_rccl.sh | 65 + rocm-build/build_rdc.sh | 234 +++ rocm-build/build_rocalution.sh | 68 + rocm-build/build_rocblas.sh | 76 + rocm-build/build_rocclr.sh | 127 ++ rocm-build/build_rocdecode.sh | 38 + rocm-build/build_rocfft.sh | 62 + rocm-build/build_rocm-cmake.sh | 121 ++ rocm-build/build_rocm-core.sh | 131 ++ rocm-build/build_rocm-dev.sh | 14 + rocm-build/build_rocm-gdb.sh | 437 ++++++ rocm-build/build_rocm_bandwidth_test.sh | 155 ++ rocm-build/build_rocm_smi_lib.sh | 153 ++ rocm-build/build_rocminfo.sh | 133 ++ rocm-build/build_rocmvalidationsuite.sh | 51 + rocm-build/build_rocprim.sh | 61 + rocm-build/build_rocprofiler-register.sh | 139 ++ rocm-build/build_rocprofiler.sh | 179 +++ rocm-build/build_rocr_debug_agent.sh | 153 ++ rocm-build/build_rocrand.sh | 66 + rocm-build/build_rocsolver.sh | 69 + rocm-build/build_rocsparse.sh | 68 + rocm-build/build_rocthrust.sh | 64 + rocm-build/build_roctracer.sh | 180 +++ rocm-build/build_rocwmma.sh | 63 + rocm-build/build_rpp.sh | 78 + rocm-build/build_thunk.sh | 205 +++ rocm-build/ccache-env-mathlib.sh | 9 + rocm-build/compute_helper.sh | 284 ++++ rocm-build/compute_utils.sh | 372 +++++ rocm-build/docker/ubuntu20/Dockerfile | 7 + rocm-build/docker/ubuntu20/README.md | 20 + .../docker/ubuntu20/install-prerequisites.sh | 217 +++ rocm-build/docker/ubuntu20/packages | 137 ++ rocm-build/docker/ubuntu22/Dockerfile | 9 + rocm-build/docker/ubuntu22/README.md | 18 + .../docker/ubuntu22/install-prerequisities.sh | 232 +++ rocm-build/docker/ubuntu22/local-pin-600 | 3 + rocm-build/docker/ubuntu22/packages | 139 ++ rocm-build/envsetup.sh | 191 +++ rocm-build/post_inst_pkg.sh | 82 ++ rocm-build/rocm-6.1.0.xml | 71 + rocm-build/rocm-6.1.1.xml | 71 + rocm-build/upload_packages.sh | 32 + 76 files changed, 10254 insertions(+), 1 deletion(-) create mode 100644 rocm-build/README.md create mode 100644 rocm-build/ROCm.mk create mode 100755 rocm-build/build_amd_smi_lib.sh create mode 100755 rocm-build/build_amdmigraphx.sh create mode 100755 rocm-build/build_aqlprofile.sh create mode 100755 rocm-build/build_clang-ocl.sh create mode 100755 rocm-build/build_comgr.sh create mode 100755 rocm-build/build_composable_kernel.sh create mode 100755 rocm-build/build_dbgapi.sh create mode 100755 rocm-build/build_devicelibs.sh create mode 100755 rocm-build/build_half.sh create mode 100755 rocm-build/build_hip_on_rocclr.sh create mode 100755 rocm-build/build_hipblas.sh create mode 100755 rocm-build/build_hipblaslt.sh create mode 100755 rocm-build/build_hipcc.sh create mode 100755 rocm-build/build_hipcub.sh create mode 100755 rocm-build/build_hipfft.sh create mode 100755 rocm-build/build_hipfort.sh create mode 100755 rocm-build/build_hipify_clang.sh create mode 100755 rocm-build/build_hiprand.sh create mode 100755 rocm-build/build_hipsolver.sh create mode 100755 rocm-build/build_hipsparse.sh create mode 100755 rocm-build/build_hipsparselt.sh create mode 100755 rocm-build/build_hiptensor.sh create mode 100755 rocm-build/build_hsa.sh create mode 100755 rocm-build/build_lightning.sh create mode 100755 rocm-build/build_miopen-deps.sh create mode 100755 rocm-build/build_miopen-hip.sh create mode 100755 rocm-build/build_mivisionx.sh create mode 100755 rocm-build/build_opencl_on_rocclr.sh create mode 100755 rocm-build/build_openmp_extras.sh create mode 100755 rocm-build/build_rccl.sh create mode 100755 rocm-build/build_rdc.sh create mode 100755 rocm-build/build_rocalution.sh create mode 100755 rocm-build/build_rocblas.sh create mode 100755 rocm-build/build_rocclr.sh create mode 100755 rocm-build/build_rocdecode.sh create mode 100755 rocm-build/build_rocfft.sh create mode 100755 rocm-build/build_rocm-cmake.sh create mode 100755 rocm-build/build_rocm-core.sh create mode 100755 rocm-build/build_rocm-dev.sh create mode 100755 rocm-build/build_rocm-gdb.sh create mode 100755 rocm-build/build_rocm_bandwidth_test.sh create mode 100755 rocm-build/build_rocm_smi_lib.sh create mode 100755 rocm-build/build_rocminfo.sh create mode 100755 rocm-build/build_rocmvalidationsuite.sh create mode 100755 rocm-build/build_rocprim.sh create mode 100755 rocm-build/build_rocprofiler-register.sh create mode 100755 rocm-build/build_rocprofiler.sh create mode 100755 rocm-build/build_rocr_debug_agent.sh create mode 100755 rocm-build/build_rocrand.sh create mode 100755 rocm-build/build_rocsolver.sh create mode 100755 rocm-build/build_rocsparse.sh create mode 100755 rocm-build/build_rocthrust.sh create mode 100755 rocm-build/build_roctracer.sh create mode 100755 rocm-build/build_rocwmma.sh create mode 100755 rocm-build/build_rpp.sh create mode 100755 rocm-build/build_thunk.sh create mode 100755 rocm-build/ccache-env-mathlib.sh create mode 100755 rocm-build/compute_helper.sh create mode 100755 rocm-build/compute_utils.sh create mode 100644 rocm-build/docker/ubuntu20/Dockerfile create mode 100644 rocm-build/docker/ubuntu20/README.md create mode 100755 rocm-build/docker/ubuntu20/install-prerequisites.sh create mode 100644 rocm-build/docker/ubuntu20/packages create mode 100644 rocm-build/docker/ubuntu22/Dockerfile create mode 100644 rocm-build/docker/ubuntu22/README.md create mode 100644 rocm-build/docker/ubuntu22/install-prerequisities.sh create mode 100644 rocm-build/docker/ubuntu22/local-pin-600 create mode 100644 rocm-build/docker/ubuntu22/packages create mode 100755 rocm-build/envsetup.sh create mode 100755 rocm-build/post_inst_pkg.sh create mode 100644 rocm-build/rocm-6.1.0.xml create mode 100644 rocm-build/rocm-6.1.1.xml create mode 100755 rocm-build/upload_packages.sh diff --git a/README.md b/README.md index 3c7fd56a0..31744f337 100644 --- a/README.md +++ b/README.md @@ -56,12 +56,103 @@ cd ~/ROCm/ **Note:** Using this sample code will cause the repo tool to download the open source code associated with the specified ROCm release. Ensure that you have ssh-keys configured on your machine for your GitHub ID prior to the download as explained at [Connecting to GitHub with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh). -### Building the ROCm source code +## Building the ROCm source code Each ROCm component repository contains directions for building that component, such as the rocSPARSE documentation [Installation and Building for Linux](https://rocm.docs.amd.com/projects/rocSPARSE/en/latest/install/Linux_Install_Guide.html). Refer to the specific component documentation for instructions on building the repository. Each release of the ROCm software supports specific hardware and software configurations. Refer to [System requirements (Linux)](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html) for the current supported hardware and OS. + +## Build ROCm from source + +The Build will use as many processors as it can find to build in parallel. Some of the compiles can consume as much as 10GB of RAM, so make sure you have plenty of Swap Space ! + +By default the ROCm build will compile for all supported GPU architectures and will take approximately 500 CPU hours. +The Build time will reduce significantly if we limit the GPU Architecture/s against which we need to build by using the environment variable GPU_ARCHS as mentioned below. + +```bash +# -------------------------------------- +# Step1: clone source code +# -------------------------------------- + +mkdir -p ~/WORKSPACE/ # Or any folder name other than WORKSPACE +cd ~/WORKSPACE/ +export ROCM_VERSION=6.1.0 # or 6.1.1 +~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.1.x -m rocm-build/rocm-${ROCM_VERSION}.xml +~/bin/repo sync + +# -------------------------------------- +# Step 2: Prepare build environment +# -------------------------------------- + +# Option 1: Start a docker container +# Pulling required base docker images: +# Ubuntu20.04 built from ROCm/rocm-build/docker/ubuntu20/Dockerfile +docker pull rocm/rocm-build-ubuntu-20.04:6.1 +# Ubuntu22.04 built from ROCm/rocm-build/docker/ubuntu22/Dockerfile +docker pull rocm/rocm-build-ubuntu-22.04:6.1 + +# Start docker container and mount the source code folder: +docker run -ti \ + -e ROCM_VERSION=${ROCM_VERSION} \ + -e CCACHE_DIR=$HOME/.ccache \ + -e CCACHE_ENABLED=true \ + -e DOCK_WORK_FOLD=/src \ + -w /src \ + -v $PWD:/src \ + -v /etc/passwd:/etc/passwd \ + -v /etc/shadow:/etc/shadow \ + -v ${HOME}/.ccache:${HOME}/.ccache \ + -u $(id -u):$(id -g) \ + bash + +# Option 2: Install required packages into the host machine +# For ubuntu20.04 system +cd ROCm/rocm-build/docker/ubuntu20 +bash install-prerequisites.sh +# For ubuntu22.04 system +cd ROCm/rocm-build/docker/ubuntu22 +bash install-prerequisities.sh + +# -------------------------------------- +# Step 3: Run build command line +# -------------------------------------- + +# Select GPU targets before building: +# When GPU_ARCHS is not set, default GPU targets supported by ROCm6.1 will be used. +# To build against a subset of GFX architectures you can use the below env variable. +# Support MI300 (gfx940, gfx941, gfx942). +export GPU_ARCHS="gfx942" # Example +export GPU_ARCHS="gfx940;gfx941;gfx942" # Example + +# Pick and run build commands in the docker container: +# Build rocm-dev packages +make -f ROCm/rocm-build/ROCm.mk -j ${NPROC:-$(nproc)} rocm-dev +# Build all ROCm packages +make -f ROCm/rocm-build/ROCm.mk -j ${NPROC:-$(nproc)} all +# list all ROCm components to find required components +make -f ROCm/rocm-build/ROCm.mk list_components +# Build a single ROCm packages +make -f ROCm/rocm-build/ROCm.mk T_rocblas + +# Find built packages in ubuntu20.04: +out/ubuntu-20.04/20.04/deb/ +# Find built packages in ubuntu22.04: +out/ubuntu-22.04/22.04/deb/ + +# Find built logs in ubuntu20.04: +out/ubuntu-20.04/20.04/logs/ +# Find built logs in ubuntu22.04: +out/ubuntu-22.04/22.04/logs/ +# All logs pertaining to failed components, end with .errrors extension. +out/ubuntu-22.04/22.04/logs/rocblas.errors # Example +# All logs pertaining to building components, end with .inprogress extension. +out/ubuntu-22.04/22.04/logs/rocblas.inprogress # Example +# All logs pertaining to passed components, use the component names. +out/ubuntu-22.04/22.04/logs/rocblas # Example +``` +Note: [Overview for ROCm.mk](rocm-build/README.md) + ## ROCm documentation This repository contains the [manifest file](https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md) diff --git a/rocm-build/README.md b/rocm-build/README.md new file mode 100644 index 000000000..9e95434b2 --- /dev/null +++ b/rocm-build/README.md @@ -0,0 +1,33 @@ +# Overview for ROCm.mk +This Makefile builds the various projects that makes up ROCm in the correct order. +It is expected to be run in an environment with the tooling set up. An easy way +to do this is to use Docker. + +# Targets +- all (default) +- rocm-dev (a subset of all) +- clean +- list_components +- help +- T_foo +- C_foo + + +# Makefile Variables +- PEVAL set to 1 to enable some Makefile debugging code. +- RELEASE\_FLAG set to "" to avoid passing "-r" to builds, effect is package defined. +- NOBUILD="foo bar" to avoid adding foo and bar into the dependencies of top level targets. They still may be + built if they are needed as dependencies of other top level targets. +- toplevel + +# Makefile assumptions + +## Requirements for package "foo" + +### program build\_foo.sh +- Should take option "-c" to clean +- Should take option "-r" to do a normal "RelWithDeb" build + +## For package "foo" we define some targets +- T\_foo - The main build target, calls "build\_foo.sh -r" +- C\_foo - Clean target, calls "build_foo.sh -c" diff --git a/rocm-build/ROCm.mk b/rocm-build/ROCm.mk new file mode 100644 index 000000000..041a173bc --- /dev/null +++ b/rocm-build/ROCm.mk @@ -0,0 +1,248 @@ +# Traditional first make target +all: + +# Use bash as a shell +# On Ubuntu sh is 'dash' +SHELL:=bash + +# Allow RELEASE_FLAG to be overwritten +RELEASE_FLAG?=-r + +# Set SANITIZER_FLAG for sanitizer +ASAN_DEP:= +ifeq (${ENABLE_ADDRESS_SANITIZER},true) + ASAN_DEP=lightning + SANITIZER_FLAG=-a +endif + +export INFRA_REPO:=ROCm/rocm-build + +OUT_DIR:=$(shell . ${INFRA_REPO}/envsetup.sh >/dev/null 2>&1 ; echo $${OUT_DIR}) +ROCM_INSTALL_PATH:=$(shell . ${INFRA_REPO}/envsetup.sh >/dev/null 2>&1 ; echo $${ROCM_INSTALL_PATH}) + +$(info OUT_DIR=${OUT_DIR}) +$(info ROCM_INSTALL_PATH=${ROCM_INSTALL_PATH}) + +# ------------------------------------------------------------------------- +# Internal stuff. Could be put in a different file to hide it. +# Internal macros, they need to be defined before being used. + +# The internal "eval" allows parts of the Makefile to be generated. +# Whilst it is possible to dump the effective Makefile, it can be +# hard to see where parts come from. Set up the "peval" macro which +# optionally prints out the generated makefile snippet and evaluate it. +# Use "make PEVAL=1 all" to see the things being evaluated. +ifeq (,${PEVAL}) + define peval = + $(eval $1) + endef +else + define peval = + $(eval $(info $1)$1) + endef +endif + +# macro to add dependencies. Saves having to put all the OUT_DIR/logs in +# The outer strip is to work around a gnu make 4.1 and earlier bug +# It should not be needed. +define adddep = +$(strip $(call peval,components+= $(1) $(2)) +$(foreach comp,$(strip $2),$(call peval,${OUT_DIR}/logs/${1}: ${OUT_DIR}/logs/${comp})) +) +endef +# End of internal stuff that is needed at the start of the file +# ------------------------------------------------------------------------- + +# Dependencies. These can be updated. Anything that is mentioned in +# either the args to the adddep macro will be added to components. as +# an example there is no need for the adddep of lightning, as it +# depends on nothing and at least one other component includes it. + +# Syntax. Up to the first comma everything is fixed. The "call" is a +# keyword to gnu make. The "adddep" is the name of the variable containing +# the macro. +# The second comma delimited argument is the target. +# The third comma delimited arg is the thing that the target depends on. +# It is a space seperated list with zero or more elements. + +$(call adddep,amd_smi_lib,${ASAN_DEP}) +$(call adddep,aqlprofile,${ASAN_DEP} hsa) +$(call adddep,clang-ocl,lightning rocm-cmake) +$(call adddep,comgr,lightning devicelibs) +$(call adddep,dbgapi,hsa comgr) +$(call adddep,devicelibs,lightning) +$(call adddep,hip_on_rocclr,${ASAN_DEP} rocclr rocprofiler-register) +$(call adddep,hipcc,) +$(call adddep,hipify_clang,hip_on_rocclr lightning) +$(call adddep,hsa,${ASAN_DEP} thunk lightning devicelibs rocprofiler-register) +$(call adddep,lightning,) +$(call adddep,opencl_on_rocclr,${ASAN_DEP} rocclr) +$(call adddep,openmp_extras,thunk lightning devicelibs hsa) +$(call adddep,rdc,${ASAN_DEP} rocm_smi_lib hsa rocprofiler) +$(call adddep,rocclr,${ASAN_DEP} hsa comgr hipcc rocprofiler-register) +$(call adddep,rocm_bandwidth_test,${ASAN_DEP} hsa) +$(call adddep,rocm_smi_lib,${ASAN_DEP}) +$(call adddep,rocm-cmake,${ASAN_DEP}) +$(call adddep,rocm-core,${ASAN_DEP}) +$(call adddep,rocm-gdb,dbgapi) +$(call adddep,rocminfo,${ASAN_DEP} hsa) +$(call adddep,rocprofiler-register,${ASAN_DEP}) +$(call adddep,rocprofiler,${ASAN_DEP} hsa roctracer aqlprofile opencl_on_rocclr hip_on_rocclr comgr dbgapi rocm_smi_lib) +$(call adddep,rocr_debug_agent,${ASAN_DEP} hip_on_rocclr hsa dbgapi) +$(call adddep,roctracer,${ASAN_DEP} hsa hip_on_rocclr) +$(call adddep,thunk,${ASAN_DEP}) + +# rocm-dev points to all possible last finish components of Stage1 build. +rocm-dev-components :=rdc hipify_clang openmp_extras \ + rocm-core amd_smi_lib hipcc clang-ocl \ + rocm_bandwidth_test rocr_debug_agent rocm-gdb +$(call adddep,rocm-dev,$(filter-out ${NOBUILD},${rocm-dev-components})) + +$(call adddep,amdmigraphx,hip_on_rocclr half rocblas miopen-hip lightning hipcc) +$(call adddep,composable_kernel,lightning hipcc hip_on_rocclr rocm-cmake) +$(call adddep,half,rocm-cmake) +$(call adddep,hipblas,hip_on_rocclr rocblas rocsolver lightning hipcc) +$(call adddep,hipblaslt,hip_on_rocclr openmp_extras hipblas lightning hipcc) +$(call adddep,hipcub,hip_on_rocclr rocprim lightning hipcc) +$(call adddep,hipfft,hip_on_rocclr openmp_extras rocfft rocrand hiprand lightning hipcc) +$(call adddep,hipfort,rocblas hipblas rocsparse hipsparse rocfft hipfft rocrand hiprand rocsolver hipsolver lightning hipcc) +$(call adddep,hiprand,hip_on_rocclr rocrand lightning hipcc) +$(call adddep,hipsolver,hip_on_rocclr rocblas rocsolver rocsparse lightning hipcc hipsparse) +$(call adddep,hipsparse,hip_on_rocclr rocsparse lightning hipcc) +$(call adddep,hipsparselt,hip_on_rocclr hipsparse lightning hipcc openmp_extras) +$(call adddep,hiptensor,hip_on_rocclr composable_kernel lightning hipcc) +$(call adddep,miopen-deps,lightning hipcc) +$(call adddep,miopen-hip,composable_kernel half hip_on_rocclr miopen-deps rocblas roctracer lightning hipcc) +$(call adddep,mivisionx,amdmigraphx miopen-hip rpp lightning hipcc) +$(call adddep,rccl,hip_on_rocclr hsa lightning hipcc rocm_smi_lib hipify_clang) +$(call adddep,rocalution,rocblas rocsparse rocrand lightning hipcc) +$(call adddep,rocblas,hip_on_rocclr openmp_extras lightning hipcc) +$(call adddep,rocdecode,hip_on_rocclr lightning hipcc) +$(call adddep,rocfft,hip_on_rocclr rocrand hiprand lightning hipcc openmp_extras) +$(call adddep,rocmvalidationsuite,hip_on_rocclr hsa rocblas rocm-core lightning hipcc rocm_smi_lib) +$(call adddep,rocprim,hip_on_rocclr lightning hipcc) +$(call adddep,rocrand,hip_on_rocclr lightning hipcc) +$(call adddep,rocsolver,hip_on_rocclr rocblas rocsparse lightning hipcc) +$(call adddep,rocsparse,hip_on_rocclr rocprim lightning hipcc) +$(call adddep,rocthrust,hip_on_rocclr rocprim lightning hipcc) +$(call adddep,rocwmma,hip_on_rocclr rocblas lightning hipcc rocm-cmake rocm_smi_lib) +$(call adddep,rpp,half lightning hipcc openmp_extras) + + +# ------------------------------------------------------------------------- +# The rest of the file is internal +# Do not pass jobserver params if -n build +ifneq (,$(findstring n,${MAKEFLAGS})) +RMAKE:= +else +RMAKE := + +endif + + +# disable the builtin rules +.SUFFIXES: + +# Linear +# include moredeps + +# A macro to define a toplevel target, add it to the 'all' target +# Make it depend on the generated log. Generate the log of the build. + +# See if the macro is already defined, if so don't touch it. +# As GNU make allows more than one makefile to be specified with "-f" +# one could put an alternative definition of "toplevel" in a different +# file or even the environment, and use the data in this file for other +# purposes. Uses might include generating output in "dot" format for +# showing the dependency graph, or having a wrapper script to run programs +# to generate code quality tools. +ifeq (${toplevel},) +# { Start of test to see if toplevel is defined +define toplevel = + +# The "target" make, this builds the package if it is out of date +T_$1: ${OUT_DIR}/logs/$1 FRC + : $1 built + +# The "upload" for $1, it uploads the packages for $1 to the central storage +U_$1: T_$1 FRC + source $${INFRA_REPO}/envsetup.sh && $${INFRA_REPO}/upload_packages.sh "$1" + : $1 uploaded + +# The "clean" for $1, it just marks the target as not existing so it will be built +# in the future. +C_$1: FRC + rm -f ${OUT_DIR}/logs/$1 ${OUT_DIR}/logs/$1.repackaged + +# parallel build { +${OUT_DIR}/logs/$1: | ${OUT_DIR}/logs +ifneq ($(wildcard ${OUT_DIR}/logs/$1.repackaged),) + @echo Skipping build of $1 as it has already been repackaged + cat $$@.repackaged > $$@ + rm -f $$@.repackaged +else # } { + @echo $1 started due to $$? | sed "s:${OUT_DIR}/logs/::g" +# Build in a subshell so we get the time output +# Pass in jobserver info using the RMAKE variable + ${RMAKE}@( if set -x && source $${INFRA_REPO}/envsetup.sh && \ + rm -f $$@.errors $$@ $$@.repackaged && \ + $${INFRA_REPO}/build_$1.sh -c && source $${INFRA_REPO}/ccache-env-mathlib.sh && \ + time bash -x $${INFRA_REPO}/build_$1.sh $${RELEASE_FLAG} $${SANITIZER_FLAG} && $${INFRA_REPO}/post_inst_pkg.sh "$1" ; \ + then mv $$@.inprogress $$@ ; \ + else mv $$@.inprogress $$@.errors ; echo Error in $1 >&2 ; exit 1 ;\ + fi ) > $$@.inprogress 2>&1 +endif # } + +# end of toplevel macro +endef +# } End of test to see if toplevel is defined +endif + +components:=$(sort $(components)) + +# Create all the T_xxxx and C_xxxx targets +$(call peval,$(foreach dep,$(strip ${components}),$(call toplevel,${dep}))) + +# Add all the T_xxxx targets to "all" except those listed in NOBUILD +# Note this does not prohibit them from being built, it just means that +# a build of "all" will not force them to be built directly +# example command +# make -f jenkins-utils/scripts/Stage1.mk -j60 + +##help all: Build everything +all: $(addprefix T_,$(filter-out ${NOBUILD},${components})) + @echo All ROCm components built +# Do not document this target +upload: $(addprefix U_,${components}) + @echo All ROCm components built and uploaded + +##help rocm-dev: Build a subset of ROCm +rocm-dev: T_rocm-dev + @echo rocm-dev built + +${OUT_DIR}/logs: + sudo mkdir -p -m 775 "${ROCM_INSTALL_PATH}" && \ + sudo chown -R "$(shell id -u):$(shell id -g)" "${ROCM_INSTALL_PATH}" + sudo chown -R "$(shell id -u):$(shell id -g)" "/home/$(shell id -un)" + mkdir -p "${@}" + mkdir -p ${HOME}/.ccache + +##help clean: remove the output directory and recreate it +clean: + [ -n "${OUT_DIR}" ] && rm -rf "${OUT_DIR}" + mkdir -p ${OUT_DIR}/logs + +.SECONDARY: ${components:%=${OUT_DIR}/logs/%} + +.PHONY: all clean repack help list_components + +##help list_components: output the list of components +##help : Hint make list_components | paste - - - | column -t +list_components: + @echo "${components}" | sed 'y/ /\n/' + +##help help: show this text +help: + @sed -n 's/^##help //p' ${MAKEFILE_LIST} | \ + if type -t column > /dev/null ; then column -s: -t ; else cat ; fi + +FRC: diff --git a/rocm-build/build_amd_smi_lib.sh b/rocm-build/build_amd_smi_lib.sh new file mode 100755 index 000000000..68a45b237 --- /dev/null +++ b/rocm-build/build_amd_smi_lib.sh @@ -0,0 +1,145 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-h] [makeopts]" + echo + echo "Options:" + echo " -c, --clean Removes all amd_smi build artifacts" + echo " -r, --release Build non-debug version amd_smi (default is debug)" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo " -p, --package Specify packaging format" + echo " -h, --help Prints this help" + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +PACKAGE_ROOT="$(getPackageRoot)" +TARGET="build" + +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE="$(getIncludePath)" + +AMDSMI_BUILD_DIR=$(getBuildPath amdsmi) +AMDSMI_PACKAGE_DEB_DIR="$(getPackageRoot)/deb/amdsmi" +AMDSMI_PACKAGE_RPM_DIR="$(getPackageRoot)/rpm/amdsmi" +AMDSMI_BUILD_TYPE="debug" +BUILD_TYPE="Debug" + +MAKETARGET="deb" +MAKEARG="$DASH_JAY O=$AMDSMI_BUILD_DIR" +AMDSMI_MAKE_OPTS="$DASH_JAY O=$AMDSMI_BUILD_DIR -C $AMDSMI_BUILD_DIR" +AMDSMI_PKG_NAME="amd-smi-lib" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + # TODO - support standard option of passing cmake environment vars - CFLAGS,CXXFLAGS etc., to enable address sanitizer + ADDRESS_SANITIZER=true ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_amdsmi() { + rm -rf "$AMDSMI_BUILD_DIR" + rm -rf "$AMDSMI_PACKAGE_DEB_DIR" + rm -rf "$AMDSMI_PACKAGE_RPM_DIR" + rm -rf "$PACKAGE_ROOT/amd_smi" + rm -rf "$PACKAGE_INCLUDE/amd_smi" + rm -f $PACKAGE_LIB/libamd_smi.* + return 0 +} + +build_amdsmi() { + echo "Building AMDSMI" + echo "AMDSMI_BUILD_DIR: ${AMDSMI_BUILD_DIR}" + if [ ! -d "$AMDSMI_BUILD_DIR" ]; then + mkdir -p $AMDSMI_BUILD_DIR + pushd $AMDSMI_BUILD_DIR + print_lib_type $SHARED_LIBS + cmake \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + $(rocm_common_cmake_params) \ + $(rocm_cmake_params) \ + -DENABLE_LDCONFIG=OFF \ + -DAMD_SMI_PACKAGE="${AMDSMI_PKG_NAME}" \ + -DCPACK_PACKAGE_VERSION_MAJOR="1" \ + -DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \ + -DCPACK_PACKAGE_VERSION_PATCH="0" \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + -DBUILD_TESTS=ON \ + "$AMD_SMI_LIB_ROOT" + popd + fi + + echo "Making amd_smi package:" + cmake --build "$AMDSMI_BUILD_DIR" -- $AMDSMI_MAKE_OPTS + cmake --build "$AMDSMI_BUILD_DIR" -- $AMDSMI_MAKE_OPTS install + cmake --build "$AMDSMI_BUILD_DIR" -- $AMDSMI_MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$AMDSMI_PACKAGE_DEB_DIR" $AMDSMI_BUILD_DIR/*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$AMDSMI_PACKAGE_RPM_DIR" $AMDSMI_BUILD_DIR/*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${AMDSMI_PACKAGE_DEB_DIR};; + ("rpm") + echo ${AMDSMI_PACKAGE_RPM_DIR};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean_amdsmi ;; + (build) build_amdsmi ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" +exit 0 diff --git a/rocm-build/build_amdmigraphx.sh b/rocm-build/build_amdmigraphx.sh new file mode 100755 index 000000000..9ddad2151 --- /dev/null +++ b/rocm-build/build_amdmigraphx.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src AMDMIGraphX + +build_amdmigraphx() { + echo "Start build" + + cd $COMPONENT_SRC + + pip3 install https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + mkdir -p ${BUILD_DIR} && rm -rf ${BUILD_DIR}/* && mkdir -p ${HOME}/amdmigraphx && rm -rf ${HOME}/amdmigraphx/* + rbuild package -d "${HOME}/amdmigraphx" -B "${BUILD_DIR}" \ + --cxx="${ROCM_PATH}/llvm/bin/clang++" \ + --cc="${ROCM_PATH}/llvm/bin/clang" \ + $(rocm_common_cmake_params) \ + -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--enable-new-dtags -Wl,--rpath,$ROCM_LIB_RPATH" \ + -DGPU_TARGETS="${GPU_TARGETS}" \ + -DCMAKE_INSTALL_RPATH="" + + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + cd $BUILD_DIR && cmake --build . -- install -j${PROC} + + show_build_cache_stats +} + +clean_amdmigraphx() { + echo "Cleaning AMDMIGraphX build directory: ${BUILD_DIR} ${DEPS_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$DEPS_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_amdmigraphx ;; + outdir) print_output_directory ;; + clean) clean_amdmigraphx ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_aqlprofile.sh b/rocm-build/build_aqlprofile.sh new file mode 100755 index 000000000..61f073f7b --- /dev/null +++ b/rocm-build/build_aqlprofile.sh @@ -0,0 +1,150 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: ${BASH_SOURCE##*/} [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME="hsa-amd-aqlprofile" +PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME" +PROJ_NAME="$API_NAME" +TARGET="build" +BUILD_TYPE="Debug" +MAKETARGET="deb" +MAKE_OPTS="$DASH_JAY -C $BUILD_DIR" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0 +MAKETARGET="deb" +PKGTYPE="deb" + +VALID_STR=$(getopt -o hcro:p: --long help,clean,release,clean,outdir:,package: -- "$@") +eval set -- "$VALID_STR" + +while true; do + case "$1" in + -h | --help) + printUsage + exit 0 + ;; + -c | --clean) + TARGET="clean" + ((CLEAN_OR_OUT |= 1)) + shift + ;; + -r | --release) + BUILD_TYPE="Release" + shift + ;; + -o | --outdir) + TARGET="outdir" + PKGTYPE=$2 + OUT_DIR_SPECIFIED=1 + ((CLEAN_OR_OUT |= 2)) + shift 2 + ;; + --) + shift + break + ;; + *) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2 + exit 20 + ;; + esac + +done + +copy_pkg_files_to_rocm() { + local comp_folder=$1 + local comp_pkg_name=$2 + + cd "${OUT_DIR}/${PKGTYPE}/${comp_folder}"|| exit 2 + if [ "${PKGTYPE}" = 'deb' ]; then + dpkg-deb -x ${comp_pkg_name}_*.deb pkg/ + else + mkdir pkg && pushd pkg/ || exit 2 + if [[ "${comp_pkg_name}" != *-dev* ]]; then + rpm2cpio ../${comp_pkg_name}-*.rpm | cpio -idmv + else + rpm2cpio ../${comp_pkg_name}el-*.rpm | cpio -idmv + fi + popd || exit 2 + fi + ls ./pkg -alt + sudo cp -r ./pkg/*/rocm*/* "${ROCM_PATH}" || exit 2 + rm -rf pkg/ +} + +clean() { + echo "Cleaning $PROJ_NAME package" + rm -rf "$PACKAGE_DEB" +} + +build() { + echo "Downloading $PROJ_NAME" package + if [ "$DISTRO_NAME" = ubuntu ]; then + mkdir -p "$PACKAGE_DEB" + local rocm_ver=${ROCM_VERSION} + if [ ${ROCM_VERSION##*.} = 0 ]; then + rocm_ver=${ROCM_VERSION%.*} + fi + local url="https://repo.radeon.com/rocm/apt/${rocm_ver}/pool/main/h/${API_NAME}/" + local package + package=$(curl -s "$url" | grep -Po 'href="\K[^"]*' | grep "${DISTRO_RELEASE}" | head -n 1) + + if [ -z "$package" ]; then + echo "No package found for Ubuntu version $DISTRO_RELEASE" + exit 1 + fi + + wget -t3 -P "$PACKAGE_DEB" "${url}${package}" + copy_pkg_files_to_rocm ${API_NAME} ${API_NAME} + else + echo "$DISTRO_ID is not supported..." + exit 2 + fi + + echo "Installing $PROJ_NAME" package +} + +print_output_directory() { + case ${PKGTYPE} in + "deb") + echo ${PACKAGE_DEB} + ;; + "rpm") + echo ${PACKAGE_RPM} + ;; + *) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2 + exit 1 + ;; + esac + exit +} + +case "$TARGET" in +clean) clean ;; +build) build ;; +outdir) print_output_directory ;; +*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_clang-ocl.sh b/rocm-build/build_clang-ocl.sh new file mode 100755 index 000000000..25f2e6dba --- /dev/null +++ b/rocm-build/build_clang-ocl.sh @@ -0,0 +1,136 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-h] [makeopts]" + echo + echo "Options:" + echo " -c, --clean Removes all clang-ocl build artifacts" + echo " -r, --release Build non-debug version clang-ocl (default is debug)" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo + + return 0 +} + + +TARGET="build" +CLANG_OCL_DEST="$(getBinPath)" +CLANG_OCL_SRC_ROOT="$CLANG_OCL_ROOT" +CLANG_OCL_BUILD_DIR="$(getBuildPath clang-ocl)" + +MAKEARG="$DASH_JAY" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_UTILS="$(getUtilsPath)" +CLANG_OCL_PACKAGE_DEB="$PACKAGE_ROOT/deb/clang-ocl" +CLANG_OCL_PACKAGE_RPM="$PACKAGE_ROOT/rpm/clang-ocl" +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso:g: --long help,clean,release,clean,static,address_sanitizer,outdir:,gpu_list: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + MAKEARG="$MAKEARG BUILD_TYPE=rel" ; BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-g | --gpu_list ) + GPU_LIST=$2; shift 2 ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_clang-ocl() { + echo "Removing clang-ocl" + rm -rf $CLANG_OCL_DEST/clang-ocl + rm -rf $CLANG_OCL_BUILD_DIR + rm -rf $CLANG_OCL_PACKAGE_DEB + rm -rf $CLANG_OCL_PACKAGE_RPM +} + +build_clang-ocl() { + if [ ! -d "$CLANG_OCL_BUILD_DIR" ]; then + mkdir -p $CLANG_OCL_BUILD_DIR + pushd $CLANG_OCL_BUILD_DIR + + if [ -e $PACKAGE_ROOT/lib/bitcode/opencl.amdgcn.bc ]; then + BC_DIR="$ROCM_INSTALL_PATH/lib" + else + BC_DIR="$ROCM_INSTALL_PATH/amdgcn/bitcode" + fi + + cmake \ + $(rocm_cmake_params) \ + -DDISABLE_CHECKS="ON" \ + -DCLANG_BIN="$ROCM_INSTALL_PATH/llvm/bin" \ + -DBITCODE_DIR="$BC_DIR" \ + $(rocm_common_cmake_params) \ + -DCPACK_SET_DESTDIR="OFF" \ + $CLANG_OCL_SRC_ROOT + + echo "Making clang-ocl:" + cmake --build . -- $MAKEARG + cmake --build . -- $MAKEARG install + cmake --build . -- $MAKEARG package + popd + fi + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$CLANG_OCL_PACKAGE_DEB" $CLANG_OCL_BUILD_DIR/rocm-clang-ocl*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$CLANG_OCL_PACKAGE_RPM" $CLANG_OCL_BUILD_DIR/rocm-clang-ocl*.rpm +} + + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${CLANG_OCL_PACKAGE_DEB};; + ("rpm") + echo ${CLANG_OCL_PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_clang-ocl ;; + (build) build_clang-ocl ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" +exit 0 + diff --git a/rocm-build/build_comgr.sh b/rocm-build/build_comgr.sh new file mode 100755 index 000000000..256af4415 --- /dev/null +++ b/rocm-build/build_comgr.sh @@ -0,0 +1,151 @@ +#!/bin/bash +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -l, --link_llvm_static Link to LLVM statically. Default is to dynamically link to LLVM; requires that LLVM dylibs are created." + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME=amd_comgr +PROJ_NAME=$API_NAME +LIB_NAME=lib${API_NAME} +TARGET=build +MAKETARGET=deb +PACKAGE_ROOT=$(getPackageRoot) +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE=$(getIncludePath) +BUILD_DIR=$(getBuildPath $API_NAME) +PACKAGE_DEB=$(getPackageRoot)/deb/$API_NAME +PACKAGE_RPM=$(getPackageRoot)/rpm/$API_NAME +PACKAGE_PREFIX=$ROCM_INSTALL_PATH +BUILD_TYPE=Debug +MAKE_OPTS="$DASH_JAY CTEST_OUTPUT_ON_FAILURE=1 -C $BUILD_DIR" +VERBOSE_OPTS="AMD_COMGR_EMIT_VERBOSE_LOGS=1 AMD_COMGR_REDIRECT_LOGS=stdout" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" +MAKETARGET="deb" + +LINK_LLVM_DYLIB="OFF" + +VALID_STR=`getopt -o hcraslo:p: --long help,clean,release,address_sanitizer,static,link_llvm_static,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-l | --link_llvm_static) + LINK_LLVM_DYLIB="OFF"; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean() { + echo "Cleaning $PROJ_NAME" + + rm -rf $BUILD_DIR + rm -rf $PACKAGE_DEB + rm -rf $PACKAGE_RPM + rm -rf $PACKAGE_ROOT/${PROJ_NAME} + rm -rf $PACKAGE_LIB/${LIB_NAME}* +} + +build() { + echo "Building $PROJ_NAME" + + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" + if [ "$SHARED_LIBS" == "OFF" ] + then + echo " Building Archive " + else + echo " Building Shared Object " + fi + + cmake \ + $(rocm_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + $(rocm_common_cmake_params) \ + -DCMAKE_DISABLE_FIND_PACKAGE_hip=TRUE \ + -DCMAKE_CTEST_ARGUMENTS="--exclude-regex;multithread_test" \ + -DLLVM_LINK_LLVM_DYLIB=$LINK_LLVM_DYLIB \ + -DLLVM_ENABLE_LIBCXX=$LINK_LLVM_DYLIB \ + $COMGR_ROOT + + popd + cmake --build "$BUILD_DIR" -- $MAKE_OPTS + cmake --build "$BUILD_DIR" -- $MAKE_OPTS $VERBOSE_OPTS test + cmake --build "$BUILD_DIR" -- $MAKE_OPTS install + cmake --build "$BUILD_DIR" -- $MAKE_OPTS package + + mkdir -p $PACKAGE_LIB + cp -R $BUILD_DIR/${LIB_NAME}* $PACKAGE_LIB + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" $BUILD_DIR/comgr*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" $BUILD_DIR/comgr*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} +verifyEnvSetup + +case $TARGET in + (clean) clean ;; + (build) build ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_composable_kernel.sh b/rocm-build/build_composable_kernel.sh new file mode 100755 index 000000000..577c2c6b2 --- /dev/null +++ b/rocm-build/build_composable_kernel.sh @@ -0,0 +1,185 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src composable_kernel + +build_miopen_ck() { + echo "Start Building Composable Kernel" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC + mkdir "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + if [ "${ASAN_CMAKE_PARAMS}" == "true" ] ; then + cmake -DBUILD_DEV=OFF \ + -DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'} \ + -DCMAKE_CXX_COMPILER=${ROCM_PATH}/llvm/bin/clang++ \ + -DCMAKE_CXX_FLAGS=" -O3 " \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH%-*}/lib/cmake;${ROCM_PATH%-*}/$ASAN_LIBDIR;${ROCM_PATH%-*}/llvm;${ROCM_PATH%-*}" \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_LIB_RPATH" \ + -DCMAKE_EXE_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_EXE_RPATH" \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DCMAKE_PACKAGING_INSTALL_PREFIX=${ROCM_PATH} \ + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ + -DROCM_SYMLINK_LIBS=OFF \ + -DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_PATH} \ + -DROCM_DISABLE_LDCONFIG=ON \ + -DROCM_PATH=${ROCM_PATH} \ + -DCPACK_GENERATOR="${PKGTYPE^^}" \ + ${LAUNCHER_FLAGS} \ + -DINSTANCES_ONLY=ON \ + -DENABLE_ASAN_PACKAGING=true \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + "$COMPONENT_SRC" + else + cmake -DBUILD_DEV=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_COMPILER=${ROCM_PATH}/llvm/bin/clang++ \ + -DCMAKE_CXX_FLAGS=" -O3 " \ + -DCMAKE_PREFIX_PATH=${ROCM_PATH%-*} \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT='-Wl,--enable-new-dtags,--rpath,$ORIGIN' \ + -DCMAKE_EXE_LINKER_FLAGS_INIT='-Wl,--enable-new-dtags,--rpath,$ORIGIN/../lib' \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DCMAKE_PACKAGING_INSTALL_PREFIX=${ROCM_PATH} \ + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ + -DROCM_SYMLINK_LIBS=OFF \ + -DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_PATH} \ + -DROCM_DISABLE_LDCONFIG=ON \ + -DROCM_PATH=${ROCM_PATH} \ + -DCPACK_GENERATOR="${PKGTYPE^^}" \ + ${LAUNCHER_FLAGS} \ + -DINSTANCES_ONLY=ON \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + "$COMPONENT_SRC" + fi + + cmake --build . -- -j${PROC} package + cmake --build "$BUILD_DIR" -- install + mkdir -p $PACKAGE_DIR && cp ./*.${PKGTYPE} $PACKAGE_DIR + rm -rf * +} + +unset_asan_env_vars() { + ASAN_CMAKE_PARAMS="false" + export ADDRESS_SANITIZER="OFF" + export LD_LIBRARY_PATH="" + export ASAN_OPTIONS="" +} + +set_address_sanitizer_off() { + export CFLAGS="" + export CXXFLAGS="" + export LDFLAGS="" +} + +build_miopen_ckProf() { + ENABLE_ADDRESS_SANITIZER=false + echo "Start Building Composable Kernel Profiler" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + else + unset_asan_env_vars + set_address_sanitizer_off + fi + + cd $COMPONENT_SRC + cd "$BUILD_DIR" + rm -rf * + + architectures='gfx10 gfx11 gfx90 gfx94' + if [ -n "$GPU_ARCHS" ]; then + architectures=$(echo ${GPU_ARCHS} | awk -F';' '{for(i=1;i<=NF;i++) a[substr($i,1,5)]} END{for(i in a) printf i" "}') + else + architectures='gfx10 gfx11 gfx90 gfx94' + fi + + for arch in ${architectures} + do + if [ "${ASAN_CMAKE_PARAMS}" == "true" ] ; then + cmake -DBUILD_DEV=OFF \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH%-*}/lib/cmake;${ROCM_PATH%-*}/$ASAN_LIBDIR;${ROCM_PATH%-*}/llvm;${ROCM_PATH%-*}" \ + -DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'} \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_LIB_RPATH" \ + -DCMAKE_EXE_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_EXE_RPATH" \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \ + -DCMAKE_INSTALL_PREFIX="${ROCM_PATH}" \ + -DCMAKE_PACKAGING_INSTALL_PREFIX="${ROCM_PATH}" \ + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ + -DROCM_SYMLINK_LIBS=OFF \ + -DCPACK_PACKAGING_INSTALL_PREFIX="${ROCM_PATH}" \ + -DROCM_DISABLE_LDCONFIG=ON \ + -DROCM_PATH="${ROCM_PATH}" \ + -DCPACK_GENERATOR="${PKGTYPE^^}" \ + -DCMAKE_CXX_COMPILER="${ROCM_PATH}/llvm/bin/clang++" \ + -DCMAKE_C_COMPILER="${ROCM_PATH}/llvm/bin/clang" \ + ${LAUNCHER_FLAGS} \ + -DPROFILER_ONLY=ON \ + -DENABLE_ASAN_PACKAGING=true \ + -DGPU_ARCH="${arch}" \ + "$COMPONENT_SRC" + else + cmake -DBUILD_DEV=OFF \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH%-*}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT='-Wl,--enable-new-dtags,--rpath,$ORIGIN' \ + -DCMAKE_EXE_LINKER_FLAGS_INIT='-Wl,--enable-new-dtags,--rpath,$ORIGIN/../lib' \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \ + -DCMAKE_INSTALL_PREFIX="${ROCM_PATH}" \ + -DCMAKE_PACKAGING_INSTALL_PREFIX="${ROCM_PATH}" \ + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ + -DROCM_SYMLINK_LIBS=OFF \ + -DCPACK_PACKAGING_INSTALL_PREFIX="${ROCM_PATH}" \ + -DROCM_DISABLE_LDCONFIG=ON \ + -DROCM_PATH="${ROCM_PATH}" \ + -DCPACK_GENERATOR="${PKGTYPE^^}" \ + -DCMAKE_CXX_COMPILER="${ROCM_PATH}/llvm/bin/clang++" \ + -DCMAKE_C_COMPILER="${ROCM_PATH}/llvm/bin/clang" \ + ${LAUNCHER_FLAGS} \ + -DPROFILER_ONLY=ON \ + -DGPU_ARCH="${arch}" \ + "$COMPONENT_SRC" + fi + + cmake --build . -- -j${PROC} package + cp ./*ckprofiler*.${PKGTYPE} $PACKAGE_DIR + rm -rf * + done + rm -rf _CPack_Packages/ && find -name '*.o' -delete + + echo "Finished building Composable Kernel" + show_build_cache_stats +} + +clean_miopen_ck() { + echo "Cleaning MIOpen-CK build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_miopen_ck; build_miopen_ckProf;; + outdir) print_output_directory ;; + clean) clean_miopen_ck ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_dbgapi.sh b/rocm-build/build_dbgapi.sh new file mode 100755 index 000000000..352331195 --- /dev/null +++ b/rocm-build/build_dbgapi.sh @@ -0,0 +1,159 @@ +#!/bin/bash +source "${BASH_SOURCE%/*}/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE[0]}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " --enable-assertions Enable assertions" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -M, --skip_man_pages Do not build the 'docs' target" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME=rocm-dbgapi +AMD_DBGAPI_NAME=amd-dbgapi +MAKEINSTALL_MANIFEST=makeinstall_manifest.txt +PROJ_NAME=$API_NAME +LIB_NAME=lib${API_NAME}.so +TARGET=build +MAKETARGET=deb +PACKAGE_ROOT=$(getPackageRoot) +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE=$(getIncludePath) +BUILD_DIR=$(getBuildPath $API_NAME) +PACKAGE_DEB=$(getPackageRoot)/deb/$API_NAME +PACKAGE_RPM=$(getPackageRoot)/rpm/$API_NAME +BUILD_TYPE=Debug +MAKE_OPTS=($DASH_JAY -C "$BUILD_DIR") +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" +DODOCSBUILD=true + +VALID_STR=$(getopt -o hcraso:p:M --long help,clean,release,enable-assertions,static,address_sanitizer,outdir:,package:skip_man_pages -- "$@") +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ;; + (-r | --release) + ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS:-"Off"} ; + BUILD_TYPE="RelWithDebInfo" ;; + ( --enable-assertions) + ENABLE_ASSERTIONS="On" ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ;; + (-s | --static) + SHARED_LIBS="OFF" ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; ((CLEAN_OR_OUT|=2)) ; shift 1 ;; + (-M | --skip_man_pages) DODOCSBUILD=false;; + (-p | --package) + MAKETARGET="$2" ; shift 1;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + shift + +done + +check_conflicting_options $CLEAN_OR_OUT "$PKGTYPE" "$MAKETARGET" +if [ "$RET_CONFLICT" -ge 30 ]; then + print_vars "$API_NAME" "$TARGET" "$BUILD_TYPE" "$SHARED_LIBS" "$CLEAN_OR_OUT" "$PKGTYPE" "$MAKETARGET" + exit "$RET_CONFLICT" +fi + +clean() { + echo "Cleaning $PROJ_NAME" + if [ -e "$BUILD_DIR/$MAKEINSTALL_MANIFEST" ] ; then + xargs rm -f < "$BUILD_DIR/$MAKEINSTALL_MANIFEST" + fi + rm -rf "$BUILD_DIR" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "${PACKAGE_ROOT:?}/${PROJ_NAME}" + rm -rf "${PACKAGE_LIB:?}/${LIB_NAME}"* + rm -rf "${PACKAGE_LIB:?}/cmake/${AMD_DBGAPI_NAME}" + rm -rf "${PACKAGE_INCLUDE:?}/${AMD_DBGAPI_NAME}" +} + +build() { + if [ ! -e "$ROCM_DBGAPI_ROOT/CMakeLists.txt" ] + then + echo " No $ROCM_DBGAPI_ROOT/CMakeLists.txt file, skipping rocm-dbgapi" >&2 + echo " No $ROCM_DBGAPI_ROOT/CMakeLists.txt file, skipping rocm-dbgapi" + exit 0 + fi + echo "Building $PROJ_NAME" + + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" || exit 99 + + cmake \ + $(rocm_cmake_params) \ + $(rocm_common_cmake_params) \ + -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS:-"On"} \ + "$ROCM_DBGAPI_ROOT" + + popd || exit 99 + cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" + "$DODOCSBUILD" && cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" doc + cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" install + + mv "$BUILD_DIR/install_manifest.txt" "$BUILD_DIR/$MAKEINSTALL_MANIFEST" + cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" package + + mkdir -p "$PACKAGE_LIB" + ( + shopt -s nullglob + cp -R "$BUILD_DIR/lib/${LIB_NAME}"* "$BUILD_DIR/${LIB_NAME}"* "$PACKAGE_LIB" + ) + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean ;; + (build) build ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_devicelibs.sh b/rocm-build/build_devicelibs.sh new file mode 100755 index 000000000..4d206fad5 --- /dev/null +++ b/rocm-build/build_devicelibs.sh @@ -0,0 +1,140 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Build a release version of the package" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo + + return 0 +} +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_BIN="$(getBinPath)" +PACKAGE_LIB="$(getLibPath)" +BUILD_PATH="$(getBuildPath devicelibs)" +INSTALL_PATH="$(getPackageRoot)" +LIGHTNING_BUILD_PATH="$(getBuildPath lightning)" +DEB_PATH="$(getDebPath devicelibs)" +RPM_PATH="$(getRpmPath devicelibs)" +AMDGCN_LIB_PATH="$PACKAGE_ROOT/amdgcn/bitcode/" + +TARGET="build" +MAKEOPTS="$DASH_JAY" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" +MAKETARGET="deb" + +VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + ASAN_CMAKE_PARAMS="true" + ack_and_ignore_asan ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_devicelibs() { + rm -rf "$BUILD_PATH" + rm -f $PACKAGE_LIB/hc*.bc + rm -f $PACKAGE_LIB/irif*.bc + rm -f $PACKAGE_LIB/ockl*.bc + rm -f $PACKAGE_LIB/oclc*.bc + rm -f $PACKAGE_LIB/ocml*.bc + rm -f $PACKAGE_LIB/opencl*.bc + rm -f $PACKAGE_LIB/openmp*.bc + rm -rf $PACKAGE_ROOT/amdgcn + rm -rf "$DEB_PATH" + rm -rf "$RPM_PATH" +} + +build_devicelibs() { + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + + local clangResourceDir="$($LIGHTNING_BUILD_PATH/bin/clang -print-resource-dir)" + local clangResourceVer=${clangResourceDir#*lib/clang/} + local bitcodeInstallLoc="lib/llvm/lib/clang/${clangResourceVer}/lib" + + export LLVM_BUILD="$LIGHTNING_BUILD_PATH" + if [ ! -e Makefile ]; then + cmake $(rocm_cmake_params) \ + $(rocm_common_cmake_params) \ + -DROCM_DEVICE_LIBS_BITCODE_INSTALL_LOC_NEW="$bitcodeInstallLoc/amdgcn" \ + -DROCM_DEVICE_LIBS_BITCODE_INSTALL_LOC_OLD="amdgcn" \ + "$DEVICELIBS_ROOT" + + echo "CMake complete" + fi + + echo "Building device-libs" + cmake --build . -- $MAKEOPTS + cmake --build . -- $MAKEOPTS install + popd +} + +package_devicelibs() { + mkdir -p "$DEB_PATH" + mkdir -p "$RPM_PATH" + pushd "$BUILD_PATH" + cpack + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$DEB_PATH" *.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RPM_PATH" *.rpm + popd +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} +case $TARGET in + (clean) clean_devicelibs ;; + (build) build_devicelibs; package_devicelibs ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_half.sh b/rocm-build/build_half.sh new file mode 100755 index 000000000..dbab4dd0a --- /dev/null +++ b/rocm-build/build_half.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src half + +build_half() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + ASAN_CMAKE_PARAMS="false" + fi + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + cmake \ + -DCMAKE_INSTALL_PREFIX="$ROCM_PATH" \ + -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- package + cmake --build "$BUILD_DIR" -- install + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_half() { + echo "Cleaning half build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_half ;; + outdir) print_output_directory ;; + clean) clean_half ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hip_on_rocclr.sh b/rocm-build/build_hip_on_rocclr.sh new file mode 100755 index 000000000..dd93a85f4 --- /dev/null +++ b/rocm-build/build_hip_on_rocclr.sh @@ -0,0 +1,295 @@ +#!/bin/bash + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -h, --help Prints this help" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo " -t, --offload-arch= Specify arch for catch tests ex: --offload-arch=gfx1030 --offload-arch=gfx1100" + echo " -p, --package Specify packaging format" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" +MAKEOPTS="$DASH_JAY" + +BUILD_PATH="$(getBuildPath hip-on-rocclr)" + +TARGET="build" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_SRC="$(getSrcPath)" +PACKAGE_DEB="$PACKAGE_ROOT/deb/hip-on-rocclr" +PACKAGE_RPM="$PACKAGE_ROOT/rpm/hip-on-rocclr" +PREFIX_PATH="$PACKAGE_ROOT" +CORE_BUILD_DIR="$(getBuildPath hsa-core)" +ROCclr_BUILD_DIR="$(getBuildPath rocclr)" +HIPCC_BUILD_DIR="$(getBuildPath hipcc)" +CATCH_BUILD_DIR="$(getBuildPath catch)" +CATCH_SRC="$HIP_CATCH_TESTS_ROOT/catch" +SAMPLES_SRC="$HIP_CATCH_TESTS_ROOT/samples" +SAMPLES_BUILD_DIR="$(getBuildPath samples)" +if [ ! -e "$CATCH_SRC/CMakeLists.txt" ]; then + echo "Using catch source from hip project" >&2 + CATCH_SRC="$HIP_ON_ROCclr_ROOT/tests/catch" +fi + +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" +OFFLOAD_ARCH=() + +DEFAULT_OFFLOAD_ARCH=(gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx1031 gfx1033 gfx1034 gfx1035 gfx1100 gfx1101 gfx1102 gfx1103) + +VALID_STR=`getopt -o hcrast:o: --long help,clean,release,address_sanitizer,static,offload-arch=:,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-t | --offload-arch=) + OFFLOAD_ARCH+=( "$2" ); ((CLEAN_OR_OUT|=2)); shift 2 ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; + + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +if [ ${#OFFLOAD_ARCH[@]} = 0 ] ; then + OFFLOAD_ARCH=( "${DEFAULT_OFFLOAD_ARCH[@]}" ) +else + echo "Using user defined offload archs ${OFFLOAD_ARCH[@]} for catch tests"; +fi +printf -v OFFLOAD_ARCH_STR -- '--offload-arch=%q ' "${OFFLOAD_ARCH[@]}" + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_hip_on_rocclr() { + rm -rf "$BUILD_PATH" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "$OUT_DIR/hip" +} + +build_hip_on_rocclr() { + if [ -e "$CLR_ROOT/CMakeLists.txt" ]; then + _HIP_CMAKELIST_DIR="$CLR_ROOT" + _HIP_CMAKELIST_OPT="-DCLR_BUILD_HIP=ON -DCLR_BUILD_OCL=OFF" + if [ -e "$HIPOTHER_ROOT/hipnv" ]; then + _HIP_CMAKELIST_OPT="$_HIP_CMAKELIST_OPT -DHIPNV_DIR=$HIPOTHER_ROOT/hipnv" + fi + elif [ ! -e "$HIPAMD_ROOT/CMakeLists.txt" ]; then + echo "No $HIPAMD_ROOT/CMakeLists.txt file, skipping hip on rocclr" >&2 + echo "No $HIPAMD_ROOT/CMakeLists.txt file, skipping hip on rocclr" + exit 0 + else + _HIP_CMAKELIST_DIR="$HIPAMD_ROOT" + _HIP_CMAKELIST_OPT="" + fi + + echo "$_HIP_CMAKELIST_DIR" + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + + if [ ! -e Makefile ]; then + echo "Building HIP-On-ROCclr CMake environment" + print_lib_type $SHARED_LIBS + + cmake $(rocm_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + -DHIP_COMPILER=clang \ + -DHIP_PLATFORM=amd \ + -DHIP_COMMON_DIR="$HIP_ON_ROCclr_ROOT" \ + $(rocm_common_cmake_params) \ + -DCMAKE_HIP_ARCHITECTURES=OFF \ + -DHSA_PATH="$ROCM_INSTALL_PATH" \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE \ + -DCPACK_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + -DROCM_PATH="$ROCM_INSTALL_PATH" \ + -DHIPCC_BIN_DIR="$HIPCC_BUILD_DIR" \ + -DHIP_CATCH_TEST=1 \ + $_HIP_CMAKELIST_OPT \ + "$_HIP_CMAKELIST_DIR" + + echo "CMake complete" + fi + + echo "Build and Install HIP" + cmake --build . -- $MAKEOPTS install "VERBOSE=1" + + popd +} + +build_catch_tests() { + WORKSPACE=`pwd` + echo "Build catch2 tests independently" + if [ ! -e "$CATCH_SRC/CMakeLists.txt" ]; then + echo "catch source not found: $CATCH_SRC" >&2 + exit + fi + # build catch + rm -rf "$CATCH_BUILD_DIR" + mkdir -p "$CATCH_BUILD_DIR" + pushd "$CATCH_BUILD_DIR" + export HIP_PATH="$ROCM_INSTALL_PATH" + export ROCM_PATH="$ROCM_INSTALL_PATH" + cmake \ + -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \ + -DHIP_PLATFORM=amd \ + -DROCM_PATH="$ROCM_INSTALL_PATH" \ + -DOFFLOAD_ARCH_STR="$OFFLOAD_ARCH_STR" \ + $(rocm_common_cmake_params) \ + -DCPACK_RPM_DEBUGINFO_PACKAGE=FALSE \ + -DCPACK_DEBIAN_DEBUGINFO_PACKAGE=FALSE \ + -DCPACK_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + "$CATCH_SRC" + + + make $MAKEOPTS build_tests + echo "Packaging catch tests" + make $MAKEOPTS package_test + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm + popd +} + +package_samples() { + if [ "$ASAN_CMAKE_PARAMS" == "true" ] ; then + echo "Disable the packaging of HIP samples" >&2 + return + fi + WORKSPACE=`pwd` + if [ ! -e "$SAMPLES_SRC/CMakeLists.txt" ]; then + echo "HIP samples source not found at: $SAMPLES_SRC" >&2 + echo "Using samples package from hip project: $BUILD_PATH" >&2 + return + fi + + rm -rf "$SAMPLES_BUILD_DIR" + mkdir -p "$SAMPLES_BUILD_DIR" + pushd "$SAMPLES_BUILD_DIR" + local CMAKE_PATH="$(getCmakePath)" + export HIP_PATH="$ROCM_INSTALL_PATH" + export ROCM_PATH="$ROCM_INSTALL_PATH" + cmake \ + -DROCM_PATH="$ROCM_INSTALL_PATH" \ + $(rocm_common_cmake_params) \ + -DCMAKE_MODULE_PATH="$CMAKE_PATH/hip" \ + -DCPACK_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + "$SAMPLES_SRC" + echo "Packaging hip samples from hip-tests project" + make $MAKEOPTS package_samples + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm + popd +} + +clean_hip_tests(){ + rm -rf "$CATCH_BUILD_DIR" + rm -rf "$PACKAGE_SRC/hip-on-rocclr" + rm -rf "$PACKAGE_SRC/hipamd" + rm -rf "$PACKAGE_SRC/rocclr" + rm -rf "$PACKAGE_SRC/opencl-on-rocclr" + rm -rf "$PACKAGE_SRC/clr" + rm -rf "$PACKAGE_SRC/hip-tests" + rm -rf "$PACKAGE_SRC/hipother" +} +copy_hip_tests() { + clean_hip_tests + + echo "Copy HIP & ROCclr Source and tests" + + mkdir -p "$PACKAGE_SRC/hip-on-rocclr" + echo "Copying hip-on-rocclr" + progressCopy "$HIP_ON_ROCclr_ROOT" "$PACKAGE_SRC/hip-on-rocclr" + + if [ -e "$CLR_ROOT/CMakeLists.txt" ]; then + mkdir -p "$PACKAGE_SRC/clr" + echo "Copying clr" + progressCopy "$CLR_ROOT" "$PACKAGE_SRC/clr" + else + mkdir -p "$PACKAGE_SRC/hipamd" + mkdir -p "$PACKAGE_SRC/rocclr" + mkdir -p "$PACKAGE_SRC/opencl-on-rocclr" + echo "Copying hipamd" + progressCopy "$HIPAMD_ROOT" "$PACKAGE_SRC/hipamd" + echo "Copying rocclr" + progressCopy "$ROCclr_ROOT" "$PACKAGE_SRC/rocclr" + echo "Copying opencl-on-rocclr" + progressCopy "$OPENCL_ON_ROCclr_ROOT" "$PACKAGE_SRC/opencl-on-rocclr" + fi + + if [ -e "$HIPOTHER_ROOT/hipnv" ]; then + mkdir -p "$PACKAGE_SRC/hipother" + echo "Copying hipother" + progressCopy "$HIPOTHER_ROOT" "$PACKAGE_SRC/hipother" + fi + + mkdir -p "$PACKAGE_SRC/hip-tests" + echo "Copying hip-tests" + progressCopy "$HIP_CATCH_TESTS_ROOT" "$PACKAGE_SRC/hip-tests" +} + +package_hip_on_rocclr() +{ + echo "Packagin HIP-on-ROCclr" + pushd "$BUILD_PATH" + cmake --build . -- $MAKEOPTS package + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm + popd +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_hip_on_rocclr; clean_hip_tests ;; + (build) build_hip_on_rocclr; build_catch_tests; package_hip_on_rocclr; package_samples; copy_hip_tests;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_hipblas.sh b/rocm-build/build_hipblas.sh new file mode 100755 index 000000000..8a2b1d8bf --- /dev/null +++ b/rocm-build/build_hipblas.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipBLAS + +build_hipblas() { + echo "Start build" + + CXX="g++" + CLIENTS_SAMPLES="ON" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + CLIENTS_SAMPLES="OFF" + fi + + echo "C compiler: $CC" + echo "CXX compiler: $CXX" + echo "FC compiler: $FC" + + cd $COMPONENT_SRC + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + rebuild_lapack + fi + + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DUSE_CUDA=OFF \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DBUILD_CLIENTS_SAMPLES="${CLIENTS_SAMPLES}" \ + -DCPACK_SET_DESTDIR=OFF \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipblas() { + echo "Cleaning hipBLAS build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipblas ;; + outdir) print_output_directory ;; + clean) clean_hipblas ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipblaslt.sh b/rocm-build/build_hipblaslt.sh new file mode 100755 index 000000000..4895adde2 --- /dev/null +++ b/rocm-build/build_hipblaslt.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipBLASLt + +build_hipblaslt() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + rebuild_lapack + fi + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + # gfx90a:xnack+;gfx90a:xnack-;gfx940;gfx941;gfx942 + GPU_TARGETS=all + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DTensile_LOGIC= \ + -DTensile_CODE_OBJECT_VERSION=default \ + -DTensile_CPU_THREADS= \ + -DTensile_LIBRARY_FORMAT=msgpack \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DCPACK_SET_DESTDIR=OFF \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipblaslt() { + echo "Cleaning hipBLASLt build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipblaslt ;; + outdir) print_output_directory ;; + clean) clean_hipblaslt ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipcc.sh b/rocm-build/build_hipcc.sh new file mode 100755 index 000000000..661c37d12 --- /dev/null +++ b/rocm-build/build_hipcc.sh @@ -0,0 +1,118 @@ +#!/bin/bash +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -h, --help Prints this help" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -r, --release Makes a release build" + echo + + return 0 +} + + +API_NAME=hipcc +PROJ_NAME=$API_NAME + +TARGET="build" +MAKEOPTS="$DASH_JAY" +BUILD_TYPE="Debug" + +BUILD_DIR=$(getBuildPath $API_NAME) +PACKAGE_DEB=$(getPackageRoot)/deb/$API_NAME +PACKAGE_RPM=$(getPackageRoot)/rpm/$API_NAME +PACKAGE_SRC="$(getSrcPath)" + +while [ "$1" != "" ]; +do + case $1 in + (-a | --address_sanitizer) + ack_and_ignore_asan ;; + (-c | --clean) + TARGET="clean" ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 1 ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ;; + (-h | --help) + printUsage ; exit 0 ;; + (*) + echo "Invalid option [$1]" >&2; printUsage; exit 1 ;; + esac + shift 1 +done + +clean() { + echo "Cleaning hipcc" + rm -rf $BUILD_DIR + + echo "Cleaning up hipcc DEB and RPM packages" + rm -rf $PACKAGE_DEB + rm -rf $PACKAGE_RPM +} + +copy_hipcc_sources() { + echo "Clean up hipcc build folder" + rm -rf "$PACKAGE_SRC/hipcc" + echo "Copy hipcc sources" + mkdir -p "$PACKAGE_SRC/hipcc" + progressCopy "$HIPCC_ROOT" "$PACKAGE_SRC/hipcc" +} + +build() { + echo "Build hipcc binary" + mkdir -p "$BUILD_DIR" + + pushd "$BUILD_DIR" + if ! [ -e "$HIPCC_ROOT/CMakeLists.txt" ] ; then + + echo "No source for hipcc, exiting. this is not an error" >&2 + exit 0 + fi + + cmake \ + $(rocm_cmake_params) \ + $(rocm_common_cmake_params) \ + -DHIPCC_BACKWARD_COMPATIBILITY=OFF \ + -DCMAKE_INSTALL_PREFIX="$OUT_DIR" \ + $HIPCC_ROOT + popd + + cmake --build "$BUILD_DIR" -- $MAKEOPTS + + echo "Installing and Packaging hipcc" + cmake --build "$BUILD_DIR" -- $MAKEOPTS install + cmake --build "$BUILD_DIR" -- $MAKEOPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" $BUILD_DIR/hipcc*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" $BUILD_DIR/hipcc*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1 ;; + esac + exit +} + +case $TARGET in + (clean) clean ;; + (build) build ; copy_hipcc_sources ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_hipcub.sh b/rocm-build/build_hipcub.sh new file mode 100755 index 000000000..c559fe102 --- /dev/null +++ b/rocm-build/build_hipcub.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipCUB + +build_hipcub() { + echo "Start build" + + cd $COMPONENT_SRC + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + ASAN_CMAKE_PARAMS="false" + fi + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + -Drocprim_DIR="${ROCM_PATH}/rocprim" \ + -DBUILD_TEST=ON \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipcub() { + echo "Cleaning hipCUB build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipcub ;; + outdir) print_output_directory ;; + clean) clean_hipcub ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipfft.sh b/rocm-build/build_hipfft.sh new file mode 100755 index 000000000..d8d077f1f --- /dev/null +++ b/rocm-build/build_hipfft.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipFFT + +build_hipfft() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + cmake \ + -DCMAKE_CXX_COMPILER=$(set_build_variables CXX) \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip" \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -L \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipfft() { + echo "Cleaning hipFFT build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipfft ;; + outdir) print_output_directory ;; + clean) clean_hipfft ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipfort.sh b/rocm-build/build_hipfort.sh new file mode 100755 index 000000000..df989b5b2 --- /dev/null +++ b/rocm-build/build_hipfort.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipfort + +build_hipfort() { + echo "Start build" + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + cmake --trace \ + -DHIPFORT_INSTALL_DIR="${ROCM_PATH}" \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH}/llvm;${ROCM_PATH}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DHIPFORT_COMPILER="${ROCM_PATH}/${ROCM_LLVMDIR}/bin/flang" \ + -DCMAKE_Fortran_FLAGS="-Mfree" \ + -DHIPFORT_COMPILER_FLAGS="-cpp" \ + -DCMAKE_Fortran_FLAGS_DEBUG="" \ + ${LAUNCHER_FLAGS} \ + -DROCM_SYMLINK_LIBS=OFF \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DHIPFORT_AR="${ROCM_PATH}/${ROCM_LLVMDIR}/bin/llvm-ar" \ + -DHIPFORT_RANLIB="${ROCM_PATH}/${ROCM_LLVMDIR}/bin/llvm-ranlib" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipfort() { + echo "Cleaning hipFORT build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipfort ;; + outdir) print_output_directory ;; + clean) clean_hipfort ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipify_clang.sh b/rocm-build/build_hipify_clang.sh new file mode 100755 index 000000000..41c90b162 --- /dev/null +++ b/rocm-build/build_hipify_clang.sh @@ -0,0 +1,142 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -r, --release Make a release build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo + + return 0 +} + +TARGET="build" +MAKEOPTS="$DASH_JAY" +HIPIFY_CLANG_BUILD_DIR="$(getBuildPath $HIPIFY_ROOT)" +HIPIFY_CLANG_DIST_DIR="$HIPIFY_CLANG_BUILD_DIR/dist" +BUILD_TYPE="Debug" +PACKAGE_ROOT="$(getPackageRoot)" +HIPIFY_CLANG_HASH="" +LIGHTNING_PATH="$ROCM_INSTALL_PATH/llvm" +ADDRESS_SANITIZER=false +DEB_PATH="$(getDebPath hipify)" +RPM_PATH="$(getRpmPath hipify)" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + ADDRESS_SANITIZER=true ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_hipify() { + echo "Cleaning hipify-clang" + rm -rf "$HIPIFY_CLANG_BUILD_DIR" + rm -rf "$HIPIFY_CLANG_DIST_DIR" + rm -rf "$DEB_PATH" + rm -rf "$RPM_PATH" +} + +package_hipify() { + if [ "$PACKAGEEXT" = "deb" ]; then + rm -rf "$DEB_PATH" + mkdir -p "$DEB_PATH" + fi + + if [ "$PACKAGEEXT" = "rpm" ]; then + rm -rf "$RPM_PATH" + mkdir -p "$RPM_PATH" + fi + + pushd "$HIPIFY_CLANG_BUILD_DIR" + make $MAKEOPTS package_hipify-clang + popd + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$DEB_PATH" $HIPIFY_CLANG_BUILD_DIR/hipify*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RPM_PATH" $HIPIFY_CLANG_BUILD_DIR/hipify*.rpm +} + +build_hipify() { + echo "Building hipify-clang binaries" + mkdir -p "$HIPIFY_CLANG_BUILD_DIR" + mkdir -p "$HIPIFY_CLANG_DIST_DIR" + + pushd "$HIPIFY_CLANG_BUILD_DIR" + cmake \ + -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ + $(rocm_common_cmake_params) \ + -DCMAKE_INSTALL_PREFIX="$HIPIFY_CLANG_DIST_DIR" \ + -DCPACK_PACKAGING_INSTALL_PREFIX=$ROCM_INSTALL_PATH \ + -DCMAKE_PREFIX_PATH="$LIGHTNING_PATH" \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + $HIPIFY_ROOT + + cmake --build . -- $MAKEOPTS install + popd + pushd "$HIPIFY_ROOT" + HIPIFY_CLANG_HASH=`git describe --dirty --long --match [0-9]* --always` + popd +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_hipify ;; + (build) build_hipify; package_hipify ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_hiprand.sh b/rocm-build/build_hiprand.sh new file mode 100755 index 000000000..293b05b6c --- /dev/null +++ b/rocm-build/build_hiprand.sh @@ -0,0 +1,90 @@ +#!/bin/bash +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipRAND + +while [ "$1" != "" ]; +do + case $1 in + -o | --outdir ) + shift 1; PKGTYPE=$1 ; TARGET="outdir" ;; + -c | --clean ) + TARGET="clean" ;; + *) + break ;; + esac + shift 1 +done + +build_hiprand() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC + + remote_name=$(git remote show | head -n 1) + [ "$remote_name" == "origin" ] || git remote rename "$remote_name" origin + git submodule update --init --force + + mkdir "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DBUILD_TEST=ON \ + -DBUILD_BENCHMARK=ON \ + -DBUILD_CRUSH_TEST=ON \ + -DDEPENDENCIES_FORCE_DOWNLOAD=ON \ + -DHIP_COMPILER=clang \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip" \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + $SCCACHE_BIN -s || echo "Unable to display sccache stats" +} + +clean_hiprand() { + echo "Cleaning hipRAND build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + build) build_hiprand ;; + outdir) print_output_directory ;; + clean) clean_hiprand ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipsolver.sh b/rocm-build/build_hipsolver.sh new file mode 100755 index 000000000..ded0279df --- /dev/null +++ b/rocm-build/build_hipsolver.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipSOLVER + +build_hipsolver() { + echo "Start build" + + cd $COMPONENT_SRC + + CXX="g++" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + echo "C compiler: $CC" + echo "CXX compiler: $CXX" + echo "FC compiler: $FC" + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + rebuild_lapack + fi + + cmake \ + -DUSE_CUDA=OFF \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DCPACK_SET_DESTDIR=OFF \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipsolver() { + echo "Cleaning hipSOLVER build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipsolver ;; + outdir) print_output_directory ;; + clean) clean_hipsolver ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipsparse.sh b/rocm-build/build_hipsparse.sh new file mode 100755 index 000000000..727421635 --- /dev/null +++ b/rocm-build/build_hipsparse.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +PATH=${ROCM_PATH}/bin:$PATH +set_component_src hipSPARSE + +build_hipsparse() { + echo "Start build" + + cd $COMPONENT_SRC + + CXX="g++" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + echo "C compiler: $CC" + echo "CXX compiler: $CXX" + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + cmake \ + -DCPACK_SET_DESTDIR=OFF \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DUSE_CUDA=OFF \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_hipsparse() { + echo "Cleaning hipSPARSE build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hipsparse ;; + outdir) print_output_directory ;; + clean) clean_hipsparse ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hipsparselt.sh b/rocm-build/build_hipsparselt.sh new file mode 100755 index 000000000..99b70edd0 --- /dev/null +++ b/rocm-build/build_hipsparselt.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipSPARSELt + +while [ "$1" != "" ]; +do + case $1 in + -o | --outdir ) + shift 1; PKGTYPE=$1 ; TARGET="outdir" ;; + -c | --clean ) + TARGET="clean" ;; + *) + break ;; + esac + shift 1 +done + +build_hipsparselt() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + # gfx940;gfx941;gfx942 + GPU_TARGETS=all + fi + + FC=gfortran \ + CXX="${ROCM_PATH}/bin/hipcc" \ + cmake \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DTensile_LOGIC= \ + -DTensile_CODE_OBJECT_VERSION=default \ + -DTensile_CPU_THREADS= \ + -DTensile_LIBRARY_FORMAT=msgpack \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DCPACK_SET_DESTDIR=OFF \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + $SCCACHE_BIN -s || echo "Unable to display sccache stats" +} + +clean_hipsparselt() { + echo "Cleaning hipSPARSELt build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + build) build_hipsparselt ;; + outdir) print_output_directory ;; + clean) clean_hipsparselt ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hiptensor.sh b/rocm-build/build_hiptensor.sh new file mode 100755 index 000000000..c239caab9 --- /dev/null +++ b/rocm-build/build_hiptensor.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src hipTensor + +build_hiptensor() { + echo "Start build hipTensor" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd "$COMPONENT_SRC" + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942" + fi + + cmake \ + -B "${BUILD_DIR}" \ + $(rocm_common_cmake_params) \ + $(set_build_variables CMAKE_C_CXX) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + ${LAUNCHER_FLAGS} \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p "$PACKAGE_DIR" && cp ${BUILD_DIR}/*.${PKGTYPE} "$PACKAGE_DIR" + + show_build_cache_stats +} + +clean_hiptensor() { + echo "Cleaning hipTensor build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_hiptensor ;; + outdir) print_output_directory ;; + clean) clean_hiptensor ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_hsa.sh b/rocm-build/build_hsa.sh new file mode 100755 index 000000000..9fc76ffd2 --- /dev/null +++ b/rocm-build/build_hsa.sh @@ -0,0 +1,135 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...] [make options]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo + echo + + return 0 +} + +TARGET="build" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_SRC="$(getSrcPath)" +PACKAGE_LIB="$(getLibPath)" +PACKAGE_BIN="$(getBinPath)" +PACKAGE_DEB="$(getPackageRoot)/deb/rocr" +PACKAGE_RPM="$(getPackageRoot)/rpm/rocr" +MAKEARG="" +CORE_BUILD_DIR="$(getBuildPath hsa-core)" +ROCR_DEV_BUILD_DIR="$(getBuildPath hsa-rocr-dev)" +PREFIX_PATH="$PACKAGE_ROOT" +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + +unset HIP_DEVICE_LIB_PATH +unset ROCM_PATH + +VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_hsa() { + echo "Cleaning HSA" + + rm -rf "$CORE_BUILD_DIR" + rm -rf "$PACKAGE_RPM" + rm -rf "$PACKAGE_DEB" + rm -f "$PACKAGE_ROOT"/lib/libhsa-runtime* + rm -rf "$PACKAGE_ROOT/lib/cmake/hsa-runtime64" + rm -rf "$PACKAGE_ROOT/include/hsa" + rm -rf "$PACKAGE_ROOT/share/doc/hsa-runtime64" + rm -rf "$PACKAGE_ROOT/hsa" +} + + +build_hsa_core() { + echo "Build HSA" + local coreMakeOpts="$DASH_JAY -C $CORE_BUILD_DIR" + + echo "$HSA_CORE_ROOT" + + if [ ! -d "$CORE_BUILD_DIR" ]; then + mkdir -p "$CORE_BUILD_DIR" + pushd "$CORE_BUILD_DIR" + print_lib_type $SHARED_LIBS + + cmake $(rocm_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + -DENABLE_LDCONFIG=OFF \ + $(rocm_common_cmake_params) \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + "$HSA_CORE_ROOT" + popd + fi + time cmake --build "$CORE_BUILD_DIR" -- $coreMakeOpts + time cmake --build "$CORE_BUILD_DIR" -- $coreMakeOpts install + time cmake --build "$CORE_BUILD_DIR" -- $coreMakeOpts package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" $CORE_BUILD_DIR/hsa-rocr*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" $CORE_BUILD_DIR/hsa-rocr*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_hsa ;; + (build) build_hsa_core;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_lightning.sh b/rocm-build/build_lightning.sh new file mode 100755 index 000000000..dbf9fae22 --- /dev/null +++ b/rocm-build/build_lightning.sh @@ -0,0 +1,1253 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" +export JOB_DESIGNATOR +export BUILD_ID +export SLES_BUILD_ID_PREFIX +export ROCM_LIBPATCH_VERSION + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -t, --alt Build the 'alt' variant" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -d, --debug Build a debug version of llvm (excludes packaging)" + echo " -r, --release Build a release version of the package" + echo " -a, --address_sanitizer Enable address sanitizer (enabled by default)" + echo " -A --no_address_sanitizer Disable address sanitizer" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -l, --build_llvm_static Build LLVM libraries statically linked. Default is to build dynamic linked libs" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -B, --build Build and install binary files into /opt/rocm folder" + echo " -P, --package Generate packages" + echo " -N, --skip_lit_tests Skip llvm lit testing (llvm lit testing is enabled by default)" + echo " -M, --skip_man_pages Skip llvm documentation generation (man pages and rocm-llvm-docs package generation is enabled by default)" + echo " -h, --help Prints this help" + echo + echo + + return 0 +} + +ROCM_LLVM_LIB_RPATH='\$ORIGIN' +ROCM_LLVM_EXE_RPATH='\$ORIGIN/../lib:\$ORIGIN/../../../lib' + +PACKAGE_OUT="$(getPackageRoot)" + +BUILD_PATH="$(getBuildPath lightning)" +DEB_PATH="$(getDebPath lightning)" +RPM_PATH="$(getRpmPath lightning)" +INSTALL_PATH="${ROCM_INSTALL_PATH}/lib/llvm" +LLVM_ROOT_LCL="${LLVM_ROOT}" + +TARGET="all" +MAKEOPTS="$DASH_JAY" +BUILD_TYPE="Release" +case "${JOB_NAME}" in + ( *"rel"* | \ + *"afar"* | \ + *"nfar"* ) + ENABLE_ASSERTIONS=0 ;; + ( * ) + ENABLE_ASSERTIONS=1 ;; +esac +SHARED_LIBS="ON" + +BUILD_LLVM_DYLIB="OFF" + +FLANG_NEW=0 +BUILD_ALT=0 +CLEAN_OR_OUT=0; +PKGTYPE="deb" +MAKETARGET="deb" + +ASSERT_LLVM_VERSION_MAJOR="" +ASSERT_LLVM_VERSION_MINOR="" + +SKIP_LIT_TESTS=0 +BUILD_MANPAGES="ON" + +SANITIZER_AMDGPU=1 +HSA_INC_PATH="$WORK_ROOT/ROCR-Runtime/src/inc" +COMGR_INC_PATH="$WORK_ROOT/llvm-project/amd/comgr/include" + +VALID_STR=`getopt -o htcV:v:draAslo:BPNM --long help,alt,clean,assert_llvm_ver_major:,assert_llvm_ver_minor:,debug,release,address_sanitizer,no_address_sanitizer,static,build_llvm_static,build,package,skip_lit_tests,skip_man_pages,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-t | --alt) + BUILD_ALT=1 ; shift ;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-V | --assert_llvm_ver_major) + ASSERT_LLVM_VERSION_MAJOR=$2 ; shift 2 ;; + (-v | --assert_llvm_ver_minor) + ASSERT_LLVM_VERSION_MINOR=$2 ; shift 2 ;; + (-d | --debug) + BUILD_TYPE="Debug" ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + SANITIZER_AMDGPU=1 ; + HSA_INC_PATH="$WORK_ROOT/hsa/runtime/opensrc/hsa-runtime/inc" ; + COMGR_INC_PATH="$WORK_ROOT/external/llvm-project/amd/comgr/include" ; shift ;; + (-A | --no_address_sanitizer) + SANITIZER_AMDGPU=0 ; + unset HSA_INC_PATH ; + unset COMGR_INC_PATH ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-l | --build_llvm_static) + BUILD_LLVM_DYLIB="OFF"; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-B | --build) + TARGET="build"; shift ;; + (-P | --package) + TARGET="package"; shift ;; + (-N | --skip_lit_tests) + SKIP_LIT_TESTS=1; shift ;; + (-M | --skip_man_pages) + BUILD_MANPAGES="OFF"; shift ;; + --) shift; break;; # end delimiter + (*) + echo " This should not happen : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +LLVM_PROJECTS="clang;lld;clang-tools-extra" +ENABLE_RUNTIMES="compiler-rt;libunwind" +BOOTSTRAPPING_BUILD_LIBCXX=0 +BUILD_AMDCLANG="ON" +if [ $BUILD_ALT -eq 1 ]; then + BUILD_PATH="${BUILD_PATH}-alt" + DEB_PATH="${DEB_PATH}-alt" + RPM_PATH="${RPM_PATH}-alt" + INSTALL_PATH="${INSTALL_PATH}/alt" + LLVM_ROOT_LCL="${LLVM_ALT_ROOT}" + BUILD_AMDCLANG="OFF" + BUILD_MANPAGES="OFF" + SANITIZER_AMDGPU=0 + unset HSA_INC_PATH + unset COMGR_INC_PATH +else + ENABLE_RUNTIMES="$ENABLE_RUNTIMES;libcxx;libcxxabi"; + BOOTSTRAPPING_BUILD_LIBCXX=1 +fi + +clean_lightning() { + rm -rf "$BUILD_PATH" + rm -rf "$DEB_PATH" + rm -rf "$RPM_PATH" +} + +setup_llvm_info() { + set +e + mkdir -p "$LLVM_ROOT_LCL" + pushd "$LLVM_ROOT_LCL" + local LLVM_REMOTE_NAME + local LLVM_URL_NAME + local LLVM_BRANCH_NAME + local LLVM_URL_BRANCH + + if [[ "${JOB_NAME}" == *rel* ]]; then + if [ $BUILD_ALT -eq 1 ]; then + LLVM_URL_BRANCH=$(git rev-parse HEAD) + else + LLVM_URL_NAME="https://github.com/RadeonOpenCompute/llvm-project" + LLVM_BRANCH_NAME="roc-${ROCM_VERSION}" + LLVM_URL_BRANCH="${LLVM_URL_NAME} ${LLVM_BRANCH_NAME}" + fi + else + LLVM_REMOTE_NAME=$(git remote) + LLVM_URL_NAME=$(git config --get remote."${LLVM_REMOTE_NAME}".url) + if [ $BUILD_ALT -eq 1 ]; then + LLVM_BRANCH_NAME=$(repo manifest | sed -n 's/.*path="external\/llvm-project-alt\/llvm-project".* upstream="\([^"]*\)".*/\1/p' ) + else + LLVM_BRANCH_NAME=$(repo manifest | sed -n 's/.*path="external\/llvm-project".* upstream="\([^"]*\)".*/\1/p' ) + fi + LLVM_URL_BRANCH="${LLVM_URL_NAME} ${LLVM_BRANCH_NAME}" + fi + + LLVM_COMMIT_GITDATE=$(git show -s --format=@%ct | xargs | date -f - --utc +%y%U%w) + LLVM_REPO_INFO="${LLVM_URL_BRANCH} ${LLVM_COMMIT_GITDATE}" + + popd + set -e +} + +LLVM_VERSION_MAJOR="" +LLVM_VERSION_MINOR="" +LLVM_VERSION_PATCH="" +LLVM_VERSION_SUFFIX="" +get_llvm_version() { + local LLVM_VERSIONS=($(awk '/set\(LLVM_VERSION/ {print substr($2,1,length($2)-1)}' ${LLVM_ROOT_LCL}/CMakeLists.txt)) + LLVM_VERSION_MAJOR=${LLVM_VERSIONS[0]} + LLVM_VERSION_MINOR=${LLVM_VERSIONS[1]} + LLVM_VERSION_PATCH=${LLVM_VERSIONS[2]} + LLVM_VERSION_SUFFIX=${LLVM_VERSIONS[3]} + + echo "Detected LLVM version from source: ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}" +} + +create_compiler_config_files() { + local llvm_bin_dir="${INSTALL_PATH}/bin" + local rocm_cfg="rocm.cfg" + + { + echo "-Wl,--enable-new-dtags" + echo "--rocm-path='/../../..'" + echo "-frtlib-add-rpath" + } > "${llvm_bin_dir}/$rocm_cfg" + + local compiler_commands=("clang" "clang++" "clang-cpp" "clang-${LLVM_VERSION_MAJOR}" "clang-cl" "flang" "flang-new") + for i in "${compiler_commands[@]}"; do + if [ -f "$llvm_bin_dir/$i" ]; then + local config_file="${llvm_bin_dir}/${i}.cfg" + echo "@${rocm_cfg}" > $config_file + fi + done +} + +contains(){ + + local target=$1 element + shift + for element ; do + [ "$target" = "$element" ] && return 0 + done + return 1 +} + +build_lightning() { + setup_llvm_info + + get_llvm_version + if [ -n "${ASSERT_LLVM_VERSION_MAJOR}" ]; then + echo "Assert LLVM major version: ${ASSERT_LLVM_VERSION_MAJOR}"; + if [ "${ASSERT_LLVM_VERSION_MAJOR}" != "${LLVM_VERSION_MAJOR}" ]; then + echo "LLVM major version assertion failed, expected ${ASSERT_LLVM_VERSION_MAJOR} but detected ${LLVM_VERSION_MAJOR}!" + exit 1; + fi + fi + if [ -n "${ASSERT_LLVM_VERSION_MINOR}" ]; then + echo "Assert LLVM minor version: ${ASSERT_LLVM_VERSION_MINOR}"; + if [ "${ASSERT_LLVM_VERSION_MINOR}" != "${LLVM_VERSION_MINOR}" ]; then + echo "LLVM minor version assertion failed, expected ${ASSERT_LLVM_VERSION_MINOR} but detected ${LLVM_VERSION_MINOR}!" + exit 1; + fi + fi + + DISABLE_PIE=0 + + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + + if [ ! -e Makefile ]; then + echo "Building LLVM CMake environment" + if [ -e "$LLVM_ROOT_LCL/../flang/docs/AssumedRank.md" ]; then + FLANG_NEW=1 + LLVM_PROJECTS="$LLVM_PROJECTS;flang;mlir" + else + echo "NOT building project flang" + fi + + set -x + cmake $(rocm_cmake_params) ${GEN_NINJA} \ + -DCMAKE_INSTALL_PREFIX="$INSTALL_PATH" \ + -DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" \ + -DLLVM_ENABLE_PROJECTS="$LLVM_PROJECTS" \ + -DLLVM_ENABLE_RUNTIMES="$ENABLE_RUNTIMES" \ + -DLIBCXX_ENABLE_SHARED=OFF \ + -DLIBCXX_ENABLE_STATIC=ON \ + -DLIBCXX_INSTALL_LIBRARY=OFF \ + -DLIBCXX_INSTALL_HEADERS=OFF \ + -DLIBCXXABI_ENABLE_SHARED=OFF \ + -DLIBCXXABI_ENABLE_STATIC=ON \ + -DLIBCXXABI_INSTALL_STATIC_LIBRARY=OFF \ + -DLLVM_BUILD_DOCS="$BUILD_MANPAGES" \ + -DLLVM_ENABLE_SPHINX="$BUILD_MANPAGES" \ + -DSPHINX_WARNINGS_AS_ERRORS=OFF \ + -DSPHINX_OUTPUT_MAN="$BUILD_MANPAGES" \ + -DLLVM_ENABLE_ASSERTIONS="$ENABLE_ASSERTIONS" \ + -DLLVM_ENABLE_Z3_SOLVER=OFF \ + -DLLVM_ENABLE_ZLIB=ON \ + -DLLVM_AMDGPU_ALLOW_NPI_TARGETS=ON \ + -DCLANG_REPOSITORY_STRING="$LLVM_REPO_INFO" \ + -DCLANG_DEFAULT_PIE_ON_LINUX="$DISABLE_PIE" \ + -DCLANG_DEFAULT_LINKER=lld \ + -DCLANG_DEFAULT_RTLIB=compiler-rt \ + -DCLANG_DEFAULT_UNWINDLIB=libgcc \ + -DCLANG_ENABLE_AMDCLANG="$BUILD_AMDCLANG" \ + -DSANITIZER_AMDGPU="$SANITIZER_AMDGPU" \ + -DPACKAGE_VENDOR="AMD" \ + -DSANITIZER_HSA_INCLUDE_PATH="$HSA_INC_PATH" \ + -DSANITIZER_COMGR_INCLUDE_PATH="$COMGR_INC_PATH" \ + -DLLVM_BUILD_LLVM_DYLIB="$BUILD_LLVM_DYLIB" \ + -DLLVM_LINK_LLVM_DYLIB="$BUILD_LLVM_DYLIB" \ + -DLLVM_ENABLE_LIBCXX="$BUILD_LLVM_DYLIB" \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE\ + -DCMAKE_SKIP_INSTALL_RPATH=TRUE\ + -DCMAKE_EXE_LINKER_FLAGS=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_LLVM_EXE_RPATH \ + -DCMAKE_SHARED_LINKER_FLAGS=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_LLVM_LIB_RPATH \ + -DROCM_LLVM_BACKWARD_COMPAT_LINK="$ROCM_INSTALL_PATH/llvm" \ + -DROCM_LLVM_BACKWARD_COMPAT_LINK_TARGET="./lib/llvm" \ + -DCLANG_LINK_FLANG_LEGACY=ON \ + -DCMAKE_CXX_STANDARD=17 \ + -DFLANG_INCLUDE_DOCS=OFF \ + "$LLVM_ROOT_LCL" + set +x + echo "CMake complete" + fi + + echo "Building LLVM" + + if [ $BOOTSTRAPPING_BUILD_LIBCXX -eq 1 ]; then + cmake --build . -- $MAKEOPTS clang lld compiler-rt + cmake --build . -- $MAKEOPTS runtimes cxx + fi + + echo "Workaround for race condition" + echo "End Workaround for race condition" + cmake --build . -- $MAKEOPTS + + if [ $SKIP_LIT_TESTS -eq 0 ]; then + if [ "$DISTRO_NAME" != "sles" ] && [ $BUILD_ALT != 1 ]; then + if [ $FLANG_NEW -eq 1 ]; then + cmake --build . -- $MAKEOPTS check-llvm check-clang check-lld check-mlir + else + cmake --build . -- $MAKEOPTS check-llvm check-clang check-lld + fi + fi + fi + cmake --build . -- $MAKEOPTS clang-tidy + cmake --build . -- $MAKEOPTS install + + popd +} + +package_lightning_dynamic(){ + + if [ "$BUILD_TYPE" == "Debug" ]; then + return + fi + + get_llvm_version + local llvmParsedVersion="${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}" + + if [ $BUILD_ALT -eq 1 ]; then + local packageName="rocm-llvm-alt" + local packageSummary="Proprietary ROCm compiler" + local packageSummaryLong="ROCm compiler, including proprietary optimizations, based on LLVM $llvmParsedVersion" + local installPath="$ROCM_INSTALL_PATH/lib/llvm/alt" + else + local packageName="rocm-llvm" + local packageSummary="ROCm compiler" + local packageSummaryLong="ROCm compiler based on LLVM $llvmParsedVersion" + local installPath="$ROCM_INSTALL_PATH/lib/llvm/" + + if [ "$BUILD_LLVM_DYLIB" == "ON" ] ; then + local packageNameCore="rocm-llvm-core" + local packageSummaryCore="ROCm core compiler dylibs" + local packageSummaryLongCore="ROCm compiler based on LLVM $llvmParsedVersion" + fi + fi + + local packageArch="amd64" + local packageVersion="${llvmParsedVersion}.${LLVM_COMMIT_GITDATE}" + local packageMaintainer="ROCm Compiler Support " + local distBin="$INSTALL_PATH/bin" + local distInc="$INSTALL_PATH/include" + local distLib="$INSTALL_PATH/lib" + local distMan="$INSTALL_PATH/share/man" + local licenseDir="$ROCM_INSTALL_PATH/share/doc/$packageName" + local licenseDirCore="$ROCM_INSTALL_PATH/share/doc/$packageNameCore" + local packageDir="$BUILD_PATH/package" + local backwardsCompatibleSymlink="$ROCM_INSTALL_PATH/llvm" + + local packageDeb="$packageDir/deb" + local controlFile="$packageDeb/DEBIAN/control" + local postinstFile="$packageDeb/DEBIAN/postinst" + local prermFile="$packageDeb/DEBIAN/prerm" + local specFile="$packageDir/$packageName.spec" + local debDependencies="python3, libc6, libstdc++6|libstdc++8, libstdc++-5-dev|libstdc++-7-dev|libstdc++-11-dev, libgcc-5-dev|libgcc-7-dev|libgcc-11-dev, rocm-core" + if [ $BUILD_ALT -eq 1 ]; then + debDependencies="${debDependencies}, rocm-llvm" + fi + local debRecommends="gcc, g++, gcc-multilib, g++-multilib" + + local packageRpm="$packageDir/rpm" + local packageRpmCore="$packageDir/rpm" + local specFile="$packageDir/$packageName.spec" + local specFileCore="$packageDir/$packageNameCore.spec" + local rpmRequires="rocm-core" + if [ "$BUILD_LLVM_DYLIB" == "ON" ] ; then + rpmRequires+=", rocm-llvm-core" + fi + local rpmRequiresCore="rocm-core" + local rpmRecommends="gcc, gcc-c++, devtoolset-7-gcc-c++" + + rm -rf "$packageDir" + echo "rm -rf $packageDir" + rm -rf "$DEB_PATH" + + local amd_compiler_commands=("amdclang" "amdclang++" "amdclang-cl" "amdclang-cpp" "amdflang" "amdlld" "offload-arch") + local amd_man_pages=("amdclang.1.gz" "flang.1.gz" "amdflang.1.gz") + local man_pages=("bugpoint.1" "FileCheck.1" "llvm-ar.1" "llvm-cxxmap.1" "llvm-extract.1" "llvm-lipo.1" "llvm-otool.1" "llvm-readobj.1" "llvm-symbolizer.1" "tblgen.1" + "clang.1" "lit.1" "llvm-as.1" "llvm-diff.1" "llvm-ifs.1" "llvm-locstats.1" "llvm-pdbutil.1" "llvm-remarkutil.1" "llvm-tblgen.1" "clang-tblgen.1" + "llc.1" "llvm-bcanalyzer.1" "llvm-dis.1" "llvm-install-name-tool.1" "llvm-mca.1" "llvm-profdata.1" "llvm-size.1" "llvm-tli-checker.1" "diagtool.1" + "lldb-tblgen.1" "llvm-config.1" "llvm-dwarfdump.1" "llvm-lib.1" "llvm-nm.1" "llvm-profgen.1" "llvm-stress.1" "mlir-tblgen.1" "dsymutil.1" "lli.1" + "llvm-cov.1" "llvm-dwarfutil.1" "llvm-libtool-darwin.1" "llvm-objcopy.1" "llvm-ranlib.1" "llvm-strings.1" "opt.1" "extraclangtools.1" "llvm-addr2line.1" + "llvm-cxxfilt.1" "llvm-exegesis.1" "llvm-link.1" "llvm-objdump.1" "llvm-readelf.1" "llvm-strip.1") + + if [ "$PACKAGEEXT" = "deb" ]; then + + mkdir -p "$packageDeb/$installPath" + mkdir -p "$(dirname $controlFile)" + mkdir -p "$DEB_PATH" + mkdir -p "$packageDeb/$licenseDir" + + if [ "$BUILD_LLVM_DYLIB" == "ON" ] ; then + + mkdir -p "$packageDeb/$licenseDirCore" + + cp -r "$LLVM_ROOT_LCL/LICENSE.TXT" "$packageDeb/$licenseDirCore" + + cp -P "$distLib/libLLVM"*"so"* "$packageDeb/$installPath/" + cp -P "$distLib/libFortran"*"so"* "$packageDeb/$installPath/" + cp -P "$distLib/libclang"*"so"* "$packageDeb/$installPath/" + + echo "Package: $packageNameCore" > $controlFile + echo "Architecture: $packageArch" >> $controlFile + echo "Section: devel" >> $controlFile + echo "Priority: optional" >> $controlFile + echo "Maintainer: $packageMaintainer" >> $controlFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Release: ${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Depends: $debDependencies" >> $controlFile + echo "Recommends: $debRecommends" >> $controlFile + echo "Description: $packageSummaryCore" >> $controlFile + echo " $packageSummaryLongCore" >> $controlFile + + fakeroot dpkg-deb -Zgzip --build $packageDeb \ + "${DEB_PATH}/${packageNameCore}_${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}_${packageArch}.deb" + + rm -rf "$controlFile" + rm -rf "$packageDeb/$licenseDirCore" + + rm -f "$packageDeb/$installPath/libLLVM"*"so"* + rm -f "$packageDeb/$installPath/libFortran"*"so"* + rm -f "$packageDeb/$installPath/libclang"*"so"* + + mkdir -p "$(dirname $controlFile)" + + rm -rf "$packageDeb/$installPath/*" + + debDependencies="${debDependencies}, ${packageNameCore}" + fi + + if [ $BUILD_ALT -eq 0 ] ; then + cp -r "$LLVM_ROOT_LCL/LICENSE.TXT" "$packageDeb/$licenseDir" + else + cp -r "$LLVM_PROJECT_ALT_ROOT/EULA" "$packageDeb/$licenseDir" + cp -r "$LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt" "$packageDeb/$licenseDir" + fi + cp -r "$distBin" "$packageDeb/$installPath/bin" + cp -r "$distInc" "$packageDeb/$installPath/include" + cp -r "$distLib" "$packageDeb/$installPath/lib" + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + for i in "${man_pages[@]}"; do + gzip -f "$distMan/man1/$i" + done + if [ -f "$distMan/man1/clang.1.gz" ]; then + for i in "${amd_man_pages[@]}"; do + ln -sf "clang.1.gz" "$distMan/man1/$i" + done + fi + fi + fi + cp -r "$distMan" "$packageDeb/$installPath/share" + + if [ $BUILD_ALT -eq 0 ]; then + touch "$postinstFile" "$prermFile" + echo "mkdir -p \"$ROCM_INSTALL_PATH/bin\"" >> $postinstFile + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$packageDeb/$installPath/bin/$i" ]; then + echo "ln -s \"../lib/llvm/bin/$i\" \"$ROCM_INSTALL_PATH/bin/$i\"" >> $postinstFile + echo "rm -f \"$ROCM_INSTALL_PATH/bin/$i\"" >> $prermFile + fi + done + echo "rmdir --ignore-fail-on-non-empty \"$ROCM_INSTALL_PATH/bin\"" >> $prermFile + chmod 0555 "$postinstFile" "$prermFile" + cp -P "$backwardsCompatibleSymlink" "$packageDeb/$ROCM_INSTALL_PATH" + fi + + echo "Package: $packageName" > $controlFile + echo "Architecture: $packageArch" >> $controlFile + echo "Section: devel" >> $controlFile + echo "Priority: optional" >> $controlFile + echo "Maintainer: $packageMaintainer" >> $controlFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Release: ${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Depends: $debDependencies" >> $controlFile + echo "Recommends: $debRecommends" >> $controlFile + echo "Description: $packageSummary" >> $controlFile + echo " $packageSummaryLong" >> $controlFile + + fakeroot dpkg-deb -Zgzip --build $packageDeb \ + "${DEB_PATH}/${packageName}_${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}_${packageArch}.deb" + fi + + if [ "$PACKAGEEXT" = "rpm" ]; then + mkdir -p "$(dirname $specFile)" + rm -rf "$RPM_PATH" + mkdir -p "$RPM_PATH" + + if [ "$BUILD_LLVM_DYLIB" == "ON" ] ; then + echo "Name: $packageNameCore" > $specFileCore + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}" >> $specFileCore + echo "Release: ${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}%{?dist}" >> $specFileCore + echo "Summary: $packageSummaryCore" >> $specFileCore + echo "Group: System Environment/Libraries" >> $specFileCore + echo "License: ASL 2.0 with exceptions" >> $specFileCore + echo "Requires: $rpmRequiresCore" >> $specFileCore + + echo "%description" >> $specFileCore + echo "$packageSummaryLongCore" >> $specFileCore + + echo "%prep" >> $specFileCore + echo "%setup -T -D -c -n $packageNameCore" >> $specFileCore + + echo "%install" >> $specFileCore + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFileCore + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/lib" >> $specFileCore + echo "mkdir -p \$RPM_BUILD_ROOT/$licenseDirCore" >> $specFileCore + + echo "cp -R $LLVM_ROOT_LCL/LICENSE.TXT \$RPM_BUILD_ROOT/$licenseDirCore" >> $specFileCore + + echo "cp -RP $distLib/libLLVM*so* \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFileCore + echo "cp -RP $distLib/libFortran*so* \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFileCore + echo "cp -RP $distLib/libclang*so* \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFileCore + + echo "%clean" >> $specFileCore + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFileCore + echo "%files " >> $specFileCore + echo "%defattr(-,root,root,-)" >> $specFileCore + echo "$ROCM_INSTALL_PATH" >> $specFileCore + + echo "%post" >> $specFileCore + echo "%preun" >> $specFileCore + echo "%postun" >> $specFileCore + + echo "rpmbuild --define _topdir $packageRpmCore -ba $specFileCore" + rpmbuild --define "_topdir $packageRpmCore" -ba $specFileCore + + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH + fi + + echo "Name: $packageName" > $specFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}" >> $specFile + echo "Release: ${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}%{?dist}" >> $specFile + echo "Summary: $packageSummary" >> $specFile + echo "Group: System Environment/Libraries" >> $specFile + if [ $BUILD_ALT -eq 1 ]; then + echo "License: AMD Proprietary" >> $specFile + else + echo "License: ASL 2.0 with exceptions" >> $specFile + fi + echo "Requires: $rpmRequires" >> $specFile + + if [ $BUILD_ALT -eq 1 ]; then + echo "%define _build_id_links none" >> $specFile + fi + + echo "%description" >> $specFile + echo "$packageSummaryLong" >> $specFile + + echo "%prep" >> $specFile + echo "%setup -T -D -c -n $packageName" >> $specFile + + echo "%install" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/bin" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/include" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/lib" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/share/man" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + + if [ $BUILD_ALT -eq 0 ]; then + echo "cp -R $LLVM_ROOT_LCL/LICENSE.TXT \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + echo "cp -P $backwardsCompatibleSymlink \$RPM_BUILD_ROOT/$ROCM_INSTALL_PATH" >> $specFile + else + echo "cp -R $LLVM_PROJECT_ALT_ROOT/EULA \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + echo "cp -R $LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + fi + + echo "cp -R $distBin \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "cp -R $distInc \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "cp -R $distLib \$RPM_BUILD_ROOT/$installPath" >> $specFile + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + for i in "${man_pages[@]}"; do + echo "gzip -f $distMan/man1/$i" >> $specFile + done + if [ -f "$distMan/man1/clang.1.gz" ]; then + for i in "${amd_man_pages[@]}"; do + echo "ln -sf clang.1.gz \"$distMan/man1/$i\"" >> $specFile + done + fi + fi + fi + echo "cp -R $distMan \$RPM_BUILD_ROOT/$installPath/share" >> $specFile + + echo "%clean" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "%files " >> $specFile + if [ "$BUILD_LLVM_DYLIB" == "ON" ] ; then + echo "%exclude $installPath/lib/libLLVM*so*" >> $specFile + echo "%exclude $installPath/lib/libFortran*so*" >> $specFile + echo "%exclude $installPath/lib/libclang*so*" >> $specFile + fi + + echo "%defattr(-,root,root,-)" >> $specFile + echo "$ROCM_INSTALL_PATH" >> $specFile + + echo "%post" >> $specFile + if [ $BUILD_ALT -eq 0 ]; then + echo "mkdir -p \"$ROCM_INSTALL_PATH/bin\"" >> $specFile + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$distBin/$i" ]; then + echo "ln -sf ../lib/llvm/bin/$i \"$ROCM_INSTALL_PATH/bin/$i\"" >> $specFile + fi + done + fi + + echo "%preun" >> $specFile + if [ $BUILD_ALT -eq 0 ]; then + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$distBin/$i" ]; then + echo "rm -f \"$ROCM_INSTALL_PATH/bin/$i\"" >> $specFile + fi + done + echo "rmdir --ignore-fail-on-non-empty \"$ROCM_INSTALL_PATH/bin\"" >> $specFile + fi + + echo "%postun" >> $specFile + + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH + fi +} + +package_lightning_static() { + + if [ "$BUILD_TYPE" == "Debug" ]; then + return + fi + + get_llvm_version + local llvmParsedVersion="${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}" + + if [ $BUILD_ALT -eq 1 ]; then + local packageName="rocm-llvm-alt" + local packageSummary="Proprietary ROCm core compiler" + local packageSummaryLong="ROCm core compiler, including proprietary optimizations based on LLVM $llvmParsedVersion" + if [ "$PACKAGEEXT" = "deb" ]; then + local packageNameExtra="rocm-llvm-alt-dev" + else + local packageNameExtra="rocm-llvm-alt-devel" + fi + local packageSummaryExtra="Proprietary ROCm compiler dev tools" + local packageSummaryLongExtra="ROCm compiler dev tools and documentation, including proprietary optimizations, based on LLVM $llvmParsedVersion" + local installPath="$ROCM_INSTALL_PATH/lib/llvm/alt" + else + local packageName="rocm-llvm" + local packageSummary="ROCm core compiler" + local packageSummaryLong="ROCm core compiler based on LLVM $llvmParsedVersion" + if [ "$PACKAGEEXT" = "deb" ]; then + local packageNameExtra="rocm-llvm-dev" + else + local packageNameExtra="rocm-llvm-devel" + fi + local packageSummaryExtra="ROCm compiler dev tools" + local packageSummaryLongExtra="ROCm compiler dev tools and documentation, based on LLVM $llvmParsedVersion" + local installPath="$ROCM_INSTALL_PATH/lib/llvm/" + + fi + + local packageArch="amd64" + local packageVersion="${llvmParsedVersion}.${LLVM_COMMIT_GITDATE}" + local packageMaintainer="ROCm Compiler Support " + local distBin="$INSTALL_PATH/bin" + local distInc="$INSTALL_PATH/include" + local distLib="$INSTALL_PATH/lib" + local distMan="$INSTALL_PATH/share/man" + local licenseDir="$ROCM_INSTALL_PATH/share/doc/$packageName" + local licenseDirExtra="$ROCM_INSTALL_PATH/share/doc/$packageNameExtra" + local packageDir="$BUILD_PATH/package" + local backwardsCompatibleSymlink="$ROCM_INSTALL_PATH/llvm" + + local packageDeb="$packageDir/deb" + local controlFile="$packageDeb/DEBIAN/control" + local postinstFile="$packageDeb/DEBIAN/postinst" + local prermFile="$packageDeb/DEBIAN/prerm" + local specFile="$packageDir/$packageName.spec" + local debDependencies="python3, libc6, libstdc++6|libstdc++8, libstdc++-5-dev|libstdc++-7-dev|libstdc++-11-dev, libgcc-5-dev|libgcc-7-dev|libgcc-11-dev, rocm-core" + if [ $BUILD_ALT -eq 1 ]; then + debDependencies="${debDependencies}, rocm-llvm" + fi + local debRecommends="gcc, g++, gcc-multilib, g++-multilib" + + local packageRpm="$packageDir/rpm" + local packageRpmExtra="$packageDir/rpm" + local specFile="$packageDir/$packageName.spec" + local specFileExtra="$packageDir/$packageNameExtra.spec" + local rpmRequires="rocm-core" + local rpmRequiresExtra="rocm-core, $packageName" + if [ $BUILD_ALT -eq 1 ]; then + rpmRequires+=", rocm-llvm" + rpmRequiresExtra+=", rocm-llvm-devel" + fi + local rpmRecommends="gcc, gcc-c++, devtoolset-7-gcc-c++" + + rm -rf "$packageDir" + echo "rm -rf $packageDir" + rm -rf "$DEB_PATH" + + local amd_compiler_commands=("amdclang" "amdclang++" "amdclang-cl" "amdclang-cpp" "amdflang" "amdlld" "offload-arch") + local amd_man_pages=("amdclang.1.gz" "flang.1.gz" "amdflang.1.gz") + local core_bin=("amdgpu-arch" "amdgpu-offload-arch" "amdlld" "amdllvm" "clang" "clang++" "clang-${LLVM_VERSION_MAJOR}" "clang-cl" + "clang-cpp" "clang-build-select-link" "clang-offload-bundler" "clang-offload-packager" "clang-offload-wrapper" "flang" "flang-new" + "ld64.lld" "ld.lld" "llc" "lld" "lld-link" "llvm-ar" "llvm-bitcode-strip" "llvm-dwarfdump" "llvm-install-name-tool" + "llvm-link" "llvm-mc" "llvm-objcopy" "llvm-objdump" "llvm-otool" "llvm-ranlib" "llvm-readelf" "llvm-readobj" "llvm-strip" + "nvidia-arch" "nvptx-arch" "offload-arch" "opt" "wasm-ld" "amdclang" "amdclang++" "amdclang-${LLVM_VERSION_MAJOR}" "amdclang-cl" + "amdclang-cpp" "amdflang" + "clang++.cfg" "clang-${LLVM_VERSION_MAJOR}.cfg" "clang-cl.cfg" "clang-cpp.cfg" "clang.cfg" "rocm.cfg") + local core_lib=("libclang-cpp.so.${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}" "libclang-cpp.so" "libclang.so" + "libclang.so.${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}" + "libclang.so.${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}" + "libFortranSemantics.a" "libFortranLower.a" "libFortranParser.a" "libFortranCommon.a" + "libFortranRuntime.a" "libFortran_main.a" "libFortranDecimal.a" "libFortranEvaluate.a") + local core_man_pages=("llvm-otool.1" "llvm-readobj.1" "clang.1" "lit.1" "llc.1" "llvm-ar.1" "llvm-dwarfdump.1" "llvm-objcopy.1" "opt.1" + "llvm-link.1" "llvm-mc.1" "llvm-objdump.1" "llvm-ranlib.1" "llvm-readelf.1" "llvm-strip.1") + local dev_man_pages=("bugpoint.1" "FileCheck.1" "llvm-cxxmap.1" "llvm-extract.1" "llvm-lipo.1" "llvm-symbolizer.1" + "tblgen.1" "llvm-as.1" "llvm-diff.1" "llvm-ifs.1" "llvm-locstats.1" "llvm-pdbutil.1" "llvm-remarkutil.1" + "llvm-tblgen.1" "clang-tblgen.1" "llvm-bcanalyzer.1" "llvm-dis.1" "llvm-install-name-tool.1" "llvm-mca.1" + "llvm-profdata.1" "llvm-size.1" "llvm-tli-checker.1" "diagtool.1" "lldb-tblgen.1" "llvm-config.1" "llvm-lib.1" + "llvm-nm.1" "llvm-opt-report.1" "llvm-profgen.1" "llvm-reduce.1" "llvm-stress.1" "mlir-tblgen.1" "dsymutil.1" + "lli.1" "llvm-cov.1" "llvm-dwarfutil.1" "llvm-libtool-darwin.1" "llvm-strings.1" + "extraclangtools.1" "llvm-addr2line.1" "llvm-cxxfilt.1" "llvm-exegesis.1" "scan-build.1") + + if [ "$PACKAGEEXT" = "deb" ]; then + mkdir -p "$packageDeb/$installPath" + mkdir "${controlFile%/*}" + mkdir -p "$DEB_PATH" + mkdir -p "$packageDeb/$licenseDir" + + if [ $BUILD_ALT -eq 0 ] ; then + cp -r "$LLVM_ROOT_LCL/LICENSE.TXT" "$packageDeb/$licenseDir" + else + cp -r "$LLVM_PROJECT_ALT_ROOT/EULA" "$packageDeb/$licenseDir" + cp -r "$LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt" "$packageDeb/$licenseDir" + fi + + mkdir -p "$packageDeb/$installPath/bin" + for i in "${core_bin[@]}"; do + if [ -f "$distBin/$i" ]; then + cp -d "$distBin"/$i "$packageDeb/$installPath/bin/" + fi + done + + cp -d "$distBin/flang" "$packageDeb/$installPath/bin/" + + mkdir -p "$packageDeb/$installPath/lib/clang" + cp -r "$distLib/clang/" "$packageDeb/$installPath/lib/" + + if [ $FLANG_NEW -eq 1 ]; then + mkdir -p "$packageDeb/$installPath/include/flang" + cp -r "$distInc/flang/" "$packageDeb/$installPath/include/" + fi + + for i in "${core_lib[@]}"; do + if [ -f "$distLib/$i" ]; then + cp -dr "$distLib"/$i "$packageDeb/$installPath/lib" + fi + done + + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + mkdir -p "$packageDeb/$installPath/share/man1" + for i in "${core_man_pages[@]}"; do + if [ -f "$distMan/man1/$i" ]; then + gzip -f "$distMan/man1/$i" + cp -d "$distMan/man1/${i}.gz" "$packageDeb/$installPath/share/man1/" + fi + done + if [ -f "$distMan/man1/clang.1.gz" ]; then + for i in "${amd_man_pages[@]}"; do + ln -sf "clang.1.gz" "$distMan/man1/$i" + cp -d "$distMan/man1/${i}" "$packageDeb/$installPath/share/man1/" + done + fi + fi + fi + + if [ $BUILD_ALT -eq 0 ]; then + touch "$postinstFile" "$prermFile" + echo "mkdir -p \"$ROCM_INSTALL_PATH/bin\"" >> $postinstFile + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$packageDeb/$installPath/bin/$i" ]; then + echo "ln -s \"../lib/llvm/bin/$i\" \"$ROCM_INSTALL_PATH/bin/$i\"" >> $postinstFile + echo "rm -f \"$ROCM_INSTALL_PATH/bin/$i\"" >> $prermFile + fi + done + echo "rmdir --ignore-fail-on-non-empty \"$ROCM_INSTALL_PATH/bin\"" >> $prermFile + chmod 0555 "$postinstFile" "$prermFile" + cp -P "$backwardsCompatibleSymlink" "$packageDeb/$ROCM_INSTALL_PATH" + fi + + { + echo "Package: $packageName" + echo "Architecture: $packageArch" + echo "Section: devel" + echo "Priority: optional" + echo "Maintainer: $packageMaintainer" + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" + echo "Release: ${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" + echo "Depends: $debDependencies" + echo "Recommends: $debRecommends" + echo "Description: $packageSummary" + echo " $packageSummaryLong" + } >> "$controlFile" + + fakeroot dpkg-deb -Zgzip --build $packageDeb \ + "${DEB_PATH}/${packageName}_${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}_${packageArch}.deb" + + rm -rf "$controlFile" + rm -rf "$packageDeb" + + mkdir -p "$packageDeb/$installPath" + mkdir "${controlFile%/*}" + mkdir -p "$DEB_PATH" + mkdir -p "$packageDeb/$licenseDirExtra" + + if [ $BUILD_ALT -eq 0 ] ; then + cp -r "$LLVM_ROOT_LCL/LICENSE.TXT" "$packageDeb/$licenseDirExtra" + else + cp -r "$LLVM_PROJECT_ALT_ROOT/EULA" "$packageDeb/$licenseDirExtra" + cp -r "$LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt" "$packageDeb/$licenseDirExtra" + fi + + mkdir -p "$packageDeb/$installPath/bin" + for i in "$distBin"/*; do + bin=$(basename "$i") + contains "$bin" "${core_bin[@]}" "${amd_compiler_commands[@]}" && continue + cp -d "$i" "$packageDeb/$installPath/bin/" + done + + for i in "$distLib"/*; do + lib=$(basename "$i") + contains "$lib" "${core_lib[@]}" && continue + cp -dr "$i" "$packageDeb/$installPath/lib/" + done + rm -rf "$packageDeb/$installPath/lib/clang" + + cp -r "$distInc" "$packageDeb/$installPath/include" + + if [ $FLANG_NEW -eq 1 ]; then + rm -rf "$packageDeb/$installPath/include/flang" + fi + + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + mkdir -p "$packageDeb/$installPath/share/man1" + for i in "${dev_man_pages[@]}"; do + if [ -f "$distMan/man1/$i" ]; then + gzip -f "$distMan/man1/$i" + cp -d "$distMan/man1/${i}.gz" "$packageDeb/$installPath/share/man1/" + fi + done + fi + fi + + debDependencies="${debDependencies}, ${packageName}" + if [ $BUILD_ALT -eq 1 ]; then + debDependencies="${debDependencies}, rocm-llvm-dev" + fi + + echo "Package: $packageNameExtra" > $controlFile + echo "Architecture: $packageArch" >> $controlFile + echo "Section: devel" >> $controlFile + echo "Priority: optional" >> $controlFile + echo "Maintainer: $packageMaintainer" >> $controlFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Release: ${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" >> $controlFile + echo "Depends: $debDependencies" >> $controlFile + echo "Recommends: $debRecommends" >> $controlFile + echo "Description: $packageSummaryExtra" >> $controlFile + echo " $packageSummaryLongExtra" >> $controlFile + + fakeroot dpkg-deb -Zgzip --build $packageDeb \ + "${DEB_PATH}/${packageNameExtra}_${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}_${packageArch}.deb" + fi + + if [ "$PACKAGEEXT" = "rpm" ]; then + + mkdir -p "$(dirname $specFile)" + rm -rf "$RPM_PATH" + mkdir -p "$RPM_PATH" + + echo "Name: $packageName" > $specFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}" >> $specFile + echo "Release: ${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}%{?dist}" >> $specFile + echo "Summary: $packageSummary" >> $specFile + echo "Group: System Environment/Libraries" >> $specFile + echo "License: ASL 2.0 with exceptions" >> $specFile + echo "Requires: $rpmRequires" >> $specFile + + echo "%description" >> $specFile + echo "$packageSummaryLong" >> $specFile + + echo "%prep" >> $specFile + echo "%setup -T -D -c -n $packageName" >> $specFile + + echo "%install" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/bin" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + + if [ $BUILD_ALT -eq 0 ]; then + echo "cp -R $LLVM_ROOT_LCL/LICENSE.TXT \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + echo "cp -P $backwardsCompatibleSymlink \$RPM_BUILD_ROOT/$ROCM_INSTALL_PATH" >> $specFile + else + echo "cp -R $LLVM_PROJECT_ALT_ROOT/EULA \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + echo "cp -R $LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + fi + + for i in "${core_bin[@]}"; do + if [ -f "$distBin/$i" ]; then + echo "cp -d \"$distBin\"/$i \$RPM_BUILD_ROOT/$installPath/bin/" >> $specFile + fi + done + + echo "cp -d \"$distBin/flang\" \$RPM_BUILD_ROOT/$installPath/bin/" >> $specFile + + # Copy the config files + if [ $BUILD_ALT -eq 0 ]; then + echo "cp -d \"$distBin\"/*.cfg \$RPM_BUILD_ROOT/$installPath/bin/" >> $specFile + fi + + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/lib/clang" >> $specFile + echo "cp -R \"$distLib/clang/\" \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFile + + if [ $FLANG_NEW -eq 1 ]; then + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/include/flang" >> $specFile + echo "cp -R \"$distInc/flang/\" \$RPM_BUILD_ROOT/$installPath/include/" >> $specFile + fi + + for i in "${core_lib[@]}"; do + if [ -f "$distLib/$i" ]; then + echo "cp -dr \"$distLib\"/$i \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFile + fi + done + + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/share/man/man1" >> $specFile + + for i in "${core_man_pages[@]}"; do + if [ -f "$distMan/man1/$i" ]; then + echo "gzip -f $distMan/man1/$i" >> $specFile + echo "cp -d $distMan/man1/${i}.gz \$RPM_BUILD_ROOT/$installPath/share/man/man1/" >> $specFile + fi + done + + if [ -f "$distMan/man1/clang.1.gz" ]; then + for i in "${amd_man_pages[@]}"; do + echo "ln -sf clang.1.gz \"$distMan/man1/$i\"" >> $specFile + echo "cp -d $distMan/man1/${i} \$RPM_BUILD_ROOT/$installPath/share/man/man1/" >> $specFile + done + fi + fi + fi + + echo "%clean" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "%files " >> $specFile + echo "%defattr(-,root,root,-)" >> $specFile + { + echo "$ROCM_INSTALL_PATH" + + echo "%post" + if [ $BUILD_ALT -eq 0 ]; then + echo "mkdir -p \"$ROCM_INSTALL_PATH/bin\"" + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$distBin/$i" ]; then + echo "ln -sf ../lib/llvm/bin/$i \"$ROCM_INSTALL_PATH/bin/$i\"" + fi + done + fi + + echo "%preun" + if [ $BUILD_ALT -eq 0 ]; then + for i in "${amd_compiler_commands[@]}"; do + if [ -f "$distBin/$i" ]; then + echo "rm -f \"$ROCM_INSTALL_PATH/bin/$i\"" + fi + done + echo "rmdir --ignore-fail-on-non-empty \"$ROCM_INSTALL_PATH/bin\"" + fi + + echo "%postun" + } >> "$specFile" + + echo "rpmbuild --define _topdir $packageRpm -ba $specFile" + rpmbuild --define "_topdir $packageRpm" -ba $specFile + + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH + + echo "Name: $packageNameExtra" > $specFileExtra + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}" >> $specFileExtra + echo "Release: ${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}%{?dist}" >> $specFileExtra + echo "Summary: $packageSummaryExtra" >> $specFileExtra + echo "Group: System Environment/Libraries" >> $specFileExtra + if [ $BUILD_ALT -eq 1 ]; then + echo "License: AMD Proprietary" >> $specFileExtra + else + echo "License: ASL 2.0 with exceptions" >> $specFileExtra + fi + echo "Requires: $rpmRequiresExtra" >> $specFileExtra + + if [ $BUILD_ALT -eq 1 ]; then + echo "%define _build_id_links none" >> $specFileExtra + fi + + echo "%description" >> $specFileExtra + echo "$packageSummaryLongExtra" >> $specFileExtra + + echo "%prep" >> $specFileExtra + echo "%setup -T -D -c -n $packageNameExtra" >> $specFileExtra + + echo "%install" >> $specFileExtra + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFileExtra + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/bin" >> $specFileExtra + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/include" >> $specFileExtra + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/lib" >> $specFileExtra + echo "mkdir -p \$RPM_BUILD_ROOT/$licenseDirExtra" >> $specFileExtra + + if [ $BUILD_ALT -eq 0 ]; then + echo "cp -R $LLVM_ROOT_LCL/LICENSE.TXT \$RPM_BUILD_ROOT/$licenseDirExtra" >> $specFileExtra + echo "cp -P $backwardsCompatibleSymlink \$RPM_BUILD_ROOT/$ROCM_INSTALL_PATH" >> $specFileExtra + else + echo "cp -R $LLVM_PROJECT_ALT_ROOT/EULA \$RPM_BUILD_ROOT/$licenseDirExtra" >> $specFileExtra + echo "cp -R $LLVM_PROJECT_ALT_ROOT/DISCLAIMER.txt \$RPM_BUILD_ROOT/$licenseDirExtra" >> $specFileExtra + fi + + for i in "$distBin"/*; do + bin=$(basename "$i") + contains "$bin" "${core_bin[@]}" "${amd_compiler_commands[@]}" && continue + echo "cp -d \"$i\" \$RPM_BUILD_ROOT/$installPath/bin/" >> $specFileExtra + done + + for i in "$distLib"/*; do + lib=$(basename "$i") + contains "$lib" "${core_lib[@]}" && continue + echo "cp -dr \"$i\" \$RPM_BUILD_ROOT/$installPath/lib/" >> $specFileExtra + done + + echo "cp -R $distInc \$RPM_BUILD_ROOT/$installPath" >> $specFileExtra + + echo "rm -rf \$RPM_BUILD_ROOT/$installPath/lib/clang" >> $specFileExtra + + if [ $FLANG_NEW -eq 1 ]; then + + echo "rm -rf \$RPM_BUILD_ROOT/$installPath/include/flang" >> $specFileExtra + fi + + if [ "$BUILD_MANPAGES" == "ON" ]; then + if [ $BUILD_ALT -eq 0 ]; then + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/share/man/man1" >> $specFileExtra + + for i in "${extra_man_pages[@]}"; do + if [ -f "$distMan/man1/$i" ]; then + echo "gzip -f $distMan/man1/$i" >> $specFileExtra + echo "cp -d \"$distMan/man1/${i}.gz\" \$RPM_BUILD_ROOT/$installPath/share/man/man1/" >> $specFileExtra + fi + done + fi + fi + + echo "%clean" >> $specFileExtra + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFileExtra + echo "%files " >> $specFileExtra + + echo "%defattr(-,root,root,-)" >> $specFileExtra + echo "$ROCM_INSTALL_PATH" >> $specFileExtra + + echo "%post" >> $specFileExtra + echo "%preun" >> $specFileExtra + echo "%postun" >> $specFileExtra + + rpmbuild --define "_topdir $packageRpmExtra" -ba $specFileExtra + mv $packageRpmExtra/RPMS/x86_64/*.rpm $RPM_PATH + fi +} + +package_docs() { + + if [ "$BUILD_TYPE" == "Debug" ]; then + return + fi + + if [ "$BUILD_MANPAGES" == "OFF" ]; then + return + fi + + get_llvm_version + local llvmParsedVersion="${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}" + + local packageName="rocm-llvm-docs" + local packageSummary="ROCm LLVM compiler documentation" + local packageSummaryLong="Documenation for LLVM $llvmParsedVersion" + local installPath="$ROCM_INSTALL_PATH/lib/llvm/share" + + local packageArch="amd64" + local packageVersion="${llvmParsedVersion}.${LLVM_COMMIT_GITDATE}" + local packageMaintainer="ROCm Compiler Support " + local distDoc="$INSTALL_PATH/share/doc" + + local licenseDir="$ROCM_INSTALL_PATH/share/doc/$packageName" + local packageDir="$BUILD_PATH/package" + + local packageDeb="$packageDir/deb" + local controlFile="$packageDeb/DEBIAN/control" + + local packageRpm="$packageDir/rpm" + local specFile="$packageDir/$packageName.spec" + + rm -rf "$packageDir" + echo "rm -rf $packageDir" + + if [ "$PACKAGEEXT" = "deb" ]; then + + mkdir -p "$packageDeb/$installPath" + mkdir "${controlFile%/*}" + mkdir -p "$packageDeb/$licenseDir" + + cp -r "$LLVM_ROOT_LCL/LICENSE.TXT" "$packageDeb/$licenseDir" + + cp -r "$distDoc" "$packageDeb/$installPath/doc" + + { + echo "Package: $packageName" + echo "Architecture: $packageArch" + echo "Section: devel" + echo "Priority: optional" + echo "Maintainer: $packageMaintainer" + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" + echo "Release: ${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}" + echo "Recommends: $debRecommends" + echo "Description: $packageSummary" + echo " $packageSummaryLong" + } >> "$controlFile" + + fakeroot dpkg-deb -Zgzip --build $packageDeb \ + "${DEB_PATH}/${packageName}_${packageVersion}.${ROCM_LIBPATCH_VERSION}-${JOB_DESIGNATOR}${BUILD_ID}~${DISTRO_RELEASE}_${packageArch}.deb" + fi + + if [ "$PACKAGEEXT" = "rpm" ]; then + + mkdir -p "$(dirname $specFile)" + mkdir -p "$RPM_PATH" + + echo "Name: $packageName" > $specFile + echo "Version: ${packageVersion}.${ROCM_LIBPATCH_VERSION}" >> $specFile + echo "Release: ${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}%{?dist}" >> $specFile + echo "Summary: $packageSummary" >> $specFile + echo "Group: System Environment/Libraries" >> $specFile + echo "License: ASL 2.0 with exceptions" >> $specFile + + echo "%description" >> $specFile + echo "$packageSummaryLong" >> $specFile + + echo "%prep" >> $specFile + echo "%setup -T -D -c -n $packageName" >> $specFile + + echo "%install" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$installPath/doc" >> $specFile + echo "mkdir -p \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + + echo "cp -R $LLVM_ROOT_LCL/LICENSE.TXT \$RPM_BUILD_ROOT/$licenseDir" >> $specFile + + echo "cp -R \"$distDoc\" \$RPM_BUILD_ROOT/$installPath" >> $specFile + + echo "%clean" >> $specFile + echo "rm -rf \$RPM_BUILD_ROOT/$installPath" >> $specFile + echo "%files " >> $specFile + echo "%defattr(-,root,root,-)" >> $specFile + + echo "$ROCM_INSTALL_PATH" >> $specFile + + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH + + fi + +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +build() { + mkdir -p "${INSTALL_PATH}" + build_lightning + if [ $BUILD_ALT -eq 0 ] ; then + create_compiler_config_files + fi +} + +case $TARGET in + (clean) clean_lightning ;; + (all) + time build + time package_lightning_static + time package_docs + ;; + (build) + build + ;; + (package) + package_lightning_static + package_docs + ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_miopen-deps.sh b/rocm-build/build_miopen-deps.sh new file mode 100755 index 000000000..48910fac0 --- /dev/null +++ b/rocm-build/build_miopen-deps.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src MIOpen + +build_miopen_mlir() { + echo "Building rocMLIR" + mlir_commit="$1" + if [ -z "$mlir_commit" ]; then + echo "rocMLIR entry was not found in requirements.txt" + return + fi + mkdir -p /var/tmp/rocMLIR && cd /var/tmp/rocMLIR + wget -nv "https://www.github.com/ROCmSoftwarePlatform/rocMLIR/archive/${mlir_commit}.tar.gz" + tar -xzf "${mlir_commit}.tar.gz" + cd "rocMLIR-${mlir_commit}" + mkdir build && cd build + cmake \ + -G Ninja \ + -DCMAKE_C_COMPILER="${ROCM_PATH}/llvm/bin/clang" \ + -DCMAKE_CXX_COMPILER="${ROCM_PATH}/llvm/bin/clang++" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH};${HOME}/miopen-deps" \ + -DCMAKE_INSTALL_PREFIX="$ROCM_PATH" \ + -DBUILD_FAT_LIBROCKCOMPILER=1 \ + .. + cmake --build . -- librockCompiler -j${PROC} + cmake --build . -- install + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + + echo "Finished building rocMLIR" +} + +clean_miopen_mlir() { + echo "Cleaning rocMLIR" + rm -rf /var/tmp/rocMLIR +} + +build_miopen_deps() { + echo "Start build" + cd "$COMPONENT_SRC" + + # Commenting the rocMLIR & composable_kernel from requirements.txt + sed -i '/ROCmSoftwarePlatform\/rocMLIR@\|ROCmSoftwarePlatform\/composable_kernel@/s/^/#/' requirements.txt + # Extract MLIR commit from requirements.txt + MLIR_COMMIT="$(awk '/rocMLIR/ {split($1, s, "@"); print s[2]}' requirements.txt)" + + + pip3 install https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz + PATH="${PATH}:${ROCM_PATH}:${HOME}/.local/bin" rbuild prepare -d "$HOME/miopen-deps" --cxx=${ROCM_PATH}/llvm/bin/clang++ --cc ${ROCM_PATH}/llvm/bin/clang + build_miopen_mlir "$MLIR_COMMIT" + + show_build_cache_stats +} + +clean_miopen_deps() { + echo "Cleaning MIOpen-Deps build directory: ${BUILD_DIR}" + rm -rf "$BUILD_DIR" + clean_miopen_mlir + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_miopen_deps ;; + outdir) ;; + clean) clean_miopen_deps ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_miopen-hip.sh b/rocm-build/build_miopen-hip.sh new file mode 100755 index 000000000..e4267b96d --- /dev/null +++ b/rocm-build/build_miopen-hip.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src MIOpen + +PACKAGE_DIR=${PACKAGE_DIR%\/*}/miopen-hip +DEB_PATH=$PACKAGE_DIR +RPM_PATH=$PACKAGE_DIR + +build_miopen_hip() { + echo "Start build" + + cd $COMPONENT_SRC + + checkout_lfs + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + mkdir "$BUILD_DIR" && cd "$BUILD_DIR" + cmake \ + $(rocm_common_cmake_params) \ + -DMIOPEN_BACKEND=HIP \ + -DCMAKE_CXX_COMPILER="${ROCM_PATH}/llvm/bin/clang++" \ + -DCMAKE_C_COMPILER="${ROCM_PATH}/llvm/bin/clang" \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH};${ROCM_PATH}/hip;${HOME}/miopen-deps" \ + -DHIP_OC_COMPILER="${ROCM_PATH}/bin/clang-ocl" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf $BUILD_DIR/_CPack_Packages/ && find $BUILD_DIR -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_miopen_hip() { + echo "Cleaning MIOpen-HIP build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +checkout_lfs() { + git lfs install --local --force + git lfs pull --exclude= +} + +stage2_command_args "$@" + +case $TARGET in + build) build_miopen_hip ;; + outdir) print_output_directory ;; + clean) clean_miopen_hip ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_mivisionx.sh b/rocm-build/build_mivisionx.sh new file mode 100755 index 000000000..7bfe40dc3 --- /dev/null +++ b/rocm-build/build_mivisionx.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src MIVisionX +BUILD_DEV=ON + +build_mivisionx() { + echo "Start build" + + mkdir -p $BUILD_DIR && cd $BUILD_DIR + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + BUILD_DEV=OFF + fi + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100" + fi + + cmake \ + $(rocm_common_cmake_params) \ + -DROCM_PATH="$ROCM_PATH" \ + -DBUILD_DEV=$BUILD_DEV \ + -DCMAKE_INSTALL_LIBDIR=$(getInstallLibDir) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DROCM_DEP_ROCMCORE=ON \ + -DROCAL_PYTHON=OFF \ + ${LAUNCHER_FLAGS} \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cpack -G ${PKGTYPE^^} + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR + cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_mivisionx() { + echo "Cleaning MIVisionX build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_mivisionx ;; + outdir) print_output_directory ;; + clean) clean_mivisionx ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_opencl_on_rocclr.sh b/rocm-build/build_opencl_on_rocclr.sh new file mode 100755 index 000000000..59fd3984d --- /dev/null +++ b/rocm-build/build_opencl_on_rocclr.sh @@ -0,0 +1,155 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...] [make options]" + echo + echo "Options:" + echo " -h, --help Prints this help" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} +MAKEOPTS="$DASH_JAY" + +BUILD_PATH="$(getBuildPath opencl-on-rocclr)" + +TARGET="build" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_DEB="$PACKAGE_ROOT/deb/opencl-on-rocclr" +PACKAGE_RPM="$PACKAGE_ROOT/rpm/opencl-on-rocclr" +CORE_BUILD_DIR="$(getBuildPath hsa-core)" +ROCclr_BUILD_DIR="$(getBuildPath rocclr)" +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_opencl_on_rocclr() { + rm -rf "$BUILD_PATH" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "$PACKAGE_ROOT/bin/clinfo" + rm -rf "$PACKAGE_ROOT/lib/libOpenCL.so*" + rm -rf "$PACKAGE_ROOT/lib/libamdocl64.so" + rm -rf "$PACKAGE_ROOT/lib/libcltrace.so" +} + +build_opencl_on_rocclr() { + if [ -e "$CLR_ROOT/CMakeLists.txt" ]; then + _OCL_CMAKELIST_DIR="$CLR_ROOT" + _OCL_CMAKELIST_OPT="-DCLR_BUILD_HIP=OFF -DCLR_BUILD_OCL=ON" + elif [ ! -e "$OPENCL_ON_ROCclr_ROOT/CMakeLists.txt" ]; then + echo "No $OPENCL_ON_ROCclr_ROOT/CMakeLists.txt file, skipping opencl on rocclr" >&2 + echo "No $OPENCL_ON_ROCclr_ROOT/CMakeLists.txt file, skipping opencl on rocclr" + exit 0 + else + _OCL_CMAKELIST_DIR="$OPENCL_ON_ROCclr_ROOT" + _OCL_CMAKELIST_OPT="" + fi + + echo "$_OCL_CMAKELIST_DIR" + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + + if [ ! -e Makefile ]; then + echo "Building OpenCL-On-ROCclr CMake environment" + + cmake \ + $(rocm_cmake_params) \ + -DUSE_COMGR_LIBRARY=ON \ + $(rocm_common_cmake_params) \ + -DLINK_COMGR_STATIC="no" \ + -DBUILD_TESTS=ON \ + $_OCL_CMAKELIST_OPT \ + "$_OCL_CMAKELIST_DIR" + + echo "CMake complete" + fi + + echo "Building OpenCL-On-ROCclr" + cmake --build . -- $MAKEOPTS + + echo "Installing OpenCL-On-ROCclr" + cmake --build . -- $MAKEOPTS install + + popd +} + +package_opencl_on_rocclr() { + echo "Packaging OpenCL-On-ROCclr" + pushd "$BUILD_PATH" + cmake --build . -- package + mkdir -p $PACKAGE_DEB + mkdir -p $PACKAGE_RPM + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm + popd +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_opencl_on_rocclr ;; + (build) build_opencl_on_rocclr ; package_opencl_on_rocclr ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_openmp_extras.sh b/rocm-build/build_openmp_extras.sh new file mode 100755 index 000000000..2331b0671 --- /dev/null +++ b/rocm-build/build_openmp_extras.sh @@ -0,0 +1,673 @@ +#!/bin/bash + +source ${BASH_SOURCE%/*}/compute_utils.sh + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +packageMajorVersion="17.60" +packageMinorVersion="0" +packageVersion="${packageMajorVersion}.${packageMinorVersion}.${ROCM_LIBPATCH_VERSION}" +BUILD_PATH="$(getBuildPath openmp-extras)" +DEB_PATH="$(getDebPath openmp-extras)" +RPM_PATH="$(getRpmPath openmp-extras)" +TARGET="build" +MAKEOPTS="$DASH_JAY" + +export INSTALL_PREFIX=${ROCM_INSTALL_PATH} + +while [ "$1" != "" ]; +do + case $1 in + -c | --clean ) + TARGET="clean" ;; + -p | --package ) + TARGET="package" ;; + -r | --release ) + ;; + -a | --address_sanitizer ) + set_asan_env_vars + set_address_sanitizer_on + export ROCM_CMAKECONFIG_PATH="$INSTALL_PREFIX/lib/asan/cmake" + export VERBOSE=1 + export LDSHARED="$INSTALL_PREFIX/lib/llvm/bin/clang -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2" + export SANITIZER=1 ;; + -o | --outdir ) + shift 1; PKGTYPE=$1 ; TARGET="outdir" ;; + -h | --help ) + printUsage ; exit 0 ;; + *) + MAKEARG=$@ ; break ;; + esac + shift 1 +done + + +clean_openmp_extras() { + rm -rf "$BUILD_PATH" + rm -rf "$INSTALL_PREFIX/openmp-extras" +} + +toStdoutStderr(){ + printf '%s\n' "$@" >&2 + printf '%s\n' "$@" +} + +clean_examples(){ + rm -f "$1"/*.sh + rm -f "$1"/fortran/*.sh + rm -f "$1"/openmp/*.sh +} + +build_openmp_extras() { + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + echo "Building openmp-extras" + echo BUILD_PATH: $BUILD_PATH + echo "INSTALL_PREFIX:$INSTALL_PREFIX" + export AOMP_STANDALONE_BUILD=0 + set +e + checkDevel=$(grep "ENABLE_DEVEL_PACKAGE=ON" $AOMP_REPOS/aomp/bin/build_openmp.sh) + set -e + if [ "$checkDevel" == "" ]; then + export AOMP=$INSTALL_PREFIX/lib/llvm + else + export DEVEL_PACKAGE="devel/" + export AOMP=$INSTALL_PREFIX/openmp-extras + fi + export BUILD_AOMP=$BUILD_PATH + + if [ "$EPSDB" == "1" ]; then + export ROCM_DIR=$ROCM_INSTALL_PATH + else + export ROCM_DIR=$INSTALL_PREFIX + fi + + if [ -d "$ROCM_DIR" ]; then + echo "--------------------------" + echo "ROCM_DIR:" + echo "----------" + ls $ROCM_DIR + echo "--------------------------" + fi + if [ -d "$ROCM_DIR"/include ]; then + echo "ROCM_DIR/include:" + echo "----------" + ls $ROCM_DIR/include + echo "--------------------------" + fi + if [ -d "$ROCM_DIR"/include/hsa ]; then + echo "ROCM_DIR/include/hsa:" + echo "----------" + ls $ROCM_DIR/include/hsa + echo "--------------------------" + fi + + export AOMP_JENKINS_BUILD_LIST="extras openmp pgmath flang flang_runtime" + echo "BEGIN Build of openmp-extras" + "$AOMP_REPOS"/aomp/bin/build_aomp.sh $MAKEARG + popd +} + +package_openmp_extras_deb() { + local packageName=$1 + local packageDeb="$packageDir/deb" + local packageArch="amd64" + local packageMaintainer="Openmp Extras Support " + local packageSummary="OpenMP Extras provides openmp and flang libraries." + local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + local debDependencies="rocm-llvm, rocm-device-libs, rocm-core" + local debRecommends="gcc, g++" + local controlFile="$packageDeb/openmp-extras/DEBIAN/control" + + if [ "$packageName" == "openmp-extras-runtime" ]; then + packageType="runtime" + debDependencies="rocm-core, hsa-rocr" + else + local debProvides="openmp-extras" + local debConflicts="openmp-extras" + local debReplaces="openmp-extras" + packageType="devel" + debDependencies="$debDependencies, openmp-extras-runtime, hsa-rocr-dev" + fi + + if [ -f "$BUILD_PATH"/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras/devel ]; then + if [ "$packageType" == "runtime" ]; then + rm -rf "$packageDir" + rm -rf "$DEB_PATH" + mkdir -p "$DEB_PATH" + mkdir -p $packageDeb/openmp-extras + + mkdir -p $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras + cp -r $AOMP_REPOS/aomp/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.apache2 + cp -r $AOMP_REPOS/aomp-extras/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.mit + cp -r $AOMP_REPOS/flang/LICENSE.txt $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.flang + else + rm -rf $packageDeb/openmp-extras/* + mkdir -p $packageDeb/openmp-extras$copyPath/bin + cp -r --parents "$installPath"/lib-debug/src $packageDeb/openmp-extras + fi + else + if [ "$packageType" == "runtime" ]; then + rm -rf "$packageDir" + rm -rf "$DEB_PATH" + mkdir -p "$DEB_PATH" + mkdir -p $packageDeb/openmp-extras$installPath + mkdir -p $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include + mkdir -p $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras + cp -r $AOMP_REPOS/aomp/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.apache2 + cp -r $AOMP_REPOS/aomp-extras/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.mit + cp -r $AOMP_REPOS/flang/LICENSE.txt $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.flang + else + rm -rf $packageDeb/openmp-extras$installPath/* + rm -rf $packageDeb/openmp-extras/bin + rm -rf $packageDeb/openmp-extras$copyPath/share + echo mkdir -p $packageDeb/openmp-extras$copyPath/bin + mkdir -p $packageDeb/openmp-extras$copyPath/bin + mkdir -p $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include + fi + fi + + mkdir -p "$(dirname $controlFile)" + + if [ -f "$BUILD_PATH"/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras/devel ]; then + if [ "$packageType" == "runtime" ]; then + cat "$BUILD_PATH"/build/installed_files.txt | grep -P '\.so|\.a' | cut -d":" -f2 | cut -d" " -f2 | xargs -I {} cp -d --parents {} "$packageDeb"/openmp-extras + + cp -d --parents "$installPath/lib/libgomp.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib/libiomp5.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib-debug/libgomp.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib-debug/libiomp5.so" "$packageDeb"/openmp-extras + else + cat "$BUILD_PATH"/build/installed_files.txt | grep -Pv '\.so|\.a' | cut -d":" -f2 | cut -d" " -f2 | xargs -I {} cp -d --parents {} "$packageDeb"/openmp-extras + fi + else + cp -r "$AOMP"/"$packageType"/* "$packageDeb"/openmp-extras"$installPath" + fi + + if [ "$packageType" == "devel" ]; then + mkdir -p "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + echo cp -r "$AOMP_REPOS"/aomp/examples/fortran "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + cp -r "$AOMP_REPOS"/aomp/examples/fortran "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + cp -r "$AOMP_REPOS"/aomp/examples/openmp "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + cp -r "$AOMP_REPOS"/aomp/examples/tools "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + clean_examples "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples + fi + + if [ "$packageType" == "devel" ]; then + ln -s ../../../../include/omp.h $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include/omp.h + ln -s ../../../../include/ompt.h $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include/ompt.h + ln -s ../../../../include/omp-tools.h $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include/omp-tools.h + if [ ! -h "$packageDeb"/openmp-extras"$copyPath"/bin/aompcc ] && [ -e "$packageDeb"/openmp-extras"$installPath"/bin/aompcc ]; then + ln -s ../lib/llvm/bin/aompcc "$packageDeb"/openmp-extras"$copyPath"/bin/aompcc + fi + if [ -e "$packageDeb"/openmp-extras"$installPath"/bin/mymcpu ]; then + ln -s ../lib/llvm/bin/mymcpu "$packageDeb"/openmp-extras"$copyPath"/bin/mymcpu + fi + if [ -e "$packageDeb"/openmp-extras"$installPath"/bin/mygpu ]; then + ln -s ../lib/llvm/bin/mygpu "$packageDeb"/openmp-extras"$copyPath"/bin/mygpu + fi + fi + + ls -l "$packageDeb"/openmp-extras"$installPath" + if [ "$packageType" == "devel" ]; then + ls -l "$packageDeb"/openmp-extras"$installPath"/bin + ls -l "$packageDeb"/openmp-extras"$copyPath"/bin + fi + + { + echo "Package: $packageName" + echo "Architecture: $packageArch" + echo "Section: devel" + echo "Priority: optional" + echo "Maintainer: $packageMaintainer" + echo "Version: $packageVersion-${CPACK_DEBIAN_PACKAGE_RELEASE}" + echo "Depends: $debDependencies" + echo "Recommends: $debRecommends" + if [ "$packageType" == "devel" ]; then + echo "Provides: $debProvides" + echo "Conflicts: $debConflicts" + echo "Replaces: $debReplaces" + fi + echo "Description: $packageSummary" + echo " $packageSummaryLong" + } > $controlFile + fakeroot dpkg-deb -Zgzip --build $packageDeb/openmp-extras \ + "$DEB_PATH/${packageName}_${packageVersion}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${packageArch}.deb" +} + +package_openmp_extras_asan_deb() { + local packageName=$1 + local packageDeb="$packageDir/deb" + local packageArch="amd64" + local packageMaintainer="Openmp Extras Support " + local packageSummary="AddressSanitizer OpenMP Extras provides instrumented openmp and flang libraries." + local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + local debDependencies="hsa-rocr-asan, rocm-core-asan" + local debRecommends="gcc, g++" + local controlFile="$packageDeb/openmp-extras/DEBIAN/control" + local asanLibDir="runtime" + + rm -rf "$packageDir" + rm -rf "$DEB_PATH" + mkdir -p "$DEB_PATH" + local licenseDir="$packageDeb/openmp-extras$copyPath/share/doc/openmp-extras-asan" + mkdir -p $licenseDir + cp -r $AOMP_REPOS/aomp/LICENSE $licenseDir/LICENSE.apache2 + cp -r $AOMP_REPOS/aomp-extras/LICENSE $licenseDir/LICENSE.mit + cp -r $AOMP_REPOS/flang/LICENSE.txt $licenseDir/LICENSE.flang + + mkdir -p "$(dirname $controlFile)" + if [ -f "$BUILD_PATH"/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras ]; then + cat "$BUILD_PATH"/build/installed_files.txt | grep -P 'asan' | cut -d":" -f2 | cut -d" " -f2 | xargs -I {} cp -d --parents {} "$packageDeb"/openmp-extras + + cp -d --parents "$installPath/lib/asan/libgomp.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib/asan/libiomp5.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib-debug/asan/libgomp.so" "$packageDeb"/openmp-extras + cp -d --parents "$installPath/lib-debug/asan/libiomp5.so" "$packageDeb"/openmp-extras + + else + mkdir -p $packageDeb/openmp-extras$installPath/lib/asan + mkdir -p $packageDeb/openmp-extras$installPath/lib-debug/asan + cp -r "$AOMP"/lib/asan/* "$packageDeb"/openmp-extras"$installPath"/lib/asan/ + cp -r "$AOMP"/lib-debug/asan/* "$packageDeb"/openmp-extras"$installPath"/lib-debug/asan/ + cp -r "$AOMP"/"$asanLibDir"/lib/asan/* "$packageDeb"/openmp-extras"$installPath"/lib/asan/ + cp -r "$AOMP"/"$asanLibDir"/lib-debug/asan/* "$packageDeb"/openmp-extras"$installPath"/lib-debug/asan/ + cp -r "$AOMP"/devel/lib/asan/* "$packageDeb"/openmp-extras"$installPath"/lib/asan/ + cp -r "$AOMP"/devel/lib-debug/asan/* "$packageDeb"/openmp-extras"$installPath"/lib-debug/asan/ + fi + + { + echo "Package: $packageName" + echo "Architecture: $packageArch" + echo "Section: devel" + echo "Priority: optional" + echo "Maintainer: $packageMaintainer" + echo "Version: $packageVersion-${CPACK_DEBIAN_PACKAGE_RELEASE}" + echo "Depends: $debDependencies" + echo "Recommends: $debRecommends" + echo "Description: $packageSummary" + echo " $packageSummaryLong" + } > $controlFile + fakeroot dpkg-deb -Zgzip --build $packageDeb/openmp-extras \ + "$DEB_PATH/${packageName}_${packageVersion}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${packageArch}.deb" +} + + +package_openmp_extras_rpm() { + local packageName=$1 + local packageRpm="$packageDir/rpm" + local specFile="$packageDir/$packageName.spec" + local packageSummary="OpenMP Extras provides openmp and flang libraries." + local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + local rpmRequires="rocm-llvm, rocm-device-libs, rocm-core" + if [ "$packageName" == "openmp-extras-runtime" ]; then + packageType="runtime" + rpmRequires="rocm-core, hsa-rocr" + else + local rpmProvides="openmp-extras" + local rpmObsoletes="openmp-extras" + packageType="devel" + rpmRequires="$rpmRequires, openmp-extras-runtime, hsa-rocr-devel" + fi + + rm -f "$AOMP_REPOS"/aomp/examples/*.sh + rm -f "$AOMP_REPOS"/aomp/examples/fortran/*.sh + rm -f "$AOMP_REPOS"/aomp/examples/openmp/*.sh + + + if [ "$packageType" == "runtime" ]; then + rm -rf "$packageDir" + rm -rf "$RPM_PATH" + mkdir -p "$RPM_PATH" + fi + echo RPM_PATH: $RPM_PATH + echo mkdir -p $(dirname $specFile) + mkdir -p "$(dirname $specFile)" + + { + echo "%define is_runtime %( if [ $packageType == runtime ]; then echo "1" ; else echo "0"; fi )" + echo "%define is_devel %( if [ $packageType == devel ]; then echo "1" ; else echo "0"; fi )" + + echo "Name: $packageName" + echo "Version: $packageVersion" + echo "Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}" + echo "Summary: $packageSummary" + echo "Group: System Environment/Libraries" + echo "License: MIT and ASL 2.0 and ASL 2.0 with exceptions" + echo "Vendor: Advanced Micro Devices, Inc." + echo "Requires: $rpmRequires" + echo "%if %is_devel" + echo "Provides: $rpmProvides" + echo "Obsoletes: $rpmObsoletes" + echo "%endif" + echo "%define debug_package %{nil}" + echo "%define __os_install_post %{nil}" + echo "%description" + echo "$packageSummaryLong" + + echo "%prep" + echo "%setup -T -D -c -n $packageName" + echo "%build" + + echo "%install" + echo "if [ -f $BUILD_PATH/build/installed_files.txt ] && [ ! -d $INSTALL_PREFIX/openmp-extras/devel ]; then" + echo " %if %is_runtime" + echo " mkdir -p \$RPM_BUILD_ROOT/openmp-extras" + echo " %else" + echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/bin" + echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib/clang/$llvm_ver/include" + echo " %endif" + echo "else" + echo " %if %is_runtime" + echo " mkdir -p \$RPM_BUILD_ROOT$installPath" + echo " %else" + echo " rm -rf \$RPM_BUILD_ROOT/openmp-extras$installPath/*" + echo " echo mkdir -p \$RPM_BUILD_ROOT$copyPath/bin" + echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/bin" + echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib/clang/$llvm_ver/include" + echo " %endif" + echo "fi" + + echo "if [ -f $BUILD_PATH/build/installed_files.txt ] && [ ! -d $INSTALL_PREFIX/openmp-extras/devel ]; then" + echo " %if %is_runtime" + echo " cat $BUILD_PATH/build/installed_files.txt | grep -P '\.so|\.a' | cut -d':' -f2 | cut -d' ' -f2 | xargs -I {} cp -d --parents {} \$RPM_BUILD_ROOT" + + echo " cp -d --parents "$installPath/lib/libgomp.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib/libiomp5.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib-debug/libgomp.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib-debug/libiomp5.so" \$RPM_BUILD_ROOT" + echo " %endif" + echo "%if %is_devel" + echo " cat "$BUILD_PATH"/build/installed_files.txt | grep -Pv '\.so|\.a' | cut -d':' -f2 | cut -d' ' -f2 | xargs -I {} cp -d --parents {} \$RPM_BUILD_ROOT" + echo "%endif" + + echo "else" + echo " cp -r $AOMP/$packageType/* \$RPM_BUILD_ROOT$installPath" + echo " %if %is_devel" + echo " rm -rf \$RPM_BUILD_ROOT$installPath/share" + echo " %endif" + echo "fi" + + echo "%if %is_devel" + echo " if [ ! -h \$RPM_BUILD_ROOT$copyPath/bin/aompcc ] && [ -e \$RPM_BUILD_ROOT$installPath/bin/aompcc ]; then" + echo " ln -s ../lib/llvm/bin/aompcc \$RPM_BUILD_ROOT$copyPath/bin/aompcc" + echo " fi" + echo " if [ -e \$RPM_BUILD_ROOT$installPath/bin/mymcpu ]; then" + echo " ln -s ../lib/llvm/bin/mymcpu \$RPM_BUILD_ROOT$copyPath/bin/mymcpu" + echo " fi" + echo " if [ -e \$RPM_BUILD_ROOT$installPath/bin/mygpu ]; then" + echo " ln -s ../lib/llvm/bin/mygpu \$RPM_BUILD_ROOT$copyPath/bin/mygpu" + echo " fi" + echo " ls \$RPM_BUILD_ROOT$copyPath" + + echo " ln -s ../../../../include/omp.h \$RPM_BUILD_ROOT/$installPath/lib/clang/$llvm_ver/include/omp.h" + echo " ln -s ../../../../include/ompt.h \$RPM_BUILD_ROOT/$installPath/lib/clang/$llvm_ver/include/ompt.h" + echo " ln -s ../../../../include/omp-tools.h \$RPM_BUILD_ROOT/$installPath/lib/clang/$llvm_ver/include/omp-tools.h" + echo "%endif" + echo 'find $RPM_BUILD_ROOT \! -type d | sed "s|$RPM_BUILD_ROOT||"> files.list' + + echo "%if %is_runtime" + echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras" + echo " cp -r $AOMP_REPOS/aomp/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras/LICENSE.apache2" + echo " cp -r $AOMP_REPOS/aomp-extras/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras/LICENSE.mit" + echo " cp -r $AOMP_REPOS/flang/LICENSE.txt \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras/LICENSE.flang" + echo "%else" + echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples" + echo " cp -r $AOMP_REPOS/aomp/examples/fortran \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples" + echo " cp -r $AOMP_REPOS/aomp/examples/openmp \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples" + echo " cp -r $AOMP_REPOS/aomp/examples/tools \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples" + clean_examples \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples + echo "%endif" + echo "%clean" + echo "rm -rf \$RPM_BUILD_ROOT" + + echo "%files -f files.list" + echo "%if %is_runtime" + echo " $copyPath/share/doc/openmp-extras" + echo "%else" + echo " $copyPath/share/openmp-extras" + echo "%endif" + echo "%defattr(-,root,root,-)" + echo "%if %is_runtime || %is_devel" + echo " $copyPath" + echo "%endif" + + } > $specFile + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH +} + +package_openmp_extras_asan_rpm() { + local packageName=$1 + local packageRpm="$packageDir/rpm" + local specFile="$packageDir/$packageName.spec" + local packageSummary="AddressSanitizer OpenMP Extras provides instrumented openmp and flang libraries." + local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + local rpmRequires="hsa-rocr-asan, rocm-core-asan" + local asanLibDir="runtime" + + rm -rf "$packageDir" + rm -rf "$RPM_PATH" + mkdir -p "$RPM_PATH" + echo RPM_PATH: $RPM_PATH + echo mkdir -p $(dirname $specFile) + mkdir -p "$(dirname $specFile)" + + { + echo "Name: $packageName" + echo "Version: $packageVersion" + echo "Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}" + echo "Summary: $packageSummary" + echo "Group: System Environment/Libraries" + echo "License: MIT and ASL 2.0 and ASL 2.0 with exceptions" + echo "Vendor: Advanced Micro Devices, Inc." + echo "Requires: $rpmRequires" + echo "%define __os_install_post %{nil}" + echo "%description" + echo "%undefine _debugsource_packages" + echo "$packageSummaryLong" + + echo "%prep" + echo "%setup -T -D -c -n $packageName" + echo "%build" + + echo "%install" + echo "if [ -f $BUILD_PATH/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras ]; then" + echo " cat $BUILD_PATH/build/installed_files.txt | grep -P 'asan' | cut -d':' -f2 | cut -d' ' -f2 | xargs -I {} cp -d --parents {} \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib/asan/libgomp.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib/asan/libiomp5.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib-debug/asan/libgomp.so" \$RPM_BUILD_ROOT" + echo " cp -d --parents "$installPath/lib-debug/asan/libiomp5.so" \$RPM_BUILD_ROOT" + echo "else" + echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib/asan" + echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib-debug/asan" + echo " cp -r $AOMP/lib/asan/* \$RPM_BUILD_ROOT$installPath/lib/asan" + echo " cp -r $AOMP/lib-debug/asan/* \$RPM_BUILD_ROOT$installPath/lib-debug/asan" + echo " cp -r $AOMP/$asanLibDir/lib/asan/* \$RPM_BUILD_ROOT$installPath/lib/asan" + echo " cp -r $AOMP/$asanLibDir/lib-debug/asan/* \$RPM_BUILD_ROOT$installPath/lib-debug/asan" + echo " cp -r $AOMP/devel/lib/asan/* \$RPM_BUILD_ROOT$installPath/lib/asan" + echo " cp -r $AOMP/devel/lib-debug/asan/* \$RPM_BUILD_ROOT$installPath/lib-debug/asan" + echo "fi" + + echo 'find $RPM_BUILD_ROOT \! -type d | sed "s|$RPM_BUILD_ROOT||"> files.list' + + echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan" + echo " cp -r $AOMP_REPOS/aomp/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan/LICENSE.apache2" + echo " cp -r $AOMP_REPOS/aomp-extras/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan/LICENSE.mit" + echo " cp -r $AOMP_REPOS/flang/LICENSE.txt \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan/LICENSE.flang" + echo "%clean" + echo "rm -rf \$RPM_BUILD_ROOT" + + echo "%files -f files.list" + echo " $copyPath/share/doc/openmp-extras-asan" + echo "%defattr(-,root,root,-)" + echo " $copyPath" + + } > $specFile + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH +} + + +package_openmp_extras() { + local DISTRO_NAME=$(cat /etc/os-release | grep -e ^NAME=) + local installPath="$ROCM_INSTALL_PATH/lib/llvm" + local copyPath="$ROCM_INSTALL_PATH" + local packageDir="$BUILD_PATH/package" + local llvm_ver=`$INSTALL_PREFIX/lib/llvm/bin/clang --print-resource-dir | sed 's^/llvm/lib/clang/^ ^' | awk '{print $2}'` + local debNames="openmp-extras-runtime openmp-extras-dev" + local rpmNames="openmp-extras-runtime openmp-extras-devel" + if [ "$SANITIZER" == "1" ]; then + local asanPkgName="openmp-extras-asan" + if [[ $DISTRO_NAME =~ "Ubuntu" ]]; then + package_openmp_extras_asan_deb $asanPkgName + else + package_openmp_extras_asan_rpm $asanPkgName + fi + return 0 + fi + + if [[ $DISTRO_NAME =~ "Ubuntu" ]]; then + for name in $debNames; do + package_openmp_extras_deb $name + done + else + for name in $rpmNames; do + package_openmp_extras_rpm $name + done + fi +} + +package_tests_deb(){ + local packageDir="$BUILD_PATH/package" + local packageDeb="$packageDir/deb" + local packageArch="amd64" + local packageMaintainer="Openmp Extras Support " + local packageSummary="Tests for openmp-extras." + local packageSummaryLong="Tests for openmp-extras $packageMajorVersion-$packageMinorVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + local debDependencies="rocm-core" + local debRecommends="gcc, g++" + local controlFile="$packageDeb/openmp-extras/DEBIAN/control" + local installPath="$ROCM_INSTALL_PATH/share/openmp-extras/tests" + local packageName="openmp-extras-tests" + + rm -rf "$packageDir" + + mkdir -p $packageDeb/openmp-extras$installPath; mkdir -p $packageDeb/openmp-extras$copyPath/bin + if [ -e $(dirname $controlFile) ]; then + rm $(dirname $controlFile) + fi + mkdir -p "$(dirname $controlFile)" + cp -r "$AOMP_REPOS/aomp/test/smoke" "$packageDeb$installPath" + { + echo "Package: $packageName" + echo "Architecture: $packageArch" + echo "Section: devel" + echo "Priority: optional" + echo "Maintainer: $packageMaintainer" + echo "Version: $packageVersion-${CPACK_DEBIAN_PACKAGE_RELEASE}" + echo "Depends: $debDependencies" + echo "Recommends: $debRecommends" + echo "Description: $packageSummary" + echo " $packageSummaryLong" + } > $controlFile + fakeroot dpkg-deb -Zgzip --build $packageDeb/openmp-extras \ + "${DEB_PATH}/${packageName}_${packageVersion}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${packageArch}.deb" +} + +package_tests_rpm(){ + AOMP_STANDALONE_BUILD=1 $AOMP_REPOS/aomp/bin/build_fixups.sh + local copyPath="$ROCM_INSTALL_PATH" + local packageDir="$BUILD_PATH/package" + local packageRpm="$packageDir/rpm" + local installPath="$ROCM_INSTALL_PATH/share/openmp-extras/tests" + local packageName="openmp-extras-tests" + local specFile="$packageDir/$packageName.spec" + local packageSummary="Tests for openmp-extras." + local packageSummaryLong="Tests for openmp-extras $packageVersion is based on LLVM 15 and is used for offloading to Radeon GPUs." + + rm -rf "$packageDir" + mkdir -p "$packageRpm$installPath" + { + echo "Name: $packageName" + echo "Version: $packageVersion" + echo "Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}" + echo "Summary: $packageSummary" + echo "Group: System Environment/Libraries" + echo "License: Advanced Micro Devices, Inc." + echo "Vendor: Advanced Micro Devices, Inc." + echo "%define debug_package %{nil}" + echo "%define __os_install_post %{nil}" + echo "%description" + echo "$packageSummaryLong" + + echo "%prep" + echo "%setup -T -D -c -n $packageName" + echo "%build" + + echo "%install" + echo "mkdir -p \$RPM_BUILD_ROOT$copyPath/share/aomp/tests" + echo "cp -R $AOMP_REPOS/aomp/test/smoke \$RPM_BUILD_ROOT$copyPath/share/aomp/tests" + echo 'find $RPM_BUILD_ROOT \! -type d | sed "s|$RPM_BUILD_ROOT||"> files.list' + + echo "%clean" + echo "rm -rf \$RPM_BUILD_ROOT" + + echo "%files -f files.list" + echo "%defattr(-,root,root,-)" + + echo "%postun" + echo "rm -rf $ROCM_INSTALL_PATH/share/aomp" + } > $specFile + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH +} + +package_tests() { + local DISTRO_NAME=$(cat /etc/os-release | grep -e ^NAME=) + if [[ $DISTRO_NAME =~ "Ubuntu" ]]; then + package_tests_deb + else + package_tests_rpm + fi +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_openmp_extras ;; + (build) build_openmp_extras; package_openmp_extras ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rccl.sh b/rocm-build/build_rccl.sh new file mode 100755 index 000000000..f6c420474 --- /dev/null +++ b/rocm-build/build_rccl.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rccl + +ENABLE_ADDRESS_SANITIZER=false + +build_rccl() { + echo "Start build" + + mkdir -p $ROCM_PATH/.info/ + echo $ROCM_VERSION | tee $ROCM_PATH/.info/version + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + mkdir -p $BUILD_DIR && cd $BUILD_DIR + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + + CC=${ROCM_PATH}/bin/amdclang \ + CXX=$(set_build_variables CXX) \ + cmake \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DHIP_COMPILER=clang \ + -DCMAKE_PREFIX_PATH="${ROCM_PATH};${ROCM_PATH}/share/rocm/cmake/" \ + -DCPACK_GENERATOR="${PKGTYPE^^}" \ + -DROCM_PATCH_VERSION=$ROCM_LIBPATCH_VERSION \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -DBUILD_TESTS=ON \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rccl() { + echo "Cleaning rccl build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rccl ;; + outdir) print_output_directory ;; + clean) clean_rccl ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rdc.sh b/rocm-build/build_rdc.sh new file mode 100755 index 000000000..b6d5417fc --- /dev/null +++ b/rocm-build/build_rdc.sh @@ -0,0 +1,234 @@ +#!/bin/bash + +source "$(dirname "$BASH_SOURCE")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename $0) [-c|-r|-h] [makeopts]" + echo + echo "Options:" + echo " -c, --clean Removes all rdc build artifacts, except grpc" + echo " -g, --clean_grpc Removes the grpc files and artifacts" + echo " -r, --release Build release version of RDC (default is debug)" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -h, --help Prints this help" + echo + return 0 +} + +PACKAGE_ROOT="$(getPackageRoot)" +RDC_BUILD_DIR=$(getBuildPath rdc) +GRPC_BUILD_DIR=$(getBuildPath grpc) +TARGET="build" +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE="$(getIncludePath)" +PACKAGE_BIN="$(getBinPath)" +RDC_PACKAGE_DEB_DIR="$PACKAGE_ROOT/deb/rdc" +RDC_PACKAGE_RPM_DIR="$PACKAGE_ROOT/rpm/rdc" +BUILD_TYPE="Debug" +MAKETARGET="deb" +MAKEARG="$DASH_JAY O=$RDC_BUILD_DIR" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +CLEAN_GRPC="no" +PKGTYPE="deb" +RDC_MAKE_OPTS="$DASH_JAY O=$RDC_BUILD_DIR -C $RDC_BUILD_DIR" +BUILD_DOCS="no" +RDC_PKG_NAME_ROOT="rdc" +RDC_PKG_NAME="${RDC_PKG_NAME_ROOT}" +GRPC_PROTOC_ROOT="${RDC_BUILD_DIR}/grpc" +GRPC_SEARCH_ROOT="/usr/grpc" +GRPC_DESIRED_VERSION="1.59.1" # do not include 'v' + +RDC_LIB_RPATH='$ORIGIN' +RDC_LIB_RPATH=$RDC_LIB_RPATH:'$ORIGIN/..' +RDC_LIB_RPATH=$RDC_LIB_RPATH:'$ORIGIN/rdc/grpc/lib' +RDC_LIB_RPATH=$RDC_LIB_RPATH:'$ORIGIN/grpc/lib' +RDC_EXE_RPATH='$ORIGIN/../lib' +RDC_EXE_RPATH=$RDC_EXE_RPATH:'$ORIGIN/../lib/rdc/grpc/lib' + +VALID_STR=`getopt -o hcgradso:p: --long help,clean,clean_grpc,release,documentation,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-g | --clean_grpc) + TARGET="clean_grpc" ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-d | --documentation ) + BUILD_DOCS="yes" ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_rdc() { + rm -rf "$RDC_BUILD_DIR" + rm -rf "$RDC_PACKAGE_DEB_DIR" + rm -rf "$RDC_PACKAGE_RPM_DIR" + rm -rf "$RDC_BUILD_DIR/rdc" + + rm -rf "$PACKAGE_INCLUDE/rdc" + rm -f $PACKAGE_LIB/librdc* + rm -f $PACKAGE_BIN/rdci + return 0 +} + +clean_grpc() { + rm -rf "$GRPC_BUILD_DIR" +} + +find_grpc() { + grep -s -F "$GRPC_DESIRED_VERSION" ${GRPC_SEARCH_ROOT}/*/cmake/grpc/gRPCConfigVersion.cmake && + GRPC_PROTOC_ROOT=$GRPC_SEARCH_ROOT +} + +build_grpc() { + if find_grpc; then + return 0 + fi + echo "GRPC SEARCH FAILED! Building from scratch..." + + mkdir -p $PACKAGE_ROOT/build + pushd $PACKAGE_ROOT/build + + if [ ! -d $PACKAGE_ROOT/build/grpc/.git ]; then + git clone \ + --shallow-submodules \ + --recurse-submodules \ + $DASH_JAY \ + -b v${GRPC_DESIRED_VERSION} \ + --depth 1 \ + https://github.com/grpc/grpc + fi + + cd grpc + mkdir -p cmake/build + cd cmake/build + + cmake \ + -DgRPC_INSTALL=ON \ + -DgRPC_BUILD_TESTS=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${GRPC_PROTOC_ROOT} \ + ../.. + cmake --build . -- $DASH_JAY + cmake --build . -- install + + cp ../../LICENSE ${GRPC_PROTOC_ROOT} + popd +} + +rdc_backwards_compat_cmake_params() { + grep -q "RDC_CLIENT_INSTALL_PREFIX" "$RDC_ROOT/CMakeLists.txt" && + echo "-DRDC_CLIENT_INSTALL_PREFIX=$PACKAGE_ROOT" +} + +build_rdc() { + echo "Building RDC" + echo "RDC_BUILD_DIR: ${RDC_BUILD_DIR}" + echo "GRPC_PROTOC_ROOT: ${GRPC_PROTOC_ROOT}" + + export LD_PRELOAD="$ASAN_LIB_PATH" + + if [ ! -d "$RDC_BUILD_DIR/rdc_libs" ]; then + mkdir -p $RDC_BUILD_DIR + pushd $RDC_BUILD_DIR + cmake \ + -DGRPC_ROOT="$GRPC_PROTOC_ROOT" \ + -DGRPC_DESIRED_VERSION="$GRPC_DESIRED_VERSION" \ + -DCMAKE_MODULE_PATH="$RDC_ROOT/cmake_modules" \ + $(rocm_cmake_params) \ + $(rdc_backwards_compat_cmake_params) \ + $(rocm_common_cmake_params) \ + -DROCM_DIR=$ROCM_INSTALL_PATH \ + -DRDC_PACKAGE="${RDC_PKG_NAME}" \ + -DCPACK_PACKAGE_VERSION_MAJOR="1" \ + -DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \ + -DCPACK_PACKAGE_VERSION_PATCH="0" \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + -DBUILD_TESTS=ON \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE \ + -DCMAKE_EXE_LINKER_FLAGS_INIT="-Wl,--no-as-needed,-z,origin,--enable-new-dtags,--build-id=sha1,--rpath,$RDC_EXE_RPATH" \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--no-as-needed,-z,origin,--enable-new-dtags,--build-id=sha1,--rpath,$RDC_LIB_RPATH" \ + "$RDC_ROOT" + popd + fi + echo "Making rdc package:" + cmake --build "$RDC_BUILD_DIR" -- $RDC_MAKE_OPTS + cmake --build "$RDC_BUILD_DIR" -- $RDC_MAKE_OPTS install + + unset LD_PRELOAD + cmake --build "$RDC_BUILD_DIR" -- $RDC_MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$RDC_PACKAGE_DEB_DIR" "$RDC_BUILD_DIR/$RDC_PKG_NAME"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RDC_PACKAGE_RPM_DIR" "$RDC_BUILD_DIR/$RDC_PKG_NAME"*.rpm + + if [ ! -e $ROCM_INSTALL_PATH/include/rdc/rdc.h ]; then + cp -r "$ROCM_INSTALL_PATH/rdc/lib/." "$PACKAGE_LIB" + cp -r "$ROCM_INSTALL_PATH/rdc/bin/." "$PACKAGE_BIN" + cp -r "$ROCM_INSTALL_PATH/rdc/include/." "$PACKAGE_INCLUDE" + fi + + if [ "$BUILD_DOCS" = "yes" ]; then + echo "Building Docs" + cmake --build "$RDC_BUILD_DIR" -- $RDC_MAKE_OPTS doc + pushd $RDC_BUILD_DIR/latex + cmake --build . -- + mv refman.pdf "$ROCM_INSTALL_PATH/rdc/RDC_Manual.pdf" + popd + fi +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${RDC_PACKAGE_DEB_DIR};; + ("rpm") + echo ${RDC_PACKAGE_RPM_DIR};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean_rdc ;; + (clean_grpc) clean_grpc ;; + (build) build_grpc; build_rdc ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocalution.sh b/rocm-build/build_rocalution.sh new file mode 100755 index 000000000..d60b6c055 --- /dev/null +++ b/rocm-build/build_rocalution.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +PATH=${ROCM_PATH}/bin:$PATH +set_component_src rocALUTION + +build_rocalution() { + echo "Start build" + + cd $COMPONENT_SRC + + CXX="g++" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + echo "C compiler: $CC" + echo "CXX compiler: $CXX" + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + cmake \ + -DSUPPORT_HIP=ON \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DCPACK_SET_DESTDIR=OFF \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocalution() { + echo "Cleaning rocALUTION build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocalution ;; + outdir) print_output_directory ;; + clean) clean_rocalution ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocblas.sh b/rocm-build/build_rocblas.sh new file mode 100755 index 000000000..28593c648 --- /dev/null +++ b/rocm-build/build_rocblas.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rocBLAS +DEPS_DIR=${HOME}/rocblas + +stage2_command_args "$@" + +build_rocblas() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + export ASAN_OPTIONS="detect_leaks=0:verify_asan_link_order=0" + fi + + cd $COMPONENT_SRC + + mkdir -p $DEPS_DIR && cp -r /usr/blis $DEPS_DIR + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + cmake \ + -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake \ + -DBUILD_DIR="${BUILD_DIR}" \ + $(rocm_common_cmake_params) \ + -DROCM_DIR="${ROCM_PATH}" \ + ${LAUNCHER_FLAGS} \ + -DCMAKE_PREFIX_PATH="${DEPS_DIR};${ROCM_PATH}" \ + -DCPACK_SET_DESTDIR=OFF \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DLINK_BLIS=ON \ + -DAMDGPU_TARGETS="${GPU_TARGETS}" \ + -DTensile_CODE_OBJECT_VERSION=default \ + -DTensile_LOGIC=asm_full \ + -DTensile_SEPARATE_ARCHITECTURES=ON \ + -DTensile_LAZY_LIBRARY_LOADING=ON \ + -DTensile_LIBRARY_FORMAT=msgpack \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -DTENSILE_VENV_UPGRADE_PIP=ON \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && rm -rf ./library/src/build_tmp && find -name '*.o' -delete + + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocblas() { + echo "Cleaning rocBLAS build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +case $TARGET in + build) build_rocblas ;; + outdir) print_output_directory ;; + clean) clean_rocblas ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocclr.sh b/rocm-build/build_rocclr.sh new file mode 100755 index 000000000..9df898f78 --- /dev/null +++ b/rocm-build/build_rocclr.sh @@ -0,0 +1,127 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...] [make options]" + echo + echo "Options:" + echo " -h, --help Prints this help" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +MAKEOPTS="$DASH_JAY" + +BUILD_PATH="$(getBuildPath rocclr)" + +TARGET="build" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_DEB="$(getPackageRoot)/deb/rocclr" +PACKAGE_RPM="$(getPackageRoot)/rpm/rocclr" +CORE_BUILD_DIR="$(getBuildPath hsa-core)" +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_rocclr() { + rm -rf "$BUILD_PATH" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" +} + +build_rocclr() { + if [ "$SHARED_LIBS" = "ON" ]; then + echo "rocclr not a standalone repo. skipping build" >&2 + echo "rocclr not a standalone repo. skipping build" + exit 0 + fi + + if [ ! -e "$CLR_ROOT/CMakeLists.txt" ]; then + _ROCclr_CMAKELIST_DIR="$CLR_ROOT" + elif [ ! -e "$ROCclr_ROOT/CMakeLists.txt" ]; then + echo "No $ROCclr_ROOT/CMakeLists.txt file, skipping rocclr" >&2 + echo "No $ROCclr_ROOT/CMakeLists.txt file, skipping rocclr" + exit 0 + else + _ROCclr_CMAKELIST_DIR="$ROCclr_ROOT" + fi + echo "$_ROCclr_CMAKELIST_DIR" + mkdir -p "$BUILD_PATH" + pushd "$BUILD_PATH" + print_lib_type $SHARED_LIBS + if [ ! -e Makefile ]; then + echo "Building ROCclr CMake environment" + + cmake -DUSE_COMGR_LIBRARY=ON \ + $(rocm_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + -DLLVM_INCLUDES="$LLVM_ROOT/include" \ + $(rocm_common_cmake_params) \ + "$_ROCclr_CMAKELIST_DIR" + + echo "CMake complete" + fi + + echo "Building ROCclr" + cmake --build . -- $MAKEOPTS "VERBOSE=1" + + popd +} + +case $TARGET in + (clean) clean_rocclr ;; + (build) build_rocclr ;; + (outdir) exit ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocdecode.sh b/rocm-build/build_rocdecode.sh new file mode 100755 index 000000000..bc768c8ee --- /dev/null +++ b/rocm-build/build_rocdecode.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" +set_component_src rocDecode +BUILD_DEV=ON +build_rocdecode() { + if [ "$DISTRO_ID" = "centos-7" ] ; then + echo "Not building rocDecode for ${DISTRO_ID}. Exiting..." + return 0 + fi + + echo "Start build" + mkdir -p $BUILD_DIR && cd $BUILD_DIR + + cmake ${COMPONENT_SRC} + make -j8 + make install + make package + + cmake --build "$BUILD_DIR" -- -j${PROC} + cpack -G ${PKGTYPE^^} -B ${BUILD_DIR} + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR + cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + show_build_cache_stats +} +clean_rocdecode() { + echo "Cleaning rocDecode build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} +stage2_command_args "$@" +case $TARGET in + build) build_rocdecode ;; + outdir) print_output_directory ;; + clean) clean_rocdecode ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocfft.sh b/rocm-build/build_rocfft.sh new file mode 100755 index 000000000..180406fa1 --- /dev/null +++ b/rocm-build/build_rocfft.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +PATH=${ROCM_PATH}/bin:$PATH +set_component_src rocFFT + +build_rocfft() { + echo "Start Build" + + cd $COMPONENT_SRC + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX="${ROCM_PATH}/bin/hipcc" \ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DUSE_HIP_CLANG=ON \ + -DHIP_COMPILER=clang \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_RIDER=ON \ + -DCPACK_SET_DESTDIR=OFF \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocfft() { + echo "Cleaning rocFFT build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocfft ;; + outdir) print_output_directory ;; + clean) clean_rocfft ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocm-cmake.sh b/rocm-build/build_rocm-cmake.sh new file mode 100755 index 000000000..267313c13 --- /dev/null +++ b/rocm-build/build_rocm-cmake.sh @@ -0,0 +1,121 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Build a release version of the package" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -p, --package Specify packaging format" + echo " -h, --help Prints this help" + echo + echo + + return 0 +} + +TARGET="build" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_DEB="$(getPackageRoot)/deb/rocm-cmake" +PACKAGE_RPM="$(getPackageRoot)/rpm/rocm-cmake" +ROCM_CMAKE_BUILD_DIR="$(getBuildPath rocm-cmake)" + +ROCM_CMAKE_BUILD_DIR="$(getBuildPath rocm-cmake)" +ROCM_CMAKE_PACKAGE_DEB="$(getPackageRoot)/deb/rocm-cmake" +ROCM_CMAKE_PACKAGE_RPM="$(getPackageRoot)/rpm/rocm-cmake" +ROCM_CMAKE_BUILD_TYPE="debug" +BUILD_TYPE="Debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" +MAKETARGET="deb" + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + ack_and_ignore_asan ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_rocm_cmake() { + rm -rf $ROCM_CMAKE_BUILD_DIR + rm -rf $ROCM_CMAKE_PACKAGE_DEB + rm -rf $ROCM_CMAKE_PACKAGE_RPM +} + +build_rocm_cmake() { + echo "Building ROCm cmake" + + if [ ! -d "$ROCM_CMAKE_BUILD_DIR" ]; then + mkdir -p "$ROCM_CMAKE_BUILD_DIR" + pushd "$ROCM_CMAKE_BUILD_DIR" + + cmake \ + $(rocm_cmake_params) \ + -DCPACK_SET_DESTDIR="OFF" \ + -DROCM_DISABLE_LDCONFIG=ON \ + $ROCM_CMAKE_ROOT + cmake --build . -- install + cmake --build . -- package + popd + fi + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CMAKE_PACKAGE_DEB" $ROCM_CMAKE_BUILD_DIR/rocm-cmake*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CMAKE_PACKAGE_RPM" $ROCM_CMAKE_BUILD_DIR/rocm-cmake*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${ROCM_CMAKE_PACKAGE_DEB};; + ("rpm") + echo ${ROCM_CMAKE_PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_rocm_cmake ;; + (build) build_rocm_cmake ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocm-core.sh b/rocm-build/build_rocm-core.sh new file mode 100755 index 000000000..839e36ea4 --- /dev/null +++ b/rocm-build/build_rocm-core.sh @@ -0,0 +1,131 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +PACKAGE_ROOT="$(getPackageRoot)" +ROCM_CORE_BUILD_DIR="$(getBuildPath rocm_core)" +ROCM_CORE_PACKAGE_DEB="$(getPackageRoot)/deb/rocm-core" +ROCM_CORE_PACKAGE_RPM="$(getPackageRoot)/rpm/rocm-core" +ROCM_CORE_MAKE_OPTS="$DASH_JAY -C $ROCM_CORE_BUILD_DIR" +BUILD_TYPE="Debug" +TARGET="build" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" +ADDRESS_SANITIZER=false + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + ADDRESS_SANITIZER=true ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package ) + MAKETARGET=$2 ; shift 2 ;; + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_rocm_core() { + rm -rf "$ROCM_CORE_BUILD_DIR" + rm -rf "$ROCM_CORE_PACKAGE_DEB" + rm -rf "$ROCM_CORE_PACKAGE_RPM" +} + +build_rocm_core() { + echo "Building rocm-core " + + if [ ! -d "$ROCM_CORE_BUILD_DIR" ]; then + mkdir -p "$ROCM_CORE_BUILD_DIR" + fi + + pushd "$ROCM_CORE_BUILD_DIR" + cmake \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + $(rocm_common_cmake_params) \ + -DCMAKE_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + -DCPACK_PACKAGING_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + -DCPACK_GENERATOR="${CPACKGEN:-"DEB;RPM"}" \ + -DCPACK_DEBIAN_PACKAGE_RELEASE=$CPACK_DEBIAN_PACKAGE_RELEASE \ + -DCPACK_RPM_PACKAGE_RELEASE=$CPACK_RPM_PACKAGE_RELEASE \ + -DROCM_VERSION="$ROCM_VERSION" \ + -DBUILD_ID="$BUILD_ID" \ + $ROCM_CORE_ROOT + + make && make install && make package + popd + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CORE_PACKAGE_DEB" $ROCM_CORE_BUILD_DIR/rocm*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CORE_PACKAGE_RPM" $ROCM_CORE_BUILD_DIR/rocm*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${ROCM_CORE_PACKAGE_DEB};; + ("rpm") + echo ${ROCM_CORE_PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean_rocm_core ;; + (build) build_rocm_core ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocm-dev.sh b/rocm-build/build_rocm-dev.sh new file mode 100755 index 000000000..4ae59283b --- /dev/null +++ b/rocm-build/build_rocm-dev.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +stage2_command_args "$@" + +case $TARGET in + build) echo "end of rocm-dev build..." ;; + outdir) ;; + clean) echo "Cleaning rocm-dev is not required..." ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocm-gdb.sh b/rocm-build/build_rocm-gdb.sh new file mode 100755 index 000000000..0dffbd110 --- /dev/null +++ b/rocm-build/build_rocm-gdb.sh @@ -0,0 +1,437 @@ +#!/bin/bash + +source "${BASH_SOURCE%/*}/compute_utils.sh" || return + +remove_make_r_flags + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +toStdoutStderr(){ + printf '%s\n' "$@" >&2 + printf '%s\n' "$@" +} + +linkFiles(){ + cp -lfR "$1" "$2" || cp -fR "$1" "$2" +} + +PROJ_NAME=rocm-gdb +TARGET=build +MAKETARGET=deb +BUILD_DIR=$(getBuildPath $PROJ_NAME) +PACKAGE_DEB=$(getPackageRoot)/deb/$PROJ_NAME +PACKAGE_RPM=$(getPackageRoot)/rpm/$PROJ_NAME +MAKE_OPTS="$DASH_JAY" +BUG_URL="https://github.com/ROCm-Developer-Tools/ROCgdb/issues" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" +LDFLAGS="$LDFLAGS -Wl,--enable-new-dtags" + + +tokeep=( + main${ROCM_INSTALL_PATH}/bin/rocgdb + main${ROCM_INSTALL_PATH}/bin/roccoremerge + main${ROCM_INSTALL_PATH}/share/rocgdb/python/gdb/.* + main${ROCM_INSTALL_PATH}/share/rocgdb/syscalls/amd64-linux.xml + main${ROCM_INSTALL_PATH}/share/rocgdb/syscalls/gdb-syscalls.dtd + main${ROCM_INSTALL_PATH}/share/rocgdb/syscalls/i386-linux.xml + main${ROCM_INSTALL_PATH}/share/doc/rocgdb/NOTICES.txt + main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocannotate.pdf + main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocgdb.pdf + main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocrefcard.pdf + main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocstabs.pdf + main${ROCM_INSTALL_PATH}/share/info/rocgdb/dir + main${ROCM_INSTALL_PATH}/share/info/rocgdb/annotate.info + main${ROCM_INSTALL_PATH}/share/info/rocgdb/gdb.info + main${ROCM_INSTALL_PATH}/share/info/rocgdb/stabs.info + main${ROCM_INSTALL_PATH}/share/man/man1/rocgdb.1 + main${ROCM_INSTALL_PATH}/share/man/man1/roccoremerge.1 + main${ROCM_INSTALL_PATH}/share/man/man5/rocgdbinit.5 + main${ROCM_INSTALL_PATH}/share/html/rocannotate/.* + main${ROCM_INSTALL_PATH}/share/html/rocgdb/.* + main${ROCM_INSTALL_PATH}/share/html/rocstabs/.* +) + +keep_wanted_files(){ + ( + cd "$BUILD_DIR/package/" + printf -v keeppattern '%s\n' "${tokeep[@]}" + find main/opt -type f | grep -xv "$keeppattern" | xargs -r rm + find main/opt -type d -empty -delete + ) + return 0 +} + +copy_testsuite_files() { +( +dest="$BUILD_DIR/package/tests${ROCM_INSTALL_PATH}/test/gdb/" +cd "$ROCM_GDB_ROOT" +find \ + config.guess \ + config.sub \ + contrib/dg-extract-results.py \ + contrib/dg-extract-results.sh \ + gdb/contrib \ + gdb/disable-implicit-rules.mk \ + gdb/features \ + gdb/silent-rules.mk \ + gdb/testsuite \ + include/dwarf2.def \ + include/dwarf2.h \ + install-sh \ + -print0 | cpio -pdu0 "$dest" +) +} + +clean() { + echo "Cleaning $PROJ_NAME" + + rm -rf $BUILD_DIR + rm -rf $PACKAGE_DEB + rm -rf $PACKAGE_RPM +} + +get_version(){ + VERSION=$(sed -n 's/^.*char version[^"]*"\([^"]*\)".*;.*/\1/p' $BUILD_DIR/gdb/version.c || : ) + VERSION=${VERSION:-$1} +} + +package_deb(){ + mkdir -p "$BUILD_DIR/package/main/DEBIAN" + local VERSION + get_version unknown + VERSION="${VERSION}.${ROCM_LIBPATCH_VERSION}" + + grep -v '^# ' > "$BUILD_DIR/package/main/DEBIAN/control" < +Description: ROCgdb + This is ROCgdb, the AMD ROCm source-level debugger for Linux, + based on GDB, the GNU source-level debugger. +# Optional fields +Section: utils +Architecture: amd64 +Essential: no +Priority: optional +Depends: libexpat1, libtinfo5, libncurses5, rocm-dbgapi, libpython3.10 | libpython3.8, libbabeltrace-ctf1 (>= 1.2.1), libbabeltrace1 (>= 1.2.1), rocm-core +EOF + + mkdir -p "$OUT_DIR/deb/$PROJ_NAME" + fakeroot dpkg-deb -Zgzip --build "$BUILD_DIR/package/main" "$OUT_DIR/deb/$PROJ_NAME" + + mkdir -p "$BUILD_DIR/package/tests/DEBIAN" + mkdir -p "$BUILD_DIR/package/tests/${ROCM_INSTALL_PATH}/test/gdb" + + grep -v '^# ' > "$BUILD_DIR/package/tests/DEBIAN/control" < +Description: ROCgdb tests + Test Suite for ROCgdb +# Optional fields +Section: utils +Architecture: amd64 +Essential: no +Priority: optional +# rocm-core as policy says everything to depend on rocm-core +Depends: ${PROJ_NAME} (=${VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}), dejagnu, rocm-core, make +EOF + + copy_testsuite_files + fakeroot dpkg-deb -Zgzip --build "$BUILD_DIR/package/tests" "$OUT_DIR/deb/$PROJ_NAME" +} + +package_rpm(){ + set -- rocm-gdb + local packageDir="$BUILD_DIR/package_rpm/$1" + local specFile="$packageDir/$1.spec" + local packageRpm="$packageDir/rpm" + + local VERSION + get_version 0.0.0 + + VERSION=${VERSION}.${ROCM_LIBPATCH_VERSION} + + local ospost="$(echo '%define __os_install_post \' + rpm --showrc | sed '1,/^-14: __os_install_post/d; + /^-14:/,$d;/^%{nil}/!s/$/ \\/; + /brp-python-bytecompile/d')" + + echo "specFile: $specFile" + echo "packageRpm: $packageRpm" + + mkdir -p "$packageDir" + + grep -v '^## ' <<- EOF > $specFile +## Set up where this stuff goes +%define _topdir $packageRpm +%define _rpmfilename %%{ARCH}/%%{NAME}-${VERSION}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.%%{ARCH}.rpm +## The __os_install_post macro on centos creates .pyc and .pyo objects +## by calling brp-python-bytecompile +## This then creates an issue as the script doesn't package these files +## override it +$ospost +## +Name: ${PROJ_NAME} +Group: Development/Tools/Debuggers +Summary: ROCm source-level debugger for Linux +## rpm requires the version to be dot separated numbers +Version: ${VERSION//-/_} +Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist} +License: GPL +Requires: rocm-core + +%description +This is ROCgdb, the ROCm source-level debugger for Linux, based on +GDB, the GNU source-level debugger. + +The ROCgdb documentation is available at: +https://github.com/RadeonOpenCompute/ROCm + +## these things are commented out as they are not needed, but are +## left in for documentation. +# %prep +# : Should not need to do anything in prep +# %build +# : Should not need to do anything in build as make does that +# %clean +# : Should not need to do anything in clean +## This is the meat. Get a copy of the files from where we built them +## into the local RPM_BUILD_ROOT and left the defaults take over. Need +## to quote the dollar signs as we want rpm to expand them when it is +## run, rather than the shell when we build the spec file. +%install +rm -rf \$RPM_BUILD_ROOT +mkdir -p \$RPM_BUILD_ROOT +# Get a copy of the built tree. +cp -ar $BUILD_DIR/package/main/opt \$RPM_BUILD_ROOT/opt +## The file section is generated by walking the tree. +%files +EOF + + find $BUILD_DIR/package/main/opt -type d | sed "s:$BUILD_DIR/package/main:%dir :" >> $specFile + find $BUILD_DIR/package/main/opt ! -type d | sed "s:$BUILD_DIR/package/main::" >> $specFile + + rpmbuild --define "_topdir $packageRpm" -ba $specFile + + mkdir -p "$PACKAGE_RPM" # e.g. out/ubuntu-16.04/16.04/rpm/rocm-gdb + mv $packageRpm/RPMS/x86_64/*.rpm "$PACKAGE_RPM" +} + +package_rpm_tests(){ + set -- rocm-gdb-tests + local packageDir="$BUILD_DIR/package_rpm/$1" + local specFile="$packageDir/$1.spec" + local packageRpm="$packageDir/rpm" + + local VERSION + get_version 0.0.0 + VERSION=${VERSION}.${ROCM_LIBPATCH_VERSION} + local RELEASE=${CPACK_RPM_PACKAGE_RELEASE}%{?dist} + + echo "specFile: $specFile" + echo "packageRpm: $packageRpm" + + mkdir -p "$packageRpm" + + local ospost="$(echo '%define __os_install_post \' + rpm --showrc | sed '1,/^-14: __os_install_post/d; + /^-14:/,$d;/^%{nil}/!s/$/ \\/; + /brp-python-bytecompile/d')" + grep -v '^## ' <<- EOF > $specFile +## Set up where this stuff goes +%define _topdir $packageRpm +%define _rpmfilename %%{ARCH}/%%{NAME}-${VERSION}-${RELEASE}.%%{ARCH}.rpm +## The __os_install_post macro on centos creates .pyc and .pyo objects +## by calling brp-python-bytecompile +## This then creates an issue as the script doesn't package these files +## override it +$ospost +## +Name: ${PROJ_NAME}-tests +Group: Development/Tools/Debuggers +Summary: Tests for gdb enhanced to debug AMD GPUs +Version: ${VERSION//-/_} +Release: ${RELEASE} +License: GPL +Requires: dejagnu, ${PROJ_NAME} = ${VERSION//-/_}-${RELEASE}, rocm-core, make + +%description +Tests for ROCgdb + +## these things are commented out as they are not needed, but are +## left in for documentation. +# %prep +# : Should not need to do anything in prep +# %build +# : Should not need to do anything in build as make does that +# %clean +# : Should not need to do anything in clean +## This is the meat. Get a copy of the files from where we built them +## into the local RPM_BUILD_ROOT and left the defaults take over. Need +## to quote the dollar signs as we want rpm to expand them when it is +## run, rather than the shell when we build the spec file. +%install +rm -rf \$RPM_BUILD_ROOT +mkdir -p \$RPM_BUILD_ROOT +# Get a copy of the built tree. +cp -ar $BUILD_DIR/package/tests/opt \$RPM_BUILD_ROOT/opt +## The file section is generated by walking the tree. +%files +## package everything in \$RPM_BUILD_ROOT/${ROCM_INSTALL_PATH}/test. +## A little excessive but this is just an internal test package +${ROCM_INSTALL_PATH}/test +EOF + + copy_testsuite_files + + find $BUILD_DIR/package/tests/opt -type f -exec sed -i '1s:^#! */usr/bin/python\>:&3:' {} + + + rpmbuild --define "_topdir $packageRpm" -ba $specFile + mkdir -p "$PACKAGE_RPM" + mv $packageRpm/RPMS/x86_64/*.rpm "$PACKAGE_RPM" +} + +build() { + if [ ! -e "$ROCM_GDB_ROOT/configure" ] + then + toStdoutStderr "No $ROCM_GDB_ROOT/configure file, skippping rocm-gdb" + exit 0 + fi + local pythonver=python3 + if [[ "$DISTRO_ID" == "ubuntu-18.04" ]]; then + pythonver=python3.8 + fi + + if [[ "$DISTRO_ID" == "centos-9" ]] || [[ "$DISTRO_ID" == "rhel-9.0" ]]; then + fmtutil-user --missing + fi + echo "Building $PROJ_NAME" + mkdir -p "$BUILD_DIR" + cd "$BUILD_DIR" || die "Failed to cd to '$BUILD_DIR'" + + $ROCM_GDB_ROOT/configure --program-prefix=roc --prefix="${ROCM_INSTALL_PATH}" \ + --htmldir="\${prefix}/share/html" --pdfdir="\${prefix}/share/doc/rocgdb" \ + --infodir="\${prefix}/share/info/rocgdb" \ + --with-separate-debug-dir="\${prefix}/lib/debug:/usr/lib/debug" \ + --with-gdb-datadir="\${prefix}/share/rocgdb" --enable-64-bit-bfd \ + --with-bugurl="$BUG_URL" --with-pkgversion="${ROCM_BUILD_ID:-ROCm}" \ + --enable-targets="x86_64-linux-gnu,amdgcn-amd-amdhsa" \ + --disable-ld --disable-gas --disable-gdbserver --disable-sim --enable-tui \ + --disable-gdbtk --disable-shared --disable-gprofng \ + --with-expat --with-system-zlib --without-guile --with-babeltrace --with-lzma \ + --with-python=$pythonver --with-rocm-dbgapi=$ROCM_INSTALL_PATH \ + --with-amd-dbgapi PKG_CONFIG_PATH="${ROCM_INSTALL_PATH}/share/pkgconfig" \ + LDFLAGS="$LDFLAGS" + LD_RUN_PATH='${ORIGIN}/../lib' make $MAKE_OPTS + mkdir -p $BUILD_DIR/package/main${ROCM_INSTALL_PATH}/{share/rocgdb,bin} + + make $MAKE_OPTS -C gdb DESTDIR=$BUILD_DIR/package/main install install-pdf install-html + + make $MAKE_OPTS -C binutils DESTDIR=$BUILD_DIR/package/main install + + linkFiles $ROCM_GDB_ROOT/gdb/NOTICES.txt $BUILD_DIR/package/main${ROCM_INSTALL_PATH}/share/doc/rocgdb + keep_wanted_files + + [ "${CPACKGEN}" = "DEB" ] || package_rpm && package_rpm_tests + [ "${CPACKGEN}" = "RPM" ] || package_deb +} + + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +main(){ + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ; MAKEARG="$MAKEARG REL=1" ;; # For compatability with other scripts + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) #FIXME + MAKETARGET="$2" ; shift 2;; + # I think it would be better to use -- to indicate end of args + # and insert an error message about unknown args at this point. + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac +done + +if [[ $CXX == *"clang++" ]] +then + CXX="$CXX -std=gnu++17" +fi + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + case $TARGET in + ("clean") clean ;; + ("build") build ;; + ("outdir") print_output_directory ;; + (*) die "Invalid target $TARGET" ;; + esac + echo "Operation complete" +} + +if [ "$0" = "$BASH_SOURCE" ] +then + main "$@" +else + set +e +fi diff --git a/rocm-build/build_rocm_bandwidth_test.sh b/rocm-build/build_rocm_bandwidth_test.sh new file mode 100755 index 000000000..4b7ff11e8 --- /dev/null +++ b/rocm-build/build_rocm_bandwidth_test.sh @@ -0,0 +1,155 @@ +#!/bin/bash -x + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +TEST_BIN_DIR="$(getBinPath)" +TEST_NAME="rocm-bandwidth-test" +TEST_UTILS_DIR="$(getUtilsPath)" +TEST_SRC_DIR="rocm_bandwidth_test" +TEST_BLD_DIR="$(getBuildPath $TEST_SRC_DIR)" + +ROCM_PKG_PREFIX="$ROCM_INSTALL_PATH" +TEST_PKG_ROOT="$(getPackageRoot)" +TEST_PKG_DEB="$(getPackageRoot)/deb/$TEST_SRC_DIR" +TEST_PKG_RPM="$(getPackageRoot)/rpm/$TEST_SRC_DIR" + +ROCR_LIB_DIR="$(getPackageRoot)/lib" +ROCR_INC_DIR="$(getPackageRoot)/hsa/include" + +RUN_SCRIPT=$(echo $(basename "${BASH_SOURCE}") | sed "s/build_/run_/") + +TARGET="build" +MAKETARGET="all" +BUILD_TYPE="Debug" +MAKEARG="$DASH_JAY" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; MAKEARG="$MAKEARG REL=1" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; CPACKGEN="${2^^}" ; shift 2;; + --) shift; break;; # end delimiter + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_rocm_bandwidth_test() { + echo "Cleaning $TEST_NAME" + + rm -rf $TEST_BLD_DIR + rm -rf $TEST_PKG_DEB + rm -rf $TEST_PKG_RPM + rm -rf $TEST_BIN_DIR/$TEST_NAME + rm -f $TEST_UTILS_DIR/$RUN_SCRIPT +} + +build_rocm_bandwidth_test() { + + echo "Building $TEST_NAME" + + if [ ! -d "$TEST_BLD_DIR" ]; then + mkdir -p "$TEST_BLD_DIR" + pushd "$TEST_BLD_DIR" + + cmake \ + -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ + -DCMAKE_VERBOSE_MAKEFILE=1 \ + -DCMAKE_INSTALL_PREFIX="$TEST_PKG_ROOT" \ + -DCPACK_PACKAGING_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \ + -DCMAKE_PREFIX_PATH="$ROCM_INSTALL_PATH" \ + $(rocm_common_cmake_params) \ + -DCPACK_GENERATOR="${CPACKGEN:-"DEB;RPM"}" \ + -DROCM_PATCH_VERSION=$ROCM_LIBPATCH_VERSION \ + -DCMAKE_MODULE_PATH="$ROCM_BANDWIDTH_TEST_ROOT/cmake_modules" \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + "$ROCM_BANDWIDTH_TEST_ROOT" + + popd + fi + + echo "Building $TEST_NAME" + cmake --build "$TEST_BLD_DIR" -- $MAKEARG -C $TEST_BLD_DIR + + echo "Installing $TEST_NAME" + cmake --build "$TEST_BLD_DIR" -- $MAKEARG -C $TEST_BLD_DIR install + + echo "Packaging $TEST_NAME" + cmake --build "$TEST_BLD_DIR" -- $MAKEARG -C $TEST_BLD_DIR package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$TEST_PKG_DEB" $TEST_BLD_DIR/*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$TEST_PKG_RPM" $TEST_BLD_DIR/*.rpm + +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${TEST_PKG_DEB};; + ("rpm") + echo ${TEST_PKG_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} +verifyEnvSetup + +case $TARGET in + (clean) clean_rocm_bandwidth_test ;; + (build) build_rocm_bandwidth_test ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocm_smi_lib.sh b/rocm-build/build_rocm_smi_lib.sh new file mode 100755 index 000000000..232c326ba --- /dev/null +++ b/rocm-build/build_rocm_smi_lib.sh @@ -0,0 +1,153 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-32|-h] [makeopts]" + echo + echo "Options:" + echo " -c, --clean Removes all rocm_smi build artifacts" + echo " -r, --release Build non-debug version rocm_smi (default is debug)" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo " -p, --package Specify packaging format" + echo " -32, Build 32b version (default is 64b)" + echo " -h, --help Prints this help" + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +PACKAGE_ROOT="$(getPackageRoot)" +TARGET="build" + +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE="$(getIncludePath)" + +RSMI_BUILD_DIR=$(getBuildPath rsmi) +RSMI_PACKAGE_DEB_DIR="$(getPackageRoot)/deb/rsmi" +RSMI_PACKAGE_RPM_DIR="$(getPackageRoot)/rpm/rsmi" +RSMI_BUILD_TYPE="debug" +BUILD_TYPE="Debug" + +MAKETARGET="deb" +MAKEARG="$DASH_JAY O=$RSMI_BUILD_DIR" +RSMI_MAKE_OPTS="$DASH_JAY O=$RSMI_BUILD_DIR -C $RSMI_BUILD_DIR" +ROCM_SMI_BLD_BITS=64 +RSMI_PKG_NAME_ROOT="rocm-smi-lib" +RSMI_PKG_NAME="${RSMI_PKG_NAME_ROOT}${ROCM_SMI_BLD_BITS}" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +PKGTYPE="deb" + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + # TODO - support standard option of passing cmake environment vars - CFLAGS,CXXFLAGS etc., to enable address sanitizer + ADDRESS_SANITIZER=true ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + (-32) + ROCM_SMI_BLD_BITS="32"; shift ;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean_rsmi() { + rm -rf "$RSMI_BUILD_DIR" + rm -rf "$RSMI_PACKAGE_DEB_DIR" + rm -rf "$RSMI_PACKAGE_RPM_DIR" + rm -rf "$PACKAGE_ROOT/rocm_smi" + rm -rf "$PACKAGE_INCLUDE/rocm_smi" + rm -f $PACKAGE_LIB/librocm_smi${ROCM_SMI_BLD_BITS}.* + rm -f $PACKAGE_LIB/librocm_smi${ROCM_SMI_BLD_BITS}.* + return 0 +} + +build_rsmi() { + echo "Building RSMI" + echo "RSMI_BUILD_DIR: ${RSMI_BUILD_DIR}" + if [ ! -d "$RSMI_BUILD_DIR" ]; then + mkdir -p $RSMI_BUILD_DIR + pushd $RSMI_BUILD_DIR + print_lib_type $SHARED_LIBS + + cmake \ + -DCMAKE_MODULE_PATH="$ROCM_SMI_LIB_ROOT/cmake_modules" \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + $(rocm_common_cmake_params) \ + $(rocm_cmake_params) \ + -DENABLE_LDCONFIG=OFF \ + -DROCM_SMI_PACKAGE="${RSMI_PKG_NAME}" \ + -DCPACK_PACKAGE_VERSION_MAJOR="1" \ + -DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \ + -DCPACK_PACKAGE_VERSION_PATCH="0" \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + -DBUILD_TESTS=ON \ + "$ROCM_SMI_LIB_ROOT" + popd + fi + + echo "Making rocm_smi package:" + cmake --build "$RSMI_BUILD_DIR" -- $RSMI_MAKE_OPTS + cmake --build "$RSMI_BUILD_DIR" -- $RSMI_MAKE_OPTS install + cmake --build "$RSMI_BUILD_DIR" -- $RSMI_MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$RSMI_PACKAGE_DEB_DIR" $RSMI_BUILD_DIR/*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RSMI_PACKAGE_RPM_DIR" $RSMI_BUILD_DIR/*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${RSMI_PACKAGE_DEB_DIR};; + ("rpm") + echo ${RSMI_PACKAGE_RPM_DIR};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean_rsmi ;; + (build) build_rsmi ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" +exit 0 diff --git a/rocm-build/build_rocminfo.sh b/rocm-build/build_rocminfo.sh new file mode 100755 index 000000000..e9d5b03d7 --- /dev/null +++ b/rocm-build/build_rocminfo.sh @@ -0,0 +1,133 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-h] [makeopts]" + echo + echo "Options:" + echo " -c, --clean Removes all rocminfo build artifacts" + echo " -r, --release Build non-debug version rocminfo (default is debug)" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + + +TARGET="build" +ROCMINFO_DEST="$(getBinPath)" +ROCMINFO_SRC_ROOT="$ROCMINFO_ROOT" +ROCMINFO_BUILD_DIR="$(getBuildPath rocminfo)" + +MAKEARG="$DASH_JAY" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_UTILS="$(getUtilsPath)" +ROCMINFO_PACKAGE_DEB="$(getPackageRoot)/deb/rocminfo" +ROCMINFO_PACKAGE_RPM="$(getPackageRoot)/rpm/rocminfo" +BUILD_TYPE="debug" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso:g: --long help,clean,release,static,address_sanitizer,outdir:,gpu_list: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + MAKEARG="$MAKEARG BUILD_TYPE=rel"; BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-g | --gpu_list) + GPU_LIST="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + + +clean_rocminfo() { + echo "Removing rocminfo" + rm -rf $ROCMINFO_DEST/rocminfo + rm -rf $ROCMINFO_BUILD_DIR + rm -rf $ROCMINFO_PACKAGE_DEB + rm -rf $ROCMINFO_PACKAGE_RPM +} + +build_rocminfo() { + if [ ! -d "$ROCMINFO_BUILD_DIR" ]; then + mkdir -p $ROCMINFO_BUILD_DIR + pushd $ROCMINFO_BUILD_DIR + + cmake \ + $(rocm_cmake_params) \ + -DROCRTST_BLD_TYPE="$BUILD_TYPE" \ + $(rocm_common_cmake_params) \ + -DCPACK_PACKAGE_VERSION_MAJOR="1" \ + -DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \ + -DCPACK_PACKAGE_VERSION_PATCH="0" \ + -DCMAKE_SKIP_BUILD_RPATH=TRUE\ + $ROCMINFO_SRC_ROOT + + echo "Making rocminfo:" + cmake --build . -- $MAKEARG + cmake --build . -- $MAKEARG install + cmake --build . -- $MAKEARG package + popd + fi + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$ROCMINFO_PACKAGE_DEB" $ROCMINFO_BUILD_DIR/*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$ROCMINFO_PACKAGE_RPM" $ROCMINFO_BUILD_DIR/*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${ROCMINFO_PACKAGE_DEB};; + ("rpm") + echo ${ROCMINFO_PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +case $TARGET in + (clean) clean_rocminfo ;; + (build) build_rocminfo ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" +exit 0 diff --git a/rocm-build/build_rocmvalidationsuite.sh b/rocm-build/build_rocmvalidationsuite.sh new file mode 100755 index 000000000..6c71a797e --- /dev/null +++ b/rocm-build/build_rocmvalidationsuite.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src ROCmValidationSuite + +ROCM_RVS_LIB_RPATH="\$ORIGIN/.." + +build_rocmvalidationsuite() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd "${COMPONENT_SRC}" + mkdir -p "$BUILD_DIR" + + cmake \ + $(rocm_common_cmake_params) \ + -DFETCH_ROCMPATH_FROM_ROCMCORE=ON \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--rpath,$ROCM_LIB_RPATH:$ROCM_RVS_LIB_RPATH" \ + -B "$BUILD_DIR" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p "${PACKAGE_DIR}" && cp "${BUILD_DIR}"/*."${PKGTYPE}" "${PACKAGE_DIR}" + + show_build_cache_stats +} + +clean_rocmvalidationsuite() { + echo "Cleaning ROCmValidationSuite build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "${BUILD_DIR}" "${PACKAGE_DIR}" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocmvalidationsuite ;; + outdir) print_output_directory ;; + clean) clean_rocmvalidationsuite ;; + *) die "Invalid target ${TARGET}" ;; +esac diff --git a/rocm-build/build_rocprim.sh b/rocm-build/build_rocprim.sh new file mode 100755 index 000000000..e00cd8038 --- /dev/null +++ b/rocm-build/build_rocprim.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rocPRIM + +build_rocprim() { + echo "Start build" + + cd $COMPONENT_SRC + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + ASAN_CMAKE_PARAMS="false" + fi + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX="${ROCM_PATH}/bin/hipcc" \ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DBUILD_BENCHMARK=OFF \ + -DBUILD_BENCHMARK=OFF \ + -DBUILD_TEST=ON \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocprim() { + echo "Cleaning rocPRIM build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocprim ;; + outdir) print_output_directory ;; + clean) clean_rocprim ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocprofiler-register.sh b/rocm-build/build_rocprofiler-register.sh new file mode 100755 index 000000000..c4bcd69c1 --- /dev/null +++ b/rocm-build/build_rocprofiler-register.sh @@ -0,0 +1,139 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: ${BASH_SOURCE##*/} [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME="rocprofiler-register" +PROJ_NAME="$API_NAME" +LIB_NAME="lib${API_NAME}" +TARGET="build" +MAKETARGET="deb" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_LIB="$(getLibPath)" +PACKAGE_INCLUDE="$(getIncludePath)" +BUILD_DIR="$(getBuildPath $API_NAME)" +PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME" +PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME" +PACKAGE_PREFIX="$ROCM_INSTALL_PATH" +BUILD_TYPE="Debug" +MAKE_OPTS="$DASH_JAY -C $BUILD_DIR" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="Release" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean() { + echo "Cleaning $PROJ_NAME" + + rm -rf "$BUILD_DIR" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "$PACKAGE_ROOT/${PROJ_NAME}" + rm -rf "$PACKAGE_LIB/${LIB_NAME}"* +} + +build() { + echo "Building $PROJ_NAME" + + if [ ! -d "$BUILD_DIR" ]; then + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" + print_lib_type $SHARED_LIBS + cmake \ + $(rocm_cmake_params) \ + $(rocm_common_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + -DENABLE_LDCONFIG=OFF \ + -DROCPROFILER_REGISTER_BUILD_CI=1 \ + -DROCPROFILER_REGISTER_BUILD_TESTS=1 \ + -DROCPROFILER_REGISTER_BUILD_SAMPLES=1 \ + "$ROCPROFILER_REGISTER_ROOT" + popd + fi + make $MAKE_OPTS + make $MAKE_OPTS install + make $MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case "$TARGET" in + (clean) clean ;; + (build) build ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocprofiler.sh b/rocm-build/build_rocprofiler.sh new file mode 100755 index 000000000..d7be08e5c --- /dev/null +++ b/rocm-build/build_rocprofiler.sh @@ -0,0 +1,179 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: ${BASH_SOURCE##*/} [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME="rocprofiler" +PROJ_NAME="$API_NAME" +LIB_NAME="lib${API_NAME}" +TARGET="build" +MAKETARGET="deb" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_LIB="$(getLibPath)" +PACKAGE_INCLUDE="$(getIncludePath)" +BUILD_DIR="$(getBuildPath $API_NAME)" +PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME" +PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME" +PACKAGE_PREFIX="$ROCM_INSTALL_PATH" +BUILD_TYPE="Debug" +MAKE_OPTS="$DASH_JAY -C $BUILD_DIR" +SHARED_LIBS="ON" +CLEAN_OR_OUT=0 +MAKETARGET="deb" +PKGTYPE="deb" +GPU_LIST="gfx900,gfx906,gfx908,gfx90a,gfx940,gfx941,gfx942,gfx1030,gfx1100,gfx1101,gfx1102" + +VALID_STR=$(getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@") +eval set -- "$VALID_STR" + +while true; do + case "$1" in + -h | --help) + printUsage + exit 0 + ;; + -c | --clean) + TARGET="clean" + ((CLEAN_OR_OUT |= 1)) + shift + ;; + -r | --release) + BUILD_TYPE="RelWithDebInfo" + shift + ;; + -a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + shift + ;; + -s | --static) + SHARED_LIBS="OFF" + shift + ;; + -o | --outdir) + TARGET="outdir" + PKGTYPE=$2 + OUT_DIR_SPECIFIED=1 + ((CLEAN_OR_OUT |= 2)) + shift 2 + ;; + -p | --package) + MAKETARGET="$2" + shift 2 + ;; + --) + shift + break + ;; + *) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2 + exit 20 + ;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean() { + echo "Cleaning $PROJ_NAME" + rm -rf "$BUILD_DIR" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "$PACKAGE_ROOT/${PROJ_NAME}" + rm -rf "$PACKAGE_ROOT/libexec/${PROJ_NAME}" + rm -rf "$PACKAGE_INCLUDE/${PROJ_NAME}" + rm -rf "$PACKAGE_LIB/${LIB_NAME}"* + rm -rf "$PACKAGE_LIB/${PROJ_NAME}" +} + +build_rocprofiler() { + echo "Building $PROJ_NAME" + + sed -i 's/set(CPACK_GENERATOR "DEB" "RPM" "TGZ")/set(CPACK_GENERATOR "DEB" "TGZ")/' "${ROCPROFILER_ROOT}/CMakeLists.txt" + + PACKAGE_CMAKE="$(getCmakePath)" + if [ ! -d "$BUILD_DIR" ]; then + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" + print_lib_type $SHARED_LIBS + + cmake \ + $(rocm_cmake_params) \ + -DCMAKE_MODULE_PATH="$ROCPROFILER_ROOT/cmake_modules;$PACKAGE_CMAKE/hip" \ + $(rocm_common_cmake_params) \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + -DENABLE_LDCONFIG=OFF \ + -DUSE_PROF_API=1 \ + -DGPU_TARGETS="$GPU_LIST" \ + -DPROF_API_HEADER_PATH="$WORK_ROOT/roctracer/inc/ext" \ + -DHIP_HIPCC_FLAGS=$HIP_HIPCC_FLAGS";--offload-arch=$GPU_LIST" \ + -DCPACK_OBJCOPY_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objcopy" \ + -DCPACK_READELF_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-readelf" \ + -DCPACK_STRIP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-strip" \ + -DCPACK_OBJDUMP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objdump" \ + "$ROCPROFILER_ROOT" + + popd + fi + cmake --build "$BUILD_DIR" -- $MAKE_OPTS + cmake --build "$BUILD_DIR" -- $MAKE_OPTS mytest + cmake --build "$BUILD_DIR" -- $MAKE_OPTS install + cmake --build "$BUILD_DIR" -- $MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + "deb") + echo ${PACKAGE_DEB} + ;; + "rpm") + echo ${PACKAGE_RPM} + ;; + *) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2 + exit 1 + ;; + esac + exit +} + +verifyEnvSetup + +case "$TARGET" in +clean) clean ;; +build) build_rocprofiler ;; +outdir) print_output_directory ;; +*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocr_debug_agent.sh b/rocm-build/build_rocr_debug_agent.sh new file mode 100755 index 000000000..7a57284c7 --- /dev/null +++ b/rocm-build/build_rocr_debug_agent.sh @@ -0,0 +1,153 @@ +#!/bin/bash +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +API_NAME=rocm-debug-agent +PROJ_NAME=$API_NAME +LIB_NAME=lib${API_NAME}.so +TARGET=build +MAKETARGET=deb +PACKAGE_ROOT=$(getPackageRoot) +PACKAGE_BIN="$(getBinPath)" +PACKAGE_LIB=$(getLibPath) +PACKAGE_INCLUDE=$(getIncludePath) +BUILD_DIR=$(getBuildPath $API_NAME) +PACKAGE_DEB=$(getPackageRoot)/deb/$API_NAME +PACKAGE_RPM=$(getPackageRoot)/rpm/$API_NAME +PACKAGE_PREFIX=$ROCM_INSTALL_PATH +BUILD_TYPE=Debug +MAKE_OPTS="$DASH_JAY -C" + +TEST_PACKAGE_DIR="$(getBinPath)/rocm-debug-agent-test" +PACKAGE_UTILS=$(getUtilsPath) + +BC_DIR="$PACKAGE_ROOT/lib/bitcode" +if [ -d "$BC_DIR" ] ; then + export DEVICE_LIB_PATH=$BC_DIR +fi + + +SHARED_LIBS="ON" +CLEAN_OR_OUT=0; +MAKETARGET="deb" +PKGTYPE="deb" + + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s | --static) + SHARED_LIBS="OFF" ; shift ;; + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean() { + echo "Cleaning $PROJ_NAME" + rm -rf $BUILD_DIR + rm -rf $TEST_PACKAGE_DIR + rm -rf $PACKAGE_DEB + rm -rf $PACKAGE_RPM + rm -rf $PACKAGE_ROOT/${PROJ_NAME} + rm -rf $PACKAGE_LIB/${LIB_NAME}* + rm -f $PACKAGE_UTILS/run_rocr_debug_agent_test.sh +} + +build() { + echo "Building $PROJ_NAME" + + PACKAGE_CMAKE="$(getCmakePath)" + export HIPCC_COMPILE_FLAGS_APPEND="--rocm-path=$ROCM_PATH" + if [ ! -d "$BUILD_DIR" ]; then + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" + + cmake $(rocm_cmake_params) \ + -DCMAKE_PREFIX_PATH="$PACKAGE_CMAKE/amd-dbgapi" \ + -DCMAKE_MODULE_PATH="$PACKAGE_CMAKE/hip" \ + $(rocm_common_cmake_params) \ + -DCMAKE_HIP_ARCHITECTURES=OFF \ + $ROCR_DEBUG_AGENT_ROOT + + popd + fi + cmake --build "$BUILD_DIR" -- $MAKE_OPTS $BUILD_DIR + cmake --build "$BUILD_DIR" -- $MAKE_OPTS $BUILD_DIR install + cmake --build "$BUILD_DIR" -- $MAKE_OPTS $BUILD_DIR package + + mkdir -p $PACKAGE_LIB + cp -R $BUILD_DIR/${LIB_NAME}* $PACKAGE_LIB + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DEB}" "$BUILD_DIR/${API_NAME}"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_RPM}" "$BUILD_DIR/${API_NAME}"*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${PACKAGE_DEB};; + ("rpm") + echo ${PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean ;; + (build) build ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $target" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocrand.sh b/rocm-build/build_rocrand.sh new file mode 100755 index 000000000..8e7aa13af --- /dev/null +++ b/rocm-build/build_rocrand.sh @@ -0,0 +1,66 @@ +#!/bin/bash +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rocRAND + +build_rocrand() { + echo "Start build" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + cd $COMPONENT_SRC && mkdir "$BUILD_DIR" + + remote_name=$(git remote show | head -n 1) + [ "$remote_name" == "origin" ] || git remote rename "$remote_name" origin + git submodule update --init --force + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DBUILD_TEST=ON \ + -DBUILD_BENCHMARK=ON \ + -DBUILD_CRUSH_TEST=ON \ + -DDEPENDENCIES_FORCE_DOWNLOAD=OFF \ + -DHIP_COMPILER=clang \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip" \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -B "${BUILD_DIR}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocrand() { + echo "Cleaning rocRAND build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocrand ;; + outdir) print_output_directory ;; + clean) clean_rocrand ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocsolver.sh b/rocm-build/build_rocsolver.sh new file mode 100755 index 000000000..fbffc5dfd --- /dev/null +++ b/rocm-build/build_rocsolver.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rocSOLVER + +build_rocsolver() { + echo "Start build" + + cd $COMPONENT_SRC + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + rebuild_lapack + fi + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX="${ROCM_PATH}/bin/hipcc" \ + cmake \ + -DCPACK_SET_DESTDIR=OFF \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -Drocblas_DIR="${ROCM_PATH}/rocblas/lib/cmake/rocblas" \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_TESTING=ON \ + -DBUILD_CLIENTS_EXTRA_TESTS=ON \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocsolver() { + echo "Cleaning rocSOLVER build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocsolver ;; + outdir) print_output_directory ;; + clean) clean_rocsolver ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocsparse.sh b/rocm-build/build_rocsparse.sh new file mode 100755 index 000000000..2426b98c9 --- /dev/null +++ b/rocm-build/build_rocsparse.sh @@ -0,0 +1,68 @@ + + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +PATH=${ROCM_PATH}/bin:$PATH +set_component_src rocSPARSE + +build_rocsparse() { + echo "Start build" + + cd $COMPONENT_SRC + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + MIRROR="http://compute-artifactory.amd.com/artifactory/list/rocm-generic-local/mathlib/sparse/" + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + ROCSPARSE_TEST_MIRROR=$MIRROR \ + CXX=$(set_build_variables CXX)\ + CC=$(set_build_variables CC)\ + cmake \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DBUILD_CLIENTS_SAMPLES=ON \ + -DBUILD_CLIENTS_TESTS=ON \ + -DBUILD_CLIENTS_BENCHMARKS=ON \ + -DCPACK_SET_DESTDIR=OFF \ + -DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \ + -DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + show_build_cache_stats +} + +clean_rocsparse() { + echo "Cleaning rocSPARSE build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocsparse ;; + outdir) print_output_directory ;; + clean) clean_rocsparse ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rocthrust.sh b/rocm-build/build_rocthrust.sh new file mode 100755 index 000000000..cd7cc16e4 --- /dev/null +++ b/rocm-build/build_rocthrust.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +set -ex + +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +ENABLE_ADDRESS_SANITIZER=false +build_release=true +set_component_src rocThrust + +build_rocthrust() { + echo "Start build" + + cd $COMPONENT_SRC + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + ASAN_CMAKE_PARAMS="false" + fi + + mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR" + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101" + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + ${LAUNCHER_FLAGS} \ + $(rocm_common_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \ + -DROCPRIM_ROOT="${ROCM_PATH}/rocprim" \ + -DBUILD_TEST=ON \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + + + show_build_cache_stats +} + +clean_rocthrust() { + echo "Cleaning rocThrust build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + (clean) clean_rocthrust ;; + (build) build_rocthrust ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_roctracer.sh b/rocm-build/build_roctracer.sh new file mode 100755 index 000000000..b64b4e71e --- /dev/null +++ b/rocm-build/build_roctracer.sh @@ -0,0 +1,180 @@ +#!/bin/bash +source "$(dirname $BASH_SOURCE)/compute_utils.sh" + +printUsage() { + echo + echo "Usage: ${BASH_SOURCE##*/} [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of + type referred to by pkg_type" + echo " -h, --help Prints this help" + echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) " + echo + + return 0 +} + +API_NAME="roctracer" +PROJ_NAME="$API_NAME" +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_INCLUDE="$(getIncludePath)" +BUILD_DIR="$(getBuildPath $API_NAME)" +PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME" +PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME" +PACKAGE_PREFIX="$ROCM_INSTALL_PATH" + +export HIP_PATH="${ROCM_INSTALL_PATH}" +export HCC_HOME="${PACKAGE_ROOT}/hcc" + +TARGET="build" +BUILD_TYPE="Debug" +MAKE_OPTS="$DASH_JAY -C $BUILD_DIR" +HIP_VDI=1 +SHARED_LIBS="ON" +CLEAN_OR_OUT=0 +MAKETARGET="deb" +PKGTYPE="deb" + +GPU_LIST="gfx900;gfx906;gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100;gfx1101;gfx1102" + +VALID_STR=$(getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@") +eval set -- "$VALID_STR" + +while true; do + case "$1" in + -h | --help) + printUsage + exit 0 + ;; + -c | --clean) + TARGET="clean" + ((CLEAN_OR_OUT |= 1)) + shift + ;; + -r | --release) + BUILD_TYPE="RelWithDebInfo" + shift + ;; + -a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on + shift + ;; + -s | --static) + SHARED_LIBS="OFF" + shift + ;; + -o | --outdir) + TARGET="outdir" + PKGTYPE=$2 + OUT_DIR_SPECIFIED=1 + ((CLEAN_OR_OUT |= 2)) + shift 2 + ;; + --) + shift + break + ;; + *) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2 + exit 20 + ;; + esac + +done + +RET_CONFLICT=1 +check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET +if [ $RET_CONFLICT -ge 30 ]; then + print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET + exit $RET_CONFLICT +fi + +clean() { + echo "Cleaning $PROJ_NAME" + rm -rf "$BUILD_DIR" + rm -rf "$PACKAGE_DEB" + rm -rf "$PACKAGE_RPM" + rm -rf "$PACKAGE_INCLUDE/${PROJ_NAME}" + rm -rf "$PACKAGE_ROOT/${PROJ_NAME}" +} + +copy_libs_to_workspace() { + if [ "$ASAN_CMAKE_PARAMS" != "true" ]; then + cp -R "${ROCM_INSTALL_PATH}/lib/roctracer/" "${OUT_DIR}/lib/roctracer/" + fi +} + +build() { + echo "Building $PROJ_NAME" + PACKAGE_CMAKE="$(getCmakePath)" + export ROCM_PATH="${ROCM_INSTALL_PATH}" + export HIPCC_COMPILE_FLAGS_APPEND="--rocm-path=$ROCM_PATH" + + if [ ! -d "$BUILD_DIR" ]; then + mkdir -p "$BUILD_DIR" + pushd "$BUILD_DIR" + print_lib_type $SHARED_LIBS + export HIPCC_COMPILE_FLAGS_APPEND="--rocm-path=$ROCM_PATH --offload-arch=gfx900 --offload-arch=gfx906 --offload-arch=gfx908 \ + --offload-arch=gfx90a --offload-arch=gfx940 --offload-arch=gfx1030 \ + --offload-arch=gfx1100 --offload-arch=gfx1101 --offload-arch=gfx1102" + + cmake $(rocm_cmake_params) \ + -DCPACK_PACKAGING_INSTALL_PREFIX="$PACKAGE_PREFIX/$PROJ_NAME" \ + -DCMAKE_MODULE_PATH="$PACKAGE_CMAKE/hip" \ + -DCMAKE_HIP_ARCHITECTURES=OFF \ + -DBUILD_SHARED_LIBS=$SHARED_LIBS \ + $(rocm_common_cmake_params) \ + -DCMAKE_HIP_ARCHITECTURES=OFF \ + -DENABLE_LDCONFIG=OFF \ + -DROCM_ROOT_DIR="$ROCM_INSTALL_PATH" \ + -DHIP_VDI="$HIP_VDI" \ + -DROCM_RPATH="$ROCM_RPATH" \ + -DGPU_TARGETS="$GPU_LIST" \ + -DCPACK_OBJCOPY_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objcopy" \ + -DCPACK_READELF_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-readelf" \ + -DCPACK_STRIP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-strip" \ + -DCPACK_OBJDUMP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objdump" \ + "$ROCTRACER_ROOT" + + popd + fi + cmake --build "$BUILD_DIR" -- $MAKE_OPTS + cmake --build "$BUILD_DIR" -- $MAKE_OPTS mytest + cmake --build "$BUILD_DIR" -- $MAKE_OPTS doc + cmake --build "$BUILD_DIR" -- $MAKE_OPTS install + cmake --build "$BUILD_DIR" -- $MAKE_OPTS package + + copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb + copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm +} + +print_output_directory() { + case ${PKGTYPE} in + "deb") + echo ${PACKAGE_DEB} + ;; + "rpm") + echo ${PACKAGE_RPM} + ;; + *) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2 + exit 1 + ;; + esac + exit +} +verifyEnvSetup + +case $TARGET in +clean) clean ;; +build) build && copy_libs_to_workspace ;; +outdir) print_output_directory ;; +*) die "$BASH_SOURCE Invalid target $TARGET - exiting" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/build_rocwmma.sh b/rocm-build/build_rocwmma.sh new file mode 100755 index 000000000..54eca1a11 --- /dev/null +++ b/rocm-build/build_rocwmma.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rocWMMA + +build_rocwmma() { + echo "Start build" + + if [ ! -e $COMPONENT_SRC/CMakeLists.txt ]; then + echo "Skipping rocWMMA as source is not available" + mkdir -p $COMPONENT_SRC + exit 0 + fi + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + ASAN_CMAKE_PARAMS="false" + fi + mkdir -p $BUILD_DIR && cd $BUILD_DIR + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908:xnack-;gfx90a:xnack-;gfx90a:xnack+;gfx940;gfx941;gfx942;gfx1100;gfx1101" + fi + + CXX=$(set_build_variables CXX)\ + cmake \ + $(rocm_common_cmake_params) \ + ${LAUNCHER_FLAGS} \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DROCWMMA_BUILD_VALIDATION_TESTS=ON \ + -DROCWMMA_VALIDATE_WITH_ROCBLAS=ON \ + -DROCWMMA_BUILD_BENCHMARK_TESTS=ON \ + -DROCWMMA_BENCHMARK_WITH_ROCBLAS=ON \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cmake --build "$BUILD_DIR" -- package + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + show_build_cache_stats +} + +clean_rocwmma() { + echo "Cleaning rocWMMA build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rocwmma ;; + outdir) print_output_directory ;; + clean) clean_rocwmma ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_rpp.sh b/rocm-build/build_rpp.sh new file mode 100755 index 000000000..b1051a9d8 --- /dev/null +++ b/rocm-build/build_rpp.sh @@ -0,0 +1,78 @@ +#!/bin/bash + +set -ex +source "$(dirname "${BASH_SOURCE[0]}")/compute_helper.sh" + +set_component_src rpp +DEPS_DIR="$RPP_DEPS_LOCATION" + +LLVM_LIBDIR="${ROCM_PATH}/llvm/lib" +ROCM_LLVM_LIB_RPATH="\$ORIGIN/llvm/lib" + +rpp_specific_cmake_params() { + local rpp_cmake_params + if [ "${ASAN_CMAKE_PARAMS}" == "true" ] ; then + rpp_cmake_params="-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_EXE_RPATH:$LLVM_LIBDIR" + else + rpp_cmake_params="" + fi + printf '%s ' "${rpp_cmake_params}" +} + +build_rpp() { + echo "Start build" + + if [ ! -e $COMPONENT_SRC/CMakeLists.txt ]; then + echo "Skipping RPP build as source is not available" + mkdir -p $COMPONENT_SRC + exit 0 + fi + + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then + set_asan_env_vars + set_address_sanitizer_on + fi + + mkdir -p $BUILD_DIR && cd $BUILD_DIR + + if [ -n "$GPU_ARCHS" ]; then + GPU_TARGETS="$GPU_ARCHS" + else + GPU_TARGETS="gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1100" + fi + + cmake \ + $(rocm_common_cmake_params) \ + ${LAUNCHER_FLAGS} \ + -DBACKEND=HIP \ + -DCMAKE_INSTALL_LIBDIR=$(getInstallLibDir) \ + $(rpp_specific_cmake_params) \ + -DAMDGPU_TARGETS=${GPU_TARGETS} \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fno-openmp-implicit-rpath -Wl,--enable-new-dtags,--rpath,${ROCM_LIB_RPATH}:${DEPS_DIR}/lib:${ROCM_LLVM_LIB_RPATH}" \ + -DCMAKE_PREFIX_PATH="${DEPS_DIR};${ROCM_PATH}" \ + "$COMPONENT_SRC" + + cmake --build "$BUILD_DIR" -- -j${PROC} + cmake --build "$BUILD_DIR" -- install + cpack -G ${PKGTYPE^^} + + rm -rf _CPack_Packages/ && find -name '*.o' -delete + mkdir -p $PACKAGE_DIR + cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR + show_build_cache_stats +} + +clean_rpp() { + echo "Cleaning rpp build directory: ${BUILD_DIR} ${PACKAGE_DIR}" + rm -rf "$BUILD_DIR" "$PACKAGE_DIR" + echo "Done!" +} + +stage2_command_args "$@" + +case $TARGET in + build) build_rpp ;; + outdir) print_output_directory ;; + clean) clean_rpp ;; + *) die "Invalid target $TARGET" ;; +esac diff --git a/rocm-build/build_thunk.sh b/rocm-build/build_thunk.sh new file mode 100755 index 000000000..5e2f58ff9 --- /dev/null +++ b/rocm-build/build_thunk.sh @@ -0,0 +1,205 @@ +#!/bin/bash + +source "$(dirname "${BASH_SOURCE}")/compute_utils.sh" + +printUsage() { + echo + echo "Usage: $(basename "${BASH_SOURCE}") [options ...]" + echo + echo "Options:" + echo " -c, --clean Clean output and delete all intermediate work" + echo " -p, --package Specify packaging format" + echo " -r, --release Make a release build instead of a debug build" + echo " -a, --address_sanitizer Enable address sanitizer" + echo " -o, --outdir Print path of output directory containing packages of type referred to by pkg_type" + echo " -h, --help Prints this help" + echo + echo "Possible values for :" + echo " deb -> Debian format (default)" + echo " rpm -> RPM format" + echo + + return 0 +} + +PACKAGE_ROOT="$(getPackageRoot)" +PACKAGE_DEB="$(getPackageRoot)/deb/libhsakmt" +PACKAGE_RPM="$(getPackageRoot)/rpm/libhsakmt" +THUNK_BUILD_DIR="$(getBuildPath thunk)" +TARGET="build" +MAKETARGET="deb" +MAKEARG="$DASH_JAY O=$THUNK_BUILD_DIR" +PACKAGE_LIB="$(getLibPath)" +PACKAGE_INCLUDE="$(getIncludePath)" + +ROCT_BUILD_DIR="$(getBuildPath roct)" +ROCT_PACKAGE_DEB="$(getPackageRoot)/deb/roct" +ROCT_PACKAGE_RPM="$(getPackageRoot)/rpm/roct" +ROCT_BUILD_TYPE="debug" +BUILD_TYPE="Debug" +ROCT_MAKE_OPTS="$DASH_JAY -C $ROCT_BUILD_DIR" +CLEAN_OR_OUT=0; + +print_vars() { +echo " Var status thunk " +echo "TARGET= $TARGET" +echo "BUILD_TYPE = $BUILD_TYPE" +echo "MAKETARGE = $MAKETARGET" +echo "CLEAN_OR_OUT = $CLEAN_OR_OUT" +echo "PKGTYPE= $PKGTYPE" +} + +check_conflicting_options() { + + if [ "$MAKETARGET" != "deb" ] && [ "$MAKETARGET" != "rpm" ] && [ "$MAKETARGET" != "tar" ]; then + echo " Wrong Param Passed for Package Type. Aborting .. " + print_vars + exit 30 + fi + + if [ $CLEAN_OR_OUT -ge 2 ]; then + if [ "$PKGTYPE" != "deb" ] && [ "$PKGTYPE" != "rpm" ] && [ "$PKGTYPE" != "tar" ]; then + echo " Wrong Param Passed for Package Type for the Outdir. Aborting .. " + print_vars + exit 40 + fi + fi + + if [ $CLEAN_OR_OUT -ge 3 ]; then + echo " Clean & Out Both are sepcified. Not accepted. Bailing .. " + exit 50 + fi +} + +VALID_STR=`getopt -o hcraso:p: --long help,clean,release,address_sanitizer,clean,outdir:,package: -- "$@"` +eval set -- "$VALID_STR" + +while true ; +do + case "$1" in + (-h | --help) + printUsage ; exit 0;; + (-c | --clean) + TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;; + (-r | --release) + BUILD_TYPE="RelWithDebInfo" ; shift ;; + (-a | --address_sanitizer) + set_asan_env_vars + set_address_sanitizer_on ; shift ;; + (-s) + shift ;; # Static build requested, NO-OP for this package. Required for static Jenkins builds + (-o | --outdir) + TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;; + (-p | --package) + MAKETARGET="$2" ; shift 2;; + --) shift; break;; + (*) + echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;; + esac + +done + +check_conflicting_options + + +clean_roct() { + rm -rf "$ROCT_BUILD_DIR" + rm -rf "$ROCT_PACKAGE_DEB" + rm -rf "$ROCT_PACKAGE_RPM" + rm -rf "$PACKAGE_ROOT/libhsakmt" + rm -rf "$PACKAGE_INCLUDE/libhsakmt" + rm -f $PACKAGE_LIB/libhsakmt.so* + rm -f $PACKAGE_LIB/libhsakmt.a + rm -f $PACKAGE_INCLUDE/hsakmt*.h $PACKAGE_INCLUDE/linux/kfd_ioctl.h +} + +build_roct() { + echo "Building ROCt" + + rm -f $ROCT_BUILD_DIR/hsakmt-roct*.deb + rm -f $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.deb + rm -f "$ROCT_PACKAGE_DEB"/* + + rm -f $ROCT_BUILD_DIR/hsakmt-roct*.rpm + rm -f $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.rpm + rm -f "$ROCT_PACKAGE_RPM"/* + + if [ "${DISTRO_ID}" = "centos-7" ]; then + libdrm_cmake_var="-DHSAKMT_REQUIRES_LIBDRM=true" + fi + + if [ ! -d "$ROCT_BUILD_DIR" ]; then + mkdir -p "$ROCT_BUILD_DIR" + pushd "$ROCT_BUILD_DIR" + + cmake \ + -DCMAKE_MODULE_PATH="$THUNK_ROOT/cmake_modules" \ + -DBUILD_SHARED_LIBS="OFF" \ + $(rocm_cmake_params) \ + $(rocm_common_cmake_params) \ + -DHSAKMT_INSTALL_PREFIX="$PACKAGE_ROOT" \ + -DHSAKMT_INSTALL_LIBDIR="$PACKAGE_LIB" \ + -DHSAKMT_PACKAGING_INSTALL_PREFIX="$ROCM_PATH" \ + -DENABLE_LDCONFIG=OFF \ + -DHSAKMT_WERROR=1 \ + -DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \ + $libdrm_cmake_var \ + "$THUNK_ROOT" + popd + fi + cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS + cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS install + cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS package + + if [ -e "$THUNK_ROOT/hsakmt-dev.txt" ]; then + cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS install-dev + cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS package-dev + fi + + mkdir -p "$PACKAGE_LIB" + if [ -e "$ROCT_BUILD_DIR/libhsakmt.so" ]; then + cp -R "$ROCT_BUILD_DIR/libhsakmt.so"* "$PACKAGE_LIB" + fi + if [ -e "$ROCT_BUILD_DIR/libhsakmt.a" ]; then + cp -R "$ROCT_BUILD_DIR/libhsakmt.a" "$PACKAGE_LIB" + fi + + mkdir -p "$ROCT_PACKAGE_DEB" + if [[ "${CPACKGEN:-"DEB;RPM"}" =~ "DEB" ]] ; then + cp -a $ROCT_BUILD_DIR/hsakmt*.deb "$ROCT_PACKAGE_DEB" + if [ -e "$THUNK_ROOT/hsakmt-dev.txt" ]; then + cp -a $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.deb "$ROCT_PACKAGE_DEB" + fi + fi + + mkdir -p "$ROCT_PACKAGE_RPM" + if [[ "${CPACKGEN:-"DEB;RPM"}" =~ "RPM" ]] ; then + cp -a $ROCT_BUILD_DIR/hsakmt*.rpm "$ROCT_PACKAGE_RPM" + if [ -e "$THUNK_ROOT/hsakmt-dev.txt" ]; then + cp -a $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.rpm "$ROCT_PACKAGE_RPM" + fi + fi +} + +print_output_directory() { + case ${PKGTYPE} in + ("deb") + echo ${ROCT_PACKAGE_DEB};; + ("rpm") + echo ${ROCT_PACKAGE_RPM};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +verifyEnvSetup + +case $TARGET in + (clean) clean_roct ;; + (build) build_roct ;; + (outdir) print_output_directory ;; + (*) die "Invalid target $TARGET" ;; +esac + +echo "Operation complete" diff --git a/rocm-build/ccache-env-mathlib.sh b/rocm-build/ccache-env-mathlib.sh new file mode 100755 index 000000000..eae60dec3 --- /dev/null +++ b/rocm-build/ccache-env-mathlib.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# set ccache environment variable for math libraries +if [ "${CCACHE_ENABLED}" == "true" ] && [ -f "${OUT_DIR}"/logs/lightning ]; then + export LAUNCHER_FLAGS="-DCMAKE_CXX_COMPILER_LAUNCHER=/usr/local/bin/ccache -DCMAKE_C_COMPILER_LAUNCHER=/usr/local/bin/ccache" + export CCACHE_IGNOREHEADERS=${ROCM_PATH}/include:${ROCM_PATH}/llvm/include:${ROCM_PATH}/lib/llvm/lib/clang/17/include:${ROCM_PATH}/lib/llvm/include + export CCACHE_COMPILERCHECK=none + export CCACHE_EXTRAFILES=${OUT_DIR}/rocm_compilers_hash_file +fi diff --git a/rocm-build/compute_helper.sh b/rocm-build/compute_helper.sh new file mode 100755 index 000000000..08412ad4c --- /dev/null +++ b/rocm-build/compute_helper.sh @@ -0,0 +1,284 @@ +#!/bin/bash + +# compute_helper.sh is created to add common functions similar to compute_utils.sh in stg1 +# stg2 build scripts can make use of common function +# TODO: Component build scripts can be optimized by adding common function in this file(ex for ASAN, Debugging etc) +# All build scripts should use the common function. + +set -e +set -o pipefail +# Set the LLVM directory path with respect to ROCM_PATH +# LLVM is installed in $ROCM_PATH/lib/llvm +ROCM_LLVMDIR="lib/llvm" +# Set ADDRESS_SANITIZER to OFF by default +export ADDRESS_SANITIZER="OFF" +# Print message to stderr +# param message string to print on exit +# Example: printErr "file not found" +printErr() { + echo "$@" 1>&2 +} + +# Print message to stderr and terminate current program +# param message string to print on exit +# Example: die "Your program" has terminated +die() { + printErr "FATAL: $@" + exit 1 +} + +# Die if first argument is empty +# param string to validate +# param error message +# Example: die "$VARIABLE" "Your program" has terminated +dieIfEmpty() { + if [ "$1" == "" ]; then + shift + die "$@" + fi +} + +# Copy a file or directory to target location and show single line progress +progressCopy() { + if [ -d "$1" ]; then + rsync -a "$1"/* "$2" + else + rsync -a "$1" "$2" + fi +} + +# Get OS identification string +# xargs will remove the trailing whitespaces +getOsVersion() { + lsb_release -d | cut -d: -f2 | xargs +} + +# Get kernel identification string +getKernelVersion() { + uname -r +} + +# Trim excessive whitespace from a string +strTrim() { + echo "$@" | xargs +} + +# Return whether the booted OS is Fedora or not +isFedora() { + grep -iq fedora /etc/os-release +} + +# Return whether the booted system is EFI or not +isEFI() { + [ -d "/sys/firmware/efi" ] +} + +print_lib_type() { + if [ "$1" == "OFF" ]; + then + echo " Building Archive " + else + echo " Building Shared Object " + fi +} + +# Get CMAKE build flags for CMAKE build trigger +set_build_variables() { + local cmake_cxx_flag_params + local cmake_cc_flag_params + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ] ; then + cmake_cxx_flag_params="$ROCM_PATH/llvm/bin/clang++" + cmake_cc_flag_params="$ROCM_PATH/llvm/bin/clang" + cmake_comp_params=( + "-DCMAKE_C_COMPILER=$ROCM_PATH/llvm/bin/clang" + "-DCMAKE_CXX_COMPILER=$ROCM_PATH/llvm/bin/clang++" + ) + else + cmake_cxx_flag_params="$ROCM_PATH/bin/hipcc" + cmake_cc_flag_params="$ROCM_PATH/bin/hipcc" + cmake_comp_params=( + "-DCMAKE_C_COMPILER=$ROCM_PATH/bin/hipcc" + "-DCMAKE_CXX_COMPILER=$ROCM_PATH/bin/hipcc" + ) + fi + + case "$1" in + ("CXX") + printf "%s" "${cmake_cxx_flag_params}" + ;; + ("CC") + printf "%s" "${cmake_cc_flag_params}" + ;; + ("CMAKE_C_CXX") + printf '%s ' "${cmake_comp_params[@]}" + ;; + (*) + exit 1 + ;; + esac + exit +} + +# Get the directory containing the cmake config files +getCmakePath() { + local rocmInstallPath=${ROCM_PATH} + local cmakePath="lib/cmake" + dieIfEmpty "$rocmInstallPath" + echo "$rocmInstallPath/$cmakePath" +} + +# Get the install directory name for libraries +# lib - For normal builds +# lib/asan -For ASAN builds +getInstallLibDir() { + local libDir="lib" + if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ] ; then + libDir="lib/asan" + fi + echo "$libDir" +} + +# TODO: Use the function to set the LDFLAGS and CXXFLAGS for ASAN +# rather than setting in individual build scripts +set_asan_env_vars() { + # Flag to set cmake build params for ASAN builds + ASAN_CMAKE_PARAMS="true" + export ADDRESS_SANITIZER="ON" + LLVM_BIN_DIR="${ROCM_PATH}/llvm/bin" + export CC="$LLVM_BIN_DIR/clang" + export CXX="$LLVM_BIN_DIR/clang++" + export FC="$LLVM_BIN_DIR/flang" + export PATH="$LLVM_BIN_DIR/:$PATH" + # get exact path to ASAN lib containing clang version + ASAN_LIB_PATH=$(clang --print-file-name=libclang_rt.asan-x86_64.so) + export LD_LIBRARY_PATH="${ASAN_LIB_PATH%/*}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + export ASAN_OPTIONS="detect_leaks=0" +} + +set_address_sanitizer_on() { + export CFLAGS="-fsanitize=address -shared-libasan -g -gz" + export CXXFLAGS="-fsanitize=address -shared-libasan -g -gz" + export LDFLAGS="-Wl,--enable-new-dtags -fuse-ld=lld -fsanitize=address -shared-libasan -g -gz -Wl,--build-id=sha1 -L${ROCM_PATH}/lib/asan" +} + +rebuild_lapack() { + wget -nv -O lapack-3.9.1.tar.gz \ + http://compute-artifactory.amd.com/artifactory/rocm-generic-thirdparty-deps/ubuntu/lapack-v3.9.1.tar.gz + sh -c "echo 'd0085d2caf997ff39299c05d4bacb6f3d27001d25a4cc613d48c1f352b73e7e0 *lapack-3.9.1.tar.gz' | sha256sum -c" + tar xzf lapack-3.9.1.tar.gz --one-top-level=lapack-src --strip-components 1 + rm lapack-3.9.1.tar.gz + + cmake -Slapack-src -Blapack-bld \ + ${LAUNCHER_FLAGS} \ + -DBUILD_TESTING=OFF \ + -DCBLAS=ON \ + -DLAPACKE=OFF + cmake --build lapack-bld -- -j${PROC} + cmake --build lapack-bld -- install + rm -r lapack-src lapack-bld +} + +# debug function #dumping values in case of error to solve the same +print_vars() { +echo " Status of Vars in $1 build " +echo " TARGET= $2 " +echo " BUILD_TYPE = $3 " +echo " SHARED_LIBS = $4 " +echo " CLEAN_OR_OUT = $5 " +echo " PKGTYPE= $6 " +echo " MAKETARGET = $7 " +} + +# Common cmake parameters can be set +# component build scripts can use this function +rocm_common_cmake_params() { + local cmake_params + if [ "${ASAN_CMAKE_PARAMS}" == "true" ] ; then + local ASAN_LIBDIR="lib/asan" + local CMAKE_PATH=$(getCmakePath) + cmake_params=( + "-DCMAKE_PREFIX_PATH=$CMAKE_PATH;${ROCM_PATH}/$ASAN_LIBDIR;$ROCM_PATH/llvm;$ROCM_PATH" + "-DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'}" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_LIB_RPATH" + "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--rpath,$ROCM_ASAN_EXE_RPATH" + "-DENABLE_ASAN_PACKAGING=true" + ) + else + cmake_params=( + "-DCMAKE_PREFIX_PATH=${ROCM_PATH}/llvm;${ROCM_PATH}" + "-DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'Release'}" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--rpath,$ROCM_LIB_RPATH" + "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--rpath,$ROCM_EXE_RPATH" + ) + fi + printf '%s ' "${cmake_params[@]}" + + local common_cmake_params + common_cmake_params=( + "-DCMAKE_VERBOSE_MAKEFILE=1" + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE" + "-DCMAKE_INSTALL_PREFIX=${ROCM_PATH}" + "-DCMAKE_PACKAGING_INSTALL_PREFIX=${ROCM_PATH}" + "-DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF" + "-DROCM_SYMLINK_LIBS=OFF" + "-DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_PATH}" + "-DROCM_DISABLE_LDCONFIG=ON" + "-DROCM_PATH=${ROCM_PATH}" + ) + printf '%s ' "${common_cmake_params[@]}" +} + +# Setup a number of variables to specify where to find the source +# where to do the build and where to put the packages +# Note the PACKAGE_DIR downcases the package name +# This could be extended to do different things based on $1 +set_component_src(){ + COMPONENT_SRC="$LIBS_WORK_DIR/$1" + + BUILD_DIR="$OUT_DIR/build/$1" + DEB_PATH="$OUT_DIR/${PKGTYPE}/${1,,}" + RPM_PATH="$OUT_DIR/${PKGTYPE}/${1,,}" + PACKAGE_DIR="$OUT_DIR/${PKGTYPE}/${1,,}" +} + +# Standard definition of function to print the package location. If +# for some reason a custom version is needed then it can overwrite +# this definition +# TODO: Don't use a global PKGTYPE, pass the value in as a parameter +print_output_directory() { + case ${1:-$PKGTYPE} in + ("deb") + echo ${DEB_PATH};; + ("rpm") + echo ${RPM_PATH};; + (*) + echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;; + esac + exit +} + +# Standard argument processing +# Here to avoid repetition +TARGET="build" # default target +stage2_command_args(){ + while [ "$1" != "" ]; + do + case $1 in + -o | --outdir ) + shift 1; PKGTYPE=$1 ; TARGET="outdir" ;; + -c | --clean ) + TARGET="clean" ;; + *) + break ;; + esac + shift 1 + done +} + +show_build_cache_stats(){ + if [ "$CCACHE_ENABLED" = "true" ] ; then + if ! ccache -s ; then + echo "Unable to display ccache stats" + fi + fi +} diff --git a/rocm-build/compute_utils.sh b/rocm-build/compute_utils.sh new file mode 100755 index 000000000..5687d1864 --- /dev/null +++ b/rocm-build/compute_utils.sh @@ -0,0 +1,372 @@ +#!/bin/bash + +: <<'END_COMMENT' + This script retains only those functions from the original compute_utils.sh + that the ROCm build scripts utilize. +END_COMMENT + +set -e +set -o pipefail + + +# Set a sensible default value for DASH_JAY in case none is provided +DASH_JAY=${DASH_JAY:-"-j $(nproc)"} + +# Enable ccache by default unless requested otherwhise +if [[ "$ROCM_USE_CCACHE" != "0" ]] ; then + for d in /usr/lib/ccache /usr/lib64/ccache ;do + if [ -d "$d" ]; then + PATH="$d:$PATH" + break # Only add one ccache at most + fi + done +fi + +# Print message to stderr +# param message string to print on exit +# Example: printErr "file not found" +printErr() { + echo "$@" 1>&2 +} + +# Print message to stderr and terminate current program +# param message string to print on exit +# Example: die "Your program" has terminated +die() { + printErr "FATAL: $@" + exit 1 +} + +# Die if first argument is empty +# param string to validate +# param error message +# Example: die "$VARIABLE" "Your program" has terminated +dieIfEmpty() { + if [ "$1" == "" ]; then + shift + die "$@" + fi +} + +# Get directory with build output package +# Precedence: +# 1. PWD +# 2. Caller's folder +# 3. Known build output folder +getPackageRoot() { + local scriptPath=$(readlink -f $(dirname $BASH_SOURCE)) + local testFile="build.version" + + if [ -a "$PWD/$testFile" ]; then + echo "$PWD" + elif [ -a "$scriptPath/../$testFile" ]; then + echo "$scriptPath/.." + elif [ -a "$scriptPath/$testFile" ]; then + echo "$scriptPath" + elif [ ! -z "$OUT_DIR" ]; then + echo "$OUT_DIR" + else + die "Failed to determine package directory" + fi +} + +# Get a list of directories containing the build output +# shared objects. +# Important: PWD takes precedence over build output folder +getLibPath() { + local packageRoot="$(getPackageRoot)" + dieIfEmpty "$packageRoot" + echo "$packageRoot/lib" +} + +# Get a list of directories containing the output executables +# param binDir (optional) - package name +# Important: PWD takes precedence over build output folder +getBinPath() { + local binDir="$1" + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + + if [ "$binDir" == "" ]; then + echo "$packageRoot/bin" + else + echo "$packageRoot/bin/$binDir" + fi +} + +# Get a list of directories containing the output source files +# Important: PWD takes precedence over build output folder +getSrcPath() { + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + echo "$packageRoot/src" +} + +# Get a list of directories to place build output +# param moduleName - name of the module for the build path +# Important: PWD takes precedence over build output folder +getBuildPath() { + local moduleName="$1" + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + echo "$packageRoot/build/$moduleName" +} + +# Get a list of directories containing the output etc files +# Important: PWD takes precedence over build output folder +getUtilsPath() { + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + echo "$packageRoot/utils" +} + +# Get a list of directories containing the output include files +# Important: PWD takes precedence over build output folder +getIncludePath() { + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + echo "$packageRoot/include" +} + +# Get the directory containing the cmake config files +getCmakePath() { + local rocmInstallPath=${ROCM_INSTALL_PATH} + local cmakePath="lib/cmake" + if [ "$ASAN_CMAKE_PARAMS" == "true" ] ; then + cmakePath="lib/asan/cmake" + fi + dieIfEmpty "$rocmInstallPath" + echo "$rocmInstallPath/$cmakePath" +} + +# Get a list of directories containing the output debian files +# Important: PWD takes precedence over build output folder +getDebPath() { + local packageName="$1" + dieIfEmpty "$packageName" "No valid package name specified" + + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + + echo "$packageRoot/deb/$packageName" +} + +# Get a list of directories containing the output rpm files +# Important: PWD takes precedence over build output folder +getRpmPath() { + local packageName="$1" + dieIfEmpty "$packageName" "No valid package name specified" + + local packageRoot=$(getPackageRoot) + dieIfEmpty "$packageRoot" + + echo "$packageRoot/rpm/$packageName" +} + + + +verifyEnvSetup() { + if [ -z "$OUT_DIR" ]; then + die "Please source build/envsetup.sh first." + fi +} + +# Copy a file or directory to target location and show single line progress +progressCopy() { + if [ -d "$1" ]; then + rsync -a "$1"/* "$2" + else + rsync -a "$1" "$2" + fi +} + + +#following three common functions have been written to addition of static libraries +print_lib_type() { + if [ "$1" == "OFF" ]; + then + echo " Building Archive " + else + echo " Building Shared Object " + fi +} + +check_conflicting_options() { + # 1->CLEAN_OR_OUT 2->PKGTYPE 3->MAKETARGET + RET_CONFLICT=0 + if [ $1 -ge 2 ]; then + if [ "$2" != "deb" ] && [ "$2" != "rpm" ] && [ "$2" != "tar" ]; then + echo " Wrong Param Passed for Package Type for the Outdir... " + RET_CONFLICT=30 + fi + fi + # check Clean Vs Outdir + if [ $1 -ge 3 ] && [ $RET_CONFLICT -eq 0 ] ; then + echo " Clean & Out Both are sepcified. Not accepted. Bailing .. " + RET_CONFLICT=40 + fi + if [ $RET_CONFLICT -eq 0 ] && [ "$3" != "deb" ] && [ "$3" != "rpm" ] && [ "$3" != "all" ] && [ "$3" != "tar" ]; then + echo " Wrong Param Passed for Package Type... " + RET_CONFLICT=50 + fi +} + +set_asan_env_vars() { + # Flag to set cmake build params for ASAN builds + ASAN_CMAKE_PARAMS="true" + # Pass the LLVM bin path as the first parameter + LLVM_BIN_DIR=${1:-"${ROCM_INSTALL_PATH}/llvm/bin"} + export CC="$LLVM_BIN_DIR/clang" + export CXX="$LLVM_BIN_DIR/clang++" + export PATH="$PATH:$LLVM_BIN_DIR/" + # get exact path to ASAN lib containing clang version + ASAN_LIB_PATH=$(clang --print-file-name=libclang_rt.asan-x86_64.so) + export LD_LIBRARY_PATH="${ASAN_LIB_PATH%/*}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + export ASAN_OPTIONS="detect_leaks=0" +} + +set_address_sanitizer_on() { + # In SLES and RHEL debuginfo package is not getting generated + # when compiler is set to clang. Using default -gdwarf-5 is getting unhandled in these distros + # So setting -gdwarf-4 as a quick fix + # TODO: -gdwarf-5 unhandling when compiler set to clang need to be fixed + SET_DWARF_VERSION_4="" + if [[ $DISTRO_ID == sles* ]] || [[ $DISTRO_ID == rhel* ]]; then + SET_DWARF_VERSION_4="-gdwarf-4" + fi + export CFLAGS="-fsanitize=address -shared-libasan -g $SET_DWARF_VERSION_4" + export CXXFLAGS="-fsanitize=address -shared-libasan -g $SET_DWARF_VERSION_4" + export LDFLAGS="-Wl,--enable-new-dtags -fuse-ld=lld -fsanitize=address -shared-libasan -g -Wl,--build-id=sha1 -L$ROCM_INSTALL_PATH/lib/asan" +} + +ack_and_ignore_asan() { + echo "-a parameter accepted but ignored" +} + +#debug function #dumping values in case of error to solve the same +print_vars() { +echo " Status of Vars in $1 build " +echo " TARGET= $2 " +echo " BUILD_TYPE = $3 " +echo " SHARED_LIBS = $4 " +echo " CLEAN_OR_OUT = $5 " +echo " PKGTYPE= $6 " +echo " MAKETARGET = $7 " +} + +# Provide this as a function, rather than a variable to delay the evaluation +# of variables. In particular we might want to put code in here which changes +# depending on if we are building with the address sanitizer or not +# Can do things like set the packaging type - no point in packaging RPM on debian and +# vica versa. +# Set CPACK_RPM_INSTALL_WITH_EXEC so it packages debug info for shared libraries. +rocm_common_cmake_params(){ + if [ "$BUILD_TYPE" = "RelWithDebInfo" ] ; then + printf '%s ' "-DCPACK_RPM_DEBUGINFO_PACKAGE=TRUE" \ + "-DCPACK_DEBIAN_DEBUGINFO_PACKAGE=TRUE" \ + "-DCPACK_RPM_INSTALL_WITH_EXEC=TRUE" \ + # end of list comment or blank line + fi + printf '%s ' "-DROCM_DEP_ROCMCORE=ON" \ + "-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_EXE_RPATH" \ + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_LIB_RPATH" \ + "-DFILE_REORG_BACKWARD_COMPATIBILITY=OFF" \ + "-DINCLUDE_PATH_COMPATIBILITY=OFF" \ + # set lib directory to lib/asan for ASAN builds + # Disable file reorg backward compatibilty for ASAN builds + # ENABLE_ASAN_PACKAGING - Used for enabling ASAN packaging + if [ "$ASAN_CMAKE_PARAMS" == "true" ] ; then + local asan_common_cmake_params + local ASAN_LIBDIR="lib/asan" + local CMAKE_PATH=$(getCmakePath) + asan_common_cmake_params=( + "-DCMAKE_INSTALL_LIBDIR=$ASAN_LIBDIR" + "-DCMAKE_PREFIX_PATH=$CMAKE_PATH;${ROCM_INSTALL_PATH}/$ASAN_LIBDIR;$ROCM_INSTALL_PATH/llvm;$ROCM_INSTALL_PATH" + "-DENABLE_ASAN_PACKAGING=$ASAN_CMAKE_PARAMS" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_ASAN_LIB_RPATH" + ) + printf '%s ' "${asan_common_cmake_params[@]}" + else + printf '%s ' "-DCMAKE_INSTALL_LIBDIR=lib" \ + # end of list comment or blank line + fi +} + +rocm_cmake_params() { + local cmake_params + + cmake_params=( + "-DCMAKE_PREFIX_PATH=${ROCM_INSTALL_PATH}/llvm;${ROCM_INSTALL_PATH}" + "-DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'}" + "-DCMAKE_VERBOSE_MAKEFILE=1" + "-DCPACK_GENERATOR=${CPACKGEN:-'DEB;RPM'}" + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE" + "-DROCM_PATCH_VERSION=${ROCM_LIBPATCH_VERSION}" + "-DCMAKE_INSTALL_PREFIX=${ROCM_INSTALL_PATH}" + "-DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_INSTALL_PATH}" + ) + + printf '%s ' "${cmake_params[@]}" +} + +copy_if(){ + local type=$1 selector=$2 dir=$3 + shift 3 + mkdir -p "$dir" + if [[ "$selector" =~ "$type" ]] ; then + cp -a "$@" "$dir" + fi + # handle ddeb files as well, renaming them on the way + for f + do + case "$f" in + # Properly formed debian package name is a number of _ separated fields + # The first is the package name. + # Second is version number + # third is architecture + # Ensure we have at least one _ in the name + (*"_"*".deb") + local deb=${f%.deb} + local basename=${deb##*/} + local dirname=${f%/*} + # filename($f) can be either /some/path/pkgname.deb or pkgname.deb + # If its pkgname.deb, then directory should be . + [[ "$dirname" == "$f" ]] && dirname=. + local pkgname=${basename%%_*} + local pkgextra=${basename#*_} + # cmake 3.22 creates the filename by replacing .deb with -dbgsym.ddeb + # at least for hostcall. Mind you hostcall looks to be incorrectly packaged. + if [ -e "${deb}-dbgsym.ddeb" ] + then + dest=${deb##*/} + dest="${dest%%_*}-dbgsym_${dest#*_}" + cp -a "${deb}-dbgsym.ddeb" "$dir/${dest##*/}.deb" + fi + # This is needed for comgr + if [ -e "$dirname/${pkgname}-dbgsym_${pkgextra}.ddeb" ] + then + cp "$dirname/${pkgname}-dbgsym_${pkgextra}.ddeb" "$dir/${pkgname}-dbgsym_${pkgextra}.deb" + fi + ;; + esac + done +} + + +# Function to remove -r or -R from MAKEFLAGS +remove_make_r_flags(){ + local firstword='^[^ ]*' + if [[ "$MAKEFLAGS" =~ ${firstword}r ]] ; then MAKEFLAGS=${MAKEFLAGS/r/} ; fi + if [[ "$MAKEFLAGS" =~ ${firstword}R ]] ; then MAKEFLAGS=${MAKEFLAGS/R/} ; fi +} + +# Set a variable to the value needed by cmake to use ninja if it is available +# If GEN_NINJA is already defined, even as the empty string, then leave the value alone +# Intended use in build_xxxx.sh is ${GEN_NINJA:+"$GEN_NINJA"} to cope with potentially weird values +# but in practice just ${GEN_NINJA} without quotes will be fine. +# e.g. cmake -DCMAKE_BUILD_TYPE="$BUILD_TYPE" $GEN_NINJA +# If for some reason you wanted to build without ninja just export an empty GEN_NINJA variable +if [ "${GEN_NINJA+defined}" != "defined" ] && command -v ninja >/dev/null ; then + GEN_NINJA=-GNinja +fi + diff --git a/rocm-build/docker/ubuntu20/Dockerfile b/rocm-build/docker/ubuntu20/Dockerfile new file mode 100644 index 000000000..125f1f134 --- /dev/null +++ b/rocm-build/docker/ubuntu20/Dockerfile @@ -0,0 +1,7 @@ +FROM ubuntu:focal as builder +COPY packages /tmp/packages +COPY install-prerequisites.sh /tmp/install-prerequisites.sh +ENV KBUILD_PKG_ROOTCMD= +ENV RPP_DEPS_LOCATION=/usr/local/rpp-deps +RUN /tmp/install-prerequisites.sh +WORKDIR /src diff --git a/rocm-build/docker/ubuntu20/README.md b/rocm-build/docker/ubuntu20/README.md new file mode 100644 index 000000000..a6afb0bc2 --- /dev/null +++ b/rocm-build/docker/ubuntu20/README.md @@ -0,0 +1,20 @@ +## Steps to build the Docker Image +1. Clone this repositry + ```bash + git clone -b roc-6.1.x https://github.com/ROCm/ROCm.git + ``` +2. Go into the OS specific docker directory in build-infra + ```bash + cd ROCm/rocm-build/docker/ubuntu20 + ``` + +3. Build the Docker image + ```bash + docker build -t . + ``` + replace the `` with the new Docker image Name of your choice, +5. After successful build, verify your \ in the list all available docker images. + ```bash + docker images + ``` + diff --git a/rocm-build/docker/ubuntu20/install-prerequisites.sh b/rocm-build/docker/ubuntu20/install-prerequisites.sh new file mode 100755 index 000000000..0c73e06b1 --- /dev/null +++ b/rocm-build/docker/ubuntu20/install-prerequisites.sh @@ -0,0 +1,217 @@ +#! /usr/bin/bash + +set -ex + + +apt-get update +DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get install --no-install-recommends -y $(grep -v '^#' /tmp/packages) +apt-get clean +rm -rf /var/cache/apt/ /var/lib/apt/lists/* /etc/apt/apt.conf.d/01proxy + +#Install git 2.17.1 version +curl -o git.tar.gz https://cdn.kernel.org/pub/software/scm/git/git-2.17.1.tar.gz +tar -zxf git.tar.gz +cd git-* +make prefix=/usr/local all +make prefix=/usr/local install +git --version + +#install argparse and CppHeaderParser python modules for roctracer and rocprofiler +# CppHeader needs setuptools. setuptools needs wheel. +pip3 install --no-cache-dir setuptools wheel tox +pip3 install --no-cache-dir CppHeaderParser argparse requests lxml barectf recommonmark jinja2==3.0.0 websockets matplotlib numpy scipy minimal msgpack pytest sphinx joblib cmake==3.25.2 pandas myst-parser + +# Allow sudo for everyone user +echo 'ALL ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/everyone + +# Install OCaml packages to build LLVM's OCaml bindings to be used in lightning compiler test pipeline +wget -nv https://sourceforge.net/projects/opam.mirror/files/2.1.4/opam-2.1.4-x86_64-linux -O /usr/local/bin/opam +chmod +x /usr/local/bin/opam +opam init --yes --disable-sandboxing +opam install ctypes --yes + +# Install and modify git-repo (#!/usr/bin/env python -> #!/usr/bin/env python3) +curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo +chmod a+x /usr/bin/repo + +# Build a newer version of doxygen because of issue 6456 +#Install doxygen 1.8.11 for dbgapi +mkdir /tmp/doxygen +cd /tmp/doxygen +curl -LO https://sourceforge.net/projects/doxygen/files/rel-1.8.18/doxygen-1.8.18.src.tar.gz +tar xzf doxygen-1.8.18.src.tar.gz +cd doxygen-1.8.18 +mkdir -p build +cd build +cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -Wno-dev .. +make -j install +cd ../.. +rm -rf /tmp/doxygen + +# Build ccache from the source +cd /tmp +git clone https://github.com/ccache/ccache -b v4.7.5 +cd ccache +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release .. +make +make install +cd /tmp +rm -rf ccache + +# Install sharp from MLNX_OFED_LINUX as dependency for rccl-rdma-sharp-plugins +cd /var/tmp +mkdir mlnx +wget -O mlnx/tar.tgz https://content.mellanox.com/ofed/MLNX_OFED-5.2-1.0.4.0/MLNX_OFED_LINUX-5.2-1.0.4.0-ubuntu20.04-x86_64.tgz +tar -xz -C mlnx -f mlnx/tar.tgz +apt-key add mlnx/*/RPM-GPG-KEY-Mellanox +echo "deb [arch=amd64] file:$(echo $PWD/mlnx/*/DEBS) ./" > /etc/apt/sources.list.d/sharp.list +apt update +apt install -y sharp +apt clean +rm -rf /var/cache/apt/ /var/lib/apt/lists/* mlnx /etc/apt/sources.list.d/sharp.list + +#Install older version of hwloc-devel package for rocrtst +curl -lO https://download.open-mpi.org/release/hwloc/v1.11/hwloc-1.11.13.tar.bz2 +tar -xvf hwloc-1.11.13.tar.bz2 +cd hwloc-1.11.13 +./configure +make +make install +cp /usr/local/lib/libhwloc.so.5 /usr/lib +hwloc-info --version + +## Install googletest from source +mkdir -p /tmp/gtest +cd /tmp/gtest +wget https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip -O googletest.zip +unzip googletest.zip +cd googletest-1.14.0/ +mkdir build +cd build +cmake .. +make -j$(nproc) +make install +rm -rf /tmp/gtest + +## Install gRPC from source +## RDC Pre-requisites +GRPC_ARCHIVE=grpc-1.61.0.tar.gz +mkdir /tmp/grpc +mkdir /usr/grpc +cd /tmp +git clone --recurse-submodules -b v1.61.0 https://github.com/grpc/grpc +cd grpc +mkdir -p cmake/build +cd cmake/build +cmake -DgRPC_INSTALL=ON -DBUILD_SHARED_LIBS=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr/grpc -DCMAKE_CXX_STANDARD=14 ../.. +make -j$(nproc) +make install +cd / +rm -rf /tmp/grpc + +## Download prebuilt AMD multithreaded blis (2.0) +## Reference : https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/install.sh#L403 +mkdir -p /tmp/blis +cd /tmp/blis +wget -O - https://github.com/amd/blis/releases/download/2.0/aocl-blis-mt-ubuntu-2.0.tar.gz | tar xfz - +mv amd-blis-mt /usr/blis +cd / +rm -rf /tmp/blis + +## Download aocl-linux-aocc-4.0_1_amd64.deb +mkdir -p /tmp/aocl +cd /tmp/aocl +wget -nv https://download.amd.com/developer/eula/aocl/aocl-4-0/aocl-linux-aocc-4.0_1_amd64.deb +apt install ./aocl-linux-aocc-4.0_1_amd64.deb +rm -rf /tmp/aocl + +## lapack(3.9.1v) +## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L174 +lapack_version=3.9.1 +lapack_srcdir=lapack-$lapack_version +lapack_blddir=lapack-$lapack_version-bld +mkdir -p /tmp/lapack +cd /tmp/lapack +mkdir -p /tmp/lapack +cd /tmp/lapack +rm -rf "$lapack_srcdir" "$lapack_blddir" +wget -O - https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.9.1.tar.gz | tar xzf - +cmake -H$lapack_srcdir -B$lapack_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls -DBUILD_TESTING=OFF -DCBLAS=ON -DLAPACKE=OFF +make -j$(nproc) -C "$lapack_blddir" +make -C "$lapack_blddir" install +cd $lapack_blddir +cp -r ./include/* /usr/local/include/ +cp -r ./lib/* /usr/local/lib +cd / +rm -rf /tmp/lapack + +## FMT(7.1.3v) +## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L152 +fmt_version=7.1.3 +fmt_srcdir=fmt-$fmt_version +fmt_blddir=fmt-$fmt_version-bld +rm -rf "$fmt_srcdir" "$fmt_blddir" +wget -O - https://github.com/fmtlib/fmt/archive/refs/tags/$fmt_version.tar.gz | tar xzf - +cmake -H$fmt_srcdir -B$fmt_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_EXTENSIONS=OFF -DCMAKE_CXX_STANDARD_REQUIRED=ON -DFMT_DOC=OFF -DFMT_TEST=OFF +make -j$(nproc) -C "$fmt_blddir" +make -C "$fmt_blddir" install + +# Build and install libjpeg-turbo +mkdir -p /tmp/libjpeg-turbo +cd /tmp/libjpeg-turbo +wget -nv https://github.com/rrawther/libjpeg-turbo/archive/refs/heads/2.0.6.2.zip -O libjpeg-turbo-2.0.6.2.zip +unzip libjpeg-turbo-2.0.6.2.zip +cd libjpeg-turbo-2.0.6.2 +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RELEASE -DENABLE_STATIC=FALSE -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib .. +make -j$(nproc) install +rm -rf /tmp/libjpeg-turbo + +# Get released ninja from source +mkdir -p /tmp/ninja +cd /tmp/ninja +wget -nv https://codeload.github.com/Kitware/ninja/zip/refs/tags/v1.11.1.g95dee.kitware.jobserver-1 -O ninja.zip +unzip ninja.zip +cd ninja-1.11.1.g95dee.kitware.jobserver-1 +./configure.py --bootstrap +cp ninja /usr/local/bin/ +rm -rf /tmp/ninja + +# Install pre-built FFmpeg and dependencies +# See docker/build-deps for instructions on how to build these packages +wget -qO- https://www.ffmpeg.org/releases/ffmpeg-4.4.2.tar.gz | tar -xzv -C /usr/local + +command -v lbzip2 +ln -sf $(command -v lbzip2) /usr/local/bin/compressor || ln -sf $(command -v bzip2) /usr/local/bin/compressor + +# Install Google Benchmark +mkdir -p /tmp/Gbenchmark +cd /tmp/Gbenchmark +wget -qO- https://github.com/google/benchmark/archive/refs/tags/v1.6.1.tar.gz | tar xz +cmake -Sbenchmark-1.6.1 -Bbuild -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_CXX_STANDARD=14 +make -j -C build +cd /tmp/Gbenchmark/build +make install + +# Build boost-1.82.0 from source for RPP +# Installing in a non-standard location since the test packages of hipFFT and rocFFT pick up the version of +# the installed Boost library and declare a package dependency on that specific version of Boost. +# For example, if this was installed in the standard location it would declare a dependency on libboost-dev(el)1.82.0 +# which is not available as a package in any distro. +# Once this is fixed, we can remove the Boost package from the requirements list and install this +# in the standard location +# export RPP_DEPS_LOCATION=/usr/local/rpp-deps +mkdir -p /tmp/boost-1.82.0 +cd /tmp/boost-1.82.0 +wget -nv https://sourceforge.net/projects/boost/files/boost/1.82.0/boost_1_82_0.tar.bz2 -O ./boost_1_82_0.tar.bz2 +tar -xf boost_1_82_0.tar.bz2 --use-compress-program="/usr/local/bin/compressor" +cd boost_1_82_0 +./bootstrap.sh --prefix=${RPP_DEPS_LOCATION} --with-python=python3 +./b2 stage -j$(nproc) threading=multi link=shared cxxflags="-std=c++11" +./b2 install threading=multi link=shared --with-system --with-filesystem +./b2 stage -j$(nproc) threading=multi link=static cxxflags="-std=c++11 -fpic" cflags="-fpic" +./b2 install threading=multi link=static --with-system --with-filesystem +rm -rf /tmp/boost-1.82.0 diff --git a/rocm-build/docker/ubuntu20/packages b/rocm-build/docker/ubuntu20/packages new file mode 100644 index 000000000..bdcc0d3e3 --- /dev/null +++ b/rocm-build/docker/ubuntu20/packages @@ -0,0 +1,137 @@ +# List of packages needed for stage1 build +apt-utils +aria2 +autoconf +automake +bc +bison +bridge-utils +build-essential +bzip2 +check +chrpath +cifs-utils +cpio +curl +devscripts +dkms +dos2unix +fakeroot +flex +freeglut3-dev +g++ +g++-multilib +# gawk is needed for aomp +gawk +gcc +gcc-multilib +gfortran +git-lfs +gnupg +graphviz +kernel-wedge +lbzip2 +# less is needed by repo +less +libass-dev +libatlas-base-dev +libbabeltrace-ctf-dev +libbabeltrace-dev +libboost-all-dev +libboost-dev +libboost-filesystem-dev +libboost-program-options-dev +libboost-system-dev +libbz2-dev +libc++-dev +libc++1 +libc++abi-dev +libc++abi1 +libc6-dev-i386 +libcap-dev +libcurl4-openssl-dev +libdrm-dev +libdw-dev +libdw1 +libdwarf-dev +libelf-dev +libelf1 +libexpat1-dev +libfftw3-dev +libfile-find-rule-perl +libgflags-dev +libglew-dev +libgmp-dev +libgoogle-glog-dev +libgtk2.0-dev +libhdf5-serial-dev +libjpeg-dev +libleveldb-dev +liblmdb-dev +liblzma-dev +libmpfr-dev +libmpich-dev +libmsgpack-dev +libncurses5-dev +libnuma-dev +libomp-dev +libopenblas-base +libopenblas-dev +libpci-dev +libpci3 +libpciaccess-dev +libpciaccess0 +libprotobuf-dev +libpython2.7-dev +libpython3-dev +libreadline-dev +libsnappy-dev +libssl-dev +libsuitesparse-dev +libsystemd-dev +libtinfo-dev +libtool +libunwind-dev +liburi-encode-perl +libva-dev +libvirt-clients +libvirt-daemon-system +libyaml-cpp-dev +llvm +llvm-6.0-dev +llvm-dev +llvm-runtime +mesa-common-dev +mpich +ocaml +ocaml-findlib +patchelf +pigz +pkg-config +protobuf-compiler +python-is-python3 +python-pip-whl +python-yaml +python3-dev +python3-pip +python3-venv +python3-yaml +python3.8-dev +re2c +redis-tools +rpm +rsync +ssh +strace +sudo +systemtap-sdt-dev +texinfo +texlive +texlive-extra-utils +texlive-plain-generic +texlive-xetex +unzip +vim +wget +xsltproc +zlib1g-dev diff --git a/rocm-build/docker/ubuntu22/Dockerfile b/rocm-build/docker/ubuntu22/Dockerfile new file mode 100644 index 000000000..45a602f74 --- /dev/null +++ b/rocm-build/docker/ubuntu22/Dockerfile @@ -0,0 +1,9 @@ +FROM ubuntu:jammy as builder +COPY packages /tmp/packages +COPY local-pin-600 /tmp/local-pin-600 +COPY install-prerequisities.sh /tmp/install-prerequisities.sh +RUN chmod +x /tmp/install-prerequisities.sh +ENV KBUILD_PKG_ROOTCMD= +ENV RPP_DEPS_LOCATION=/usr/local/rpp-deps +RUN /tmp/install-prerequisities.sh +WORKDIR /src diff --git a/rocm-build/docker/ubuntu22/README.md b/rocm-build/docker/ubuntu22/README.md new file mode 100644 index 000000000..6dc60c845 --- /dev/null +++ b/rocm-build/docker/ubuntu22/README.md @@ -0,0 +1,18 @@ +## Steps to build the Docker Image +1. Clone this repositry + ```bash + git clone -b roc-6.1.x https://github.com/ROCm/ROCm.git + ``` +2. Go into the OS specific docker directory in build-infra + ```bash + cd ROCm/rocm-build/docker/ubuntu22 + ``` +3. Build the docker image + ```bash + docker build -t . + ``` + replace the `` with the new Docker image Name of your choice, +4. After successful build, verify your \ in the list all available docker images. + ```bash + docker images + ``` diff --git a/rocm-build/docker/ubuntu22/install-prerequisities.sh b/rocm-build/docker/ubuntu22/install-prerequisities.sh new file mode 100644 index 000000000..3ea039bc4 --- /dev/null +++ b/rocm-build/docker/ubuntu22/install-prerequisities.sh @@ -0,0 +1,232 @@ +#! /usr/bin/bash + +set -ex + +apt-get -y update +DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get install --no-install-recommends -y $(sed 's/#.*//' /tmp/packages) +apt-get clean +rm -rf /var/cache/apt/ /var/lib/apt/lists/* /etc/apt/apt.conf.d/01proxy + +#Install 2.17.1 version of git as we are seeing issues with 2.25 , where it was not allowing to add git submodules if the user is different for parent git directory +curl -o git.tar.gz https://cdn.kernel.org/pub/software/scm/git/git-2.17.1.tar.gz +tar -zxf git.tar.gz +cd git-* +make prefix=/usr/local all +make prefix=/usr/local install +git --version + +#install argparse and CppHeaderParser python modules for roctracer and rocprofiler +#install rocm-docs-core for the docs-as-code project. Only needed on one OS +# CppHeader needs setuptools. setuptools needs wheel. +# Looks like I need them as seperate commands +# Sigh, install both python2 and python 3 version +pip3 install --no-cache-dir setuptools wheel tox +pip3 install --no-cache-dir CppHeaderParser argparse requests lxml barectf recommonmark jinja2==3.0.0 websockets matplotlib numpy scipy minimal msgpack pytest sphinx joblib PyYAML rocm-docs-core cmake==3.25.2 pandas myst-parser + +# Allow sudo for everyone user +echo 'ALL ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/everyone + +# Install OCaml packages to build LLVM's OCaml bindings to be used in lightning compiler test pipeline +wget -nv https://sourceforge.net/projects/opam.mirror/files/2.1.4/opam-2.1.4-x86_64-linux -O /usr/local/bin/opam +chmod +x /usr/local/bin/opam +opam init --yes --disable-sandboxing +opam install ctypes --yes + +# Install and modify git-repo (#!/usr/bin/env python -> #!/usr/bin/env python3) +curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo +chmod a+x /usr/bin/repo + +# Build ccache from the source +cd /tmp +git clone https://github.com/ccache/ccache -b v4.7.5 +cd ccache +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release .. +make +make install +cd /tmp +rm -rf ccache + +# Install sharp from MLNX_OFED_LINUX as dependency for rccl-rdma-sharp-plugins +cd /var/tmp +mkdir mlnx +wget -O mlnx/tar.tgz https://content.mellanox.com/ofed/MLNX_OFED-24.01-0.3.3.1/MLNX_OFED_LINUX-24.01-0.3.3.1-ubuntu22.04-x86_64.tgz +tar -xz -C mlnx -f mlnx/tar.tgz +apt-key add mlnx/*/RPM-GPG-KEY-Mellanox +echo "deb [arch=amd64] file:$(echo $PWD/mlnx/*/DEBS) ./" > /etc/apt/sources.list.d/sharp.list +apt update +apt install -y sharp +apt clean +rm -rf /var/cache/apt/ /var/lib/apt/lists/* mlnx /etc/apt/sources.list.d/sharp.list + + +apt update +apt -y install libunwind-dev +apt -y install libgoogle-glog-dev + +# Install python3.8 from source +curl -LO https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tar.xz +tar -xvf Python-3.8.13.tar.xz +pwd +ls /var/tmp/ +ls Python-3.8.13 +mv Python-3.8.13 /opt/ +apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev pkg-config make -y +cd /opt/Python-3.8.13/ +./configure --enable-optimizations --enable-shared +make +make -j 6 +make altinstall +ldconfig /opt/Python3.8.13 +python3.8 --version + +# roctracer and rocprofiler needs this python3.8 +python3.8 -m pip install setuptools wheel +python3.8 -m pip install CppHeaderParser argparse requests lxml PyYAML joblib + +#Install older version of hwloc-devel package for rocrtst +curl -lO https://download.open-mpi.org/release/hwloc/v1.11/hwloc-1.11.13.tar.bz2 +tar -xvf hwloc-1.11.13.tar.bz2 +cd hwloc-1.11.13 +./configure +make +make install +cp /usr/local/lib/libhwloc.so.5 /usr/lib +hwloc-info --version + +# Install gtest +mkdir -p /tmp/gtest +cd /tmp/gtest +wget https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip -O googletest.zip +unzip googletest.zip +cd googletest-1.14.0/ +mkdir build +cd build +cmake .. +make -j$(nproc) +make install +rm -rf /tmp/gtest + +## Install gRPC from source +## RDC Pre-requisites +GRPC_ARCHIVE=grpc-1.61.0.tar.gz +mkdir /tmp/grpc +mkdir /usr/grpc +cd /tmp +git clone --recurse-submodules -b v1.61.0 https://github.com/grpc/grpc +cd grpc +mkdir -p build +cd build +cmake -DgRPC_INSTALL=ON -DBUILD_SHARED_LIBS=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr/grpc -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=14 .. +make -j $(nproc) install +rm -rf /tmp/grpc + +## rocBLAS Pre-requisites +## Download prebuilt AMD multithreaded (2.0) +## Reference : https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/install.sh#L403 +mkdir -p /tmp/blis +cd /tmp/blis +wget -O - https://github.com/amd/blis/releases/download/2.0/aocl-blis-mt-ubuntu-2.0.tar.gz | tar xfz - +mv amd-blis-mt /usr/blis +cd / +rm -rf /tmp/blis +## rocBLAS Pre-requisites(SWDEV-404612) +## Download aocl-linux-aocc-4.0_1_amd64 +mkdir -p /tmp/aocl +cd /tmp/aocl +wget -nv https://download.amd.com/developer/eula/aocl/aocl-4-0/aocl-linux-aocc-4.0_1_amd64.deb +apt install ./aocl-linux-aocc-4.0_1_amd64.deb +rm -rf /tmp/aocl + +## hipBLAS Pre-requisites +## lapack(3.9.1v) +## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L174 +lapack_version=3.9.1 +lapack_srcdir=lapack-$lapack_version +lapack_blddir=lapack-$lapack_version-bld +mkdir -p /tmp/lapack +cd /tmp/lapack +rm -rf "$lapack_srcdir" "$lapack_blddir" +wget -O - https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.9.1.tar.gz | tar xzf - +cmake -H$lapack_srcdir -B$lapack_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls -DBUILD_TESTING=OFF -DCBLAS=ON -DLAPACKE=OFF +make -j$(nproc) -C "$lapack_blddir" +make -C "$lapack_blddir" install +cd $lapack_blddir +cp -r ./include/* /usr/local/include/ +cp -r ./lib/* /usr/local/lib +cd / +rm -rf /tmp/lapack + +## rocSOLVER Pre-requisites +## FMT(7.1.3v) +## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L152 +fmt_version=7.1.3 +fmt_srcdir=fmt-$fmt_version +fmt_blddir=fmt-$fmt_version-bld +mkdir -p /tmp/fmt +cd /tmp/fmt +rm -rf "$fmt_srcdir" "$fmt_blddir" +wget -O - https://github.com/fmtlib/fmt/archive/refs/tags/7.1.3.tar.gz | tar xzf - +cmake -H$fmt_srcdir -B$fmt_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_EXTENSIONS=OFF -DCMAKE_CXX_STANDARD_REQUIRED=ON -DFMT_DOC=OFF -DFMT_TEST=OFF +make -j$(nproc) -C "$fmt_blddir" +make -C "$fmt_blddir" install + +# Build and install libjpeg-turbo +mkdir -p /tmp/libjpeg-turbo +cd /tmp/libjpeg-turbo +wget -nv https://github.com/rrawther/libjpeg-turbo/archive/refs/heads/2.0.6.2.zip -O libjpeg-turbo-2.0.6.2.zip +unzip libjpeg-turbo-2.0.6.2.zip +cd libjpeg-turbo-2.0.6.2 +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RELEASE -DENABLE_STATIC=FALSE -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib .. +make -j$(nproc) install +rm -rf /tmp/libjpeg-turbo + +# Get released ninja from source +mkdir -p /tmp/ninja +cd /tmp/ninja +wget -nv https://codeload.github.com/Kitware/ninja/zip/refs/tags/v1.11.1.g95dee.kitware.jobserver-1 -O ninja.zip +unzip ninja.zip +cd ninja-1.11.1.g95dee.kitware.jobserver-1 +./configure.py --bootstrap +cp ninja /usr/local/bin/ +rm -rf /tmp/ninja + +# Install pre-built FFmpeg and dependencies +# See docker/build-deps for instructions on how to build these packages +wget -qO- https://www.ffmpeg.org/releases/ffmpeg-4.4.2.tar.gz | tar -xzv -C /usr/local + +cp /tmp/local-pin-600 /etc/apt/preferences.d + +command -v lbzip2 +ln -sf $(command -v lbzip2) /usr/local/bin/compressor || ln -sf $(command -v bzip2) /usr/local/bin/compressor + +# Install Google Benchmark +mkdir -p /tmp/Gbenchmark +cd /tmp/Gbenchmark +wget -qO- https://github.com/google/benchmark/archive/refs/tags/v1.6.1.tar.gz | tar xz +cmake -Sbenchmark-1.6.1 -Bbuild -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_CXX_STANDARD=14 +make -j -C build +cd /tmp/Gbenchmark/build +make install + +# Build boost-1.82.0 from source for RPP +# Installing in a non-standard location since the test packages of hipFFT and rocFFT pick up the version of +# the installed Boost library and declare a package dependency on that specific version of Boost. +# For example, if this was installed in the standard location it would declare a dependency on libboost-dev(el)1.82.0 +# which is not available as a package in any distro. +# Once this is fixed, we can remove the Boost package from the requirements list and install this +# in the standard location +mkdir -p /tmp/boost-1.82.0 +cd /tmp/boost-1.82.0 +wget -nv https://sourceforge.net/projects/boost/files/boost/1.82.0/boost_1_82_0.tar.bz2 -O ./boost_1_82_0.tar.bz2 +tar -xf boost_1_82_0.tar.bz2 --use-compress-program="/usr/local/bin/compressor" +cd boost_1_82_0 +./bootstrap.sh --prefix=${RPP_DEPS_LOCATION} --with-python=python3 +./b2 stage -j$(nproc) threading=multi link=shared cxxflags="-std=c++11" +./b2 install threading=multi link=shared --with-system --with-filesystem +./b2 stage -j$(nproc) threading=multi link=static cxxflags="-std=c++11 -fpic" cflags="-fpic" +./b2 install threading=multi link=static --with-system --with-filesystem +rm -rf /tmp/boost-1.82.0 diff --git a/rocm-build/docker/ubuntu22/local-pin-600 b/rocm-build/docker/ubuntu22/local-pin-600 new file mode 100644 index 000000000..4282294af --- /dev/null +++ b/rocm-build/docker/ubuntu22/local-pin-600 @@ -0,0 +1,3 @@ +Package: * +Pin: origin "" +Pin-Priority: 600 \ No newline at end of file diff --git a/rocm-build/docker/ubuntu22/packages b/rocm-build/docker/ubuntu22/packages new file mode 100644 index 000000000..56a22631a --- /dev/null +++ b/rocm-build/docker/ubuntu22/packages @@ -0,0 +1,139 @@ +# List of packages needed for stage1 build +apt-utils +aria2 +autoconf +automake +bc +bison +bridge-utils +build-essential +bzip2 +check +chrpath +cifs-utils +cpio +curl +devscripts +dos2unix +doxygen +fakeroot +flex +freeglut3-dev +g++ +g++-multilib +# gawk is needed for aomp +gawk +gcc +gcc-multilib +gfortran +git-lfs +gnupg +googletest-tools +graphviz +grpc-proto +kernel-wedge +# kmod for kernel build +kmod +lbzip2 +# less is needed by repo +less +libass-dev +libatlas-base-dev +libbabeltrace-ctf-dev +libbabeltrace-dev +libboost-all-dev +libboost-dev +libboost-filesystem-dev +libboost-program-options-dev +libboost-system-dev +libbz2-dev +libc++-dev +libc++1 +libc++abi-dev +libc++abi1 +libc6-dev-i386 +libcap-dev +libcurl4-openssl-dev +libdrm-dev +libdw-dev +libdw1 +libdwarf-dev +libelf-dev +libelf1 +libexpat1-dev +libfftw3-dev +libfile-find-rule-perl +libgflags-dev +libglew-dev +libgmp-dev +libgtk2.0-dev +libhdf5-serial-dev +libjpeg-dev +libleveldb-dev +liblmdb-dev +liblzma-dev +libmpfr-dev +libmpich-dev +libmsgpack-dev +libncurses5-dev +libnuma-dev +libomp-dev +libopenblas-base +libopenblas-dev +libpci-dev +libpci3 +libpciaccess-dev +libpciaccess0 +libprotobuf-dev +libpython2.7-dev +libpython3-dev +libreadline-dev +libsnappy-dev +libssl-dev +libsuitesparse-dev +libsystemd-dev +libtinfo-dev +libtool +liburi-encode-perl +libva-dev +libvirt-clients +libvirt-daemon-system +libyaml-cpp-dev +llvm +llvm-dev +llvm-runtime +mesa-common-dev +mpich +ocaml +ocaml-findlib +patchelf +pigz +pkg-config +protobuf-compiler +python-is-python3 +python3-dev +python3-pip +python3-pip-whl +python3-venv +python3-yaml +python3-yaml +python3.8-dev +re2c +redis-tools +# hipclang needs rpm +rpm +rsync +ssh +# This makes life more pleasent inside the container +strace +sudo +systemtap-sdt-dev +texinfo +texlive +texlive-extra-utils +texlive-plain-generic +texlive-xetex +unzip +vim +wget +xsltproc diff --git a/rocm-build/envsetup.sh b/rocm-build/envsetup.sh new file mode 100755 index 000000000..9cf30190d --- /dev/null +++ b/rocm-build/envsetup.sh @@ -0,0 +1,191 @@ +#!/bin/bash + +set_WORK_ROOT(){ + [ -n "$WORK_ROOT" ] && return 0 + export WORK_ROOT=$PWD + while :; do + [ -d "$WORK_ROOT/.repo/manifests" ] && return 0 + WORK_ROOT=$WORK_ROOT/.. + ( cd -P "$WORK_ROOT" && [ "$PWD" != "/" ] ) || break + done + echo "Unable to find a .repo/manifests directory above '$PWD'" >&2 + unset WORK_ROOT # No point in saying we have one when we don't + return 1 +} +set_WORK_ROOT || exit 2 + +if [ "$DASH_JAY" == "" ]; then + if [ -x "$(command -v nproc)" ]; then + export DASH_JAY="-j $(nproc)" + else + export DASH_JAY="-j 4" + fi +fi + +export JOB_NAME=release +export JOB_DESIGNATOR= +echo "JOB_DESIGNATOR=${JOB_DESIGNATOR}" +export SLES_BUILD_ID_PREFIX +echo "SLES_BUILD_ID_PREFIX=${SLES_BUILD_ID_PREFIX}" + +if [ -z "${BUILD_ID}" ]; then + export BUILD_ID=9999 +fi + +if [ -n "${JOB_NAME}" ]; then + export ROCM_BUILD_ID=${JOB_NAME/compute-/}-${BUILD_ID} +fi + +source /etc/os-release +#re-export the variables with less generic names +export DISTRO_NAME=$ID +export DISTRO_RELEASE=$VERSION_ID +export DISTRO_ID=$ID-$VERSION_ID + +case "${DISTRO_NAME}" in + ("ubuntu") export CPACKGEN=DEB PACKAGEEXT=deb PKGTYPE=deb ROCM_PKGTYPE=DEB ;; + ("centos") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ;; + ("sles") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ;; + ("rhel") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ;; + ("mariner") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ;; +esac + +# set up package file name variables for CPACK_GENERATOR +# rpm packages name are set with jenkins job designator and build no +# deb package is appendeded with OS version as well +export CPACK_DEBIAN_PACKAGE_RELEASE="${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}~$VERSION_ID" +export CPACK_RPM_PACKAGE_RELEASE="${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}" + +OUT_DIR="${OUT_DIR:=$WORK_ROOT/out/$DISTRO_ID/$DISTRO_RELEASE}" +export OUT_DIR +export RT_TMP=$OUT_DIR/tmp/rt + +#source transform, for things like ocl_lc +export SRC_TF_ROOT=$OUT_DIR/srctf + +# Read ROCm Version and calculate ROCm libpatch version from rocm_version.txt +# Using logic from calculateRocmPatchVersion() in common.gvy +get_rocm_libpatch_version() { + rocm_version=$1 + if [[ "${rocm_version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + libpatch_version=${rocm_version//\./0} + echo "${libpatch_version}" + else + echo "Invalid ROCm Version: ${rocm_version}" + exit 10 + fi +} + +# Read the default ROCm version from rocm_version.txt if the ROCM_VERSION +# variable is either not set, empty or only contains spaces. +if [ -f "${WORK_ROOT}/build/rocm_version.txt" ] && [ -z $ROCM_VERSION ]; then + ROCM_VERSION="$(cat ${WORK_ROOT}/build/rocm_version.txt)" +fi + +: ${ROCM_VERSION:="6.1.0"} +ROCM_LIBPATCH_VERSION=$(get_rocm_libpatch_version $ROCM_VERSION) +echo "ROCM_VERSION=${ROCM_VERSION}" +echo "ROCM_LIBPATCH_VERSION=${ROCM_LIBPATCH_VERSION}" +export ROCM_VERSION ROCM_LIBPATCH_VERSION + +export ROCM_INSTALL_PATH="/opt/rocm-${ROCM_VERSION}-${BUILD_ID}" +# check if the job = release +if [[ "${JOB_NAME}" == *rel* ]]; then + export ROCM_INSTALL_PATH="/opt/rocm-${ROCM_VERSION}" +fi + +# Setting the ROCM_INSTALL_PATH id to Last Know Good build ID, PSDB incremental built packages will install into /opt/rocm- +if [ -n "${LKG_BUILD_ID}" ]; then + export ROCM_INSTALL_PATH="/opt/rocm-${ROCM_VERSION}-${LKG_BUILD_ID}" +fi + +echo "Setting ROCM_INSTALL_PATH=${ROCM_INSTALL_PATH}" + +export ROCM_PATH="$ROCM_INSTALL_PATH" +export ROCM_LIBPATH="" +export DEVTOOLSET_LIBPATH="/opt/rh/devtoolset-7/root/usr/lib64;/opt/rh/devtoolset-7/root/usr/lib" + +# Source directories +# TODO: We should have autodiscoverable makefiles +export DIST_NO_DEBUG=yes +export OPENCL_MAINLINE=1 +export HSA_SOURCE_ROOT=$WORK_ROOT/ROCR-Runtime +export HSA_OPENSOURCE_ROOT=$HSA_SOURCE_ROOT/src +export ROCRTST_ROOT=$HSA_SOURCE_ROOT/rocrtst +export HSA_CORE_ROOT=$HSA_OPENSOURCE_ROOT +export HSA_IMAGE_ROOT=$HSA_OPENSOURCE_ROOT/hsa-ext-image +export HSA_FINALIZE_ROOT=$HSA_OPENSOURCE_ROOT/hsa-ext-finalize +export HSA_TOOLS_ROOT=$HSA_OPENSOURCE_ROOT/hsa-runtime-tools +export OCL_RT_SRC_TF_ROOT=$SRC_TF_ROOT/ocl_lc +export SCRIPT_ROOT=$WORK_ROOT/build +export THUNK_ROOT=$WORK_ROOT/ROCT-Thunk-Interface +if [ -d "$HSA_OPENSOURCE_ROOT/ROCT-Thunk-Interface" ]; then + export THUNK_ROOT=$HSA_OPENSOURCE_ROOT/ROCT-Thunk-Interface +fi +export AQLPROFILE_ROOT=$WORK_ROOT/hsa/aqlprofile +export ROCPROFILER_ROOT=$WORK_ROOT/rocprofiler +export ROCTRACER_ROOT=$WORK_ROOT/roctracer +export ROCPROFILER_REGISTER_ROOT=$WORK_ROOT/rocprofiler-register +export RDC_ROOT=$WORK_ROOT/rdc +export RDCTST_ROOT=$RDC_ROOT/tests/rdc_tests +export UTILS_ROOT=$WORK_ROOT/rocm-utils +export KFDTEST_ROOT=$THUNK_ROOT/tests/kfdtest +if [ -d "$HSA_OPENSOURCE_ROOT/tests/kfdtest" ]; then + export KFDTEST_ROOT=$HSA_OPENSOURCE_ROOT/tests/kfdtest +fi +export HIPIFY_ROOT=$WORK_ROOT/HIPIFY +export AMD_SMI_LIB_ROOT=$WORK_ROOT/amdsmi +export ROCM_SMI_LIB_ROOT=$WORK_ROOT/rocm_smi_lib +export RSMITST_ROOT=$ROCM_SMI_LIB_ROOT/tests/rocm_smi_test +export LLVM_PROJECT_ROOT=$WORK_ROOT/llvm-project +export LLVM_ROOT=$LLVM_PROJECT_ROOT/llvm +export CLANG_ROOT=$LLVM_PROJECT_ROOT/clang +export LLD_ROOT=$LLVM_PROJECT_ROOT/lld +export HIPCC_ROOT=$LLVM_PROJECT_ROOT/amd/hipcc +export DEVICELIBS_ROOT=$LLVM_PROJECT_ROOT/amd/device-libs +export ROCM_CORE_ROOT=$WORK_ROOT/rocm-core +export ROCM_CMAKE_ROOT=$WORK_ROOT/rocm-cmake +export ROCM_BANDWIDTH_TEST_ROOT=$WORK_ROOT/rocm_bandwidth_test +export ROCMINFO_ROOT=$WORK_ROOT/rocminfo +export CLANG_OCL_ROOT=$WORK_ROOT/clang-ocl +export ROCR_DEBUG_AGENT_ROOT=$WORK_ROOT/rocr_debug_agent +export COMGR_ROOT=$LLVM_PROJECT_ROOT/amd/comgr +export COMGR_LIB_PATH=$OUT_DIR/build/amd_comgr +export RCCL_ROOT=$WORK_ROOT/rccl +export ROCM_DBGAPI_ROOT=$WORK_ROOT/ROCdbgapi +export ROCM_GDB_ROOT=$WORK_ROOT/ROCgdb +export HIP_ON_ROCclr_ROOT=$WORK_ROOT/HIP +export HIPAMD_ROOT=$WORK_ROOT/hipamd +export HIP_CATCH_TESTS_ROOT=$WORK_ROOT/hip-tests +export CLR_ROOT=$WORK_ROOT/clr +export AOMP_REPOS=$WORK_ROOT/openmp-extras +export HIPOTHER_ROOT=$WORK_ROOT/hipother + +# For libraries $ORIGIN +# For binaries $ORIGIN/../lib +export ROCM_LIB_RPATH='$ORIGIN' +export ROCM_EXE_RPATH='$ORIGIN/../lib' + +# For ASAN Libraries since the asan lib path is lib/asan/ +export ROCM_ASAN_LIB_RPATH='$ORIGIN:$ORIGIN/..' +export ROCM_ASAN_EXE_RPATH="\$ORIGIN/../lib/asan:\$ORIGIN/../lib" + +export PATH=$PATH:$SCRIPT_ROOT + +# From setup_env.sh +export LIBS_WORK_DIR=$WORK_ROOT +export BUILD_ARTIFACTS=$OUT_DIR/$PACKAGEEXT + +export HIPCC_COMPILE_FLAGS_APPEND="-O3 -Wno-format-nonliteral -parallel-jobs=4" +export HIPCC_LINK_FLAGS_APPEND="-O3 -parallel-jobs=4" + +export PATH="${ROCM_PATH}/lib/llvm/bin:${PATH}" + +export LC_ALL=C.UTF-8 +export LANG=C.UTF-8 + +export PROC=${PROC:-"$(nproc)"} +export RELEASE_FLAG=${RELEASE_FLAG:-"-r"} +export SUDO=sudo +export PATH=/usr/local/bin:${PATH}:${HOME}/.local/bin +export CCACHE_DIR=${HOME}/.ccache diff --git a/rocm-build/post_inst_pkg.sh b/rocm-build/post_inst_pkg.sh new file mode 100755 index 000000000..bbfb132d8 --- /dev/null +++ b/rocm-build/post_inst_pkg.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +set -x + + +UNTAR_COMPONENT_NAME=$1 + + +copy_pkg_files_to_rocm() { + local comp_folder=$1 + local comp_pkg_name=$2 + + cd "${OUT_DIR}/${PKGTYPE}/${comp_folder}"|| exit 2 + if [ "${PKGTYPE}" = 'deb' ]; then + dpkg-deb -x ${comp_pkg_name}_*.deb pkg/ + else + mkdir pkg && pushd pkg/ || exit 2 + if [[ "${comp_pkg_name}" != *-dev* ]]; then + rpm2cpio ../${comp_pkg_name}-*.rpm | cpio -idmv + else + rpm2cpio ../${comp_pkg_name}el-*.rpm | cpio -idmv + fi + popd || exit 2 + fi + ls ./pkg -alt + ${SUDO} cp -r ./pkg${ROCM_PATH}/* "${ROCM_PATH}" || exit 2 + rm -rf pkg/ +} + +get_os_name() { + local os_name + os_name=$(grep -oP '^NAME="\K.*(?=")' < /etc/os-release) + echo "${os_name,,}" +} + +set_pkg_type() { + local os_name + os_name=$(grep -oP '^NAME="\K.*(?=")' < /etc/os-release) + [ "${os_name,,}" = ubuntu ] && echo "deb" || echo "rpm" +} + +setup_rocm_compilers_hash_file() { + local clang_version + clang_version="$("${ROCM_PATH}/llvm/bin/clang" --version | head -n 1)" + printf '%s: %s\n' 'clang version' "${clang_version}" | tee "${OUT_DIR}/rocm_compilers_hash_file" +} + +PKGTYPE=$(set_pkg_type) + +case $UNTAR_COMPONENT_NAME in + (lightning) + if [ "${CCACHE_ENABLED}" == "true" ] ; then + setup_rocm_compilers_hash_file + fi + + mkdir -p ${ROCM_PATH}/bin + printf '%s\n' > ${ROCM_PATH}/bin/target.lst gfx900 gfx906 gfx908 gfx803 gfx1030 + + if [ -e "${ROCM_PATH}/lib/llvm/bin/rocm.cfg" ]; then + sed -i '/-frtlib-add-rpath/d' ${ROCM_PATH}/lib/llvm/bin/rocm.cfg + elif [ -e "${ROCM_PATH}/llvm/bin/rocm.cfg" ]; then + sed -i '/-frtlib-add-rpath/d' ${ROCM_PATH}/llvm/bin/rocm.cfg + fi + ;; + (hipify_clang) + copy_pkg_files_to_rocm hipify hipify-clang + ;; + (hip_on_rocclr) + rm -f ${ROCM_PATH}/bin/hipcc.bat + ;; + (openmp_extras) + copy_pkg_files_to_rocm openmp-extras openmp-extras-runtime + copy_pkg_files_to_rocm openmp-extras openmp-extras-dev + ;; + (rocblas) + copy_pkg_files_to_rocm rocblas rocblas-dev + ;; + (*) + echo "post processing is not required for ${UNTAR_COMPONENT_NAME}" + ;; +esac + diff --git a/rocm-build/rocm-6.1.0.xml b/rocm-build/rocm-6.1.0.xml new file mode 100644 index 000000000..4bb977a09 --- /dev/null +++ b/rocm-build/rocm-6.1.0.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rocm-build/rocm-6.1.1.xml b/rocm-build/rocm-6.1.1.xml new file mode 100644 index 000000000..1f7847add --- /dev/null +++ b/rocm-build/rocm-6.1.1.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rocm-build/upload_packages.sh b/rocm-build/upload_packages.sh new file mode 100755 index 000000000..6f4d3bfa4 --- /dev/null +++ b/rocm-build/upload_packages.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -x + + +BUILD_COMPONENT="$1" +PACKAGEEXT=${PACKAGEEXT:-$2} + +COMP_DIR=$(./${INFRA_REPO}/build/build_${BUILD_COMPONENT}.sh -o ${PACKAGEEXT}) + +TARGET_ARTI_URL=${TARGET_ARTI_URL:-$3} + + +[ -z "$JFROG_TOKEN" ] && echo "JFrog token is not set, skip uploading..." && exit 0 +[ -z "$TARGET_ARTI_URL" ] && echo "Target URL is not set, skip uploading..." && exit 0 +[ -z "$COMP_DIR" ] && echo "No packages in ${BUILD_COMPONENT}" && exit 0 +[ ! -d "$COMP_DIR" ] && echo "NO ${COMP_DIR} folder..." && exit 0 + +PKG_NAME_LIST=( "${COMP_DIR}"/* ) + +for pkg in "${PKG_NAME_LIST[@]}"; do + if [[ "${ENABLE_ADDRESS_SANITIZER}" != "true" ]] || [[ "${pkg##*/}" =~ "-asan" ]]; then + echo "Uploading $pkg ..." + if ! curl -f -H "X-JFrog-Art-Api:${JFROG_TOKEN}" \ + -X PUT "${TARGET_ARTI_URL}/$(basename ${pkg})" \ + -T "${COMP_DIR}/$(basename ${pkg})"; then + echo "Unable to upload $pkg ..." >&2 && exit 1 + fi + echo "$pkg uploaded..." + fi +done + From 27bd772bbe10ad0b5e134a7ef9cad5acc7f4aeef Mon Sep 17 00:00:00 2001 From: "Wang, Yanyao" Date: Wed, 5 Jun 2024 09:50:20 -0700 Subject: [PATCH 110/175] Update the branch of ROCm repo after testing --- rocm-build/rocm-6.1.0.xml | 2 +- rocm-build/rocm-6.1.1.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rocm-build/rocm-6.1.0.xml b/rocm-build/rocm-6.1.0.xml index 4bb977a09..83f1b0e41 100644 --- a/rocm-build/rocm-6.1.0.xml +++ b/rocm-build/rocm-6.1.0.xml @@ -6,7 +6,7 @@ sync-c="true" sync-j="4" /> - + diff --git a/rocm-build/rocm-6.1.1.xml b/rocm-build/rocm-6.1.1.xml index 1f7847add..868fabfd9 100644 --- a/rocm-build/rocm-6.1.1.xml +++ b/rocm-build/rocm-6.1.1.xml @@ -6,7 +6,7 @@ sync-c="true" sync-j="4" /> - + From b7c6671e06cab4d59d1504f7375418117a1c4b37 Mon Sep 17 00:00:00 2001 From: "Wang, Yanyao" Date: Wed, 5 Jun 2024 10:41:25 -0700 Subject: [PATCH 111/175] Fix Markdown formate for the linter check --- README.md | 2 +- rocm-build/README.md | 46 +++++++++++++++------------- rocm-build/docker/ubuntu20/README.md | 10 ++++-- rocm-build/docker/ubuntu22/README.md | 8 +++++ 4 files changed, 42 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 31744f337..819c18743 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,6 @@ Each ROCm component repository contains directions for building that component, Each release of the ROCm software supports specific hardware and software configurations. Refer to [System requirements (Linux)](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html) for the current supported hardware and OS. - ## Build ROCm from source The Build will use as many processors as it can find to build in parallel. Some of the compiles can consume as much as 10GB of RAM, so make sure you have plenty of Swap Space ! @@ -151,6 +150,7 @@ out/ubuntu-22.04/22.04/logs/rocblas.inprogress # Example # All logs pertaining to passed components, use the component names. out/ubuntu-22.04/22.04/logs/rocblas # Example ``` + Note: [Overview for ROCm.mk](rocm-build/README.md) ## ROCm documentation diff --git a/rocm-build/README.md b/rocm-build/README.md index 9e95434b2..d8d81941e 100644 --- a/rocm-build/README.md +++ b/rocm-build/README.md @@ -1,33 +1,37 @@ # Overview for ROCm.mk + This Makefile builds the various projects that makes up ROCm in the correct order. It is expected to be run in an environment with the tooling set up. An easy way to do this is to use Docker. -# Targets -- all (default) -- rocm-dev (a subset of all) -- clean -- list_components -- help -- T_foo -- C_foo +## Targets +* all (default) +* rocm-dev (a subset of all) +* clean +* list_components +* help +* T_foo +* C_foo -# Makefile Variables -- PEVAL set to 1 to enable some Makefile debugging code. -- RELEASE\_FLAG set to "" to avoid passing "-r" to builds, effect is package defined. -- NOBUILD="foo bar" to avoid adding foo and bar into the dependencies of top level targets. They still may be +## Makefile Variables + +* PEVAL set to 1 to enable some Makefile debugging code. +* RELEASE\_FLAG set to "" to avoid passing "-r" to builds, effect is package defined. +* NOBUILD="foo bar" to avoid adding foo and bar into the dependencies of top level targets. They still may be built if they are needed as dependencies of other top level targets. -- toplevel +* toplevel -# Makefile assumptions +## Makefile assumptions -## Requirements for package "foo" +### Requirements for package "foo" -### program build\_foo.sh -- Should take option "-c" to clean -- Should take option "-r" to do a normal "RelWithDeb" build +#### program build\_foo.sh -## For package "foo" we define some targets -- T\_foo - The main build target, calls "build\_foo.sh -r" -- C\_foo - Clean target, calls "build_foo.sh -c" +* Should take option "-c" to clean +* Should take option "-r" to do a normal "RelWithDeb" build + +### For package "foo" we define some targets + +* T\_foo - The main build target, calls "build\_foo.sh -r" +* C\_foo - Clean target, calls "build_foo.sh -c" diff --git a/rocm-build/docker/ubuntu20/README.md b/rocm-build/docker/ubuntu20/README.md index a6afb0bc2..57ab88c4f 100644 --- a/rocm-build/docker/ubuntu20/README.md +++ b/rocm-build/docker/ubuntu20/README.md @@ -1,20 +1,26 @@ ## Steps to build the Docker Image + 1. Clone this repositry + ```bash git clone -b roc-6.1.x https://github.com/ROCm/ROCm.git ``` + 2. Go into the OS specific docker directory in build-infra + ```bash cd ROCm/rocm-build/docker/ubuntu20 ``` 3. Build the Docker image + ```bash docker build -t . ``` + replace the `` with the new Docker image Name of your choice, -5. After successful build, verify your \ in the list all available docker images. +4. After successful build, verify your \ in the list all available docker images. + ```bash docker images ``` - diff --git a/rocm-build/docker/ubuntu22/README.md b/rocm-build/docker/ubuntu22/README.md index 6dc60c845..29c8eea91 100644 --- a/rocm-build/docker/ubuntu22/README.md +++ b/rocm-build/docker/ubuntu22/README.md @@ -1,18 +1,26 @@ ## Steps to build the Docker Image + 1. Clone this repositry + ```bash git clone -b roc-6.1.x https://github.com/ROCm/ROCm.git ``` + 2. Go into the OS specific docker directory in build-infra + ```bash cd ROCm/rocm-build/docker/ubuntu22 ``` + 3. Build the docker image + ```bash docker build -t . ``` + replace the `` with the new Docker image Name of your choice, 4. After successful build, verify your \ in the list all available docker images. + ```bash docker images ``` From acca214a29e3e629b2fd7d7e9c8ae706230fdbc1 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Thu, 6 Jun 2024 11:43:07 -0400 Subject: [PATCH 112/175] Update hipTensor.yml --- .azuredevops/components/hipTensor.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 3007c08cb..d0ae28711 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -54,12 +54,7 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/llvm -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang - -DROCM_PATH="$(Agent.BuildDirectory)/rocm" - -DCMAKE_BUILD_TYPE=Release - -DHIPTENSOR_BUILD_TESTS=ON - -DAMDGPU_TARGETS=gfx90a -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 8c3eaa1fda07574a24cf2096170af8a4fc9595c2 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Thu, 6 Jun 2024 11:56:08 -0400 Subject: [PATCH 113/175] Update hipTensor.yml --- .azuredevops/components/hipTensor.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index d0ae28711..a24bf828e 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -56,5 +56,6 @@ jobs: extraBuildFlags: >- -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 7d3fb2572560f18220a7d7fa17f3a052f37b614a Mon Sep 17 00:00:00 2001 From: Peter Park Date: Thu, 6 Jun 2024 10:27:00 -0700 Subject: [PATCH 114/175] Update links in compat matrix and what-is-rocm (#3253) * Update links in compat matrix and what-is-rocm * Tensorflow -> TensorFlow * Remove extra lines * Revert "Remove extra lines" This reverts commit 607c4323ac77fc120bcbcf3183cbf70cff12073a. ROCm Debug Agent --- docs/compatibility/compatibility-matrix.rst | 28 ++++++++++----------- docs/what-is-rocm.rst | 10 ++++---- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/compatibility/compatibility-matrix.rst b/docs/compatibility/compatibility-matrix.rst index 6c629a3cd..859dfdbf4 100644 --- a/docs/compatibility/compatibility-matrix.rst +++ b/docs/compatibility/compatibility-matrix.rst @@ -36,9 +36,9 @@ Use this matrix to view the ROCm compatibility across successive major and minor ,, ECOSYSTEM SUPPORT:,, :doc:`PyTorch `,"2.1, 2.0, 1.13","2.1, 2.0, 1.13" - :doc:`Tensorflow `,"2.15, 2.14, 2.13","2.14, 2.13, 2.12" + :doc:`TensorFlow `,"2.15, 2.14, 2.13","2.14, 2.13, 2.12" :doc:`JAX `,0.4.26,0.4.26 - `ONNX-RT `_,1.17.3,1.14.1 + `ONNX Runtime `_,1.17.3,1.14.1 ,, 3RD PARTY COMMUNICATION LIBS:,, `UCC `_,>=1.2.0,>=1.2.0 @@ -52,12 +52,12 @@ Use this matrix to view the ROCm compatibility across successive major and minor :doc:`Composable Kernel `,1.1.0,1.1.0 :doc:`MIGraphX `,2.9.0,2.8.0 :doc:`MIOpen `,3.1.0,3.0.0 - :doc:`MIVisionX `,2.5.0,2.5.0 + :doc:`MIVisionX `,2.5.0,2.5.0 :doc:`rocDecode `,0.5.0,N/A - :doc:`RPP `,1.5.0,1.4.0 + :doc:`ROCm Performance Primitives (RPP) `,1.5.0,1.4.0 ,, COMMUNICATION:,, - :doc:`rccl `,2.18.6,2.18.3 + :doc:`RCCL `,2.18.6,2.18.3 ,, MATH LIBS:,, `half `_ ,1.12.0,1.12.0 @@ -86,7 +86,7 @@ Use this matrix to view the ROCm compatibility across successive major and minor ,, SUPPORT LIBS:,, `hipother `_,6.1.40091,6.0.32830 - `rocm-cmake `_,0.12.0,0.11.0 + :doc:`ROCm CMake `,0.12.0,0.11.0 `rocm-core `_,6.1.0,6.0.0 `ROCT-Thunk-Interface `_,20240125.3.30,20231016.2.245 ,, @@ -94,15 +94,15 @@ Use this matrix to view the ROCm compatibility across successive major and minor :doc:`AMD SMI `,24.4.1,23.4.2 :doc:`HIPIFY `,17.0.0,17.0.0 :doc:`ROCdbgapi `,0.71.0,0.71.0 - `ROCdebug-Agent `_,2.0.3,2.0.3 - :doc:`rocGDB `,14.1.0,13.2.0 - :doc:`rocProfiler `,2.0.60100,2.0.0 + `ROCm Debug Agent (ROCdebug-agent) `_,2.0.3,2.0.3 + :doc:`rocminfo `,1.0.0,1.0.0 + :doc:`ROCProfiler `,2.0.60100,2.0.0 `rocprofiler-register `_,0.3.0,N/A - :doc:`rocTracer `,4.1.60100,4.1.0 - `rocm_bandwidth_test `_,1.4.0,1.4.0 + :doc:`ROCTracer `,4.1.60100,4.1.0 + :doc:`ROCm Bandwidth Test `,1.4.0,1.4.0 :doc:`ROCm Data Center Tool `,0.3.0,0.3.0 - `rocminfo `_,1.0.0,1.0.0 - :doc:`ROCm SMI Lib `,7.0.0,6.0.0 + :doc:`ROCm Debugger (ROCgdb) `,14.1.0,13.2.0 + :doc:`ROCm SMI `,7.0.0,6.0.0 :doc:`ROCm Validation Suite `,rocm-6.1.0,rocm-6.0.0 :doc:`TransferBench `,1.48,1.46 ,, @@ -116,7 +116,7 @@ Use this matrix to view the ROCm compatibility across successive major and minor RUNTIMES:,, :doc:`HIP `,6.1.40091,6.0.32830 `OpenCL Runtime `_,2.0.0,2.0.0 - `ROCR Runtime `_,1.13.0,1.12.0 + :doc:`ROCR-Runtime `,1.13.0,1.12.0 .. rubric:: Footnotes diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index a01cc9b38..ea328b036 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -99,18 +99,18 @@ Tools ":doc:`AMD SMI `", "C library for Linux that provides a user space interface for applications to monitor and control AMD devices" ":doc:`HIPIFY `", "Translates CUDA source code into portable HIP C++" - ":doc:`ROCm Bandwidth Test `", "Captures the performance characteristics of buffer copying and kernel read/write operations" + ":doc:`ROCdbgapi `", "ROCm debugger API library" ":doc:`ROCmCC <./reference/rocmcc>`", "Clang/LLVM-based compiler" + ":doc:`rocminfo `", "Reports system information" + ":doc:`ROCProfiler `", "Profiling tool for HIP applications" + ":doc:`ROCTracer `", "Intercepts runtime API calls and traces asynchronous activity" + ":doc:`ROCm Bandwidth Test `", "Captures the performance characteristics of buffer copying and kernel read/write operations" ":doc:`ROCm CMake `", "Collection of CMake modules for common build and development tasks" ":doc:`ROCm Data Center Tool `", "Simplifies administration and addresses key infrastructure challenges in AMD GPUs in cluster and data-center environments" "`ROCm Debug Agent (ROCdebug-agent) `_ ", "Prints the state of all AMD GPU wavefronts that caused a queue error by sending a SIGQUIT signal to the process while the program is running" ":doc:`ROCm Debugger (ROCgdb) `", "Source-level debugger for Linux, based on the GNU Debugger (GDB)" - ":doc:`ROCdbgapi `", "ROCm debugger API library" - ":doc:`rocminfo `", "Reports system information" ":doc:`ROCm SMI `", "C library for Linux that provides a user space interface for applications to monitor and control GPU applications" ":doc:`ROCm Validation Suite `", "Detects and troubleshoots common problems affecting AMD GPUs running in a high-performance computing environment" - ":doc:`ROCProfiler `", "Profiling tool for HIP applications" - ":doc:`ROCTracer `", "Intercepts runtime API calls and traces asynchronous activity" ":doc:`TransferBench `", "Utility to benchmark simultaneous transfers between user-specified devices (CPUs/GPUs)" Compilers From 2fdbc8b47510bc2582679af29fa5c9ac29e77013 Mon Sep 17 00:00:00 2001 From: "Wang, Yanyao" Date: Thu, 6 Jun 2024 12:38:13 -0700 Subject: [PATCH 115/175] Add the manifest file for ROCm6.1.2 --- README.md | 2 +- rocm-build/rocm-6.1.2.xml | 71 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 rocm-build/rocm-6.1.2.xml diff --git a/README.md b/README.md index 819c18743..c93a4fe0e 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,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.1.0 # or 6.1.1 +export ROCM_VERSION=6.1.0 # or 6.1.1 6.1.2 ~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.1.x -m rocm-build/rocm-${ROCM_VERSION}.xml ~/bin/repo sync diff --git a/rocm-build/rocm-6.1.2.xml b/rocm-build/rocm-6.1.2.xml new file mode 100644 index 000000000..94dedfa3c --- /dev/null +++ b/rocm-build/rocm-6.1.2.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From d17e6027699e4e2505e88b6e299074deb4b035af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Jun 2024 20:04:21 +0000 Subject: [PATCH 116/175] Bump rocm-docs-core from 1.2.0 to 1.4.0 in /docs/sphinx Bumps [rocm-docs-core](https://github.com/ROCm/rocm-docs-core) from 1.2.0 to 1.4.0. - [Release notes](https://github.com/ROCm/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ROCm/rocm-docs-core/compare/v1.2.0...v1.4.0) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- docs/sphinx/requirements.in | 2 +- docs/sphinx/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index 84fbdfb56..e0a45158f 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1,2 +1,2 @@ -rocm-docs-core==1.2.0 +rocm-docs-core==1.4.0 sphinx-reredirects==0.1.3 diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 46954c981..a7f311e62 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -92,7 +92,7 @@ requests==2.32.2 # via # pygithub # sphinx -rocm-docs-core==1.2.0 +rocm-docs-core==1.4.0 # via -r requirements.in smmap==5.0.1 # via gitdb From d3f634ea33f90c869ea954d97f7a35a17d7d2e3b Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Fri, 7 Jun 2024 11:14:32 -0400 Subject: [PATCH 117/175] Remove branch filter for aomp pipeline trigger (#3258) Previous filter was not triggering this CI pipeline when ROCm-Runtime build was triggered from a pipeline completion trigger of llvm-project. --- .azuredevops/ci-builds/aomp.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.azuredevops/ci-builds/aomp.yml b/.azuredevops/ci-builds/aomp.yml index cd3912c3e..7703460f4 100644 --- a/.azuredevops/ci-builds/aomp.yml +++ b/.azuredevops/ci-builds/aomp.yml @@ -17,11 +17,7 @@ resources: pipelines: - pipeline: rocr-runtime_pipeline source: \ROCR-Runtime - trigger: - branches: - include: - - master - + trigger: true # this job will only be triggered after successful build sequence of llvm-project and ROCR-Runtime trigger: none From fdd0ed080b0b6d41947a72aaa783585703fd8159 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Fri, 7 Jun 2024 13:29:14 -0400 Subject: [PATCH 118/175] fix a typo --- .azuredevops/templates/steps/dependencies-other.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/templates/steps/dependencies-other.yml b/.azuredevops/templates/steps/dependencies-other.yml index b5c062d0c..347188506 100644 --- a/.azuredevops/templates/steps/dependencies-other.yml +++ b/.azuredevops/templates/steps/dependencies-other.yml @@ -17,7 +17,7 @@ steps: displayName: 'sudo apt-get upgrade' inputs: targetType: inline - script: sudo apt-get update + script: sudo apt-get upgrade - task: Bash@3 displayName: 'sudo apt-get fix' inputs: From 8db92209352933809814f4288f22384be1aba8b5 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Sat, 8 Jun 2024 22:20:11 -0400 Subject: [PATCH 119/175] External CI: non-interactive apt upgrades (#3271) --- .azuredevops/templates/steps/dependencies-other.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.azuredevops/templates/steps/dependencies-other.yml b/.azuredevops/templates/steps/dependencies-other.yml index 347188506..14f413a19 100644 --- a/.azuredevops/templates/steps/dependencies-other.yml +++ b/.azuredevops/templates/steps/dependencies-other.yml @@ -12,23 +12,31 @@ steps: displayName: 'sudo apt-get update' inputs: targetType: inline - script: sudo apt-get update + script: sudo apt-get --yes update + env: + DEBIAN_FRONTEND: noninteractive - task: Bash@3 displayName: 'sudo apt-get upgrade' inputs: targetType: inline - script: sudo apt-get upgrade + script: sudo apt-get --yes upgrade + env: + DEBIAN_FRONTEND: noninteractive - task: Bash@3 displayName: 'sudo apt-get fix' inputs: targetType: inline script: sudo apt --yes --fix-broken install + env: + DEBIAN_FRONTEND: noninteractive - ${{ if gt(length(parameters.aptPackages), 0) }}: - task: Bash@3 displayName: 'sudo apt-get install ...' inputs: targetType: inline script: sudo apt-get --yes install ${{ join(' ', parameters.aptPackages) }} + env: + DEBIAN_FRONTEND: noninteractive - ${{ if gt(length(parameters.pipModules), 0) }}: - task: Bash@3 displayName: 'pip install ...' From b12e5c32cad85f40db6065a6981721842c92b5d4 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 10:15:05 -0400 Subject: [PATCH 120/175] Restore hipTensor's original flag, remove GNinja --- .azuredevops/components/hipTensor.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index a24bf828e..1495192c7 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -54,8 +54,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/llvm -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang - -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm - -GNinja + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -DCMAKE_BUILD_TYPE=Release + -DHIPTENSOR_BUILD_TESTS=ON + -DAMDGPU_TARGETS=gfx90a + -j32 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 2b492056ec3386181e5581f74492d2d0f21eec40 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 10:46:33 -0400 Subject: [PATCH 121/175] add multithread Flag to build-cmake to allow hipTensor pass -j16 --- .azuredevops/components/hipTensor.yml | 2 +- .azuredevops/templates/steps/build-cmake.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 1495192c7..d36c15bfd 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -60,5 +60,5 @@ jobs: -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON -DAMDGPU_TARGETS=gfx90a - -j32 + multithreadFlag: -j16 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml index 6ba86d7a1..3033af5ed 100644 --- a/.azuredevops/templates/steps/build-cmake.yml +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -32,7 +32,7 @@ steps: displayName: '${{parameters.componentName }} Build' inputs: workingDirectory: ${{ parameters.cmakeBuildDir }} - cmakeArgs: '--build ${{ parameters.cmakeTargetDir }}' + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} ${{ parameters.multithreadFlag }}' retryCountOnTaskFailure: 10 # equivalent to running make $cmakeTarget from $cmakeBuildDir # e.g., make install From 52bccc1819e91cc77b31dd77f9c0523c6c77963e Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 10:51:38 -0400 Subject: [PATCH 122/175] add variable declaration --- .azuredevops/templates/steps/build-cmake.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml index 3033af5ed..0611cf34a 100644 --- a/.azuredevops/templates/steps/build-cmake.yml +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -5,6 +5,9 @@ parameters: - name: extraBuildFlags type: string default: '' +- name: multithreadFlag + type: string + default: '' - name: cmakeBuildDir type: string default: 'build' From f8151b6cb5792fb9a8c60ea0746335562ea03c1c Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Mon, 10 Jun 2024 11:29:47 -0400 Subject: [PATCH 123/175] rocprofiler-register: Add unit testing (#3272) Since this component uses the base pool, does not need GPU for testing and is very quick to run, unit testing can be done within the same job. --- .azuredevops/components/rocprofiler-register.yml | 13 +++++++++++++ .azuredevops/templates/steps/build-cmake.yml | 14 +++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/.azuredevops/components/rocprofiler-register.yml b/.azuredevops/components/rocprofiler-register.yml index 0f4e14ca0..5ceb367d9 100644 --- a/.azuredevops/components/rocprofiler-register.yml +++ b/.azuredevops/components/rocprofiler-register.yml @@ -21,4 +21,17 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: rocprofiler-register + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: rocprofiler-register-tests + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH=$(Build.BinariesDirectory) + cmakeBuildDir: 'tests/build' + installEnabled: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: rocprofiler-register + testDir: 'tests/build' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml index 6ba86d7a1..aeb7d493a 100644 --- a/.azuredevops/templates/steps/build-cmake.yml +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -17,6 +17,9 @@ parameters: - name: installDir type: string default: '$(Build.BinariesDirectory)' +- name: installEnabled + type: boolean + default: true steps: # create workingDirectory if it does not exist and change into it @@ -36,8 +39,9 @@ steps: retryCountOnTaskFailure: 10 # equivalent to running make $cmakeTarget from $cmakeBuildDir # e.g., make install -- task: CMake@1 - displayName: '${{parameters.componentName }} ${{ parameters.cmakeTarget }}' - inputs: - workingDirectory: ${{ parameters.cmakeBuildDir }} - cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} --target ${{ parameters.cmakeTarget }}' +- ${{ if eq(parameters.installEnabled, true) }}: + - task: CMake@1 + displayName: '${{parameters.componentName }} ${{ parameters.cmakeTarget }}' + inputs: + workingDirectory: ${{ parameters.cmakeBuildDir }} + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} --target ${{ parameters.cmakeTarget }}' From 2e73c5627559eede1bbd93585793224cafcc3545 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 11:37:22 -0400 Subject: [PATCH 124/175] Update hipTensor.yml --- .azuredevops/components/hipTensor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index d36c15bfd..9c07324cc 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -28,7 +28,7 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + vmImage: ${{ variables.HIGH_BUILD_POOL }} workspace: clean: all steps: @@ -60,5 +60,5 @@ jobs: -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON -DAMDGPU_TARGETS=gfx90a - multithreadFlag: -j16 + multithreadFlag: -j64 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From ab1c62464a58b6c950ab313a49d8fbd5ea240fed Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 11:38:32 -0400 Subject: [PATCH 125/175] change pool to high --- .azuredevops/components/hipTensor.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 9c07324cc..b8a100496 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -27,8 +27,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.HIGH_BUILD_POOL }} + pool: ${{ variables.HIGH_BUILD_POOL }} workspace: clean: all steps: From 98f2e183a2ba477b0ea2a25c152e12a01b0dc147 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 11:56:25 -0400 Subject: [PATCH 126/175] change pool back to MEDIUM before merge --- .azuredevops/components/hipTensor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index b8a100496..c1207fa38 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -27,7 +27,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.HIGH_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} workspace: clean: all steps: @@ -59,5 +59,5 @@ jobs: -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON -DAMDGPU_TARGETS=gfx90a - multithreadFlag: -j64 + multithreadFlag: -j32 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 05d7992361d87dd0e0f5f85af9905daad9b636ef Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 13:03:53 -0400 Subject: [PATCH 127/175] change multithread flag --- .azuredevops/components/hipTensor.yml | 2 +- .azuredevops/templates/steps/build-cmake.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index c1207fa38..75de4a55c 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -59,5 +59,5 @@ jobs: -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON -DAMDGPU_TARGETS=gfx90a - multithreadFlag: -j32 + multithreadFlag: -j$(nproc) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml index 0611cf34a..bb62bec6c 100644 --- a/.azuredevops/templates/steps/build-cmake.yml +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -35,7 +35,7 @@ steps: displayName: '${{parameters.componentName }} Build' inputs: workingDirectory: ${{ parameters.cmakeBuildDir }} - cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} ${{ parameters.multithreadFlag }}' + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} -- ${{ parameters.multithreadFlag }}' retryCountOnTaskFailure: 10 # equivalent to running make $cmakeTarget from $cmakeBuildDir # e.g., make install From 1be99075e26543c14ce88f4bb3cfd5f21305ac0b Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 13:53:23 -0400 Subject: [PATCH 128/175] Change thread number to 32 --- .azuredevops/components/hipTensor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 75de4a55c..c1207fa38 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -59,5 +59,5 @@ jobs: -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON -DAMDGPU_TARGETS=gfx90a - multithreadFlag: -j$(nproc) + multithreadFlag: -j32 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 627d38412abb114a2cdc2fd355d68eb1e77db095 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 13:58:44 -0400 Subject: [PATCH 129/175] Revert changes to CK --- .azuredevops/components/composable_kernel.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index 09f9f2dc5..765a6360b 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -24,11 +24,10 @@ parameters: jobs: - job: composable_kernel - timeoutInMinutes: 1440 variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.ULTRA_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} workspace: clean: all steps: @@ -54,9 +53,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release - -DINSTANCES_ONLY=ON + -DGPU_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + \ No newline at end of file From b36de1d3d4598ea4ae29f3ca857e521fa3d27a11 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 13:59:33 -0400 Subject: [PATCH 130/175] delete space --- .azuredevops/components/composable_kernel.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index 765a6360b..adef93e84 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -60,4 +60,3 @@ jobs: -DGPU_TARGETS=gfx1030;gfx1100 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - \ No newline at end of file From 93f524586b0a8b7013444869bc61b00c5e1fd40f Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 14:02:04 -0400 Subject: [PATCH 131/175] revert changes made for manual tests --- .azuredevops/components/hipTensor.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index c1207fa38..c06ebda33 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -4,7 +4,7 @@ parameters: default: 'self' - name: checkoutRef type: string - default: 'develop' + default: '' - name: aptPackages type: object default: @@ -39,13 +39,13 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - - ${{ if eq(parameters.checkoutRef, 'develop') }}: + - ${{ 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, 'develop') }}: + - ${{ if ne(parameters.checkoutRef, '') }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmDependencies }} From 3c1d39f251f94967a005792eb1628de21c6675fd Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Mon, 10 Jun 2024 14:02:57 -0400 Subject: [PATCH 132/175] revert changes to rdc --- .azuredevops/components/rdc.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.azuredevops/components/rdc.yml b/.azuredevops/components/rdc.yml index a2d871d8d..9cb48f741 100644 --- a/.azuredevops/components/rdc.yml +++ b/.azuredevops/components/rdc.yml @@ -4,7 +4,7 @@ parameters: default: 'self' - name: checkoutRef type: string - default: 'develop' + default: '' - name: aptPackages type: object default: @@ -34,7 +34,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.LOW_BUILD_POOL }} + pool: ${{ variables.MEDIUM_BUILD_POOL }} workspace: clean: all steps: @@ -46,13 +46,13 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - - ${{ if eq(parameters.checkoutRef, 'develop') }}: + - ${{ 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, 'develop') }}: + - ${{ if ne(parameters.checkoutRef, '') }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmDependencies }} From f500c3298947635081cc711f04ddb2eede244bd5 Mon Sep 17 00:00:00 2001 From: randyh62 <42045079+randyh62@users.noreply.github.com> Date: Mon, 10 Jun 2024 11:59:47 -0700 Subject: [PATCH 133/175] add quarantine_size_mb (#3264) * add quarantine_size_mb * Update docs/conceptual/using-gpu-sanitizer.md Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * Update docs/conceptual/using-gpu-sanitizer.md Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> * format fix * format fix again * ASAN capitalization * remove particular * indent bullets * Leo comments --------- Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> --- docs/conceptual/using-gpu-sanitizer.md | 32 ++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/docs/conceptual/using-gpu-sanitizer.md b/docs/conceptual/using-gpu-sanitizer.md index 88eb16f15..6206fd0dc 100644 --- a/docs/conceptual/using-gpu-sanitizer.md +++ b/docs/conceptual/using-gpu-sanitizer.md @@ -13,7 +13,9 @@ This document provides documentation on using ROCm ASan. For information about LLVM ASan, see the [LLVM documentation](https://clang.llvm.org/docs/AddressSanitizer.html). -**Note:** The beta release of LLVM ASan for ROCm is currently tested and validated on Ubuntu 20.04. +:::{note} +The beta release of LLVM ASan for ROCm is currently tested and validated on Ubuntu 20.04. +::: ## Compiling for ASan @@ -34,9 +36,13 @@ Recommendations for doing this are: Other architectures are allowed, but their device code will not be instrumented and a warning will be emitted. -**Note:** It is not an error to compile some files without ASan instrumentation, but doing so reduces the ability of the process to detect addressing errors. However, if the main program "`a.out`" does not directly depend on the ASan runtime (`libclang_rt.asan-x86_64.so`) after the build completes (check by running `ldd` (List Dynamic Dependencies) or `readelf`), the application will immediately report an error at runtime as described in the next section. +:::{tip} +It is not an error to compile some files without ASan instrumentation, but doing so reduces the ability of the process to detect addressing errors. However, if the main program "`a.out`" does not directly depend on the ASan runtime (`libclang_rt.asan-x86_64.so`) after the build completes (check by running `ldd` (List Dynamic Dependencies) or `readelf`), the application will immediately report an error at runtime as described in the next section. +::: -**Note:** When compiling OpenMP programs with ASan instrumentation, it is currently necessary to set the environment variable `LIBRARY_PATH` to `/opt/rocm-/lib/llvm/lib/asan:/opt/rocm-/lib/asan`. At runtime, it may be necessary to add `/opt/rocm-/lib/llvm/lib/asan` to `LD_LIBRARY_PATH`. +:::{note} +When compiling OpenMP programs with ASan instrumentation, it is currently necessary to set the environment variable `LIBRARY_PATH` to `/opt/rocm-/lib/llvm/lib/asan:/opt/rocm-/lib/asan`. At runtime, it may be necessary to add `/opt/rocm-/lib/llvm/lib/asan` to `LD_LIBRARY_PATH`. +::: ### About compilation time @@ -92,15 +98,23 @@ If it does not appear, when executed the application will quickly output an ASan There is an environment variable, `ASAN_OPTIONS`, that can be used to adjust the runtime behavior of the ASan runtime itself. There are more than a hundred "flags" that can be adjusted (see an old list at [flags](https://github.com/google/sanitizers/wiki/AddressSanitizerFlags)) but the default settings are correct and should be used in most cases. It must be noted that these options only affect the host ASan runtime. The device runtime only currently supports the default settings for the few relevant options. -There are two `ASAN_OPTION` flags of particular note. +There are three `ASAN_OPTION` flags of note. * `halt_on_error=0/1 default 1`. -This tells the ASan runtime to halt the application immediately after detecting and reporting an addressing error. The default makes sense because the application has entered the realm of undefined behavior. If the developer wishes to have the application continue anyway, this option can be set to zero. However, the application and libraries should then be compiled with the additional option `-fsanitize-recover=address`. Note that the ROCm optional ASan instrumented libraries are not compiled with this option and if an error is detected within one of them, but halt_on_error is set to 0, more undefined behavior will occur. + This tells the ASan runtime to halt the application immediately after detecting and reporting an addressing error. The default makes sense because the application has entered the realm of undefined behavior. If the developer wishes to have the application continue anyway, this option can be set to zero. However, the application and libraries should then be compiled with the additional option `-fsanitize-recover=address`. Note that the ROCm optional ASan instrumented libraries are not compiled with this option and if an error is detected within one of them, but halt_on_error is set to 0, more undefined behavior will occur. * `detect_leaks=0/1 default 1`. -This option directs the ASan runtime to enable the [Leak Sanitizer](https://clang.llvm.org/docs/LeakSanitizer.html) (LSan). Unfortunately, for heterogeneous applications, this default will result in significant output from the leak sanitizer when the application exits due to allocations made by the language runtime which are not considered to be leaks. This output can be avoided by adding `detect_leaks=0` to the `ASAN_OPTIONS`, or alternatively by producing an LSan suppression file (syntax described [here](https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer)) and activating it with environment variable `LSAN_OPTIONS=suppressions=/path/to/suppression/file`. When using a suppression file, a suppression report is printed by default. The suppression report can be disabled by using the `LSAN_OPTIONS` flag `print_suppressions=0`. + This option directs the ASan runtime to enable the [Leak Sanitizer](https://clang.llvm.org/docs/LeakSanitizer.html) (LSan). For heterogeneous applications, this default results in significant output from the leak sanitizer when the application exits due to allocations made by the language runtime which are not considered to be leaks. This output can be avoided by adding `detect_leaks=0` to the `ASAN_OPTIONS`, or alternatively by producing an LSan suppression file (syntax described [here](https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer)) and activating it with environment variable `LSAN_OPTIONS=suppressions=/path/to/suppression/file`. When using a suppression file, a suppression report is printed by default. The suppression report can be disabled by using the `LSAN_OPTIONS` flag `print_suppressions=0`. + +* `quarantine_size_mb=N default 256` + + This option defines the number of megabytes (MB) `N` of memory that the ASan runtime will hold after it is `freed` to detect use-after-free situations. This memory is unavailable for other purposes. The default of 256 MB may be too small to detect some use-after-free situations, especially given that the large size of many GPU memory allocations may push `freed` allocations out of quarantine before the attempted use. + + :::{note} + Setting the value of `quarantine_size_mb` larger may enable more problematic uses to be detected, but at the cost of reducing memory available for other purposes. + ::: ## Runtime overhead @@ -186,7 +200,7 @@ or currently may include one or two surprising CPU side tracebacks mentioning :`hostcall`". This is due to how `malloc` and `free` are implemented for GPU code and these call stacks can be ignored. -### Running with `rocgdb` +## Running ASan with `rocgdb` `rocgdb` can be used to further investigate ASan detected errors, with some preparation. @@ -238,7 +252,7 @@ $ rocgdb (gdb) c ``` -### Using ASan with a short HIP application +## Using ASan with a short HIP application Consider the following simple and short demo of using the Address Sanitizer with a HIP application: @@ -402,7 +416,7 @@ Shadow byte legend (one shadow byte represents 8 application bytes): ==2817==ABORTING ``` -### Known issues with using GPU sanitizer +## Known issues with using GPU sanitizer * Red zones must have limited size. It is possible for an invalid access to completely miss a red zone and not be detected. From 67f04977fb94123e642bb9a0f4512bec65847a5d Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 11 Jun 2024 09:53:14 -0400 Subject: [PATCH 134/175] Move double dash to parameter for generic use case --- .azuredevops/components/hipTensor.yml | 2 +- .azuredevops/templates/steps/build-cmake.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index c06ebda33..0d82025d4 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -59,5 +59,5 @@ jobs: -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON -DAMDGPU_TARGETS=gfx90a - multithreadFlag: -j32 + multithreadFlag: -- -j32 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml index bb62bec6c..0611cf34a 100644 --- a/.azuredevops/templates/steps/build-cmake.yml +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -35,7 +35,7 @@ steps: displayName: '${{parameters.componentName }} Build' inputs: workingDirectory: ${{ parameters.cmakeBuildDir }} - cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} -- ${{ parameters.multithreadFlag }}' + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} ${{ parameters.multithreadFlag }}' retryCountOnTaskFailure: 10 # equivalent to running make $cmakeTarget from $cmakeBuildDir # e.g., make install From bddbc6b444098253d161edd4b4c464b9ce277f43 Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 11 Jun 2024 10:07:20 -0400 Subject: [PATCH 135/175] revert changes to see if the build still fails --- .azuredevops/components/hipTensor.yml | 2 +- .azuredevops/templates/steps/build-cmake.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 0d82025d4..c06ebda33 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -59,5 +59,5 @@ jobs: -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON -DAMDGPU_TARGETS=gfx90a - multithreadFlag: -- -j32 + multithreadFlag: -j32 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml index 0611cf34a..bb62bec6c 100644 --- a/.azuredevops/templates/steps/build-cmake.yml +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -35,7 +35,7 @@ steps: displayName: '${{parameters.componentName }} Build' inputs: workingDirectory: ${{ parameters.cmakeBuildDir }} - cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} ${{ parameters.multithreadFlag }}' + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} -- ${{ parameters.multithreadFlag }}' retryCountOnTaskFailure: 10 # equivalent to running make $cmakeTarget from $cmakeBuildDir # e.g., make install From d7eacf56e322f7897065f31e9fe11e198e3580ca Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 11 Jun 2024 10:20:54 -0400 Subject: [PATCH 136/175] adjust variables for manual test --- .azuredevops/components/hipTensor.yml | 8 ++++---- .azuredevops/templates/steps/build-cmake.yml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index c06ebda33..6763108c2 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -4,7 +4,7 @@ parameters: default: 'self' - name: checkoutRef type: string - default: '' + default: 'develop' - name: aptPackages type: object default: @@ -39,13 +39,13 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - - ${{ if eq(parameters.checkoutRef, '') }}: + - ${{ if eq(parameters.checkoutRef, 'develop') }}: - 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, '') }}: + - ${{ if ne(parameters.checkoutRef, 'develop') }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmDependencies }} @@ -59,5 +59,5 @@ jobs: -DCMAKE_BUILD_TYPE=Release -DHIPTENSOR_BUILD_TESTS=ON -DAMDGPU_TARGETS=gfx90a - multithreadFlag: -j32 + multithreadFlag: -- -j32 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml index bb62bec6c..0611cf34a 100644 --- a/.azuredevops/templates/steps/build-cmake.yml +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -35,7 +35,7 @@ steps: displayName: '${{parameters.componentName }} Build' inputs: workingDirectory: ${{ parameters.cmakeBuildDir }} - cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} -- ${{ parameters.multithreadFlag }}' + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} ${{ parameters.multithreadFlag }}' retryCountOnTaskFailure: 10 # equivalent to running make $cmakeTarget from $cmakeBuildDir # e.g., make install From cff1b2b02190582159813bb8c3073fb93899e4bc Mon Sep 17 00:00:00 2001 From: alexxu-amd Date: Tue, 11 Jun 2024 10:39:28 -0400 Subject: [PATCH 137/175] revert changes for manual test --- .azuredevops/components/hipTensor.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 6763108c2..0d82025d4 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -4,7 +4,7 @@ parameters: default: 'self' - name: checkoutRef type: string - default: 'develop' + default: '' - name: aptPackages type: object default: @@ -39,13 +39,13 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build - - ${{ if eq(parameters.checkoutRef, 'develop') }}: + - ${{ 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, 'develop') }}: + - ${{ if ne(parameters.checkoutRef, '') }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmDependencies }} From ace708935df5aa50dd145bf86c68ddf2556a12a4 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Tue, 11 Jun 2024 10:59:13 -0400 Subject: [PATCH 138/175] External CI: updated rocr_debug_agent dependencies (#3277) --- .azuredevops/components/rocr_debug_agent.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.azuredevops/components/rocr_debug_agent.yml b/.azuredevops/components/rocr_debug_agent.yml index ee4429284..32a4a300f 100644 --- a/.azuredevops/components/rocr_debug_agent.yml +++ b/.azuredevops/components/rocr_debug_agent.yml @@ -15,11 +15,13 @@ parameters: - name: rocmDependencies type: object default: + - rocm-cmake - clr - llvm-project - ROCdbgapi - rocminfo - ROCR-Runtime + - rocprofiler-register jobs: - job: rocr_debug_agent @@ -56,5 +58,6 @@ jobs: -DCMAKE_BUILD_TYPE=Release -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake;$(Agent.BuildDirectory)/rocm/lib/cmake/hip -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm + -DROCM_PATH=$(Agent.BuildDirectory)/rocm -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From c4181b924505f59e840395b88156796ffe503697 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 11 Jun 2024 08:37:11 -0700 Subject: [PATCH 139/175] Remove aomp from What is ROCm? page (#3282) --- docs/what-is-rocm.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index ea328b036..5783efe05 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -119,7 +119,6 @@ Compilers .. csv-table:: :header: "Component", "Description" - "`AOMP `_", "Scripted build of `LLVM `_ and supporting software" "`FLANG `_", "An out-of-tree Fortran compiler targeting LLVM" ":doc:`hipCC `", "Compiler driver utility that calls Clang or NVCC and passes the appropriate include and library options for the target compiler and HIP infrastructure" "`LLVM (amdclang) `_ ", "Toolkit for the construction of highly optimized compilers, optimizers, and runtime environments" From 78fdcdf48d0e4723519e2287e15360902db96435 Mon Sep 17 00:00:00 2001 From: Istvan Kiss Date: Tue, 11 Jun 2024 13:27:12 +0200 Subject: [PATCH 140/175] Update docs/conceptual/setting-cus.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> --- docs/conceptual/setting-cus.rst | 47 --------------------------------- docs/how-to/setting-cus.rst | 42 +++++++++++++++++++++++++++++ docs/index.md | 2 +- docs/sphinx/_toc.yml.in | 4 +-- 4 files changed, 45 insertions(+), 50 deletions(-) delete mode 100644 docs/conceptual/setting-cus.rst create mode 100644 docs/how-to/setting-cus.rst diff --git a/docs/conceptual/setting-cus.rst b/docs/conceptual/setting-cus.rst deleted file mode 100644 index 91fa7cc89..000000000 --- a/docs/conceptual/setting-cus.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. meta:: - :description: Setting the number of CUs - :keywords: AMD, ROCm, cu, number of cus - -.. _env-variables-reference: - -************************************************************* -Setting the number of CUs -************************************************************* - -When using GPUs to accelerate compute workloads, it sometimes becomes necessary -to configure the hardware's usage of Compute Units (CU). This is a more advanced -option, so please read this page before experimentation. - -The GPU driver provides two environment variables to set the number of CUs used. The -first one is ``HSA_CU_MASK`` and the second one is ``ROC_GLOBAL_CU_MASK``. The main -difference is that ``ROC_GLOBAL_CU_MASK`` sets the CU mask on queues created by the HIP -or the OpenCL runtimes. While ``HSA_CU_MASK`` sets the mask on a lower level of queue -creation in the driver, this mask will also be set for queues being profiled. - -The environment variables have the following syntax: - -:: - - ID = [0-9][0-9]* ex. base 10 numbers - ID_list = (ID | ID-ID)[, (ID | ID-ID)]* ex. 0,2-4,7 - GPU_list = ID_list ex. 0,2-4,7 - CU_list = 0x[0-F]* | ID_list ex. 0x337F OR 0,2-4,7 - CU_Set = GPU_list : CU_list ex. 0,2-4,7:0-15,32-47 OR 0,2-4,7:0x337F - HSA_CU_MASK = CU_Set [; CU_Set]* ex. 0,2-4,7:0-15,32-47; 3-9:0x337F - -The GPU indices are taken post ``ROCR_VISIBLE_DEVICES`` reordering. For GPUs listed, -the listed or masked CUs will be enabled, the rest disabled. Unlisted GPUs will not -be affected, their CUs will all be enabled. - -The parsing of the variable is stopped when a syntax error occurs. The erroneous set -and the ones following will be ignored. Repeating GPU or CU IDs are a syntax error. -Specifying a mask with no usable CUs (CU_list is 0x0) is a syntax error. For excluding -GPU devices use ``ROCR_VISIBLE_DEVICES``. - -These environment variables only affect ROCm software, not graphics applications. - -It's important to know that not all CU configurations are valid on all devices. For -instance, on devices where two CUs can be combined into a WGP (for kernels running in -WGP mode), it is not valid to disable only a single CU in a WGP. `This paper -`_ can provide more information -about what to expect, when disabling CUs. diff --git a/docs/how-to/setting-cus.rst b/docs/how-to/setting-cus.rst new file mode 100644 index 000000000..4a13a1a48 --- /dev/null +++ b/docs/how-to/setting-cus.rst @@ -0,0 +1,42 @@ +.. meta:: + :description: Setting the number of CUs + :keywords: CU, CUs, number of CUs, compute units + +.. _settings-cus-reference: + +************************************************************* +Setting the number of compute units +************************************************************* + +The GPU driver provides two environment variables to set the number of CUs used: + +- ``HSA_CU_MASK`` +- ``ROC_GLOBAL_CU_MASK`` + +The ``ROC_GLOBAL_CU_MASK`` variable sets the CU mask on queues created by HIP or OpenCL runtimes. The ``HSA_CU_MASK`` variable sets the mask on a lower level of queue creation in the driver. It also sets the mask on the queues being profiled. + +.. tip:: + + When using GPUs to accelerate compute workloads, it sometimes becomes necessary to configure the hardware's usage of compute units (CU). This is a more advanced option, so please read this page before experimentation. + +The environment variables have the following syntax: + +:: + + ID = [0-9][0-9]* ex. base 10 numbers + ID_list = (ID | ID-ID)[, (ID | ID-ID)]* ex. 0,2-4,7 + GPU_list = ID_list ex. 0,2-4,7 + CU_list = 0x[0-F]* | ID_list ex. 0x337F OR 0,2-4,7 + CU_Set = GPU_list : CU_list ex. 0,2-4,7:0-15,32-47 OR 0,2-4,7:0x337F + HSA_CU_MASK = CU_Set [; CU_Set]* ex. 0,2-4,7:0-15,32-47; 3-9:0x337F + +The GPU indices are taken post ``ROCR_VISIBLE_DEVICES`` reordering. The listed or masked CUs are enabled for listed GPUs, and the others are disabled. Unlisted GPUs are not be affected, and their CUs are enabled. + +The variable parsing stops when a syntax error occurs. The erroneous set and the following are ignored. Repeating GPU or CU IDs results in a syntax error. Specifying a mask with no usable CUs (CU_list is 0x0) results in a syntax error. To exclude GPU devices, use ``ROCR_VISIBLE_DEVICES``. + +.. note:: + + These environment variables only affect ROCm software, not graphics applications. + +Not all CU configurations are valid on all devices. For example, on devices where two CUs can be combined into a WGP (for kernels running in WGP mode), it’s not valid to disable only a single CU in a WGP. For more information about what to expect when disabling CUs, see the `Exploring AMD GPU Scheduling Details by Experimenting With “Worst Practices” `_ paper. + diff --git a/docs/index.md b/docs/index.md index 90c4d6600..a07433611 100644 --- a/docs/index.md +++ b/docs/index.md @@ -102,6 +102,7 @@ Our documentation is organized into the following categories: * [Using AddressSanitizer](./conceptual/using-gpu-sanitizer.md) * [Compiler disambiguation](./conceptual/compiler-disambiguation.md) * [OpenMP support in ROCm](./about/compatibility/openmp.md) +* [Setting the number of CUs](./how-to/setting-cus) * [System level debugging](./how-to/system-debugging.md) * [GitHub examples](https://github.com/amd/rocm-examples) ::: @@ -117,7 +118,6 @@ Our documentation is organized into the following categories: * [MI250](./conceptual/gpu-arch/mi250.md) * [MI300](./conceptual/gpu-arch/mi300.md) * [GPU memory](./conceptual/gpu-memory.md) -* [Setting the number of CUs](./conceptual/setting-cus) * [File structure (Linux FHS)](./conceptual/file-reorg.md) * [GPU isolation techniques](./conceptual/gpu-isolation.md) * [Using CMake](./conceptual/cmake-packages.rst) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index eea43ac4a..3757f8c9d 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -101,6 +101,8 @@ subtrees: title: Compiler disambiguation - file: about/compatibility/openmp.md title: OpenMP support + - file: how-to/setting-cus + title: Setting the number of CUs - file: how-to/system-debugging.md title: Debugging - url: https://github.com/amd/rocm-examples @@ -140,8 +142,6 @@ subtrees: title: White paper - file: conceptual/gpu-memory.md title: GPU memory - - file: conceptual/setting-cus - title: Setting the number of CUs - file: conceptual/file-reorg.md title: File structure (Linux FHS) - file: conceptual/gpu-isolation.md From 664c047311205c0d3c29694ea28440aab0d127d9 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Wed, 12 Jun 2024 11:22:46 -0400 Subject: [PATCH 141/175] External CI: Package rocSPARSE matrices for testers to consume (#3276) --- .azuredevops/components/rocSPARSE.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.azuredevops/components/rocSPARSE.yml b/.azuredevops/components/rocSPARSE.yml index 726776446..3199713b0 100644 --- a/.azuredevops/components/rocSPARSE.yml +++ b/.azuredevops/components/rocSPARSE.yml @@ -75,3 +75,13 @@ jobs: -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip;$(Agent.BuildDirectory)/rocm/hip/cmake -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + artifactName: rocSPARSE + publish: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml + parameters: + sourceDir: $(Build.SourcesDirectory)/build/clients + contentsString: matrices/** + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + artifactName: testMatrices From 13e14363cc15ce0acbad904c5ef84a95d89c8b8a Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Wed, 12 Jun 2024 11:23:21 -0400 Subject: [PATCH 142/175] External CI: updated MIOpen dependencies (#3278) --- .azuredevops/components/MIOpen.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.azuredevops/components/MIOpen.yml b/.azuredevops/components/MIOpen.yml index 359f33b6c..2a00793ee 100644 --- a/.azuredevops/components/MIOpen.yml +++ b/.azuredevops/components/MIOpen.yml @@ -16,6 +16,7 @@ parameters: - libbz2-dev - nlohmann-json3-dev - libgtest-dev + - libdrm-dev - name: rocmDependencies type: object default: @@ -30,6 +31,7 @@ parameters: - rocprofiler-register - clr - rocminfo + - roctracer jobs: - job: MIOpen From 2531f0aa035aa40b2e4c49d9080e38c0f75332ab Mon Sep 17 00:00:00 2001 From: srawat <120587655+SwRaw@users.noreply.github.com> Date: Wed, 12 Jun 2024 21:23:22 +0530 Subject: [PATCH 143/175] Update link to command-line argument reference (#3270) * Added deleted sections to openmp.md and other improvements * Update openmp.md --- docs/about/compatibility/openmp.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/about/compatibility/openmp.md b/docs/about/compatibility/openmp.md index 769bac8f7..a593b81e0 100644 --- a/docs/about/compatibility/openmp.md +++ b/docs/about/compatibility/openmp.md @@ -77,8 +77,7 @@ Obtain the value of `gpu-arch` by running the following command: [//]: # (dated link below, needs updating) -See the complete list of compiler command-line references -[here](https://github.com/ROCm/llvm-project/blob/amd-stg-open/clang/docs/CommandGuide/clang.rst). +See the complete list of [compiler command-line references](https://github.com/ROCm/llvm-project/blob/amd-staging/openmp/docs/CommandLineArgumentReference.rst). ### Using `rocprof` with OpenMP From e864aa50ac763f6e760ad5852816a06dffbdaba1 Mon Sep 17 00:00:00 2001 From: Jeffrey Novotny Date: Wed, 12 Jun 2024 14:17:32 -0400 Subject: [PATCH 144/175] Remove AOMP from compatibility matrix (#3289) --- docs/compatibility/compatibility-matrix.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/compatibility/compatibility-matrix.rst b/docs/compatibility/compatibility-matrix.rst index 859dfdbf4..873925a93 100644 --- a/docs/compatibility/compatibility-matrix.rst +++ b/docs/compatibility/compatibility-matrix.rst @@ -107,7 +107,6 @@ Use this matrix to view the ROCm compatibility across successive major and minor :doc:`TransferBench `,1.48,1.46 ,, COMPILERS:,, - `AOMP `_,17.60.0,17.60.0 `clang-ocl `_,0.5.0,0.5.0 `Flang `_,17.0.0.24103,17.0.0.23483 `llvm-project `_,17.0.0.24103,17.0.0.23483 From d24b3fab61172907bafd7fa5c5e24becf2e3b6c9 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Wed, 12 Jun 2024 14:03:04 -0700 Subject: [PATCH 145/175] Fix ExLlama-v2 code snippet (#3281) --- .../model-quantization.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/how-to/llm-fine-tuning-optimization/model-quantization.rst b/docs/how-to/llm-fine-tuning-optimization/model-quantization.rst index c79b4d46a..4e3c3fb3a 100644 --- a/docs/how-to/llm-fine-tuning-optimization/model-quantization.rst +++ b/docs/how-to/llm-fine-tuning-optimization/model-quantization.rst @@ -154,13 +154,13 @@ kernels by configuring the ``exllama_config`` parameter as the following. .. code-block:: python from transformers import AutoModelForCausalLM, GPTQConfig - pretrained_model_dir = "meta-llama/Llama-2-7b" - gptq_config = GPTQConfig(bits=4, exllama_config={"version":2}) + #pretrained_model_dir = "meta-llama/Llama-2-7b" + base_model_name = "NousResearch/Llama-2-7b-hf" + gptq_config = GPTQConfig(bits=4, dataset="c4", exllama_config={"version":2}) quantized_model = AutoModelForCausalLM.from_pretrained( - base_model_name, - device_map="auto", + base_model_name, + device_map="auto", quantization_config=gptq_config) - bitsandbytes ============ From c91e15a580a43ab04cc7b2aa82bd4eef43a1c05f Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Wed, 12 Jun 2024 17:12:06 -0400 Subject: [PATCH 146/175] Moving `rocm-build` to the `tools` folder (#3285) [Why] To maintain the "pitchfork layout" convention used by the repository. [How] - Update README.md - Update INFRA_REPO in ROCm.mk - Updated to new path: ROCm/tools/rocm-build --------- Signed-off-by: David Galiffi --- README.md | 20 +++++++++---------- {rocm-build => tools/rocm-build}/README.md | 0 {rocm-build => tools/rocm-build}/ROCm.mk | 2 +- .../rocm-build}/build_amd_smi_lib.sh | 0 .../rocm-build}/build_amdmigraphx.sh | 0 .../rocm-build}/build_aqlprofile.sh | 0 .../rocm-build}/build_clang-ocl.sh | 0 .../rocm-build}/build_comgr.sh | 0 .../rocm-build}/build_composable_kernel.sh | 0 .../rocm-build}/build_dbgapi.sh | 0 .../rocm-build}/build_devicelibs.sh | 0 .../rocm-build}/build_half.sh | 0 .../rocm-build}/build_hip_on_rocclr.sh | 0 .../rocm-build}/build_hipblas.sh | 0 .../rocm-build}/build_hipblaslt.sh | 0 .../rocm-build}/build_hipcc.sh | 0 .../rocm-build}/build_hipcub.sh | 0 .../rocm-build}/build_hipfft.sh | 0 .../rocm-build}/build_hipfort.sh | 0 .../rocm-build}/build_hipify_clang.sh | 0 .../rocm-build}/build_hiprand.sh | 0 .../rocm-build}/build_hipsolver.sh | 0 .../rocm-build}/build_hipsparse.sh | 0 .../rocm-build}/build_hipsparselt.sh | 0 .../rocm-build}/build_hiptensor.sh | 0 {rocm-build => tools/rocm-build}/build_hsa.sh | 0 .../rocm-build}/build_lightning.sh | 0 .../rocm-build}/build_miopen-deps.sh | 0 .../rocm-build}/build_miopen-hip.sh | 0 .../rocm-build}/build_mivisionx.sh | 0 .../rocm-build}/build_opencl_on_rocclr.sh | 0 .../rocm-build}/build_openmp_extras.sh | 0 .../rocm-build}/build_rccl.sh | 0 {rocm-build => tools/rocm-build}/build_rdc.sh | 0 .../rocm-build}/build_rocalution.sh | 0 .../rocm-build}/build_rocblas.sh | 0 .../rocm-build}/build_rocclr.sh | 0 .../rocm-build}/build_rocdecode.sh | 0 .../rocm-build}/build_rocfft.sh | 0 .../rocm-build}/build_rocm-cmake.sh | 0 .../rocm-build}/build_rocm-core.sh | 0 .../rocm-build}/build_rocm-dev.sh | 0 .../rocm-build}/build_rocm-gdb.sh | 0 .../rocm-build}/build_rocm_bandwidth_test.sh | 0 .../rocm-build}/build_rocm_smi_lib.sh | 0 .../rocm-build}/build_rocminfo.sh | 0 .../rocm-build}/build_rocmvalidationsuite.sh | 0 .../rocm-build}/build_rocprim.sh | 0 .../rocm-build}/build_rocprofiler-register.sh | 0 .../rocm-build}/build_rocprofiler.sh | 0 .../rocm-build}/build_rocr_debug_agent.sh | 0 .../rocm-build}/build_rocrand.sh | 0 .../rocm-build}/build_rocsolver.sh | 0 .../rocm-build}/build_rocsparse.sh | 0 .../rocm-build}/build_rocthrust.sh | 0 .../rocm-build}/build_roctracer.sh | 0 .../rocm-build}/build_rocwmma.sh | 0 {rocm-build => tools/rocm-build}/build_rpp.sh | 0 .../rocm-build}/build_thunk.sh | 0 .../rocm-build}/ccache-env-mathlib.sh | 0 .../rocm-build}/compute_helper.sh | 0 .../rocm-build}/compute_utils.sh | 0 .../rocm-build}/docker/ubuntu20/Dockerfile | 0 .../rocm-build}/docker/ubuntu20/README.md | 0 .../docker/ubuntu20/install-prerequisites.sh | 0 .../rocm-build}/docker/ubuntu20/packages | 0 .../rocm-build}/docker/ubuntu22/Dockerfile | 0 .../rocm-build}/docker/ubuntu22/README.md | 0 .../docker/ubuntu22/install-prerequisities.sh | 0 .../rocm-build}/docker/ubuntu22/local-pin-600 | 0 .../rocm-build}/docker/ubuntu22/packages | 0 {rocm-build => tools/rocm-build}/envsetup.sh | 0 .../rocm-build}/post_inst_pkg.sh | 0 .../rocm-build}/rocm-6.1.0.xml | 0 .../rocm-build}/rocm-6.1.1.xml | 0 .../rocm-build}/rocm-6.1.2.xml | 0 .../rocm-build}/upload_packages.sh | 0 77 files changed, 11 insertions(+), 11 deletions(-) rename {rocm-build => tools/rocm-build}/README.md (100%) rename {rocm-build => tools/rocm-build}/ROCm.mk (99%) rename {rocm-build => tools/rocm-build}/build_amd_smi_lib.sh (100%) rename {rocm-build => tools/rocm-build}/build_amdmigraphx.sh (100%) rename {rocm-build => tools/rocm-build}/build_aqlprofile.sh (100%) rename {rocm-build => tools/rocm-build}/build_clang-ocl.sh (100%) rename {rocm-build => tools/rocm-build}/build_comgr.sh (100%) rename {rocm-build => tools/rocm-build}/build_composable_kernel.sh (100%) rename {rocm-build => tools/rocm-build}/build_dbgapi.sh (100%) rename {rocm-build => tools/rocm-build}/build_devicelibs.sh (100%) rename {rocm-build => tools/rocm-build}/build_half.sh (100%) rename {rocm-build => tools/rocm-build}/build_hip_on_rocclr.sh (100%) rename {rocm-build => tools/rocm-build}/build_hipblas.sh (100%) rename {rocm-build => tools/rocm-build}/build_hipblaslt.sh (100%) rename {rocm-build => tools/rocm-build}/build_hipcc.sh (100%) rename {rocm-build => tools/rocm-build}/build_hipcub.sh (100%) rename {rocm-build => tools/rocm-build}/build_hipfft.sh (100%) rename {rocm-build => tools/rocm-build}/build_hipfort.sh (100%) rename {rocm-build => tools/rocm-build}/build_hipify_clang.sh (100%) rename {rocm-build => tools/rocm-build}/build_hiprand.sh (100%) rename {rocm-build => tools/rocm-build}/build_hipsolver.sh (100%) rename {rocm-build => tools/rocm-build}/build_hipsparse.sh (100%) rename {rocm-build => tools/rocm-build}/build_hipsparselt.sh (100%) rename {rocm-build => tools/rocm-build}/build_hiptensor.sh (100%) rename {rocm-build => tools/rocm-build}/build_hsa.sh (100%) rename {rocm-build => tools/rocm-build}/build_lightning.sh (100%) rename {rocm-build => tools/rocm-build}/build_miopen-deps.sh (100%) rename {rocm-build => tools/rocm-build}/build_miopen-hip.sh (100%) rename {rocm-build => tools/rocm-build}/build_mivisionx.sh (100%) rename {rocm-build => tools/rocm-build}/build_opencl_on_rocclr.sh (100%) rename {rocm-build => tools/rocm-build}/build_openmp_extras.sh (100%) rename {rocm-build => tools/rocm-build}/build_rccl.sh (100%) rename {rocm-build => tools/rocm-build}/build_rdc.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocalution.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocblas.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocclr.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocdecode.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocfft.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocm-cmake.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocm-core.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocm-dev.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocm-gdb.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocm_bandwidth_test.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocm_smi_lib.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocminfo.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocmvalidationsuite.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocprim.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocprofiler-register.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocprofiler.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocr_debug_agent.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocrand.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocsolver.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocsparse.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocthrust.sh (100%) rename {rocm-build => tools/rocm-build}/build_roctracer.sh (100%) rename {rocm-build => tools/rocm-build}/build_rocwmma.sh (100%) rename {rocm-build => tools/rocm-build}/build_rpp.sh (100%) rename {rocm-build => tools/rocm-build}/build_thunk.sh (100%) rename {rocm-build => tools/rocm-build}/ccache-env-mathlib.sh (100%) rename {rocm-build => tools/rocm-build}/compute_helper.sh (100%) rename {rocm-build => tools/rocm-build}/compute_utils.sh (100%) rename {rocm-build => tools/rocm-build}/docker/ubuntu20/Dockerfile (100%) rename {rocm-build => tools/rocm-build}/docker/ubuntu20/README.md (100%) rename {rocm-build => tools/rocm-build}/docker/ubuntu20/install-prerequisites.sh (100%) rename {rocm-build => tools/rocm-build}/docker/ubuntu20/packages (100%) rename {rocm-build => tools/rocm-build}/docker/ubuntu22/Dockerfile (100%) rename {rocm-build => tools/rocm-build}/docker/ubuntu22/README.md (100%) rename {rocm-build => tools/rocm-build}/docker/ubuntu22/install-prerequisities.sh (100%) rename {rocm-build => tools/rocm-build}/docker/ubuntu22/local-pin-600 (100%) rename {rocm-build => tools/rocm-build}/docker/ubuntu22/packages (100%) rename {rocm-build => tools/rocm-build}/envsetup.sh (100%) rename {rocm-build => tools/rocm-build}/post_inst_pkg.sh (100%) rename {rocm-build => tools/rocm-build}/rocm-6.1.0.xml (100%) rename {rocm-build => tools/rocm-build}/rocm-6.1.1.xml (100%) rename {rocm-build => tools/rocm-build}/rocm-6.1.2.xml (100%) rename {rocm-build => tools/rocm-build}/upload_packages.sh (100%) diff --git a/README.md b/README.md index c93a4fe0e..eadcce6df 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,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.1.0 # or 6.1.1 6.1.2 -~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.1.x -m rocm-build/rocm-${ROCM_VERSION}.xml +~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.1.x -m tools/rocm-build/rocm-${ROCM_VERSION}.xml ~/bin/repo sync # -------------------------------------- @@ -86,9 +86,9 @@ export ROCM_VERSION=6.1.0 # or 6.1.1 6.1.2 # Option 1: Start a docker container # Pulling required base docker images: -# Ubuntu20.04 built from ROCm/rocm-build/docker/ubuntu20/Dockerfile +# Ubuntu20.04 built from ROCm/tools/rocm-build/docker/ubuntu20/Dockerfile docker pull rocm/rocm-build-ubuntu-20.04:6.1 -# Ubuntu22.04 built from ROCm/rocm-build/docker/ubuntu22/Dockerfile +# Ubuntu22.04 built from ROCm/tools/rocm-build/docker/ubuntu22/Dockerfile docker pull rocm/rocm-build-ubuntu-22.04:6.1 # Start docker container and mount the source code folder: @@ -107,10 +107,10 @@ docker run -ti \ # Option 2: Install required packages into the host machine # For ubuntu20.04 system -cd ROCm/rocm-build/docker/ubuntu20 +cd ROCm/tools/rocm-build/docker/ubuntu20 bash install-prerequisites.sh # For ubuntu22.04 system -cd ROCm/rocm-build/docker/ubuntu22 +cd ROCm/tools/rocm-build/docker/ubuntu22 bash install-prerequisities.sh # -------------------------------------- @@ -126,13 +126,13 @@ export GPU_ARCHS="gfx940;gfx941;gfx942" # Example # Pick and run build commands in the docker container: # Build rocm-dev packages -make -f ROCm/rocm-build/ROCm.mk -j ${NPROC:-$(nproc)} rocm-dev +make -f ROCm/tools/rocm-build/ROCm.mk -j ${NPROC:-$(nproc)} rocm-dev # Build all ROCm packages -make -f ROCm/rocm-build/ROCm.mk -j ${NPROC:-$(nproc)} all +make -f ROCm/tools/rocm-build/ROCm.mk -j ${NPROC:-$(nproc)} all # list all ROCm components to find required components -make -f ROCm/rocm-build/ROCm.mk list_components +make -f ROCm/tools/rocm-build/ROCm.mk list_components # Build a single ROCm packages -make -f ROCm/rocm-build/ROCm.mk T_rocblas +make -f ROCm/tools/rocm-build/ROCm.mk T_rocblas # Find built packages in ubuntu20.04: out/ubuntu-20.04/20.04/deb/ @@ -151,7 +151,7 @@ out/ubuntu-22.04/22.04/logs/rocblas.inprogress # Example out/ubuntu-22.04/22.04/logs/rocblas # Example ``` -Note: [Overview for ROCm.mk](rocm-build/README.md) +Note: [Overview for ROCm.mk](tools/rocm-build/README.md) ## ROCm documentation diff --git a/rocm-build/README.md b/tools/rocm-build/README.md similarity index 100% rename from rocm-build/README.md rename to tools/rocm-build/README.md diff --git a/rocm-build/ROCm.mk b/tools/rocm-build/ROCm.mk similarity index 99% rename from rocm-build/ROCm.mk rename to tools/rocm-build/ROCm.mk index 041a173bc..faca1661d 100644 --- a/rocm-build/ROCm.mk +++ b/tools/rocm-build/ROCm.mk @@ -15,7 +15,7 @@ ifeq (${ENABLE_ADDRESS_SANITIZER},true) SANITIZER_FLAG=-a endif -export INFRA_REPO:=ROCm/rocm-build +export INFRA_REPO:=ROCm/tools/rocm-build OUT_DIR:=$(shell . ${INFRA_REPO}/envsetup.sh >/dev/null 2>&1 ; echo $${OUT_DIR}) ROCM_INSTALL_PATH:=$(shell . ${INFRA_REPO}/envsetup.sh >/dev/null 2>&1 ; echo $${ROCM_INSTALL_PATH}) diff --git a/rocm-build/build_amd_smi_lib.sh b/tools/rocm-build/build_amd_smi_lib.sh similarity index 100% rename from rocm-build/build_amd_smi_lib.sh rename to tools/rocm-build/build_amd_smi_lib.sh diff --git a/rocm-build/build_amdmigraphx.sh b/tools/rocm-build/build_amdmigraphx.sh similarity index 100% rename from rocm-build/build_amdmigraphx.sh rename to tools/rocm-build/build_amdmigraphx.sh diff --git a/rocm-build/build_aqlprofile.sh b/tools/rocm-build/build_aqlprofile.sh similarity index 100% rename from rocm-build/build_aqlprofile.sh rename to tools/rocm-build/build_aqlprofile.sh diff --git a/rocm-build/build_clang-ocl.sh b/tools/rocm-build/build_clang-ocl.sh similarity index 100% rename from rocm-build/build_clang-ocl.sh rename to tools/rocm-build/build_clang-ocl.sh diff --git a/rocm-build/build_comgr.sh b/tools/rocm-build/build_comgr.sh similarity index 100% rename from rocm-build/build_comgr.sh rename to tools/rocm-build/build_comgr.sh diff --git a/rocm-build/build_composable_kernel.sh b/tools/rocm-build/build_composable_kernel.sh similarity index 100% rename from rocm-build/build_composable_kernel.sh rename to tools/rocm-build/build_composable_kernel.sh diff --git a/rocm-build/build_dbgapi.sh b/tools/rocm-build/build_dbgapi.sh similarity index 100% rename from rocm-build/build_dbgapi.sh rename to tools/rocm-build/build_dbgapi.sh diff --git a/rocm-build/build_devicelibs.sh b/tools/rocm-build/build_devicelibs.sh similarity index 100% rename from rocm-build/build_devicelibs.sh rename to tools/rocm-build/build_devicelibs.sh diff --git a/rocm-build/build_half.sh b/tools/rocm-build/build_half.sh similarity index 100% rename from rocm-build/build_half.sh rename to tools/rocm-build/build_half.sh diff --git a/rocm-build/build_hip_on_rocclr.sh b/tools/rocm-build/build_hip_on_rocclr.sh similarity index 100% rename from rocm-build/build_hip_on_rocclr.sh rename to tools/rocm-build/build_hip_on_rocclr.sh diff --git a/rocm-build/build_hipblas.sh b/tools/rocm-build/build_hipblas.sh similarity index 100% rename from rocm-build/build_hipblas.sh rename to tools/rocm-build/build_hipblas.sh diff --git a/rocm-build/build_hipblaslt.sh b/tools/rocm-build/build_hipblaslt.sh similarity index 100% rename from rocm-build/build_hipblaslt.sh rename to tools/rocm-build/build_hipblaslt.sh diff --git a/rocm-build/build_hipcc.sh b/tools/rocm-build/build_hipcc.sh similarity index 100% rename from rocm-build/build_hipcc.sh rename to tools/rocm-build/build_hipcc.sh diff --git a/rocm-build/build_hipcub.sh b/tools/rocm-build/build_hipcub.sh similarity index 100% rename from rocm-build/build_hipcub.sh rename to tools/rocm-build/build_hipcub.sh diff --git a/rocm-build/build_hipfft.sh b/tools/rocm-build/build_hipfft.sh similarity index 100% rename from rocm-build/build_hipfft.sh rename to tools/rocm-build/build_hipfft.sh diff --git a/rocm-build/build_hipfort.sh b/tools/rocm-build/build_hipfort.sh similarity index 100% rename from rocm-build/build_hipfort.sh rename to tools/rocm-build/build_hipfort.sh diff --git a/rocm-build/build_hipify_clang.sh b/tools/rocm-build/build_hipify_clang.sh similarity index 100% rename from rocm-build/build_hipify_clang.sh rename to tools/rocm-build/build_hipify_clang.sh diff --git a/rocm-build/build_hiprand.sh b/tools/rocm-build/build_hiprand.sh similarity index 100% rename from rocm-build/build_hiprand.sh rename to tools/rocm-build/build_hiprand.sh diff --git a/rocm-build/build_hipsolver.sh b/tools/rocm-build/build_hipsolver.sh similarity index 100% rename from rocm-build/build_hipsolver.sh rename to tools/rocm-build/build_hipsolver.sh diff --git a/rocm-build/build_hipsparse.sh b/tools/rocm-build/build_hipsparse.sh similarity index 100% rename from rocm-build/build_hipsparse.sh rename to tools/rocm-build/build_hipsparse.sh diff --git a/rocm-build/build_hipsparselt.sh b/tools/rocm-build/build_hipsparselt.sh similarity index 100% rename from rocm-build/build_hipsparselt.sh rename to tools/rocm-build/build_hipsparselt.sh diff --git a/rocm-build/build_hiptensor.sh b/tools/rocm-build/build_hiptensor.sh similarity index 100% rename from rocm-build/build_hiptensor.sh rename to tools/rocm-build/build_hiptensor.sh diff --git a/rocm-build/build_hsa.sh b/tools/rocm-build/build_hsa.sh similarity index 100% rename from rocm-build/build_hsa.sh rename to tools/rocm-build/build_hsa.sh diff --git a/rocm-build/build_lightning.sh b/tools/rocm-build/build_lightning.sh similarity index 100% rename from rocm-build/build_lightning.sh rename to tools/rocm-build/build_lightning.sh diff --git a/rocm-build/build_miopen-deps.sh b/tools/rocm-build/build_miopen-deps.sh similarity index 100% rename from rocm-build/build_miopen-deps.sh rename to tools/rocm-build/build_miopen-deps.sh diff --git a/rocm-build/build_miopen-hip.sh b/tools/rocm-build/build_miopen-hip.sh similarity index 100% rename from rocm-build/build_miopen-hip.sh rename to tools/rocm-build/build_miopen-hip.sh diff --git a/rocm-build/build_mivisionx.sh b/tools/rocm-build/build_mivisionx.sh similarity index 100% rename from rocm-build/build_mivisionx.sh rename to tools/rocm-build/build_mivisionx.sh diff --git a/rocm-build/build_opencl_on_rocclr.sh b/tools/rocm-build/build_opencl_on_rocclr.sh similarity index 100% rename from rocm-build/build_opencl_on_rocclr.sh rename to tools/rocm-build/build_opencl_on_rocclr.sh diff --git a/rocm-build/build_openmp_extras.sh b/tools/rocm-build/build_openmp_extras.sh similarity index 100% rename from rocm-build/build_openmp_extras.sh rename to tools/rocm-build/build_openmp_extras.sh diff --git a/rocm-build/build_rccl.sh b/tools/rocm-build/build_rccl.sh similarity index 100% rename from rocm-build/build_rccl.sh rename to tools/rocm-build/build_rccl.sh diff --git a/rocm-build/build_rdc.sh b/tools/rocm-build/build_rdc.sh similarity index 100% rename from rocm-build/build_rdc.sh rename to tools/rocm-build/build_rdc.sh diff --git a/rocm-build/build_rocalution.sh b/tools/rocm-build/build_rocalution.sh similarity index 100% rename from rocm-build/build_rocalution.sh rename to tools/rocm-build/build_rocalution.sh diff --git a/rocm-build/build_rocblas.sh b/tools/rocm-build/build_rocblas.sh similarity index 100% rename from rocm-build/build_rocblas.sh rename to tools/rocm-build/build_rocblas.sh diff --git a/rocm-build/build_rocclr.sh b/tools/rocm-build/build_rocclr.sh similarity index 100% rename from rocm-build/build_rocclr.sh rename to tools/rocm-build/build_rocclr.sh diff --git a/rocm-build/build_rocdecode.sh b/tools/rocm-build/build_rocdecode.sh similarity index 100% rename from rocm-build/build_rocdecode.sh rename to tools/rocm-build/build_rocdecode.sh diff --git a/rocm-build/build_rocfft.sh b/tools/rocm-build/build_rocfft.sh similarity index 100% rename from rocm-build/build_rocfft.sh rename to tools/rocm-build/build_rocfft.sh diff --git a/rocm-build/build_rocm-cmake.sh b/tools/rocm-build/build_rocm-cmake.sh similarity index 100% rename from rocm-build/build_rocm-cmake.sh rename to tools/rocm-build/build_rocm-cmake.sh diff --git a/rocm-build/build_rocm-core.sh b/tools/rocm-build/build_rocm-core.sh similarity index 100% rename from rocm-build/build_rocm-core.sh rename to tools/rocm-build/build_rocm-core.sh diff --git a/rocm-build/build_rocm-dev.sh b/tools/rocm-build/build_rocm-dev.sh similarity index 100% rename from rocm-build/build_rocm-dev.sh rename to tools/rocm-build/build_rocm-dev.sh diff --git a/rocm-build/build_rocm-gdb.sh b/tools/rocm-build/build_rocm-gdb.sh similarity index 100% rename from rocm-build/build_rocm-gdb.sh rename to tools/rocm-build/build_rocm-gdb.sh diff --git a/rocm-build/build_rocm_bandwidth_test.sh b/tools/rocm-build/build_rocm_bandwidth_test.sh similarity index 100% rename from rocm-build/build_rocm_bandwidth_test.sh rename to tools/rocm-build/build_rocm_bandwidth_test.sh diff --git a/rocm-build/build_rocm_smi_lib.sh b/tools/rocm-build/build_rocm_smi_lib.sh similarity index 100% rename from rocm-build/build_rocm_smi_lib.sh rename to tools/rocm-build/build_rocm_smi_lib.sh diff --git a/rocm-build/build_rocminfo.sh b/tools/rocm-build/build_rocminfo.sh similarity index 100% rename from rocm-build/build_rocminfo.sh rename to tools/rocm-build/build_rocminfo.sh diff --git a/rocm-build/build_rocmvalidationsuite.sh b/tools/rocm-build/build_rocmvalidationsuite.sh similarity index 100% rename from rocm-build/build_rocmvalidationsuite.sh rename to tools/rocm-build/build_rocmvalidationsuite.sh diff --git a/rocm-build/build_rocprim.sh b/tools/rocm-build/build_rocprim.sh similarity index 100% rename from rocm-build/build_rocprim.sh rename to tools/rocm-build/build_rocprim.sh diff --git a/rocm-build/build_rocprofiler-register.sh b/tools/rocm-build/build_rocprofiler-register.sh similarity index 100% rename from rocm-build/build_rocprofiler-register.sh rename to tools/rocm-build/build_rocprofiler-register.sh diff --git a/rocm-build/build_rocprofiler.sh b/tools/rocm-build/build_rocprofiler.sh similarity index 100% rename from rocm-build/build_rocprofiler.sh rename to tools/rocm-build/build_rocprofiler.sh diff --git a/rocm-build/build_rocr_debug_agent.sh b/tools/rocm-build/build_rocr_debug_agent.sh similarity index 100% rename from rocm-build/build_rocr_debug_agent.sh rename to tools/rocm-build/build_rocr_debug_agent.sh diff --git a/rocm-build/build_rocrand.sh b/tools/rocm-build/build_rocrand.sh similarity index 100% rename from rocm-build/build_rocrand.sh rename to tools/rocm-build/build_rocrand.sh diff --git a/rocm-build/build_rocsolver.sh b/tools/rocm-build/build_rocsolver.sh similarity index 100% rename from rocm-build/build_rocsolver.sh rename to tools/rocm-build/build_rocsolver.sh diff --git a/rocm-build/build_rocsparse.sh b/tools/rocm-build/build_rocsparse.sh similarity index 100% rename from rocm-build/build_rocsparse.sh rename to tools/rocm-build/build_rocsparse.sh diff --git a/rocm-build/build_rocthrust.sh b/tools/rocm-build/build_rocthrust.sh similarity index 100% rename from rocm-build/build_rocthrust.sh rename to tools/rocm-build/build_rocthrust.sh diff --git a/rocm-build/build_roctracer.sh b/tools/rocm-build/build_roctracer.sh similarity index 100% rename from rocm-build/build_roctracer.sh rename to tools/rocm-build/build_roctracer.sh diff --git a/rocm-build/build_rocwmma.sh b/tools/rocm-build/build_rocwmma.sh similarity index 100% rename from rocm-build/build_rocwmma.sh rename to tools/rocm-build/build_rocwmma.sh diff --git a/rocm-build/build_rpp.sh b/tools/rocm-build/build_rpp.sh similarity index 100% rename from rocm-build/build_rpp.sh rename to tools/rocm-build/build_rpp.sh diff --git a/rocm-build/build_thunk.sh b/tools/rocm-build/build_thunk.sh similarity index 100% rename from rocm-build/build_thunk.sh rename to tools/rocm-build/build_thunk.sh diff --git a/rocm-build/ccache-env-mathlib.sh b/tools/rocm-build/ccache-env-mathlib.sh similarity index 100% rename from rocm-build/ccache-env-mathlib.sh rename to tools/rocm-build/ccache-env-mathlib.sh diff --git a/rocm-build/compute_helper.sh b/tools/rocm-build/compute_helper.sh similarity index 100% rename from rocm-build/compute_helper.sh rename to tools/rocm-build/compute_helper.sh diff --git a/rocm-build/compute_utils.sh b/tools/rocm-build/compute_utils.sh similarity index 100% rename from rocm-build/compute_utils.sh rename to tools/rocm-build/compute_utils.sh diff --git a/rocm-build/docker/ubuntu20/Dockerfile b/tools/rocm-build/docker/ubuntu20/Dockerfile similarity index 100% rename from rocm-build/docker/ubuntu20/Dockerfile rename to tools/rocm-build/docker/ubuntu20/Dockerfile diff --git a/rocm-build/docker/ubuntu20/README.md b/tools/rocm-build/docker/ubuntu20/README.md similarity index 100% rename from rocm-build/docker/ubuntu20/README.md rename to tools/rocm-build/docker/ubuntu20/README.md diff --git a/rocm-build/docker/ubuntu20/install-prerequisites.sh b/tools/rocm-build/docker/ubuntu20/install-prerequisites.sh similarity index 100% rename from rocm-build/docker/ubuntu20/install-prerequisites.sh rename to tools/rocm-build/docker/ubuntu20/install-prerequisites.sh diff --git a/rocm-build/docker/ubuntu20/packages b/tools/rocm-build/docker/ubuntu20/packages similarity index 100% rename from rocm-build/docker/ubuntu20/packages rename to tools/rocm-build/docker/ubuntu20/packages diff --git a/rocm-build/docker/ubuntu22/Dockerfile b/tools/rocm-build/docker/ubuntu22/Dockerfile similarity index 100% rename from rocm-build/docker/ubuntu22/Dockerfile rename to tools/rocm-build/docker/ubuntu22/Dockerfile diff --git a/rocm-build/docker/ubuntu22/README.md b/tools/rocm-build/docker/ubuntu22/README.md similarity index 100% rename from rocm-build/docker/ubuntu22/README.md rename to tools/rocm-build/docker/ubuntu22/README.md diff --git a/rocm-build/docker/ubuntu22/install-prerequisities.sh b/tools/rocm-build/docker/ubuntu22/install-prerequisities.sh similarity index 100% rename from rocm-build/docker/ubuntu22/install-prerequisities.sh rename to tools/rocm-build/docker/ubuntu22/install-prerequisities.sh diff --git a/rocm-build/docker/ubuntu22/local-pin-600 b/tools/rocm-build/docker/ubuntu22/local-pin-600 similarity index 100% rename from rocm-build/docker/ubuntu22/local-pin-600 rename to tools/rocm-build/docker/ubuntu22/local-pin-600 diff --git a/rocm-build/docker/ubuntu22/packages b/tools/rocm-build/docker/ubuntu22/packages similarity index 100% rename from rocm-build/docker/ubuntu22/packages rename to tools/rocm-build/docker/ubuntu22/packages diff --git a/rocm-build/envsetup.sh b/tools/rocm-build/envsetup.sh similarity index 100% rename from rocm-build/envsetup.sh rename to tools/rocm-build/envsetup.sh diff --git a/rocm-build/post_inst_pkg.sh b/tools/rocm-build/post_inst_pkg.sh similarity index 100% rename from rocm-build/post_inst_pkg.sh rename to tools/rocm-build/post_inst_pkg.sh diff --git a/rocm-build/rocm-6.1.0.xml b/tools/rocm-build/rocm-6.1.0.xml similarity index 100% rename from rocm-build/rocm-6.1.0.xml rename to tools/rocm-build/rocm-6.1.0.xml diff --git a/rocm-build/rocm-6.1.1.xml b/tools/rocm-build/rocm-6.1.1.xml similarity index 100% rename from rocm-build/rocm-6.1.1.xml rename to tools/rocm-build/rocm-6.1.1.xml diff --git a/rocm-build/rocm-6.1.2.xml b/tools/rocm-build/rocm-6.1.2.xml similarity index 100% rename from rocm-build/rocm-6.1.2.xml rename to tools/rocm-build/rocm-6.1.2.xml diff --git a/rocm-build/upload_packages.sh b/tools/rocm-build/upload_packages.sh similarity index 100% rename from rocm-build/upload_packages.sh rename to tools/rocm-build/upload_packages.sh From 923141f300c5272c33a3a90a97bcdbdc9dabff99 Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Thu, 13 Jun 2024 11:55:40 -0400 Subject: [PATCH 147/175] External CI: Fixes for two repos to work with latest source (#3293) With MIOpen now building with latest source on External CI, this unblocked AMDMIGraphX from building with latest source. Determined rocMLIR also needed to be built with latest source as a dependency. --- .azuredevops/components/AMDMIGraphX.yml | 4 ++-- .azuredevops/components/rocMLIR.yml | 27 ++++++++++++++++++++----- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/.azuredevops/components/AMDMIGraphX.yml b/.azuredevops/components/AMDMIGraphX.yml index fc2a8ab89..31450d5b6 100644 --- a/.azuredevops/components/AMDMIGraphX.yml +++ b/.azuredevops/components/AMDMIGraphX.yml @@ -84,8 +84,8 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- - -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS=gfx1030;gfx1100 -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm diff --git a/.azuredevops/components/rocMLIR.yml b/.azuredevops/components/rocMLIR.yml index ea4ee2fae..46f743253 100644 --- a/.azuredevops/components/rocMLIR.yml +++ b/.azuredevops/components/rocMLIR.yml @@ -10,6 +10,13 @@ parameters: default: - cmake - ninja-build + - git + - python3-pip +- name: rocmDependencies + type: object + default: + - llvm-project + - rocm-cmake jobs: - job: rocMLIR @@ -17,8 +24,6 @@ jobs: - group: common - template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }} - container: - image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} workspace: clean: all steps: @@ -29,13 +34,25 @@ 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/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release - -DCMAKE_CXX_COMPILER=/opt/rocm/llvm/bin/amdclang++ - -DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/amdclang - -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ + -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DBUILD_FAT_LIBROCKCOMPILER=1 -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From fe1c2e9529b06a26b3289c4eb23dbd74b532731d Mon Sep 17 00:00:00 2001 From: Peter Park Date: Fri, 14 Jun 2024 14:52:49 -0700 Subject: [PATCH 148/175] Update link to ROCr Debug Agent to docs portal (#3303) * Fix link to debug agent in what-is-rocm * ROCm --> ROCR add index * ROCR --> ROCr * Change ROCm Debug Agent to ROCr Debug Agent in docs --- docs/compatibility/compatibility-matrix.rst | 2 +- .../profiling-and-debugging.rst | 8 ++++---- docs/reference/rocm-tools.md | 4 ++-- docs/what-is-rocm.rst | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/compatibility/compatibility-matrix.rst b/docs/compatibility/compatibility-matrix.rst index 873925a93..42fcfb83f 100644 --- a/docs/compatibility/compatibility-matrix.rst +++ b/docs/compatibility/compatibility-matrix.rst @@ -94,7 +94,6 @@ Use this matrix to view the ROCm compatibility across successive major and minor :doc:`AMD SMI `,24.4.1,23.4.2 :doc:`HIPIFY `,17.0.0,17.0.0 :doc:`ROCdbgapi `,0.71.0,0.71.0 - `ROCm Debug Agent (ROCdebug-agent) `_,2.0.3,2.0.3 :doc:`rocminfo `,1.0.0,1.0.0 :doc:`ROCProfiler `,2.0.60100,2.0.0 `rocprofiler-register `_,0.3.0,N/A @@ -104,6 +103,7 @@ Use this matrix to view the ROCm compatibility across successive major and minor :doc:`ROCm Debugger (ROCgdb) `,14.1.0,13.2.0 :doc:`ROCm SMI `,7.0.0,6.0.0 :doc:`ROCm Validation Suite `,rocm-6.1.0,rocm-6.0.0 + :doc:`ROCr Debug Agent `,2.0.3,2.0.3 :doc:`TransferBench `,1.48,1.46 ,, COMPILERS:,, diff --git a/docs/how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst b/docs/how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst index 034b5021c..5a53a328e 100644 --- a/docs/how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst +++ b/docs/how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst @@ -138,10 +138,10 @@ For details usage and examples of using these tools, refer to the `Introduction to profiling tools for AMD hardware `_ developer blog. -Debugging with ROCm Debug Agent +Debugging with ROCr Debug Agent =============================== -ROCm Debug Agent (:doc:`ROCdebug-agent `) is a library that can be loaded by the ROCm platform +:doc:`ROCr Debug Agent `) is a library that can be loaded by the ROCm platform runtime (:doc:`ROCr `) to provide the following functionalities for all AMD accelerators and GPUs supported by the ROCm Debugger API (:doc:`ROCdbgapi `). @@ -155,9 +155,9 @@ Debugging memory access faults ------------------------------ Identifying a faulting kernel is often enough to triage a memory access fault. To that end, the -`ROCm Debug Agent `_ can trap a memory access fault and provide a dump of all +`ROCr Debug Agent `_ can trap a memory access fault and provide a dump of all active wavefronts that caused the error as well as the name of the kernel. The -`AMD ROCm Debug Agent Library README `_ provides full +`ROCr Debug Agent Library README `_ provides full instructions, but in brief: * Compiling with ``-ggdb -O0`` is recommended but not required. diff --git a/docs/reference/rocm-tools.md b/docs/reference/rocm-tools.md index 2e76b9ce6..9cc080b62 100644 --- a/docs/reference/rocm-tools.md +++ b/docs/reference/rocm-tools.md @@ -22,8 +22,8 @@ * {doc}`HIPIFY ` * {doc}`ROCdbgapi ` * [ROCmCC](./rocmcc.md) -* [ROCm Debug Agent](https://github.com/ROCm/rocr_debug_agent) -* {doc}`ROCm debugger (ROCgdb) ` +* {doc}`ROCm Debugger (ROCgdb) ` +* {doc}`ROCr Debug Agent ` ::: (performance-tools)= diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index 5783efe05..08f367d0e 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -107,10 +107,10 @@ Tools ":doc:`ROCm Bandwidth Test `", "Captures the performance characteristics of buffer copying and kernel read/write operations" ":doc:`ROCm CMake `", "Collection of CMake modules for common build and development tasks" ":doc:`ROCm Data Center Tool `", "Simplifies administration and addresses key infrastructure challenges in AMD GPUs in cluster and data-center environments" - "`ROCm Debug Agent (ROCdebug-agent) `_ ", "Prints the state of all AMD GPU wavefronts that caused a queue error by sending a SIGQUIT signal to the process while the program is running" ":doc:`ROCm Debugger (ROCgdb) `", "Source-level debugger for Linux, based on the GNU Debugger (GDB)" ":doc:`ROCm SMI `", "C library for Linux that provides a user space interface for applications to monitor and control GPU applications" ":doc:`ROCm Validation Suite `", "Detects and troubleshoots common problems affecting AMD GPUs running in a high-performance computing environment" + ":doc:`ROCr Debug Agent `", "Prints the state of all AMD GPU wavefronts that caused a queue error by sending a SIGQUIT signal to the process while the program is running" ":doc:`TransferBench `", "Utility to benchmark simultaneous transfers between user-specified devices (CPUs/GPUs)" Compilers From e903ffa9528af15acc98de851297a8cb519dd67e Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Mon, 17 Jun 2024 14:23:36 -0400 Subject: [PATCH 149/175] External CI: Update aqlprofile binary used for rocprofiler (#3304) --- .azuredevops/components/rocprofiler.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.azuredevops/components/rocprofiler.yml b/.azuredevops/components/rocprofiler.yml index c255c5227..6dc09a588 100644 --- a/.azuredevops/components/rocprofiler.yml +++ b/.azuredevops/components/rocprofiler.yml @@ -47,7 +47,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - - name: HIP_ROCCLR_HOME + - name: HIP_ROCCLR_HOME value: $(Agent.BuildDirectory)/rocm - name: ROCM_PATH value: $(Agent.BuildDirectory)/rocm @@ -68,7 +68,7 @@ jobs: displayName: 'Download aqlprofile' inputs: targetType: inline - script: wget -nv https://repo.radeon.com/rocm/apt/6.1/pool/main/h/hsa-amd-aqlprofile/hsa-amd-aqlprofile_1.0.0.60100.60100-82~22.04_amd64.deb + script: wget -nv https://repo.radeon.com/rocm/misc/aqlprofile/ubuntu-22.04/hsa-amd-aqlprofile_1.0.0.60200.60200-crdnnh.14213~22.04_amd64.deb workingDirectory: '$(Pipeline.Workspace)' - task: Bash@3 displayName: 'Extract aqlprofile' @@ -76,7 +76,7 @@ jobs: targetType: inline script: | mkdir hsa-amd-aqlprofile - dpkg-deb -R hsa-amd-aqlprofile_1.0.0.60100.60100-82~22.04_amd64.deb hsa-amd-aqlprofile + dpkg-deb -R hsa-amd-aqlprofile_1.0.0.60200.60200-crdnnh.14213~22.04_amd64.deb hsa-amd-aqlprofile workingDirectory: '$(Pipeline.Workspace)' - task: Bash@3 displayName: 'Move aqlprofile' @@ -84,7 +84,7 @@ jobs: targetType: inline script: | mkdir -p $(Agent.BuildDirectory)/rocm - cp -R hsa-amd-aqlprofile/opt/rocm-6.1.0/* $(Agent.BuildDirectory)/rocm + cp -R hsa-amd-aqlprofile/opt/rocm-6.2.0-14213/* $(Agent.BuildDirectory)/rocm workingDirectory: '$(Pipeline.Workspace)' # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: From 66b71ba3c80e9b383e6c73ab3ead8784d5a76d11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 23:41:54 +0000 Subject: [PATCH 150/175] Bump urllib3 from 2.2.1 to 2.2.2 in /docs/sphinx Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.1 to 2.2.2. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/2.2.1...2.2.2) --- updated-dependencies: - dependency-name: urllib3 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- docs/sphinx/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 7f878155e..f1a81ddba 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -142,7 +142,7 @@ typing-extensions==4.12.0 # via # pydata-sphinx-theme # pygithub -urllib3==2.2.1 +urllib3==2.2.2 # via # pygithub # requests From ebfec1b7c1de5ff697e0dda767fe4e27aa47b714 Mon Sep 17 00:00:00 2001 From: randyh62 <42045079+randyh62@users.noreply.github.com> Date: Tue, 18 Jun 2024 12:11:40 -0700 Subject: [PATCH 151/175] remove nvcc (#3313) * remove nvcc * Update CHANGELOG to match 6.0.0 template --------- Co-authored-by: Sam Wu <22262939+samjwu@users.noreply.github.com> --- CHANGELOG.md | 2 +- tools/autotag/templates/rocm_changes/6.0.0.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 940b65f7d..fcf1ac90e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1455,7 +1455,7 @@ Note: These complex operations are equivalent to corresponding types/functions o * `HIP_ROCclr` * NVIDIA platform * `HIP_PLATFORM_NVCC` -* The [hcc_detail](https://github.com/ROCm/clr/tree/1949b1621a802ffb1492616adbae6154bfbe64ef/hipamd/include/hip/hcc_detail) and [nvcc_detail](https://github.com/ROCm/clr/tree/1949b1621a802ffb1492616adbae6154bfbe64ef/hipamd/include/hips/nvcc_detail) directories in the clr repository are removed. +* The `hcc_detail` and `nvcc_detail` directories in the clr repository are removed. * Deprecated gcnArch is removed from hip device struct `hipDeviceProp_t`. * Deprecated `enum hipMemoryType memoryType;` is removed from HIP struct `hipPointerAttribute_t` union. diff --git a/tools/autotag/templates/rocm_changes/6.0.0.md b/tools/autotag/templates/rocm_changes/6.0.0.md index 97ddfa287..fe6540493 100644 --- a/tools/autotag/templates/rocm_changes/6.0.0.md +++ b/tools/autotag/templates/rocm_changes/6.0.0.md @@ -281,7 +281,7 @@ Note: These complex operations are equivalent to corresponding types/functions o * `HIP_ROCclr` * NVIDIA platform * `HIP_PLATFORM_NVCC` -* The [hcc_detail](https://github.com/ROCm/clr/tree/1949b1621a802ffb1492616adbae6154bfbe64ef/hipamd/include/hip/hcc_detail) and [nvcc_detail](https://github.com/ROCm/clr/tree/1949b1621a802ffb1492616adbae6154bfbe64ef/hipamd/include/hips/nvcc_detail) directories in the clr repository are removed. +* The `hcc_detail` and `nvcc_detail` directories in the clr repository are removed. * Deprecated gcnArch is removed from hip device struct `hipDeviceProp_t`. * Deprecated `enum hipMemoryType memoryType;` is removed from HIP struct `hipPointerAttribute_t` union. From 1d976a1871c15f3a8588e1d80d4a3d3104cfaf22 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 18 Jun 2024 12:22:43 -0700 Subject: [PATCH 152/175] Add Radeon PRO dual slot to hw specs (#3318) --- docs/reference/gpu-arch-specs.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/reference/gpu-arch-specs.rst b/docs/reference/gpu-arch-specs.rst index 8c17e87e1..116649434 100644 --- a/docs/reference/gpu-arch-specs.rst +++ b/docs/reference/gpu-arch-specs.rst @@ -233,6 +233,22 @@ The following tables provide an overview of the hardware specifications for AMD - L0 Instruction Cache (KiB) - VGPR File (KiB) - SGPR File (KiB) + * + - Radeon PRO W7900 Dual Slot + - RDNA3 + - gfx1100 + - 48 + - 96 + - 32 + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 * - Radeon PRO W7900 - RDNA3 From 361983fa4880f423a8c6497e7a3b10559f984f14 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 18 Jun 2024 14:32:07 -0700 Subject: [PATCH 153/175] Add OL support note to compat matrix (#3325) Fix footnote Footnote order Satisfy spellcheck --- docs/compatibility/compatibility-matrix.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/compatibility/compatibility-matrix.rst b/docs/compatibility/compatibility-matrix.rst index 42fcfb83f..e32021122 100644 --- a/docs/compatibility/compatibility-matrix.rst +++ b/docs/compatibility/compatibility-matrix.rst @@ -21,6 +21,7 @@ Use this matrix to view the ROCm compatibility across successive major and minor ,"RHEL 8.9, 8.8","RHEL 8.9, 8.8" ,"SLES 15 SP5, SP4","SLES 15 SP5, SP4" ,CentOS 7.9,CentOS 7.9 + ,"Oracle Linux 8.9 [#oracle89]_" ,, :doc:`GFX Architecture `,CDNA3,CDNA3 ,CDNA2,CDNA2 @@ -119,7 +120,8 @@ Use this matrix to view the ROCm compatibility across successive major and minor .. rubric:: Footnotes + +.. [#oracle89] **For ROCm 6.1.1** - Oracle Linux is supported only on AMD Instinct MI300X. .. [#] **For ROCm 6.1** - MI300A (gfx942) is supported on Ubuntu 22.04.4, RHEL 9.3 & 8.9 and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.4. .. [#] **For ROCm 6.0** - MI300A (gfx942) is supported on Ubuntu 22.04.3, RHEL 8.9 and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.3. - From 778c8e2c05f944907b800186270694cb6f2951a1 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Tue, 18 Jun 2024 15:29:09 -0700 Subject: [PATCH 154/175] Add Oracle Linux 8.9 to 6.1.1 changelog (#3327) --- CHANGELOG.md | 4 +++- tools/autotag/templates/rocm_changes/6.1.1.md | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fcf1ac90e..7767321f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -164,7 +164,9 @@ ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and librarie ### OS support -ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel: 5.15 [GA], 6.8 [HWE]). +* ROCm 6.1.1 now supports Oracle Linux. It has been tested against version 8.9 (kernel 5.15.0-205) with AMD Instinct MI300X accelerators. + +* ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel: 5.15 [GA], 6.8 [HWE]). ### AMD SMI diff --git a/tools/autotag/templates/rocm_changes/6.1.1.md b/tools/autotag/templates/rocm_changes/6.1.1.md index 062599af9..24cd0d77e 100644 --- a/tools/autotag/templates/rocm_changes/6.1.1.md +++ b/tools/autotag/templates/rocm_changes/6.1.1.md @@ -3,7 +3,9 @@ ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and librarie ### OS support -ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel: 5.15 [GA], 6.8 [HWE]). +* ROCm 6.1.1 now supports Oracle Linux. It has been tested against version 8.9 (kernel 5.15.0-205) with AMD Instinct MI300X accelerators. + +* ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel: 5.15 [GA], 6.8 [HWE]). ### AMD SMI From e74245fbe428f14a5188c393d8f90df37bf886e8 Mon Sep 17 00:00:00 2001 From: danielsu-amd Date: Wed, 19 Jun 2024 09:59:02 -0400 Subject: [PATCH 155/175] External CI: Latest source pipeline for rocm-examples (#3317) --- .azuredevops/components/rocm-examples.yml | 49 +++++++++++++++++++ .azuredevops/tag-builds/rocm-examples.yml | 29 +++++++++++ .../templates/steps/artifact-download.yml | 4 ++ .../templates/steps/dependencies-rocm.yml | 8 +++ 4 files changed, 90 insertions(+) create mode 100644 .azuredevops/tag-builds/rocm-examples.yml diff --git a/.azuredevops/components/rocm-examples.yml b/.azuredevops/components/rocm-examples.yml index 0573a20bf..77ad3e38b 100644 --- a/.azuredevops/components/rocm-examples.yml +++ b/.azuredevops/components/rocm-examples.yml @@ -5,6 +5,30 @@ parameters: - name: checkoutRef type: string default: '' +- name: aptPackages + type: object + default: + - libglfw3-dev +- name: rocmDependencies + type: object + default: + - AMDMIGraphX + - clr + - hipBLAS + - hipCUB + - HIPIFY + - hipRAND + - hipSOLVER + - hipSPARSE + - llvm-project + - rocBLAS + - rocPRIM + - rocprofiler-register + - ROCR-Runtime + - rocRAND + - rocSOLVER + - rocSPARSE + - rocThrust jobs: - job: rocm_examples @@ -20,5 +44,30 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + # 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/build-cmake.yml + parameters: + # https://github.com/ROCm/HIP/issues/2203 + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm + -DROCM_ROOT=$(Agent.BuildDirectory)/rocm + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -DAMDGPU_TARGETS=gfx1030;gfx1100 + -DCMAKE_HIP_ARCHITECTURES=gfx1030;gfx1100 + -DCMAKE_EXE_LINKER_FLAGS=-fgpu-rdc - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/tag-builds/rocm-examples.yml b/.azuredevops/tag-builds/rocm-examples.yml new file mode 100644 index 000000000..2eba0b7bd --- /dev/null +++ b/.azuredevops/tag-builds/rocm-examples.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocm-examples + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-examples.yml + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml index 382a7d14e..fab8f71b7 100644 --- a/.azuredevops/templates/steps/artifact-download.yml +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -21,10 +21,13 @@ parameters: half: master HIP: develop hipBLAS: develop + hipCUB: develop hipRAND: develop + hipSOLVER: develop hipSPARSE: develop llvm-project: amd-staging MIOpen: develop + rdc: develop rocBLAS: develop ROCdbgapi : amd-master rocDecode: develop @@ -40,6 +43,7 @@ parameters: rocSOLVER: develop rocSPARSE: develop ROCT-Thunk-Interface: master + rocThrust: develop roctracer: amd-master rpp: master - name: componentsFailureOkay diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index f0d078450..47510ee5d 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -31,11 +31,14 @@ parameters: composable_kernel: $(composable-kernel-pipeline-id) half: $(half-pipeline-id) hipBLAS: $(hipblas-pipeline-id) + hipCUB: $(hipcub-pipeline-id) HIPIFY: $(hipify-pipeline-id) hipRAND: $(hiprand-pipeline-id) + hipSOLVER: $(hipsolver-pipeline-id) hipSPARSE: $(hipsparse-pipeline-id) llvm-project: $(llvm-project-pipeline-id) MIOpen: $(miopen-pipeline-id) + rdc: $(rdc-pipeline-id) rocBLAS: $(rocblas-pipeline-id) ROCdbgapi : $(rocdbgapi-pipeline-id) rocDecode: $(rocdecode-pipeline-id) @@ -52,6 +55,7 @@ parameters: rocSOLVER: $(rocsolver-pipeline-id) rocSPARSE: $(rocsparse-pipeline-id) ROCT-Thunk-Interface: $(roct-thunk-interface-pipeline-id) + rocThrust: $(rocthrust-pipeline-id) roctracer: $(roctracer-pipeline-id) rpp: $(rpp-pipeline-id) - name: taggedPipelineIdentifiers @@ -65,11 +69,14 @@ parameters: composable_kernel: $(composable-kernel-tagged-pipeline-id) half: $(half-tagged-pipeline-id) hipBLAS: $(hipblas-tagged-pipeline-id) + hipCUB: $(hipcub-tagged-pipeline-id) HIPIFY: $(hipify-tagged-pipeline-id) hipRAND: $(hiprand-tagged-pipeline-id) + hipSOLVER: $(hipsolver-tagged-pipeline-id) hipSPARSE: $(hipsparse-tagged-pipeline-id) llvm-project: $(llvm-project-tagged-pipeline-id) MIOpen: $(miopen-tagged-pipeline-id) + rdc: $(rdc-tagged-pipeline-id) rocBLAS: $(rocblas-tagged-pipeline-id) ROCdbgapi : $(rocdbgapi-tagged-pipeline-id) rocDecode: $(rocdecode-tagged-pipeline-id) @@ -86,6 +93,7 @@ parameters: 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) rpp: $(rpp-tagged-pipeline-id) # set to true if you're calling this template file multiple files in same pipeline From 8b95ab0a026932c15cf99b5bbf60f9898d3731d9 Mon Sep 17 00:00:00 2001 From: danielsu-amd Date: Wed, 19 Jun 2024 13:08:31 -0400 Subject: [PATCH 156/175] External CI: remove redundant rocm-examples build flags (#3331) --- .azuredevops/components/rocm-examples.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.azuredevops/components/rocm-examples.yml b/.azuredevops/components/rocm-examples.yml index 77ad3e38b..bf6aad950 100644 --- a/.azuredevops/components/rocm-examples.yml +++ b/.azuredevops/components/rocm-examples.yml @@ -66,8 +66,6 @@ jobs: -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DROCM_ROOT=$(Agent.BuildDirectory)/rocm - -DROCM_PATH=$(Agent.BuildDirectory)/rocm - -DAMDGPU_TARGETS=gfx1030;gfx1100 -DCMAKE_HIP_ARCHITECTURES=gfx1030;gfx1100 -DCMAKE_EXE_LINKER_FLAGS=-fgpu-rdc - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 9d4eb5eff2790758f5069e419ed8b3e7cabf124b Mon Sep 17 00:00:00 2001 From: Peter Park Date: Wed, 19 Jun 2024 12:03:29 -0700 Subject: [PATCH 157/175] Add RHEL 9.4 to compat matrix (#3332) * Add RHEL 9.4 to compat matrix * add rhel 9.4 footnote in compat matrix --- docs/compatibility/compatibility-matrix.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/compatibility/compatibility-matrix.rst b/docs/compatibility/compatibility-matrix.rst index e32021122..18bbe1e9e 100644 --- a/docs/compatibility/compatibility-matrix.rst +++ b/docs/compatibility/compatibility-matrix.rst @@ -17,7 +17,7 @@ Use this matrix to view the ROCm compatibility across successive major and minor :doc:`Operating Systems `, "Ubuntu 22.04.4, 22.04.3","Ubuntu 22.04.4, 22.04.3" ,"Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5" - ,"RHEL 9.3, 9.2","RHEL 9.3, 9.2" + ,"RHEL 9.4 [#red-hat94]_, 9.3, 9.2","RHEL 9.3, 9.2" ,"RHEL 8.9, 8.8","RHEL 8.9, 8.8" ,"SLES 15 SP5, SP4","SLES 15 SP5, SP4" ,CentOS 7.9,CentOS 7.9 @@ -121,7 +121,8 @@ Use this matrix to view the ROCm compatibility across successive major and minor .. rubric:: Footnotes +.. [#red-hat94] **For ROCm 6.1** - RHEL 9.4 is supported only on AMD Instinct MI300A. .. [#oracle89] **For ROCm 6.1.1** - Oracle Linux is supported only on AMD Instinct MI300X. -.. [#] **For ROCm 6.1** - MI300A (gfx942) is supported on Ubuntu 22.04.4, RHEL 9.3 & 8.9 and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.4. +.. [#] **For ROCm 6.1** - MI300A (gfx942) is supported on Ubuntu 22.04.4, RHEL 9.4, RHEL 9.3, RHEL 8.9, and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.4. .. [#] **For ROCm 6.0** - MI300A (gfx942) is supported on Ubuntu 22.04.3, RHEL 8.9 and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.3. From d994302df7f898a1d1c1372213f73a00d71eebb5 Mon Sep 17 00:00:00 2001 From: randyh62 <42045079+randyh62@users.noreply.github.com> Date: Fri, 21 Jun 2024 09:22:57 -0700 Subject: [PATCH 158/175] license information updated (#3339) * license information updated * Young's comments * Sam's comment --- LICENSE | 2 +- docs/about/license.md | 98 ++++++++++++++++++++++--------------------- 2 files changed, 51 insertions(+), 49 deletions(-) diff --git a/LICENSE b/LICENSE index fe506e83d..0928493a1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved. +Copyright (c) 2023 - 2024 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/docs/about/license.md b/docs/about/license.md index e97dc3db1..588dd164b 100644 --- a/docs/about/license.md +++ b/docs/about/license.md @@ -17,7 +17,7 @@ following section. ## ROCm component licenses -ROCm is released by Advanced Micro Devices, Inc. and is licensed per component separately. +ROCm is released by Advanced Micro Devices, Inc. (AMD) and is licensed per component separately. The following table is a list of ROCm components with links to their respective license terms. These components may include third party components subject to additional licenses. Please review individual repositories for more information. @@ -25,66 +25,69 @@ additional licenses. Please review individual repositories for more information. | Component | License | |:---------------------|:-------------------------| -| [AMDMIGraphX](https://github.com/ROCm/AMDMIGraphX/) | [MIT](https://github.com/ROCm/AMDMIGraphX/blob/develop/LICENSE) | -| [HIPCC](https://github.com/ROCm/HIPCC/blob/develop/LICENSE.txt) | [MIT](https://github.com/ROCm/HIPCC/blob/develop/LICENSE.txt) | -| [HIPIFY](https://github.com/ROCm/HIPIFY/) | [MIT](https://github.com/ROCm/HIPIFY/blob/amd-staging/LICENSE.txt) | | [HIP](https://github.com/ROCm/HIP/) | [MIT](https://github.com/ROCm/HIP/blob/develop/LICENSE.txt) | -| [MIOpenGEMM](https://github.com/ROCm/MIOpenGEMM/) | [MIT](https://github.com/ROCm/MIOpenGEMM/blob/master/LICENSE.txt) | -| [MIOpen](https://github.com/ROCm/MIOpen/) | [MIT](https://github.com/ROCm/MIOpen/blob/master/LICENSE.txt) | -| [MIVisionX](https://github.com/ROCm/MIVisionX/) | [MIT](https://github.com/ROCm/MIVisionX/blob/master/LICENSE.txt) | -| [RCP](https://github.com/GPUOpen-Tools/radeon_compute_profiler/) | [MIT](https://github.com/GPUOpen-Tools/radeon_compute_profiler/blob/master/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) | -| [ROCR-Runtime](https://github.com/ROCm/ROCR-Runtime/) | [The University of Illinois/NCSA](https://github.com/ROCm/ROCR-Runtime/blob/master/LICENSE.txt) | -| [ROCT-Thunk-Interface](https://github.com/ROCm/ROCT-Thunk-Interface/) | [MIT](https://github.com/ROCm/ROCT-Thunk-Interface/blob/master/LICENSE.md) | -| [ROCclr](https://github.com/ROCm/ROCclr/) | [MIT](https://github.com/ROCm/ROCclr/blob/develop/LICENSE.txt) | -| [ROCdbgapi](https://github.com/ROCm/ROCdbgapi/) | [MIT](https://github.com/ROCm/ROCdbgapi/blob/amd-master/LICENSE.txt) | -| [ROCgdb](https://github.com/ROCm/ROCgdb/) | [GNU General Public License v2.0](https://github.com/ROCm/ROCgdb/blob/amd-master/COPYING) | -| [ROCm-CompilerSupport](https://github.com/ROCm/ROCm-CompilerSupport/) | [The University of Illinois/NCSA](https://github.com/ROCm/ROCm-CompilerSupport/blob/amd-stg-open/LICENSE.txt) | -| [ROCm-Device-Libs](https://github.com/ROCm/ROCm-Device-Libs/) | [The University of Illinois/NCSA](https://github.com/ROCm/ROCm-Device-Libs/blob/amd-stg-open/LICENSE.TXT) | -| [ROCm-OpenCL-Runtime/api/opencl/khronos/icd](https://github.com/KhronosGroup/OpenCL-ICD-Loader/) | [Apache 2.0](https://github.com/KhronosGroup/OpenCL-ICD-Loader/blob/main/LICENSE) | -| [ROCm-OpenCL-Runtime](https://github.com/ROCm/ROCm-OpenCL-Runtime/) | [MIT](https://github.com/ROCm/ROCm-OpenCL-Runtime/blob/develop/LICENSE.txt) | -| [ROCmValidationSuite](https://github.com/ROCm/ROCmValidationSuite/) | [MIT](https://github.com/ROCm/ROCmValidationSuite/blob/master/LICENSE) | +| [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) | +| [HIPIFY](https://github.com/ROCm/HIPIFY/) | [MIT](https://github.com/ROCm/HIPIFY/blob/amd-staging/LICENSE.txt) | +| [AMDMIGraphX](https://github.com/ROCm/AMDMIGraphX/) | [MIT](https://github.com/ROCm/AMDMIGraphX/blob/develop/LICENSE) | +| [MIOpen](https://github.com/ROCm/MIOpen/) | [MIT](https://github.com/ROCm/MIOpen/blob/develop/LICENSE.txt) | +| [MIVisionX](https://github.com/ROCm/MIVisionX/) | [MIT](https://github.com/ROCm/MIVisionX/blob/develop/LICENSE.txt) | +| [AMD Common Language Runtime (CLR)](https://github.com/ROCm/clr) | [MIT](https://github.com/ROCm/clr/blob/develop/LICENCE) | +| [hipamd](https://github.com/ROCm/clr/tree/develop/hipamd) | [MIT](https://github.com/ROCm/clr/blob/develop/hipamd/LICENSE.txt) | +| [ROCm-OpenCL-Runtime](https://github.com/ROCm/clr/tree/develop/opencl) | [MIT](https://github.com/ROCm/clr/blob/develop/opencl/LICENSE.txt) | | [Tensile](https://github.com/ROCm/Tensile/) | [MIT](https://github.com/ROCm/Tensile/blob/develop/LICENSE.md) | -| [aomp-extras](https://github.com/ROCm/aomp-extras/) | [MIT](https://github.com/ROCm/aomp-extras/blob/aomp-dev/LICENSE) | | [aomp](https://github.com/ROCm/aomp/) | [Apache 2.0](https://github.com/ROCm/aomp/blob/aomp-dev/LICENSE) | -| [atmi](https://github.com/ROCm/atmi/) | [MIT](https://github.com/ROCm/atmi/blob/master/LICENSE.txt) | +| [aomp-extras](https://github.com/ROCm/aomp-extras/) | [MIT](https://github.com/ROCm/aomp-extras/blob/aomp-dev/LICENSE) | +| [llvm-project](https://github.com/ROCm/llvm-project/) | [Apache](https://github.com/ROCm/llvm-project/blob/amd-staging/LICENSE.TXT) | +| [llvm-project/flang](https://github.com/ROCm/llvm-project/tree/amd-staging/flang) | [Apache 2.0](https://github.com/ROCm/llvm-project/blob/amd-staging/flang/LICENSE.TXT) | +| [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) | +| [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) | | [clang-ocl](https://github.com/ROCm/clang-ocl/) | [MIT](https://github.com/ROCm/clang-ocl/blob/master/LICENSE) | -| [flang](https://github.com/ROCm/flang/) | [Apache 2.0](https://github.com/ROCm/flang/blob/master/LICENSE.txt) | -| [half](https://github.com/ROCm/half/) | [MIT](https://github.com/ROCm/half/blob/master/LICENSE.txt) | +| [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) | +| [ROCT-Thunk-Interface](https://github.com/ROCm/ROCT-Thunk-Interface/) | [MIT](https://github.com/ROCm/ROCT-Thunk-Interface/blob/master/LICENSE.md) | +| [ROCR-Runtime](https://github.com/ROCm/ROCR-Runtime/) | [The University of Illinois/NCSA](https://github.com/ROCm/ROCR-Runtime/blob/master/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) | +| [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) | | [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) | | [hipCUB](https://github.com/ROCm/hipCUB/) | [Custom](https://github.com/ROCm/hipCUB/blob/develop/LICENSE.txt) | | [hipFFT](https://github.com/ROCm/hipFFT/) | [MIT](https://github.com/ROCm/hipFFT/blob/develop/LICENSE.md) | +| [hipFORT](https://github.com/ROCm/hipfort/) | [MIT](https://github.com/ROCm/hipfort/blob/develop/LICENSE) | +| [hipRAND](https://github.com/ROCm/hipRAND/) | [MIT](https://github.com/ROCm/hipRAND/blob/develop/LICENSE.txt) | | [hipSOLVER](https://github.com/ROCm/hipSOLVER/) | [MIT](https://github.com/ROCm/hipSOLVER/blob/develop/LICENSE.md) | -| [hipSPARSELt](https://github.com/ROCm/hipSPARSELt/) | [MIT](https://github.com/ROCm/hipSPARSELt/blob/develop/LICENSE.md) | | [hipSPARSE](https://github.com/ROCm/hipSPARSE/) | [MIT](https://github.com/ROCm/hipSPARSE/blob/develop/LICENSE.md) | +| [hipSPARSELt](https://github.com/ROCm/hipSPARSELt/) | [MIT](https://github.com/ROCm/hipSPARSELt/blob/develop/LICENSE.md) | | [hipTensor](https://github.com/ROCm/hipTensor) | [MIT](https://github.com/ROCm/hipTensor/blob/develop/LICENSE) | -| [hipamd](https://github.com/ROCm/hipamd/) | [MIT](https://github.com/ROCm/hipamd/blob/develop/LICENSE.txt) | -| [hipfort](https://github.com/ROCm/hipfort/) | [MIT](https://github.com/ROCm/hipfort/blob/master/LICENSE) | -| [llvm-project](https://github.com/ROCm/llvm-project/) | [Apache](https://github.com/ROCm/llvm-project/blob/main/LICENSE.TXT) | -| [rccl](https://github.com/ROCm/rccl/) | [Custom](https://github.com/ROCm/rccl/blob/develop/LICENSE.txt) | -| [rdc](https://github.com/ROCm/rdc/) | [MIT](https://github.com/ROCm/rdc/blob/master/LICENSE) | +| [rocAL](https://github.com/ROCm/rocAL) | [MIT](https://github.com/ROCm/rocAL/blob/develop/LICENSE.txt) | | [rocALUTION](https://github.com/ROCm/rocALUTION/) | [MIT](https://github.com/ROCm/rocALUTION/blob/develop/LICENSE.md) | | [rocBLAS](https://github.com/ROCm/rocBLAS/) | [MIT](https://github.com/ROCm/rocBLAS/blob/develop/LICENSE.md) | +| [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) | | [rocPRIM](https://github.com/ROCm/rocPRIM/) | [MIT](https://github.com/ROCm/rocPRIM/blob/develop/LICENSE.txt) | +| [ROCm Performance Primitives (RPP)](https://github.com/ROCm/rpp) | [MIT](https://github.com/ROCm/rpp/blob/develop/LICENSE) | | [rocRAND](https://github.com/ROCm/rocRAND/) | [MIT](https://github.com/ROCm/rocRAND/blob/develop/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) | | [rocWMMA](https://github.com/ROCm/rocWMMA/) | [MIT](https://github.com/ROCm/rocWMMA/blob/develop/LICENSE.md) | -| [rocm-cmake](https://github.com/ROCm/rocm-cmake/) | [MIT](https://github.com/ROCm/rocm-cmake/blob/develop/LICENSE) | -| [rocm_bandwidth_test](https://github.com/ROCm/rocm_bandwidth_test/) | [The University of Illinois/NCSA](https://github.com/ROCm/rocm_bandwidth_test/blob/master/LICENSE.txt) | -| [rocm_smi_lib](https://github.com/ROCm/rocm_smi_lib/) | [The University of Illinois/NCSA](https://github.com/ROCm/rocm_smi_lib/blob/master/License.txt) | -| [rocminfo](https://github.com/ROCm/rocminfo/) | [The University of Illinois/NCSA](https://github.com/ROCm/rocminfo/blob/master/License.txt) | -| [rocprofiler](https://github.com/ROCm/rocprofiler/) | [MIT](https://github.com/ROCm/rocprofiler/blob/amd-master/LICENSE) | -| [rocr_debug_agent](https://github.com/ROCm/rocr_debug_agent/) | [The University of Illinois/NCSA](https://github.com/ROCm/rocr_debug_agent/blob/master/LICENSE.txt) | -| [roctracer](https://github.com/ROCm/roctracer/) | [MIT](https://github.com/ROCm/roctracer/blob/amd-master/LICENSE) | -| rocm-llvm-alt | [AMD Proprietary License](https://www.amd.com/en/support/amd-software-eula) +| [ROCm Communication Collectives Library (RCCL)](https://github.com/ROCm/rccl/) | [Custom](https://github.com/ROCm/rccl/blob/develop/LICENSE.txt) | +| [ROCm Data Center (RDC)](https://github.com/ROCm/rdc/) | [MIT](https://github.com/ROCm/rdc/blob/develop/LICENSE) | +| [ROCm CMake](https://github.com/ROCm/rocm-cmake/) | [MIT](https://github.com/ROCm/rocm-cmake/blob/develop/LICENSE) | +| [ROCdbgapi](https://github.com/ROCm/ROCdbgapi/) | [MIT](https://github.com/ROCm/ROCdbgapi/blob/amd-staging/LICENSE.txt) | +| [ROCgdb](https://github.com/ROCm/ROCgdb/) | [GNU General Public License v2.0](https://github.com/ROCm/ROCgdb/blob/amd-master/COPYING) | +| [ROCm SMI Lib](https://github.com/ROCm/rocm_smi_lib/) | [The University of Illinois/NCSA](https://github.com/ROCm/rocm_smi_lib/blob/develop/License.txt) | +| [rocminfo](https://github.com/ROCm/rocminfo/) | [The University of Illinois/NCSA](https://github.com/ROCm/rocminfo/blob/amd-staging/License.txt) | +| [ROCProfiler](https://github.com/ROCm/rocprofiler/) | [MIT](https://github.com/ROCm/rocprofiler/blob/amd-master/LICENSE) | +| [ROCTracer](https://github.com/ROCm/roctracer/) | [MIT](https://github.com/ROCm/roctracer/blob/amd-master/LICENSE) | +| [ROCm Bandwidth Test](https://github.com/ROCm/rocm_bandwidth_test/) | [The University of Illinois/NCSA](https://github.com/ROCm/rocm_bandwidth_test/blob/master/LICENSE.txt) | +| [TransferBench](https://github.com/ROCm/TransferBench) | [MIT](https://github.com/ROCm/TransferBench/blob/develop/LICENSE.md) | +| [ROCmValidationSuite](https://github.com/ROCm/ROCmValidationSuite/) | [MIT](https://github.com/ROCm/ROCmValidationSuite/blob/master/LICENSE) | +| hsa-amd-aqlprofile | [AMD Software EULA](https://www.amd.com/en/legal/eula/amd-software-eula.html) Open sourced ROCm components are released via public GitHub -repositories, packages on https://repo.radeon.com and other distribution channels. -Proprietary products are only available on https://repo.radeon.com. Currently, only -one component of ROCm, rocm-llvm-alt is governed by a proprietary license. +repositories, packages on `https://github.com/ROCm` and other distribution channels. +Proprietary products are only available with special permission from AMD. Currently, only +one component of ROCm, `rocm-llvm-alt` is governed by a proprietary license. Proprietary components are organized in a proprietary subdirectory in the package repositories to distinguish from open sourced packages. @@ -92,7 +95,7 @@ repositories to distinguish from open sourced packages. The following additional terms and conditions apply to your use of ROCm technical documentation. ``` -©2023 Advanced Micro Devices, Inc. All rights reserved. +©2023 - 2024 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 @@ -125,8 +128,8 @@ companies. :::{attention} AQL Profiler and AOCC CPU optimization are both provided in binary form, each -subject to the license agreement enclosed in the directory for the binary and is -available here: `/opt/rocm/share/doc/rocm-llvm-alt/EULA`. By using, installing, +subject to the license agreement enclosed in the directory for the binary available +in `/opt/rocm/share/doc/hsa-amd-aqlprofile/EULA`. By using, installing, copying or distributing AQL Profiler and/or AOCC CPU Optimizations, you agree to the terms and conditions of this license agreement. If you do not agree to the terms of this agreement, do not install, copy or use the AQL Profiler and/or the @@ -134,9 +137,8 @@ AOCC CPU Optimizations. ::: For the rest of the ROCm packages, you can find the licensing information at the -following location: `/opt/rocm/share/doc//` +following location: `/opt/rocm/share/doc//` or in the locations +specified in the preceding table. -For example, you can fetch the licensing information of the `_amd_comgr_` -component (Code Object Manager) from the `amd_comgr` folder. A file named -`LICENSE.txt` contains the license details at: -`/opt/rocm-5.4.3/share/doc/amd_comgr/LICENSE.txt` +For example, you can fetch the licensing information of the `amd_comgr` +component (Code Object Manager) from the `/opt/rocm/share/doc/amd_comgr/LICENSE.txt` file. From 22e9f6f373b3afbef2b69a832b1599b926986b4b Mon Sep 17 00:00:00 2001 From: Peter Park Date: Fri, 21 Jun 2024 13:15:18 -0700 Subject: [PATCH 159/175] Add "Using ROCm for HPC" guide (#3302) * Add ROCm for HPC * Update index and toc * Add TMs in other tutorials * Add hpc apps table Spellcheck add stack image and fix links Add descriptions update copy Update copy add ref Finish adding app descriptions tweak descs fix line lengths * Revert "Add TMs in other tutorials" This reverts commit 08a1a80e5768845ee7f14a59c4353b7284dfdaf2. * Add links to install and compat matrix * Update HPC stack graphic and add some links Add hpc and td to wordlist fix links * Apply suggestions from Leo's review Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> Update docs/how-to/rocm-for-hpc/index.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> Update docs/how-to/rocm-for-hpc/index.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> Update docs/how-to/rocm-for-hpc/index.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> Update docs/how-to/rocm-for-hpc/index.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> Update docs/how-to/rocm-for-hpc/index.rst Co-authored-by: Leo Paoletti <164940351+lpaoletti@users.noreply.github.com> fix formatting Update words * update wordlist * Update hpc app descriptions with content from InfinityHub catalog --- .wordlist.txt | 5 +- .../rocm-for-hpc/hpc-stack-2024_6_20.png | Bin 0 -> 191746 bytes docs/how-to/rocm-for-ai/index.rst | 3 + docs/how-to/rocm-for-hpc/index.rst | 231 ++++++++++++++++++ docs/index.md | 1 + docs/sphinx/_toc.yml.in | 2 + 6 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 docs/data/how-to/rocm-for-hpc/hpc-stack-2024_6_20.png create mode 100644 docs/how-to/rocm-for-hpc/index.rst diff --git a/.wordlist.txt b/.wordlist.txt index 31db060a1..5c9c7153c 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -237,6 +237,7 @@ OpenCV OpenFabrics OpenGL OpenMP +OpenMPI OpenSSL OpenVX PCI @@ -495,6 +496,7 @@ hipfort hipify hipsolver hipsparse +hpc hpp hsa hsakmt @@ -631,6 +633,7 @@ subexpression subfolder subfolders supercomputing +td tensorfloat th tokenization @@ -685,4 +688,4 @@ xargs xz yaml ysvmadyb -zypper \ No newline at end of file +zypper diff --git a/docs/data/how-to/rocm-for-hpc/hpc-stack-2024_6_20.png b/docs/data/how-to/rocm-for-hpc/hpc-stack-2024_6_20.png new file mode 100644 index 0000000000000000000000000000000000000000..4191300c5faffc48174f258a5b8720b5659b1d75 GIT binary patch literal 191746 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 Wlg$B!fW^ON@h4B8b2yKm)Bgvd+7@O2 literal 0 HcmV?d00001 diff --git a/docs/how-to/rocm-for-ai/index.rst b/docs/how-to/rocm-for-ai/index.rst index 5be7b0995..7c63de05a 100644 --- a/docs/how-to/rocm-for-ai/index.rst +++ b/docs/how-to/rocm-for-ai/index.rst @@ -21,3 +21,6 @@ In this guide, you'll learn about: - :doc:`Running models from Hugging Face ` - :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-hpc/index.rst b/docs/how-to/rocm-for-hpc/index.rst new file mode 100644 index 000000000..d6ad9312b --- /dev/null +++ b/docs/how-to/rocm-for-hpc/index.rst @@ -0,0 +1,231 @@ +.. meta:: + :description: How to use ROCm for HPC + :keywords: ROCm, AI, high performance computing, HPC + +****************** +Using ROCm for HPC +****************** + +The ROCm open-source software stack is optimized to extract high-performance +computing (HPC) workload performance from AMD Instinct™ accelerators +while maintaining compatibility with industry software frameworks. + +ROCm enhances support and access for developers by providing streamlined and +improved tools that significantly increase productivity. Being open-source, ROCm +fosters innovation, differentiation, and collaboration within the developer +community, making it a powerful and accessible solution for leveraging the full +potential of AMD accelerators' capabilities in diverse computational +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 + and operating system support. + +Some of the most popular HPC frameworks are part of the ROCm platform, including +those to help parallelize operations across multiple accelerators and servers, +handle memory hierarchies, and solve linear systems. + +.. image:: ../../data/how-to/rocm-for-hpc/hpc-stack-2024_6_20.png + :align: center + :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 +and weather, computational chemistry, computational fluid dynamics, earth +science, genomics, geophysics, molecular dynamics, and physics computing. + +Refer to the resources in the following table for instructions on building, +running, and deploying these applications on ROCm-capable systems with AMD +Instinct accelerators. Each build container provides parameters to specify +different source code branches, release versions of ROCm, OpenMPI, UCX, and +Ubuntu versions. + +.. _hpc-apps: + +.. + Reduce font size of HPC app descriptions slightly. + +.. raw:: html + + + +.. container:: + :name: hpc-apps-table + + .. list-table:: + :header-rows: 1 + :stub-columns: 1 + :widths: 2 2 5 + + * - Application domain + - HPC application + - Description + + * - Physics + - `Chroma `_ + - The Chroma package supports data-parallel programming constructs for lattice + field theory and in particular lattice QCD. It uses the SciDAC QDP++ data-parallel + programming (in C++) that presents a single high-level code image to the user, + but can generate highly optimized code for many architectural systems including + single node workstations, multi and many-core nodes, clusters of nodes via + QMP, and classic vector computers. + + * - + - `Grid `_ + - Grid is a library for lattice QCD calculations that employs a high-level data parallel + approach while using a number of techniques to target multiple types of parallelism. + The library currently supports MPI, OpenMP and short vector parallelism. The SIMD + instructions sets covered include SSE, AVX, AVX2, FMA4, IMCI and AVX512. Recent + releases expanded this support to include GPU offloading. + + * - + - `MILC `_ + - The MILC Code is a set of research codes developed by MIMD Lattice Computation + (MILC) collaboration for doing simulations of four dimensional SU(3) lattice gauge + theory on MIMD parallel machines scaling from single-processor workstations + to HPC systems. The MILC Code is publicly available for research purposes. + Publications of work done using this code or derivatives of this code should + acknowledge this use. + + * - + - `PIConGPU `_ + - PIConGPU (Particle-in-cell on Graphics Processing Units) is an Open Source + simulations framework for plasma and laser-plasma physics used to develop + advanced particle accelerators for radiation therapy of cancer, high energy + physics and photon science. + + * - Astrophysics + - `Cholla `_ + - An astrophysical simulation code developed for the extreme environments + encountered in astrophysical systems. + + * - Geophysics + - `SPECFEM3D Cartesian `_ + - SPECFEM3D Cartesian simulates acoustic (fluid), elastic (solid), coupled + acoustic/elastic, poroelastic or seismic wave propagation in any type of + conforming mesh of hexahedra (structured or not.) It can, for instance, + model seismic waves propagating in sedimentary basins or any other + regional geological model following earthquakes. It can also be used + for non-destructive testing or for ocean acoustics. + + * - Molecular dynamics + - `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 + to millions of particles. This AMD container is based on a released + version of GROMACS modified by AMD. This container only supports up + to a 8 GPU configuration + + * - + - `LAMMPS `_ + - LAMMPS is a classical molecular dynamics code with a focus on materials + modeling. It's an acronym for Large-scale Atomic/Molecular Massively + Parallel Simulator. + + * - Computational fluid dynamics + - `NEKO `_ + - Neko is a portable framework for high-order spectral element flow simulations. + Written in modern Fortran, Neko adopts an object-oriented approach, allowing + multi-tier abstractions of the solver stack and facilitating various hardware + backends ranging from general-purpose processors, CUDA and HIP enabled + accelerators to SX-Aurora vector processors. + + * - + - `nekRS `_ + - nekRS is an open-source Navier Stokes solver based on the spectral element + method targeting classical processors and accelerators like GPUs. + + * - Computational chemistry + - `QUDA `_ + - Library designed for efficient lattice QCD computations on + accelerators. It includes optimized Dirac operators and a variety of + fermion solvers and conjugate gradient (CG) implementations, enhancing + performance and accuracy in lattice QCD simulations. + + * - Electronic structure + - `CP2K `_ + - CP2K is a quantum chemistry and solid state physics software package that can + perform atomistic simulations of solid state, liquid, molecular, periodic, material, + crystal, and biological systems. This AMD container, based on a released version + of CP2K, is an AMD beta version with ongoing optimizations. + + * - Quantum Monte Carlo Simulation + - `QMCPACK `_ + - QMCPACK is an open-source production-level many-body ab initio Quantum + Monte Carlo code for computing the electronic structure of atoms, molecules, 2D + nanomaterials and solids. The solid-state capabilities include metallic systems + as well as insulators. QMCPACK is expected to run well on workstations through + to the latest generation supercomputers. Besides high performance, particular + emphasis is placed on code quality and reproducibility. + + * - Climate and weather + - `MPAS `_ + - The Model for Prediction Across Scales (MPAS) is a collaborative project for + developing atmosphere, ocean, and other earth-system simulation components + for use in climate, regional climate, and weather studies. + + * - 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. + + * - + - `rocHPL-MxP `_ + - Benchmark that highlights the convergence of HPC and AI workloads by + solving a system of linear equations using novel, mixed-precision + algorithms. + + * - + - `HPCG `_ + - HPCG, or the High Performance Conjugate Gradient Benchmark complements + the High Performance LINPACK (HPL) benchmark. The computational and data + access patterns of HPCG are designed to closely match a broad set of important + applications not represented by HPL, and to incentivize computer system + designers to invest in capabilities that will benefit the collective performance + of these applications. + + * - Tools and libraries + - `ROCm with GPU-aware MPI container `_ + - Base container for GPU-aware MPI with ROCm for HPC applications. This + project provides a boilerplate for building and running a Docker + container with ROCm supporting GPU-aware MPI implementations using + OpenMPI or UCX. + + * - + - `Kokkos `_ + - Kokkos is a programming model in C++ for writing performance portable + applications for use across HPC platforms. It provides abstractions for both + parallel execution of code and data management. Kokkos is designed to target + complex node architectures with N-level memory hierarchies and multiple types + of execution resources. + + * - + - `PyFR `_ + - PyFR is an open-source Python based framework for solving advection-diffusion + type problems on streaming architectures using the Flux Reconstruction approach of + Huynh. The framework is designed to solve a range of governing systems on mixed + unstructured grids containing various element types. It is also designed to target a + range of hardware platforms via use of an in-built domain specific language derived + from the Mako templating engine. + + * - + - `RAJA `_ + - RAJA is a library of C++ software abstractions, primarily developed at Lawrence + Livermore National Laboratory (LLNL), that enables architecture and programming + model portability for HPC applications. + + * - + - `Trilinos `_ + - The Trilinos Project is an effort to develop algorithms and enabling technologies + within an object-oriented software framework for the solution of large-scale, + complex multi-physics engineering and scientific problems. + +To learn about ROCm for AI applications, see :doc:`../rocm-for-ai/index`. diff --git a/docs/index.md b/docs/index.md index a07433611..e673fabb3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -93,6 +93,7 @@ Our documentation is organized into the following categories: * [Using ROCm for AI](./how-to/rocm-for-ai/index.rst) * [Fine-tuning LLMs and inference optimization](./how-to/llm-fine-tuning-optimization/index.rst) +* [Using ROCm for HPC](./how-to/rocm-for-hpc/index.rst) * [System tuning for various architectures](./how-to/tuning-guides.md) * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 3757f8c9d..a21d67c6c 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -79,6 +79,8 @@ subtrees: - file: how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst title: Optimizing Triton kernels - file: how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst + - file: how-to/rocm-for-hpc/index.rst + title: Using ROCm for HPC - file: how-to/tuning-guides.md title: System optimization subtrees: From bb0090882c64ecfd38451dc3753a36484e6fa488 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Jun 2024 22:37:37 +0000 Subject: [PATCH 160/175] Bump sphinx-reredirects from 0.1.3 to 0.1.4 in /docs/sphinx Bumps [sphinx-reredirects](https://github.com/documatt/sphinx-reredirects) from 0.1.3 to 0.1.4. - [Commits](https://github.com/documatt/sphinx-reredirects/compare/v0.1.3...v0.1.4) --- updated-dependencies: - dependency-name: sphinx-reredirects dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- docs/sphinx/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index f1a81ddba..aca99e38b 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -122,7 +122,7 @@ sphinx-external-toc==1.0.1 # via rocm-docs-core sphinx-notfound-page==1.0.2 # via rocm-docs-core -sphinx-reredirects==0.1.3 +sphinx-reredirects==0.1.4 # via -r requirements.in sphinxcontrib-applehelp==1.0.8 # via sphinx From 1435634f5c8060d3dbe27cce1ba5c4a9c8677401 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Fri, 21 Jun 2024 15:53:55 -0700 Subject: [PATCH 161/175] reorder toc (#3346) --- docs/index.md | 2 +- docs/sphinx/_toc.yml.in | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/index.md b/docs/index.md index e673fabb3..741d4269a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -92,8 +92,8 @@ Our documentation is organized into the following categories: :padding: 2 * [Using ROCm for AI](./how-to/rocm-for-ai/index.rst) -* [Fine-tuning LLMs and inference optimization](./how-to/llm-fine-tuning-optimization/index.rst) * [Using ROCm for HPC](./how-to/rocm-for-hpc/index.rst) +* [Fine-tuning LLMs and inference optimization](./how-to/llm-fine-tuning-optimization/index.rst) * [System tuning for various architectures](./how-to/tuning-guides.md) * [MI100](./how-to/tuning-guides/mi100.md) * [MI200](./how-to/tuning-guides/mi200.md) diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index a21d67c6c..6592eb664 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -58,6 +58,8 @@ subtrees: - file: how-to/rocm-for-ai/train-a-model.rst - file: how-to/rocm-for-ai/hugging-face-models.rst - file: how-to/rocm-for-ai/deploy-your-model.rst + - file: how-to/rocm-for-hpc/index.rst + title: Using ROCm for HPC - file: how-to/llm-fine-tuning-optimization/index.rst title: Fine-tuning LLMs and inference optimization subtrees: @@ -79,8 +81,6 @@ subtrees: - file: how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst title: Optimizing Triton kernels - file: how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst - - file: how-to/rocm-for-hpc/index.rst - title: Using ROCm for HPC - file: how-to/tuning-guides.md title: System optimization subtrees: From f07608bc92481bc8f3c76520dfe1a12c434a3200 Mon Sep 17 00:00:00 2001 From: randyh62 <42045079+randyh62@users.noreply.github.com> Date: Fri, 21 Jun 2024 16:36:39 -0700 Subject: [PATCH 162/175] added ROCm Core and AMD SMI (#3348) * added ROCm Core and AMD SMI * fix URLs --- docs/about/license.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/about/license.md b/docs/about/license.md index 588dd164b..13324e261 100644 --- a/docs/about/license.md +++ b/docs/about/license.md @@ -32,6 +32,7 @@ additional licenses. Please review individual repositories for more information. | [MIOpen](https://github.com/ROCm/MIOpen/) | [MIT](https://github.com/ROCm/MIOpen/blob/develop/LICENSE.txt) | | [MIVisionX](https://github.com/ROCm/MIVisionX/) | [MIT](https://github.com/ROCm/MIVisionX/blob/develop/LICENSE.txt) | | [AMD Common Language Runtime (CLR)](https://github.com/ROCm/clr) | [MIT](https://github.com/ROCm/clr/blob/develop/LICENCE) | +| [ROCm-Core](https://github.com/ROCm/rocm-core) | [MIT](https://github.com/ROCm/rocm-core/blob/master/copyright) | | [hipamd](https://github.com/ROCm/clr/tree/develop/hipamd) | [MIT](https://github.com/ROCm/clr/blob/develop/hipamd/LICENSE.txt) | | [ROCm-OpenCL-Runtime](https://github.com/ROCm/clr/tree/develop/opencl) | [MIT](https://github.com/ROCm/clr/blob/develop/opencl/LICENSE.txt) | | [Tensile](https://github.com/ROCm/Tensile/) | [MIT](https://github.com/ROCm/Tensile/blob/develop/LICENSE.md) | @@ -75,7 +76,8 @@ additional licenses. Please review individual repositories for more information. | [ROCm CMake](https://github.com/ROCm/rocm-cmake/) | [MIT](https://github.com/ROCm/rocm-cmake/blob/develop/LICENSE) | | [ROCdbgapi](https://github.com/ROCm/ROCdbgapi/) | [MIT](https://github.com/ROCm/ROCdbgapi/blob/amd-staging/LICENSE.txt) | | [ROCgdb](https://github.com/ROCm/ROCgdb/) | [GNU General Public License v2.0](https://github.com/ROCm/ROCgdb/blob/amd-master/COPYING) | -| [ROCm SMI Lib](https://github.com/ROCm/rocm_smi_lib/) | [The University of Illinois/NCSA](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/develop/License.txt) | +| [AMD SMI](https://github.com/ROCm/amdsmi) | [MIT](https://github.com/ROCm/amdsmi/blob/develop/LICENSE) | | [rocminfo](https://github.com/ROCm/rocminfo/) | [The University of Illinois/NCSA](https://github.com/ROCm/rocminfo/blob/amd-staging/License.txt) | | [ROCProfiler](https://github.com/ROCm/rocprofiler/) | [MIT](https://github.com/ROCm/rocprofiler/blob/amd-master/LICENSE) | | [ROCTracer](https://github.com/ROCm/roctracer/) | [MIT](https://github.com/ROCm/roctracer/blob/amd-master/LICENSE) | @@ -85,8 +87,8 @@ additional licenses. Please review individual repositories for more information. | hsa-amd-aqlprofile | [AMD Software EULA](https://www.amd.com/en/legal/eula/amd-software-eula.html) Open sourced ROCm components are released via public GitHub -repositories, packages on `https://github.com/ROCm` and other distribution channels. -Proprietary products are only available with special permission from AMD. Currently, only +repositories, packages on [https://repo.radeon.com](https://repo.radeon.com) and other distribution channels. +Proprietary products are only available on [https://repo.radeon.com](https://repo.radeon.com). Currently, only one component of ROCm, `rocm-llvm-alt` is governed by a proprietary license. Proprietary components are organized in a proprietary subdirectory in the package repositories to distinguish from open sourced packages. From 217830fe252494866d23901e6a487103b1ebec5c Mon Sep 17 00:00:00 2001 From: abhimeda <138710508+abhimeda@users.noreply.github.com> Date: Tue, 25 Jun 2024 15:04:52 -0400 Subject: [PATCH 163/175] added matrices artifact uploading code from rocSPARSE (#3356) --- .azuredevops/components/hipSPARSE.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.azuredevops/components/hipSPARSE.yml b/.azuredevops/components/hipSPARSE.yml index 69e46c98a..5237dfef7 100644 --- a/.azuredevops/components/hipSPARSE.yml +++ b/.azuredevops/components/hipSPARSE.yml @@ -65,3 +65,13 @@ jobs: -DBUILD_CLIENTS_SAMPLES=OFF -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + artifactName: hipSPARSE + publish: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml + parameters: + sourceDir: $(Build.SourcesDirectory)/build/clients + contentsString: matrices/** + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + artifactName: testMatrices From 791285772d3383e1f2c8b3ab8e77f825e9fb4060 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Tue, 25 Jun 2024 16:45:42 -0600 Subject: [PATCH 164/175] Remove article info for moved or deleted pages --- docs/conf.py | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 0089a06c9..2a1c9adae 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -57,34 +57,10 @@ article_pages = [ "date":"2024-06-04" }, - {"file":"install/windows/install-quick", "os":["windows"]}, - {"file":"install/linux/install-quick", "os":["linux"]}, - - {"file":"install/linux/install", "os":["linux"]}, - {"file":"install/linux/install-options", "os":["linux"]}, - {"file":"install/linux/prerequisites", "os":["linux"]}, - - {"file":"install/docker", "os":["linux"]}, - {"file":"install/magma-install", "os":["linux"]}, - {"file":"install/pytorch-install", "os":["linux"]}, - {"file":"install/tensorflow-install", "os":["linux"]}, - - {"file":"install/windows/install", "os":["windows"]}, - {"file":"install/windows/prerequisites", "os":["windows"]}, - {"file":"install/windows/cli/index", "os":["windows"]}, - {"file":"install/windows/gui/index", "os":["windows"]}, - - {"file":"about/compatibility/docker-image-support-matrix", "os":["linux"]}, - {"file":"about/compatibility/user-kernel-space-compat-matrix", "os":["linux"]}, - - {"file":"reference/library-index", "os":["linux"]}, - {"file":"how-to/deep-learning-rocm", "os":["linux"]}, {"file":"how-to/gpu-enabled-mpi", "os":["linux"]}, {"file":"how-to/system-debugging", "os":["linux"]}, {"file":"how-to/tuning-guides", "os":["linux", "windows"]}, - - {"file":"rocm-a-z", "os":["linux", "windows"]}, ] exclude_patterns = ['temp'] @@ -108,5 +84,5 @@ html_theme_options = { } redirects = { - "reference/openmp/openmp": "../../about/compatibility/openmp.html" + "reference/openmp/openmp": "../../about/compatibility/openmp.html" } From 356ad4ab47a9641cabd8a9ff8bb980608136af90 Mon Sep 17 00:00:00 2001 From: randyh62 <42045079+randyh62@users.noreply.github.com> Date: Wed, 26 Jun 2024 10:00:39 -0700 Subject: [PATCH 165/175] remove Magma (#3361) * remove Magma * missed one --- .../how-to/framework_install_2024_05_23.png | Bin 110421 -> 97627 bytes docs/how-to/deep-learning-rocm.rst | 38 ++---------------- docs/index.md | 1 - 3 files changed, 4 insertions(+), 35 deletions(-) diff --git a/docs/data/how-to/framework_install_2024_05_23.png b/docs/data/how-to/framework_install_2024_05_23.png index 363f30c07f38b1206f22b449f52f7c12f0dae736..8a9a46098ca7bcf013b2d20c84b07a731a2abc28 100644 GIT binary patch literal 97627 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 z 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 literal 110421 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

    pc$zkCp72#x?&Z%X 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 for optimized deep learning operations and ROCm-aware versions of popular -deep learning frameworks and libraries such as PyTorch, TensorFlow, JAX, and MAGMA. ROCm works closely with these +deep learning frameworks and libraries such as PyTorch, TensorFlow, and JAX. ROCm works closely with these frameworks to ensure that framework-specific optimizations take advantage of AMD accelerator and GPU architectures. The following guides cover installation processes for ROCm-aware deep learning frameworks. -.. grid:: - - .. grid-item:: - :columns: 3 - - :doc:`PyTorch for ROCm ` - - .. grid-item:: - :columns: 3 - - :doc:`TensorFlow for ROCm ` - - .. grid-item:: - :columns: 3 - - .. grid-item:: - :columns: 3 - - .. grid-item:: - :columns: 3 - - :doc:`JAX for ROCm ` - - .. grid-item:: - :columns: 3 - - :doc:`MAGMA for ROCm ` - - .. grid-item:: - :columns: 3 - - .. grid-item:: - :columns: 3 +* :doc:`PyTorch for ROCm ` +* :doc:`TensorFlow for ROCm ` +* :doc:`JAX for ROCm ` The following chart steps through typical installation workflows for installing deep learning frameworks for ROCm. diff --git a/docs/index.md b/docs/index.md index 741d4269a..34596fdff 100644 --- a/docs/index.md +++ b/docs/index.md @@ -43,7 +43,6 @@ Our documentation is organized into the following categories: * {doc}`PyTorch for ROCm` * {doc}`TensorFlow for ROCm` * {doc}`JAX for ROCm` - * {doc}`MAGMA for ROCm` ::: :::{grid-item-card} From 5c9d071e85b06418ed58769ee30565d67601fdaa Mon Sep 17 00:00:00 2001 From: Peter Jun Park Date: Wed, 26 Jun 2024 14:12:25 -0400 Subject: [PATCH 166/175] remove card text styling --- docs/index.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/index.md b/docs/index.md index 34596fdff..4bcf6a33b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,7 +25,6 @@ Our documentation is organized into the following categories: :class-container: rocm-doc-grid :::{grid-item-card} -:class-card: sd-text-black :img-top: ./data/banner-installation.jpg :img-alt: Install documentation :padding: 2 @@ -46,7 +45,6 @@ Our documentation is organized into the following categories: ::: :::{grid-item-card} -:class-card: sd-text-black :img-top: ./data/banner-compatibility.jpg :img-alt: Compatibility information :padding: 2 @@ -64,7 +62,6 @@ Our documentation is organized into the following categories: :::{grid-item-card} -:class-card: sd-text-black :img-top: ./data/banner-reference.jpg :img-alt: Reference documentation :padding: 2 @@ -85,7 +82,6 @@ Our documentation is organized into the following categories: :::{grid-item-card} -:class-card: sd-text-black :img-top: ./data/banner-howto.jpg :img-alt: How-to documentation :padding: 2 @@ -108,7 +104,6 @@ Our documentation is organized into the following categories: ::: :::{grid-item-card} -:class-card: sd-text-black :img-top: ./data/banner-conceptual.jpg :img-alt: Conceptual documentation :padding: 2 From 699b604f00383b272736a231186da8eb3d20bce2 Mon Sep 17 00:00:00 2001 From: alexxu-amd <159800977+alexxu-amd@users.noreply.github.com> Date: Thu, 27 Jun 2024 10:01:43 -0400 Subject: [PATCH 167/175] Add INSTANCE_ONLY cmake flag; change pool to ultra; increase time limit to 3.5hr (#3275) --- .azuredevops/components/composable_kernel.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index adef93e84..70d005b41 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -24,10 +24,11 @@ parameters: jobs: - job: composable_kernel + timeoutInMinutes: 210 variables: - group: common - template: /.azuredevops/variables-global.yml - pool: ${{ variables.MEDIUM_BUILD_POOL }} + pool: ${{ variables.ULTRA_BUILD_POOL }} workspace: clean: all steps: @@ -57,6 +58,6 @@ jobs: -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release - -DGPU_TARGETS=gfx1030;gfx1100 + -DINSTANCE_ONLY=ON -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From accb1347ea702d219b2def79a850ec7ed3eac3aa Mon Sep 17 00:00:00 2001 From: Joseph Macaranas <145489236+amd-jmacaran@users.noreply.github.com> Date: Thu, 27 Jun 2024 13:58:10 -0400 Subject: [PATCH 168/175] External CI: Add initial support for rocAL (#3365) --- .azuredevops/components/rocAL.yml | 138 ++++++++++++++++++ .azuredevops/tag-builds/rocAL.yml | 29 ++++ .../templates/steps/artifact-download.yml | 1 + .azuredevops/templates/steps/build-cmake.yml | 8 +- .../templates/steps/dependencies-rocm.yml | 2 + 5 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 .azuredevops/components/rocAL.yml create mode 100644 .azuredevops/tag-builds/rocAL.yml diff --git a/.azuredevops/components/rocAL.yml b/.azuredevops/components/rocAL.yml new file mode 100644 index 000000000..f05cb469f --- /dev/null +++ b/.azuredevops/components/rocAL.yml @@ -0,0 +1,138 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - python3-pip + - python3-protobuf + - cmake + - ninja-build + - libprotobuf-dev + - libprotoc-dev + - protobuf-compiler + - liblmdb-dev + - pkg-config + - ffmpeg + - libavcodec-dev + - libavformat-dev + - libavutil-dev + - libswscale-dev + - libturbojpeg-dev + - libjpeg-turbo-official=3.0.2-20240124 + - libopencv-dev +- name: pipModules + type: object + default: + - numpy + - opencv-python + - torch + - pillow +- name: rocmDependencies + type: object + default: + - rocm-cmake + - llvm-project + - ROCR-Runtime + - clr + - rocDecode + - half + - rpp + - MIVisionX + - aomp + +jobs: +- job: rocAL + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.BASE_BUILD_POOL }} + workspace: + clean: all + steps: + - task: Bash@3 + displayName: 'Register libjpeg-turbo packages' + inputs: + targetType: inline + script: | + sudo mkdir --parents --mode=0755 /etc/apt/keyrings + wget -q -O- https://packagecloud.io/dcommander/libjpeg-turbo/gpgkey | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/libjpeg-turbo.gpg > /dev/null + 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 + sudo apt update + apt-cache show libjpeg-turbo-official | grep Version + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - task: Bash@3 + displayName: 'Clone PyBind11' + inputs: + targetType: inline + script: git clone --depth 1 -b v2.11.1 https://github.com/pybind/pybind11 + workingDirectory: '$(Build.SourcesDirectory)' + - task: Bash@3 + displayName: 'Clone RapidJSON' + inputs: + targetType: inline + script: git clone --depth 1 https://github.com/Tencent/rapidjson.git + workingDirectory: '$(Build.SourcesDirectory)' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: PyBind11 + cmakeBuildDir: '$(Build.SourcesDirectory)/pybind11/build' + customInstallPath: false + installEnabled: false + extraBuildFlags: >- + -DDOWNLOAD_CATCH=ON + -DDOWNLOAD_EIGEN=ON + -GNinja + - task: Bash@3 + displayName: 'Install PyBind11' + inputs: + targetType: inline + script: sudo cmake --build . --target install + workingDirectory: '$(Build.SourcesDirectory)/pybind11/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: RapidJSON + cmakeBuildDir: '$(Build.SourcesDirectory)/rapidjson/build' + customInstallPath: false + installEnabled: false + extraBuildFlags: >- + -GNinja + - task: Bash@3 + displayName: 'Install RapidJSON' + inputs: + targetType: inline + script: sudo cmake --build . --target install + workingDirectory: '$(Build.SourcesDirectory)/rapidjson/build' + # 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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;/opt/libjpeg-turbo + -DCMAKE_INSTALL_PREFIX_PYTHON=$Python3_STDARCH + -DCMAKE_BUILD_TYPE=Release + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/tag-builds/rocAL.yml b/.azuredevops/tag-builds/rocAL.yml new file mode 100644 index 000000000..c0226eea0 --- /dev/null +++ b/.azuredevops/tag-builds/rocAL.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml + +parameters: +- name: checkoutRef + type: string + default: refs/tags/$(LATEST_RELEASE_TAG) + +resources: + repositories: + - repository: pipelines_repo + type: github + endpoint: ROCm + name: ROCm/ROCm + - repository: release_repo + type: github + endpoint: ROCm + name: ROCm/rocAL + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocAL.yml + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml index fab8f71b7..265fd7bb4 100644 --- a/.azuredevops/templates/steps/artifact-download.yml +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -27,6 +27,7 @@ parameters: hipSPARSE: develop llvm-project: amd-staging MIOpen: develop + MIVisionX: develop rdc: develop rocBLAS: develop ROCdbgapi : amd-master diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml index ea9c80ad0..27410643f 100644 --- a/.azuredevops/templates/steps/build-cmake.yml +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -20,6 +20,9 @@ parameters: - name: installDir type: string default: '$(Build.BinariesDirectory)' +- name: customInstallPath + type: boolean + default: true - name: installEnabled type: boolean default: true @@ -31,7 +34,10 @@ steps: displayName: '${{parameters.componentName }} CMake Flags' inputs: workingDirectory: ${{ parameters.cmakeBuildDir }} - cmakeArgs: -DCMAKE_INSTALL_PREFIX=${{ parameters.installDir }} ${{ parameters.extraBuildFlags }} .. + ${{ if eq(parameters.customInstallPath, true) }}: + cmakeArgs: -DCMAKE_INSTALL_PREFIX=${{ parameters.installDir }} ${{ parameters.extraBuildFlags }} .. + ${{ else }}: + cmakeArgs: ${{ parameters.extraBuildFlags }} .. # equivalent to running make $cmakeTargetDir from $cmakeBuildDir # i.e., cd $cmakeBuildDir; make $cmakeTargetDir - task: CMake@1 diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index 47510ee5d..c66f2ec45 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -38,6 +38,7 @@ parameters: hipSPARSE: $(hipsparse-pipeline-id) llvm-project: $(llvm-project-pipeline-id) MIOpen: $(miopen-pipeline-id) + MIVisionX: $(mivisionx-pipeline-id) rdc: $(rdc-pipeline-id) rocBLAS: $(rocblas-pipeline-id) ROCdbgapi : $(rocdbgapi-pipeline-id) @@ -76,6 +77,7 @@ parameters: hipSPARSE: $(hipsparse-tagged-pipeline-id) llvm-project: $(llvm-project-tagged-pipeline-id) MIOpen: $(miopen-tagged-pipeline-id) + MIVisionX: $(mivisionx-tagged-pipeline-id) rdc: $(rdc-tagged-pipeline-id) rocBLAS: $(rocblas-tagged-pipeline-id) ROCdbgapi : $(rocdbgapi-tagged-pipeline-id) From a552f9f6b861dc91c14112c2aa5f0aa8d39bccd5 Mon Sep 17 00:00:00 2001 From: Peter Park Date: Thu, 27 Jun 2024 11:28:20 -0700 Subject: [PATCH 169/175] Add fixes to vLLM install and triton kernel optimization (#3366) * Add fixes to vLLM install and triton kernel optimization * Update TGI how-to remove extra step in TGI --- .../llm-inference-frameworks.rst | 51 ++++++++----------- .../optimizing-triton-kernel.rst | 5 -- 2 files changed, 22 insertions(+), 34 deletions(-) diff --git a/docs/how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst b/docs/how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst index c7bb5eada..547705f0f 100644 --- a/docs/how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst +++ b/docs/how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst @@ -28,18 +28,9 @@ graphs, tensor parallel multi-GPU, GPTQ, AWQ, and token speculation. Installing vLLM --------------- -1. To install vLLM, run the following commands. - - .. code-block:: shell - - # Install from source - git clone https://github.com/ROCm/vllm.git - cd vllm - PYTORCH_ROCM_ARCH=gfx942 python setup.py install #MI300 series - .. _fine-tuning-llms-vllm-rocm-docker-image: -2. Run the following commands to build a Docker image ``vllm-rocm``. +1. Run the following commands to build a Docker image ``vllm-rocm``. .. code-block:: shell @@ -52,7 +43,7 @@ Installing vLLM .. tab-item:: vLLM on a single-accelerator system :sync: single - 3. To use vLLM as an API server to serve reference requests, first start a container using the :ref:`vllm-rocm + 2. To use vLLM as an API server to serve reference requests, first start a container using the :ref:`vllm-rocm Docker image `. .. code-block:: shell @@ -69,7 +60,7 @@ Installing vLLM vllm-rocm \ bash - 4. Inside the container, start the API server to run on a single accelerator on port 8000 using the following command. + 3. Inside the container, start the API server to run on a single accelerator on port 8000 using the following command. .. code-block:: shell @@ -81,7 +72,7 @@ Installing vLLM :alt: vLLM API server log message :align: center - 5. To test, send it a curl request containing a prompt. + 4. To test, send it a curl request containing a prompt. .. code-block:: shell @@ -92,11 +83,11 @@ Installing vLLM .. code-block:: text {"text":["What is AMD Instinct?\nAmd Instinct is a brand new line of high-performance computing (HPC) processors from Advanced Micro Devices (AMD). These processors are designed to deliver unparalleled performance for HPC workloads, including scientific simulations, data analytics, and machine learning.\nThe Instinct lineup includes a range of processors, from the entry-level Inst"]} - + .. tab-item:: vLLM on a multi-accelerator system :sync: multi - 3. To use vLLM as an API server to serve reference requests, first start a container using the :ref:`vllm-rocm + 2. To use vLLM as an API server to serve reference requests, first start a container using the :ref:`vllm-rocm Docker image `. .. code-block:: shell @@ -114,14 +105,14 @@ Installing vLLM bash - 4. To run API server on multiple GPUs, use the ``-tp`` or ``--tensor-parallel-size`` parameter. For example, to use two + 3. To run API server on multiple GPUs, use the ``-tp`` or ``--tensor-parallel-size`` parameter. For example, to use two GPUs, start the API server using the following command. .. code-block:: shell python -m vllm.entrypoints.api_server --model /app/model --dtype float16 -tp 2 --port 8000 & - 5. To run multiple instances of API Servers, specify different ports for each server, and use ``ROCR_VISIBLE_DEVICES`` to + 4. To run multiple instances of API Servers, specify different ports for each server, and use ``ROCR_VISIBLE_DEVICES`` to isolate each instance to a different accelerator. For example, to run two API servers, one on port 8000 using GPU 0 and 1, one on port 8001 using GPU 2 and 3, use a @@ -132,7 +123,7 @@ Installing vLLM ROCR_VISIBLE_DEVICES=0,1 python -m vllm.entrypoints.api_server --model /data/llama-2-7b-chat-hf --dtype float16 –tp 2 --port 8000 & ROCR_VISIBLE_DEVICES=2,3 python -m vllm.entrypoints.api_server --model /data/llama-2-7b-chat-hf --dtype float16 –tp 2--port 8001 & - 6. To test, send it a curl request containing a prompt. + 5. To test, send it a curl request containing a prompt. .. code-block:: shell @@ -163,27 +154,29 @@ speculation. Install TGI ----------- -1. To install the TGI Docker image, run the following commands. +1. Launch the TGI Docker container in the host machine. .. code-block:: shell - # Install from Dockerfile - git clone https://github.com/huggingface/text-generation-inference.git -b mi300-compat - cd text-generation-inference - docker build . -f Dockerfile.rocm + docker run --name tgi --rm -it --cap-add=SYS_PTRACE --security-opt seccomp=unconfined + --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host --shm-size 256g + --net host -v $PWD:/data + --entrypoint "/bin/bash" + --env HUGGINGFACE_HUB_CACHE=/data + ghcr.io/huggingface/text-generation-inference:latest-rocm .. tab-set:: .. tab-item:: TGI on a single-accelerator system :sync: single - 2. Launch a model using TGI server on a single accelerator. + 2. Inside the container, launch a model using TGI server on a single accelerator. .. code-block:: shell export ROCM_USE_FLASH_ATTN_V2_TRITON=True text-generation-launcher --model-id NousResearch/Meta-Llama-3-70B --dtype float16 --port 8000 & - + 3. To test, send it a curl request containing a prompt. .. code-block:: shell @@ -191,26 +184,26 @@ Install TGI curl http://localhost:8000/generate_stream -X POST -d '{"inputs":"What is AMD Instinct?","parameters":{"max_new_tokens":20}}' -H 'Content-Type: application/json' You should receive a response like the following. - + .. code-block:: shell data:{"index":20,"token":{"id":304,"text":" in","logprob":-1.2822266,"special":false},"generated_text":" AMD Instinct is a new family of data center GPUs designed to accelerate the most demanding workloads in","details":null} .. tab-item:: TGI on a multi-accelerator system - 2. Launch a model using TGI server on multiple accelerators (4 in this case). + 2. Inside the container, launch a model using TGI server on multiple accelerators (4 in this case). .. code-block:: shell export ROCM_USE_FLASH_ATTN_V2_TRITON=True text-generation-launcher --model-id NousResearch/Meta-Llama-3-8B --dtype float16 --port 8000 --num-shard 4 & - + 3. To test, send it a curl request containing a prompt. .. code-block:: shell curl http://localhost:8000/generate_stream -X POST -d '{"inputs":"What is AMD Instinct?","parameters":{"max_new_tokens":20}}' -H 'Content-Type: application/json' - + You should receive a response like the following. .. code-block:: shell diff --git a/docs/how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst b/docs/how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst index 28e36fa62..fe2eda8f8 100644 --- a/docs/how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst +++ b/docs/how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst @@ -343,11 +343,6 @@ or :doc:`rocBLAS ` is faster for a specific operation. then required to strip out the kernel and create kernel compilation and launch via Triton. -* For advanced ``matmul`` or ``conv`` configuration tuning, the ``inductor-gemm-tuner`` can - help. This implements the Triton ``conv``/``mm`` implementations used upstream - and allows specification of inputs and configuration tuning search space if new - tunings are found that can be added to the auto-tune list. - Other guidelines ================ From 325a2fd54cf398e8262e03a0d2ace21725a4c34c Mon Sep 17 00:00:00 2001 From: alexxu-amd <159800977+alexxu-amd@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:39:08 -0400 Subject: [PATCH 170/175] External CI: Fix a typo from composable_kernel pipeline (#3373) * add libdrm-dev lib to CK dependency list * change INSTANCE_ONLY to INSTANCES_ONLY --- .azuredevops/components/composable_kernel.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index 70d005b41..2a7a0684a 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -12,6 +12,7 @@ parameters: - ninja-build - git - python3-pip + - libdrm-dev - name: rocmDependencies type: object default: @@ -58,6 +59,6 @@ jobs: -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release - -DINSTANCE_ONLY=ON + -DINSTANCES_ONLY=ON -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml From 2ee59acf2059b773915d850b5dbb4df72799d8fe Mon Sep 17 00:00:00 2001 From: Brian Harrison Date: Tue, 2 Jul 2024 16:02:49 +0000 Subject: [PATCH 171/175] External CI: updated MIOpen dependencies --- .azuredevops/components/MIOpen.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/components/MIOpen.yml b/.azuredevops/components/MIOpen.yml index 2a00793ee..e14a1ff2e 100644 --- a/.azuredevops/components/MIOpen.yml +++ b/.azuredevops/components/MIOpen.yml @@ -23,6 +23,7 @@ parameters: - rocMLIR - rocRAND - rocBLAS + - hipBLASLt - half - composable_kernel - rocm-cmake From d275a543cbebf615c3aa03303662bc822bb7c8fc Mon Sep 17 00:00:00 2001 From: James Banks <55031265+james-banks@users.noreply.github.com> Date: Tue, 2 Jul 2024 17:04:29 +0100 Subject: [PATCH 172/175] Update single-gpu-fine-tuning-and-inference.rst with correct `--showproductname` flag (#3378) Prior flag of `-showproductname` was not valid --- .../single-gpu-fine-tuning-and-inference.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst b/docs/how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst index 507bc18e7..8ec709479 100644 --- a/docs/how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst +++ b/docs/how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst @@ -45,7 +45,7 @@ Setting up the base implementation environment .. code-block:: shell - rocm-smi -showproductname + rocm-smi --showproductname Your output should look like this: From 8ad4435420d541f0e44b0aa0504162f2179e14c9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 10:44:57 -0600 Subject: [PATCH 173/175] Bump rocm-docs-core from 1.4.0 to 1.4.1 in /docs/sphinx (#3375) Bumps [rocm-docs-core](https://github.com/ROCm/rocm-docs-core) from 1.4.0 to 1.4.1. - [Release notes](https://github.com/ROCm/rocm-docs-core/releases) - [Changelog](https://github.com/ROCm/rocm-docs-core/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ROCm/rocm-docs-core/compare/v1.4.0...v1.4.1) --- updated-dependencies: - dependency-name: rocm-docs-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/sphinx/requirements.in | 2 +- docs/sphinx/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index 2082e50c2..fad4dcd6d 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1,2 +1,2 @@ -rocm-docs-core==1.4.0 +rocm-docs-core==1.4.1 sphinx-reredirects \ No newline at end of file diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index aca99e38b..1fc4393c2 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -92,7 +92,7 @@ requests==2.32.3 # via # pygithub # sphinx -rocm-docs-core==1.4.0 +rocm-docs-core==1.4.1 # via -r requirements.in smmap==5.0.1 # via gitdb From 5e64d851cb2be4e109f60815c903767a08faf0e0 Mon Sep 17 00:00:00 2001 From: danielsu-amd Date: Tue, 2 Jul 2024 13:51:10 -0400 Subject: [PATCH 174/175] External CI: Add all current component pipeline IDs (#3385) --- .../templates/steps/artifact-download.yml | 35 ++++++-- .../templates/steps/dependencies-rocm.yml | 79 +++++++++++++++---- 2 files changed, 93 insertions(+), 21 deletions(-) diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml index 265fd7bb4..710f349e9 100644 --- a/.azuredevops/templates/steps/artifact-download.yml +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -9,43 +9,63 @@ parameters: - name: useDefaultBranch type: boolean default: true +- name: extractToMnt + type: boolean + default: false - name: defaultBranchList type: object default: - amdsmi: develop - aomp: aomp-dev - aomp-extras: aomp-dev AMDMIGraphX: develop + amdsmi: develop + aomp-extras: aomp-dev + aomp: aomp-dev clr: develop composable_kernel: develop half: master HIP: develop hipBLAS: develop + hipBLASLt: 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 + rccl: develop rdc: develop + rocAL: develop + rocALUTION: develop rocBLAS: develop ROCdbgapi : amd-master rocDecode: develop rocFFT: develop + rocgdb: amd-staging rocm-cmake: develop - rocm_smi_lib: develop - rocminfo: master + rocm-core: master + rocm-examples: develop + rocminfo: amd-staging rocMLIR: develop + ROCmValidationSuite: master + rocm_bandwidth_test: master + rocm_smi_lib: develop rocPRIM: develop rocprofiler-register: amd-mainline + rocprofiler: amd-master ROCR-Runtime: master rocRAND: develop + rocr_debug_agent: amd-staging rocSOLVER: develop rocSPARSE: develop ROCT-Thunk-Interface: master rocThrust: develop roctracer: amd-master + rocWMMA: develop rpp: master - name: componentsFailureOkay type: object @@ -75,7 +95,10 @@ steps: displayName: Extract ${{ parameters.componentName }} inputs: archiveFilePatterns: '$(Pipeline.Workspace)/d/**/*.tar.gz' - destinationFolder: '$(Agent.BuildDirectory)/rocm' + ${{ if parameters.extractToMnt }}: + destinationFolder: '/mnt/rocm' + ${{ else }}: + destinationFolder: '$(Agent.BuildDirectory)/rocm' cleanDestinationFolder: false overwriteExistingFiles: true - task: DeleteFiles@1 diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index c66f2ec45..58521df97 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -11,6 +11,9 @@ parameters: - staging - tag-builds - fixed +- name: extractToMnt + type: boolean + default: false # required values for fixed selection - name: fixedPipelineIdentifier type: string @@ -23,80 +26,112 @@ parameters: - name: stagingPipelineIdentifiers type: object default: - amdsmi: $(amdsmi-pipeline-id) - aomp: $(aomp-pipeline-id) - aomp-extras: $(aomp-extras-pipeline-id) 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) hipBLAS: $(hipblas-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) + 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) rocm-cmake: $(rocm-cmake-pipeline-id) rocm-core: $(rocm-core-pipeline-id) - rocm_smi_lib: $(rocm-smi-lib-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-register: $(rocprofiler-register-pipeline-id) + rocprofiler: $(rocprofiler-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: - amdsmi: $(amdsmi-tagged-pipeline-id) - aomp: $(aomp-tagged-pipeline-id) - aomp-extras: $(aomp-extras-tagged-pipeline-id) 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) hipBLAS: $(hipblas-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) + 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) rocm-cmake: $(rocm-cmake-tagged-pipeline-id) rocm-core: $(rocm-core-tagged-pipeline-id) - rocm_smi_lib: $(rocm-smi-lib-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-register: $(rocprofiler-register-tagged-pipeline-id) + rocprofiler: $(rocprofiler-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 @@ -112,31 +147,45 @@ steps: parameters: componentName: ${{ dependency }} pipelineId: ${{ parameters.stagingPipelineIdentifiers[dependency] }} + extractToMnt: ${{ parameters.extractToMnt }} - ${{ if eq(parameters.dependencySource, 'tag-builds') }}: - template: artifact-download.yml parameters: componentName: ${{ dependency }} pipelineId: ${{ parameters.taggedPipelineIdentifiers[dependency] }} + extractToMnt: ${{ parameters.extractToMnt }} # 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 }} + extractToMnt: ${{ parameters.extractToMnt }} - task: Bash@3 displayName: 'list downloaded ROCm files' inputs: targetType: inline - script: ls -1R $(Agent.BuildDirectory)/rocm + ${{ if eq(parameters.extractToMnt, true) }}: + script: ls -1R /mnt/rocm + ${{ else }}: + 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 - script: | - echo $(Agent.BuildDirectory)/rocm/lib | sudo tee -a /etc/ld.so.conf - echo $(Agent.BuildDirectory)/rocm/llvm/lib | sudo tee -a /etc/ld.so.conf - sudo cat /etc/ld.so.conf - sudo ldconfig -v - ldconfig -p + ${{ if eq(parameters.extractToMnt, true) }}: + script: | + echo /mnt/rocm/lib | sudo tee -a /etc/ld.so.conf + echo /mnt/rocm/llvm/lib | sudo tee -a /etc/ld.so.conf + sudo cat /etc/ld.so.conf + sudo ldconfig -v + ldconfig -p + ${{ else }}: + script: | + echo $(Agent.BuildDirectory)/rocm/lib | sudo tee -a /etc/ld.so.conf + echo $(Agent.BuildDirectory)/rocm/llvm/lib | sudo tee -a /etc/ld.so.conf + sudo cat /etc/ld.so.conf + sudo ldconfig -v + ldconfig -p From 813972b62b375a90b2808f6831d44f72354c1a1e Mon Sep 17 00:00:00 2001 From: danielsu-amd Date: Tue, 2 Jul 2024 15:40:44 -0400 Subject: [PATCH 175/175] External CI: Add hipBLAS to MIOpen (#3386) --- .azuredevops/components/MIOpen.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azuredevops/components/MIOpen.yml b/.azuredevops/components/MIOpen.yml index e14a1ff2e..df24cb08c 100644 --- a/.azuredevops/components/MIOpen.yml +++ b/.azuredevops/components/MIOpen.yml @@ -23,6 +23,7 @@ parameters: - rocMLIR - rocRAND - rocBLAS + - hipBLAS - hipBLASLt - half - composable_kernel

    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 ZH)En?)q~%I9qx1eM5JHy%l|R{zW^V+KVtv@ literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/compute-unit.png b/docs/data/how-to/fine-tuning-llms/compute-unit.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c1f2eb07e1bac1d0f2cdad5e22e3701e506ba7 GIT binary patch literal 45716 zcmeFZbx@tpvNlQtcS~@W;O-LK-Q5?kaCb>?cMIfZm(3lzLF-Ouzq)6=7iU^y94co-}gFfcH9aWNqUFfi~dFtB%wQ13x0lVB^6U|PDh^|!lbdu=g(1O3hOOIXLs&y1SHi)PC4QQem`^fMa$G_)-lLRTHd zkcM}IFENs7h&yh|R&d2PMfXc7yuv#tQ;DW|{U)d8wU<;O z2cfaUOOFk6+EHgYc1ch09hntX=kQY@x{r261qY>(I6hNT*ZPV4hYLb+cwB;17){9{xHPYq^^Ud<{{Y7>hch^r3m5pRXUv>dh(E*12JiSrp5g!j=YC8kYz2@{L zuBE<(s%g*%m<@a{^e4&sSixWh#a@k)8F9d{!yd$k6bwsjC{u)#f@KK|Fm1F7M`=24 zL`Xu0&f1KdubqZg854LhE#H<)BvBU%DO3XflB8@BqYw`LZZMa-P-H4UQ!MQc&R8<7 zP&d11W?eFs3G&3)Ao;@B}#$0L2x=)*Q^NMHuC>UXMoLw;1wao+f zDy?>ynNeBOkCouEUH}}Gx14y1)x|Ckipp@f9RdqFgioN4=*ByOG+eSjRfsKwKYU^- zFK*9=f*?0wAl94Q;p>?Z;1duH{ZT=~vSa6riW zzHB&cqb0SLZOl?%3a*2oVjZAs3N%TjPo(D`@wz>B$6ibx;}IFKJZm?H**we_uQCd+ zF`=nRca=HSsh6@`UgBZv1NXQg%1PT{IVN^Ne{Ab-(6nEW8RLB!(S}sXD|3Y3T%_VP zZ2fAEo64eSx}dR9-HG~B+MdEuE68d@xqzyvVUU-k*45$B$@nakR2R0CXKZn!7Cof= z$GmcIT}9K+Y3bG@3VDGm9H#dae23f-21ZtY>ofiqQ0>oWw36Y3>4{-#t`xxgMQ9p`gu-tGrH z8Z-C$c1`L%F%_~EN-m1!W4~(AFTeuUJH7IJ@bDxGcYHPURs{8I*3XbT3IPri{a_{t z$zG$ad!-UQ5}8uzzW9~IGpW#63C`G4G;{eH`hux`Z?Qhi}M7q4I&Y>VxosI~2Sr@}{o$2kWbGv7K=d)qDMz6CT2`b)!7j#2B>D4mr zvmPAx1tTP+p^O3c+DVu85=Kpg;7kQ-7={}%DHPK%s-HQ5NF{E2VHJ~aHEfVEb?&y< zieu=-`vb>us8t;Gy|a_=GcOG{(=~gimK-6X2vIQ7i#-J09!^RWY+HwZj z@)^VI@6TDKQWTSX_Z;gongl9bh3EkK5Jb z6Gl{?+WQ{wV0~Hb^V~W6!ezYQ%iw1oySI&9fsS60%5bB6;xI+ zqyJb?{DE!%S2sv1Gt;}N1W7bIBM?{E}dgwSlj zcZ9y<0wX5SxGNtjzUkDxpZP{X=kN{&8v^|!VKju3;42ks2E?sDf0J_7JJeO2umY2V zN=%GUr{G{t{FsGFku)3(hHS8*O4%{;GX#LR|91@Kgd@q8bggg^NeproZtbIJp)@&3 zfUwitjX-c30a6$*tmYT;uvX54hOVCO@}JE)8}Q}g&^!LMAI%?iEn}! zA1%|v@?l9}B$UX?FEUz@BFmF3*aDwrx3D<-OpwyYf`C_4$G~b3kuEk%Awkba=l)LG zO;kj#{M_IHrP0$qCMcUr)v9|dDTxAG>8ue`l*1M4bFL?K&PwpCgik$3xo<|}#+hJ4 zE~YdW3bitq;C{VDNL+pGq(QI`&roKNLOkW?l`Mv2rB>mg298eu(Hn*d|bFBOgY zc?!=HqvrjpZep{vSzoC15}gA^Ii9t_HiHD8L!C7jBT6x35GeV5T*$e zS^Um1I_Nix8lt}mUqbq{cNPH}{x|40D5N!fLZGv-?= zTa%_bkCoAIA`ftbP{wWx>r0LGHc4MCN>=3}2e z-(}ccy_@^h@RQl+d*_#1e&S(SV^r4U9T#G?{X^kTH&B6U4sZnde4Zx*t@Wr&$pc5- zH>T$w!aWZwQE$w#B|bA%!Onvds#m@nwY0?XL7%etEH2(({qA=-G(CGj%nLFWf|=+m zZNUEMT;26hyoyz|N!gPKPKaXfSG=lL)3dPIb?Ebsb8(Eo7*ES`-rNndEq0j3h|$vz zY6uZkU6#mWlJdVyZ2gXi4K?v#8tJE#Tiyh~h{&OCQCn&ZcrY$2`Pijrpdu|cbU%aAgDLd5Ft#e z@ih|`OkP4CJtSrS+q!G(`wg$4p7$@NXyM5z0)6_-KOHxxCM8%IKJN-&u6NpY)eNQz zyxa8MI+GZ4;NvpyzR(lajPen#(Nmx<_qk)@1eSaDMNd#ce{LL(NqDADVLb%F$|nwJ@S(k0_a9Jxub{4oaG+XHJ1v3@A{&l zAHRQ7fC4T?`bR}^;-aBxl;`?mz*gn(C*kv+8QjP>7qY;^+(GAI`QS4U*1{}gR&r2^ z(o0R4GxZ=-kw|>1VH*SkA4LWN__|g;ACq-feHJ}g=Usi-z{v{At~1l6apK{ELE6P)9|pFO6XPAVUB%TC=&vQ%9)Upklf8}G)v z^!P-i^pb9NWPK!-5FtCgocsLgT_FM5mBe-3)MUP7WZK{?@@6TseUhVb=ziWybi_b? zBZ&8f;8?`k{fP5{IEDDDr^9l!b9Jo3)Rnbh8<#%?_}U!0(49z+nL~C_Uww`XL=;7E z`>>mq>r67uw?YC;23X~;H!*Co0R8Ece0Y1wV6BHb$S;{@q=IpigGg&DN)!%omluc- zPYxZA^grW9%oC1Kz*Hy&pDF35&stfm;?S%eEA^bVp4x zbbI|4ZUmQ|p?>^|^a`7Q>xwgYlp>QR)Nh00$9{N<=>5B2O0J~IQw6tr-_=X`weLzN*vn`q-|f%Bh#=$Yvi zpA?pO($z3U-s-gdy1L@N-1fmw#2=_K{xS2Q{)Y@%kA;;oTx&MsJ3k~*CF2AJa&Zcm zhzj?+JGakU>Z^M%IKF192H#{!(g6WLRBI$z>qUq?&rN!&LCOn`i$?L!BwpLizc$&% zgcHHjF0Q7d$nK1CxN06_+YbzT5gDzAQNnmce zID3Y0P{;2_o3}jhxn!ejDo3C5I>JIAH54FzTS;qx4>^uh;P=WiS2f~)}5 z%PBM%@b%}gb_z(imG>Xa%T^a3**(D+r)aYfD;vBWnWyt&61%XlnrsjQgvLjlQ8dz=6O3U;?z_Av$a6 zAR+)7@erx9NYhK(2m(xjVs3T-MK>8GLpO6n4kMzkyfEA@oFD*8fP+4Pi=~B?J*Nu~ z(H~q+(BE&#bVLMyL>$a{h}5Lz2n4O|00hjm%(V10!Y)83Mj~Dq0&Y7aV@?Gjk$)gS zZ#+b%4h}Y)bac+n&a}=FF#j>Hbs0 z-a*(21oDqT|5purCD0BGodUq#+R@GsGz|k-IS~IRgpuLD^=%yOEdEr-$dC?T0k8y# z+Jj1E_-{puic8D=TjPxa6QHHdA1x5s|4q^XX#8Jf{Wsg*a{g53KMet?{~PzeN&l3ig8?(+e?Z9E0YP4=Z}Fd2y+Ij)pjcP{h5$BJ0F4po7Y(xkn=y?(D~Ayc zGm`<6F_WPIJqN4tA1EV3P7!N6OMOst0xk7T0CYB1CVw*C2P|-b4*Ej+ z4ge4+JtGq*Ju4?Yn-T*9Ckq27Jp&CrGbjCj$Xgo$ja~oWq~AIZ0r%e~7X#XZ%6I*f z^tVST0&M@j{e86n{^?2t1b;dOr@rCeD%k5g0gV3G3BvlDWoW8zWdZ<2kAK|tU+KXA ziz@(_n2iDY#_TkP3>?NZ%tkCsH2Mat#x#t~3;-4;0E0dg``=pq8{OX8*uh!f4!~~$ z;t|9Z$UXmXMeyZMLs9&9TbxY+Z><0#jE0_-=Kmy&?w<=-rw2hd$ zJ?LP!=k4cRJQV^qC=t>@Tv`}%4+0XA>76#C4h9$)0hqWDzmm)1@rtVpnsW2k^IIiV z)u|-m8ZbhBlmvnlA-+$O1Tel#>^l7NlT?)ShmMcmReLc%c_Rr z*}B;}9V5tg=(BGMO^C_U7_5w1E~rZcp_e`al|v`ZeS@%D2f{4`_FR5cN$;;Z5AwB* zU*O1dE2A~3Z7(vZ{kntUdO6Ch@u+Y-zQ!r+yQvsI59JpI1acghsmS78z;j8W`t$$iVVQ->MR!N}9F8@X(ShF5tvl zs}A;o+-Z84&lfwHxEuJ4~B? zY_`hzAnu~{8B}Oyc#!@{t;$jZ;W&*{K~>ppWiQIZvLW|z7aZ*pMfzY2CEw4@`L-U~ z6fJ}HUvRWZA*yzz3~Tje*%HGzzqg$c;`{D_I**q)of^>~GvqUM+YVGqnJ)~Kz*FY4blbX+nw~;nN+RSnv59;jwWXG{wdm5DAD&2ec+gW1 z94DuQdY{&XCQSGToSmhIejMR%IUw7>ckNuCK>I%4hPUm~S=#6>1nW5x&B#S+!YJ@?^B!q_UluG=Ili? zgftLS*vSuXWr{BOvS@1$ExVSot?o5xLQbfw5_Nv|YNSW+tQiQ0WyvC}x-<%1=vv*S zYIXjI>Wm7qsn+}oQu$xDMP+O3E^MThco$8*HU-k>_%Ria~% zWU*<~FaL7QGhcwKqd8qed#Y~b8SsJcGw~Yjf!W~vXIeU zJyz{cie}8X?nIXM`1#P@nqU`7!uDpyPmDo!n;We0^YVISxc*Z$hpeuK@W{~2iyp?t zM4&@`bQhc8Rtp;BrW=h?XYG*tpMT+h2f5L(oO#D9$EIcAh5>r-UoBnNcY{ug>ptQ8&y{;^f zCp)4)INjORfo^}ktG^#Ti?@Z8pA4gQ<~2QBOt^ixV4SPRA|kSlW6zg0ht|T1Zv&iK zn#T|MhCGPuD;r?3_9`)oK~+3;SFnD)&EAZnFwACtJ=;AVnET40Li?3vNm*UiAmX4I zpxyWBqo)R=;E39h70Kdla?7bg5oCMGI~izXF9x%tMvpx)*td>VKo+g>%MbRjAFU4~ zIu^ey!nRj**wy9RcLx6RXG|AngOS{sq`9zTKami2#oA3Up9giS?ItQy}z&yAcsNw<&y9Y1&n=wZOkEfD9g5$?!67*JoaojiQX{sI#W8aD~kOsye4XFgt_# zzFwnoMseyeOIQ;+=o-WiUtkdTP$!WCU65@r4@Ca-lyu!=+N-J8RoX(N_DX1@Y!3U)HI~XA*6^PgOM?*C3@~e)v4UZdT9Vxh~!GU zB;H)KV7~_+*VSp;OtgmxUKQxD%z2y7CfbW3z7<6_jT&{UJN9c)}X-i^*Ft zgMp)ljBQaEj@vumx4Ya!LYWYkT=S=(Fv9bvxIAfXK}&pCWb441B-?%}UPOQ~}awRI-hB$(~f z(#-7=YCV?RtZG`cH7sZvr@9ah>ja|xkp?&1H|;Fj16!A}#}SG=%~Oaeya z+ck#i%2(Ut^|h@V<$KB*?!~;f7Of)9&ykx4ZcCObtS_r|Pln}I7tJRQ4vBUSiI*p9 z%fv5w?JroJrKoO~9m7iaS0Rj%-5nLg*33VMjplbX`tvnrHg31sGA?lHAkpoX?kCgI zbGUd?UZtL`>qpu}XS!5r%paqJ2DEeLQ-%7Mhj#~cj}>}D5hzu8lVKQ5 zH%+TQjuyS>3rB9|woj;*nO5uKZf4m1`pizrh`7F*k;lZhjSqybB1mkl$dy~rCbD&$ zv_G9C4DMAv}J5-UE;@cSyREo$%P`PnzUx@yY{AwI84!(Z9q zXdbQs2H$tQ5TcuyR&?@bsm~jhFlf(60K(6bU?u$4n=iqge69SjrQ}6MJpS_Z# zp(7amz;vkAC|Z`aB8s`c5j9F#VLUT7p7kJ@a$#1w@jUYWVU5M`Wmn?&ZIFCheDt^w zxpis5&lE@lixjI0(CUx_YHtU(+g=$W4-+VPjyx6^{C{xQ8xe3eF z_jRKBp-?841dbBMO|HJohS#%$9LZ&fUGmEpz3BnVoe(ys*~a1LO$V>x4rR z8RZ^urNE_q9j@UfkI)+loE9zbjA1+%rl;u=s*1daW?jA9zA(HR^TfSMYYG*m+= zYU|KL5e(B-SJbDppMr;!gz(x~b9^E#?8q#qm($Up=}j$i(w_kM?T(1cmg78P_%U0r z_)Zg?PU;&gV&>kRQo%%TTBm&yd{$4g^m$)e(o zyDoWV@z>!J5yvJ<2Rxj#0JA#K1rFBG5B@q;cyT8@dnqrK5lM7fzcU@=i=qzF@_Pmm z%bjSv`?S?%g{B)-ysj)a+OZvDQOlBPxQ>N{o~@(u*DMa>hh9l-^|K}yU)PLd!u?Rz1q96MKfr$KGE84n|4Y$ zT#DWnAP#4^cJnv^W;|2}?d+X=WZZ7h6Cle8h&W$#uAUL8K+}zUY~C6)D$eL2yZiV+ zPkr1YdfVOD-IxR&v8QvC`_X%2CQoXE~1PSu)zMb517AeCqI@+UJ<_LgMwneKW;l`M5H!^zS{+6x|ElfZ2l zYb)}i*e(AH@At2ijxvY(f0s^Ra==$=SrpLPU>H9gEws%OiP2A=EoE`3M_DcZ3rvmoF+EemgZYK{%pXEy;CV17@(yx7; zn=o%M8T^ac$Y!auZNwv_X#eXbf#x&aUzs>-*zt7D^#`&ak1A2cExL}hcb_|zq6AYF z=lC~&d#m+rKf*A3l;Fe%|MDOH?A&y%q8JG$(!)58Z0(|mm2kQy^rK${nT=n`A#?{Z zG_NYhQ*@=Sg8dp_yPWzW-uBGF`$2n27kW`10Wh`IjwilJf7R+OLCWtttX6@Uz=e-q zx@x$v|B%g1VMVN4wrZh%E(^2>o`?^kE}cUIt_~YGd;id;LQ{o2#eOp-F&LGU_OtBrzx))sZus7g z(|&;B+_rUbvtN~Noz5U{e)UOzD9vZz{3LL1LVxj5Yh1Rz7SFKs>k=fbE-%pFGYkxm|bC}aw ztr89bQb7#XiQ8&22c4UazG-FhQX7rnLADSf6-vZ_{sd;HzC0N3poID4 ztf4W!qO-25_1u=YT}WTWZonG5Hz(?c)9ZVbKqpU=VH6z z4=X-Bu(_I6GpC9AyrMVo9q~&t%z;o z9QN9hQ4wK#^IqIbH4cJmS6VNU&XngIPL8JXl0i3&{0!3=)d*k~T%el(b%cCeLl2`8YCTFxG&kypM?eu#kfDZ2SN=mrbf( zsi@pDlQP%6L%t#*3EY>gaWfBns1!k#g5Y1(5Pg`iO<-NRSL^oy9I&Gz6{fRH6~7CD zP#|HD52uokGTie5*kE3Uj(@6n(@v$Fl5=GQZ>NYo=Ei=}&q8hM`Pq5Kd@17H&T9T{ z%4`r-@g%0?+7f6foYU$SeE0q%=Ez}7-GLELd-W0;j(}z!=wXY8l&!*BpZD0W>ls1susj)=mJ>eIIAN>j` z=*Vl^ri;q~ZjzRt*}K;_%Tk#5*}nz#H(3b@)aZn{W;fpo_>b&SH#yb`zT>Kt<+2pma1kL_R?n ztil!bu-x&x)mVQR1%80FPrH-1(C9)k`9T|!N}O6%elYDBgE6XZ`2A>QC(O!wplhVa ztL6yT?)!u`ktR2rPeq6Zs}VIUhO<8%_C57qg7^v}B9Be42{vdZ5tTi@Uw8CzH_6&; z>DYVWhbx;o@(dusz?fz@H}CkShZyeSO(O70SQmX2C62_Y24adCWWh<=%;pucCZF@7 z(X2S^8@0X0gKqa`!y)xluFz|LC}@dfzs8F_triGdIzG(kU(~L^Ay+gu|7^0w;O%b| z#e!~aBRNcZ=ya%+jVVyUZvByns5<|#BG<5W@@HesR{#67IW?yqFQ@PHsiyx7aAH!h zO)CzgCNG~@8gM1gI}xu;a>>*e8i^jDUF_BM64shk`s^>7`TELvqjwqus_{b=n!Pc)gYfs44-x2S&ia~MB8X7#2^RokXr&YwN zj=N&%B>EFF<2TYJ=^SwAHuZ~ z536$&iX;y@a0noJlXTU0+H2W+ zw+^$q-NZji7{@~`@N;46d&E0CC1-M&HTJy=DC>U}x!ar`kTp$HCIW3|tTnvw_3;s! zibeQCx|PmHP$b6}$yDMx5rW$v&eTj$(IY!HDd0BQM|Ikx;XLlMEaDH>y0dyNEiyiG zb3G%6=;Zj9xvOv1w)S zPUw`+)EUPuQ5|LvH2s#^?K~fv1bm#46eTP0Z$I7c;yWbPl{uVUlV%wE(y<`JmiviS z1yvre_bt^+8QR{8+>iE#NVYlday7?hv^YO78Qng_7nL+;mkQK(Txd7Qb71~{IyqXF zzi(`{P(642br~5nKz)DPJs8PVcT`-cbnYK@db!U=3Tw00X?oI8g6yer)MZE!}8FosCN(k2GsSUQIcwKCl{Y=nV)z zm7RmoZ6V#P^jI4XAT1APiFT?uwRA1{>VLlu%omfdaqGoj&|lcEL4_s8Z6~PLI9XPe z)Qk($;w=o#BiN5;R+F;lC(goOe(T^-ZqaE@E>dANNe9cAKGx+?664ulsiLd3xb6q{ z-PoWE@sVJkx|OlmhGf^aizhIzc8YI2+{~|tYqUyMVUIshr6ccOcdL%aBAQvQ)Qw;7 z!iG3YAXf>cddNU#TzSGK>$-B4Vqvcgr{A!9e1}s!$c>`%MZbpb3D5#?38wqUhx8}w zdWZ(6UJa)nWfY63P!2f`#U+bAwD6y}EjO_kpq$1sZ2zQ1BA5M*FV=L_+f>eZ0xPoc z7-fGUvWAbDC}9Z8xh{oSRHbrOiuYm~+9FaV+>AVOh`mvyUi}ij{<7VH18Y27lHjK$ zoF8g^u~uAtS+OuywkU|!Wa)SnI{r|Rz`H9+EaU1`%^5YHetr1wnau=*w%w_UTqe1D za?|u$c8ROD*NxS9y9CSw!|32qyQ4Q}$NhKYQCaR`;xSc}Sr{y( zcHNVQgT{_15~-$sZ_Yy=YZ>P!^SZ~x-OTG$_T!gRp1n11_s!F)(KVbs`Rr)#D2V&p z8r!m`dH;xB>!$X#z5AU;A~vcHoSWnOpZB+GoH|;Eh&lBtsRl`C*jMm^oH6y>+Z47>0BX3xSdgONhYD4o< z5qm2QwG5>Nw`z3*H=Nh~)X>d;n-Ysl$4%yan^s{Z`&5dfwe>JZ-S6XyryC~zHibS# zztE_Qf0Py4K5+RvX35A~#$!_5sF?-w5$eY zxt$gFzU8P}!uSO>dG&78f_V5%rYFWlE#NW};dF@xfeC%i{bok4TjRFGe1#-hY+EJI z`m^Ln%^8co$=xZZcrxeE#p);P5#jseo89psp(23#(U&XSskpt<+x?qm3i@!2-Qs0o zq3!t{FRN5dDe~&r6w{HGP52jm+aFWZHO{OZ)p0Gsg*x{J=~uA9)i7$toc0``0~gh~ zVyXaWQ<$CwYfA5wlbe90r~Wyp=If!IAn=?JkW~JhxHA+i zg-dEb4e9UL<1rOK+&t364BafY6WZ`Hd|ARLJ;bk{7N&5uVl8gsG$})^{Ls3Sy-o>3 zt?3ZH)9Ec{qA^X*kP3Xt+0AyC*>pN&>&2~m;N?bSeg!kI!C9^ZjcY~SVY@Gz4i^Nu)n zIq-uOI~=W_2WqUzzaE}o6GgN5I^uu%O~C@6Vnj(h!7&dv)k~)-dg@@Uv$4>kSj0Pk z%NQ+$*;M+-H&sd16CF#$BB6OGYE2F2&jcEP|J(&&{2UsUCJSj6^vfUbfD>S+9*JXC zNX{TS5H#Q4lWLyaJi=+`e>6p!?zyu}7|RlP&EC&!7trL;suxjdRPHjvm}TUDbcM(r zztbvDX5KzwUVGq!J+kNaNQ7Q#5gaiTS7xuA1S#(9{l()Y+k6QkuRMJj1%L)6j5_)` z(J%d!m(A&Zi+Owu9drm6H{?5X@wTsx0{8^A0twUmISC>$*{zo$qr8c))vOA5DKlP= zxZLu_RC`kNt=%E$ypBtn`gCdNf$8#x*s}CAv2KS^c~sgdhZ#9T20$ZQ$9DrO)Mi%7 z7b3ArieY!4GUcXLc;%oO4u6W<=3pl(|PtvmlWLT$)@R(EpE`4R@* zd1dVq>+k**#;l*=6Zcm!wS5xqXTQ^3M+uSB1HDGI;fNy9KyYhaC`}251XJ+}u7FNc z-_AjAb%BJP6e~OGMKK|gm%hu*t4SN6kBx@@ z67uSt{@xMYHJRQK9)k{3`98{E_3MX>Lv*IQB>nTJfW&^wx9bDqVoH&a(9r8PW7moi z0k!k-e%$Z+?|-7r8UU}~MI3!33*!#38?CYsLHKT8j(ISFLuzQ0;aH!oEgtMe&C(bc zbnK9-lbBq+X1f$r2pZdouMblg;fF)&+7DvO@(ilLO;F^a_oI$-XH0{v+quUK8{ca_ zpY*TK<}A)64ZqzsASvh>$xNNczYl*+$NA;je`g55t{2{#hfKRe#&n%JpCU(Gf@8ul zf~M;W!v$yZB1p@O#_0xM&R-(MGR8_cd&v$6inGM#j(yA(v;I_IGS|?a=v(k(@kFU5DvD(tL zML?8&s@T(s5d!{4Et3XQ)G&I31D0cNkQHL}oSO^c^Gs?wSvo(@#?>*sA^)e*6Re7N zf{?#BYL|KxCQHi_UG0jF;_HNZ*l4e%ya*1iq;T!6m-&Q*V&vS2s}24xGxo*rdAZWE zu@U%E3`w1nTTqds%SPJfejK-GHgsu&;tD{DF_Pxz!QY!46U26SVqP0$;U3u=OsG_; zkmUUa)ag+2E~X+(YN&)hsCNSyC@kk6y!FUufCbYnL&PT6A+<|FJzWVqQsy@pqtbqJ z7*m`=ks_#RKf=&p7pS6V(V1-Mxx)fo7 z;JidaP6i$^S98*LPDxdn0i9||2HRj9x0!(VNKenisY8Jk_khp}pN|miGV0OY_zbG@ z%dcyZp1&J*iP+~rh3C=|Ota09DYDl&m^--ii@7o*7HQMk4&=K{4CFa1n2#?8a;~A!HAV((lGZJSDf2r7%CF_jY>agUvrx~ByYb-R zMG)XbOqkc0F=+?GX0j;ij{=Z^QVFGP(y_A$*bh7kztSTWdwarQBlbt6qpc3*AG9&3lzVFif`aQptPpYBe@$h5Q zynM2LKljNb-^pkOB#3f z-??s7uFzR7`KoSyn{`o3AANpAu+3$GKg_!P|L^lA*NMYiLzmEe^ zJZ|;i@e<=$YHl#%^Y>Pxc7*P$sVuKI1BJW|V@j5OysRTcR*VjI>4-Amh~Vn|GUo;I z{sJOwOi~VZePZ^|8_{#;O;_U!BEXMVR&)6`N^i@TmKBj2Kiz>JW%%jwffPYwn!Gy(%a~WkMQK$H4*A#7%zq>6oIn z(eSoGhfS3N2Sb*ztEBT(t-JI;e*bOzv!M|=$;U0r==ulWdS}8mgAGLu3_75m^`yX2 zj|pxIT;aLT~ymxEL<`mWakhZK= zS-V z^Ft%EW)0PheW^v28|DqnHJnRXY^rM}DudI~=jg37)D+I(7lXkHFB!gw1kdRg9%((4cFkc}fd^19oef=!f6bt(& zH;R&TiJL2#bkdAzH8b40R;C(1XamBdKsp|GoY#5!f=pG$-6Q3XC|?Znb5jN!%kgt} zXqO~-S^EW;`&@22jiQgxPLoxu{8E|eBx--I!Yc@|ChF1^Aat6B#!tT`Eu zc44Q3r34l%sNiesd1_Fxs!@-v$LW=-Wyf}!lTw&KQ}O%!!Ny zezNTN>Nt)&#?hYqM~6T-nD8Wn4_36}hmere3eqp2v%FrC@*PaK`w_-`dFPnWbi3k) z&`NQbamXfyW)~RJy_K@J=LW)`M*J4{Y0-q7p3Tp>9H$Kd>X3ruiIl=lyf4W+dnfaN zMkxjM0gV%~o1!*pY(!Mt(?-KR=%WJk>Yg7WGU-Q$KL%u?A}>1I!)|!b zAu20BbK7YW8<>X&mW3QJPYc32?2q4XOxC*0qR*~|5_L9Bsz)tly)$pj!8D-dyXYZ6 zD*l7_Ee?r-E#YFB0m6iYrBUGQi5D~{^a$rW%tR9LNi!3ak*V7{!O;(@{}Id`Jy?%) z`j-u(DYsdBUnZPDVN0SidZSY#!zEI~rIW&Y^Fci@C>p^(*kE8{afK#w5l@OuW(vRN zRkLfLFqdfi)=BW@zG?iy0d+bTgOswSDduM`@y{tPeKon8_rhz1W47`2z4yJ`e@Ci` z9~j}s82I}}l|}}k$p175=;%%{vhc7mE9%w6tnWQ8XOdecs$n~{WtS@2>N^r7V|iJ- z(z+lwAvJ=Eglx)P?O>!Y3n)L4yQ*#NiBObMtT<|I%E(@Sk(1P_xs#0VYSGtg=l|GP zoflz-#ab@UMCVs@D5f&@sglOvwuNcuR|x%oh& z^C(=n{~hLX2VUD*h#Md!Yo&t|4j!jee``hI4OT9|Mr92ia_>`Ynz;Co8bU>+2!u1z-+j_YTVYaTMs zKgA+o@P#sMp8%`P>YHI~b6TdJ#ZvSFr!bb*A=AtaL6mMLJe(an%cLFt$ekY1_CJ|x zFpzwnTH)ARU9bvpxJ75btczDa8vkJGDqtb+O?_JtAXA zvvFXRLH#m*v2g{4Wn=&PnNNP>-Rk5ci)uu!q+>!?nW~%>BmkM zO=PEqGIFCtTkxL(~adV?{&)6o+L##(r2DBy`FxD)39^*MNm5k zH?T8lj1GRy%A^w2vYq;Op#ak5(VLfUM;Ki4#++97&Fh+@Rtz=H=vEdo*_t%8Bu59& zoz7k|lRzrR1ZK0b88KXH?y>k|`W)A%aK{OPA*Uav=+Z{K-Jhe!Sa@AQ%xW{zgx*u1 z4&Ep&ZYsx29D4)*wS)iwYSY`RLvJH!rD|_R$JsN7IqP?a8O@;%+w)Xeb<)pm)IQuL zc)H4{Q(0Tv0r1C@S>gbUovob)X}pK?LRP|>i`RagqrSje!Z939Xsj>)avkt1dn+xv zCK!=st?h5gZVCKH~;odwodqD{)b0kZERMP>`g>tr%_U~S-} z-6q}b^<8^KD{o*F5m(I)sEb$2PSghfbx?Y;ZBP(B^ERCyt>}mQX2QNR_ZXSCtNA>g z1}`ztxM5eOy?ry)LsDzT?(FaM^6|S$FTbaA+aD}RYLXz$Eo11U$OQcyN=^L8nN>B2 z5=h#f%g0b|<|wK(jaJjp6~3Rxd*)-B>Y|J<(Wvc@={;G0&!_os1ORs0ZOPszTzDKJ z983g<4ysT3Ozu#%I$mVFv}O!~uK;qJ6hJt{K!iWR+o;#O&%ko+(>|}B)1ys>(gt2Fl8mB z_Um!ZrnbL$i9Yv76Z&igVwrn8dM*TU-|L8{ho>xk@p&GO(})Rp-cXLs`0cnaC`clx znp61rE3+AkMMWj%jlRL@WL_$n9wO;KE|dK7gGMB9+eK}cu>c(;`1^Dwg_N0~VBak` zi6tXwNyfcyrmJw>Wvy39H;REixjE-*u zubUa6sH~0+(4r5DyQNWSO7}`i49TiJrN2QsD<+qJ(#@-ga?&Zxbo);A6fL1}*# z5weypS+nRJM0uabQpjjG9!>4BzGh0C>sNXXRx$qJFn{~S1;=No*v|Q&#hxS?un@Mz zC_a-u{7|jW{~Fz;5pn(7XREJi|IQE57I@B~t<(BaDQL)(=ka#q)};9#u}ix$Sr+5R z-vs9*K&LgVBok4A!p?qnUA?P4pu;z1MM~pfRz$6CtOGc!G1a$HG^iT`oFBPl3 zY*1ZnQ_oDK7W(w8A^x92Ix%(9dgV(9TB0u9V|+hcJ;w&OY;fzYC@6_8Y%)<*;FI0j=90(A0z zY{ZnYfy){1g9%<#x%oq#ooz5}qDpt%gzeRief#(r^~i#1ORwPr(y1H<#}E9Yncx8d z8Go8)u{Ev8d1W_Olt@JPploCni5PrJ*B%J*v3Z<*-j0|`+8q9aOH7ICyv2Py@1k@iZjWSv98(ajmy$WhzRJ#6K^emmaALlWa z-n&Zm_kh=$TLs|9ncC^6EPpC+qK*i9&inVxbsCQ7G56l3kVS*_;_uu2ThMiX53aa} zgfk}$4Ope}6~=$n%}q9hDdZQ^kN2-7i<}R`(+-3AoSB(7oP}uqe^M3M3i=U7k#DyX z7MO$^*Y(f8>@Mp@qt*yNf4122{?6+ZR_}RpA=NRcj2ZMN37Jo>W(@?2kBlH7@2FCL zzF6$kxt=C8*6|WEJ8CXKqigm)Crmn@#HrXTQwL3RFUVxbau~1vDz#B-(r=vC92j4g zvY~4`8{Uw_V>KRa3hivRK35<-tum`PvAG}Xu+%?lnhs4G^ZtD%RX_fl|BmHe63^lM z*E0{|QVd=Ae9wHX=~5|=$5FRN#oJiGG{Zrnbld6E^P8qJY8&HL z%gJ%*PJcv-?XAN~Mw2g?RC%TOWF0hAieWm91;>YRxKJ%Ei`u*2d?{!Nt?f1$^DfvG z;H-l0tY^{CNrtc>ta9Zl8iS;sMx*U`S@616?R|`v_=q&|%J;F-tj;rDLQTSt5RaBy zqbK{Ft#5qgk|eD7%W`)&<&Et(UcXCDSh-nFj@{@I&WZ}!w!8fi3x0-;QDwEAJ+&$; z7KgLnw>h4SK3-TZYOIi;4b^)rbTD5$X>2T_;!wn$-I3=0{5jce&_S(!r(9z?SMk_8 zYC+)Ya)y#tU;^qExFT8kjx2#S-ge%7d;1MHR?NCYz4rI~iuSsrC~0Ua3OFj}pa z3yw!H->OezsBb$Qx2Ealy&hBzk9&M7mR@dyZbvYs zM~UO!w}GbBl_)fp^4^!1#axqe*WH9iZ+M-Iv10kO87~PGxXo4_Jr?p7-C{W?w{`qp z<7O;C?s%%CTJUMt>s67+YB8oiQ)_Mh8atpb&*Cg5QrnSh-EpncQZ3M`FRVUGEiCk?y0%K}!UlK}91T?uF+bE1SdL8Dfj3 zWu{nm_>HKs#TG3@sdj(7`+U-oNjDj8E(RH3bMEPpnnL0F)oj>VjzMNgBJJ|3pd!~n zG4v15lt~&l0~=5GBM=vFJ$+F=^X^j;h{0#t*AZBQE}iOg|BD&u_WUyu<=Y0GR$Xyu zO(9pEt~gO~OM&gMfJ?kM$%ShBI##3IxvS6ZXQ0_{{OB=Gx(R;4#GXsg>lN;Ow3x(Z zHz#ZR^SE}3yUy#w%O&@##}94KF+X&*_rk`teclSP5fi*@< zO8{*l!<6LPrZDV!m?idT=#nZFn7asBoKs!7Q3o@9V}Y%)rvJ&|(t0P=*NZAtvEIU0N}2ZV9;*HE(~KtKjat1Qk>oa``4HU~_jvN@ zA|!-Y7m+%b>CeXK+kW5`c1V(c%5??H%8`g2GDtuFF;y=Dd>j;Lb10JVj*5JP-C(qp z&46?cYFO}B2%CYpu9bFrBUD@)e&T4#Ke0j{ z?`!$NPYm@C^Y@BiD{`^!CRfSI%`F9t%c!vt#yQ9d6A+xOb6GhUSC*G{11#5(a7@GW$6g*mz*C41|-6a8vpXhKjH0D>c`WIsEa<>9GQKHWhX{d0Z%+1Ssah!eh=qY887?bHj`e0=ejn> zAt35d4L1aP#}_fMV#ejTu7>U<#;6k&6qNQzGtP=5K}40iOJWyzQbG@N`E( zZH``WdB}vrZ}TGE{G%rhHER&BNe~1bYHDjji;gC99%|*)uCBnJw?vh8ttXC_+|&dW zH8fV-*@hNU25Cj`p}{slf;e|spk6v1yjSL{@E+|K$r9QIGY11nBRB%{RYql zJI{3TNDU!xb_%+Xql&h;zA(a!wHBxbjtjaW0mN z1a%NAEv(AQ0q9Z_$-+SPAokM}g(f+V+{#>cim;K*+?1$Q*LKHO`Ns`3^x)DqSF z%VWcd35_L-`^O&p^*IF(v>^|j4wEe$CD|c0ooeqP1-kNU5!Gpl!YCoia9 z{0t>RZr7D}7QLJ(w}iYTkws>&xHhK^u;SxWl%FWu9rp{|1f|kI_8Sf-iuf++^&UJL zH?u38r%n9em(IpNyu;Uz5Soi7iy;g5Y_21(a<#>V&G7$2P-xrd*O~Q=s<+p`6M;AZ zF}EN4yk2=eS1Awg~4s$ANJqL+d#*OK8DZ!mUHw>=WxQoAcmUlG4M} zeMw=dy|z}YVaeP|N^tf$sC1W(YV^Na0GrOqG;d0;m$mEuQ?;hY$zeB8b%&1~!4e97 zk(D^E{q60N#k$r;zP7UtOv6EvV4tqZyXBCX1G`mdE3R(0u0(Vy{v>%%X(P86&M zW_t$i@7i1prRC*o)dsNAe`~n`zsk0|zDwJpe`~Iu?JbLdbs6j$q^8>;ZU$;-DL1r~ zAte$0#h1R#T$71=8aMM9-x&cB5sO;Ycjmuv4BieL!T!8?3qR`|a`od33=E9sx`Lzq z-)l~%e@j7{h>CdG`-=>KFPfhy%`E;~WIa}y6d@Cn%rh77;v~kU$DijIdMDlFe`JVO zPM`qk{_8e0fweRRzem&oR>}WBOdIplDO4`kVblMfjQZId1WsiB_dh^PLQ%-}!~B0- z75$PspEjDd7{&mUFKjY*!x#0!h=ZXbAwiG(OeM>%*En==NI_;OLbF5zH@>-`om<-X2|=4RSlxwKx0mq^K^PW z$cko#?uW~rg>sGHe`+qkSeBQQbiCdEaO-d!_I3&WNFQxgk1P}&tk+_kF)P}nEp>WT znz;TQFS}fc^{mo*IcqwY=;yXHR(=M{&w;(BH;()A!2d_M-=dU32F}Y?p>g#i6oR9_ ze}Kph{+O3v*uXC8>3@`KLzevg7CIlrB2dVx&Vcn;Kjb1G!J@&CwC1No5yHPXeWeAE9y#e( z7!0U;>ex!eVmWONGPbww>2OkwR_>?c%Y)S^C>_(d%=_QHLzqdMpLo%oJ2#c)a~@}3 zK*46I5NXVuM;e+jwJ2FqZgzTnzj0>WKlf+5GIhMk`Rd~0Z0lh+Jg}4Zbe=MX$E}B3 zCNm|+eZa_tS@A30vU0PL+g@~i*gU`1leQY;TjS#^Oum|!HJAO%BrC6H?L+YEav+#3 zL~0>LkXlE|rGcYM$`-pgqbKZ-Q`clsH;Hj&NByisj%l86WxSY9jZo_hMmM9wP1F{f zMgnwi1E~i(WiC5^YKZx;EgI$|4W*L=foFr#cE&KMu>*Sdu2~FaNAu?<2QIvvKC@-0 zye|f?xmeN5bBLlQnlDdZk}}WER!;2L3nFq?bA*}&z{L>9zmT7e6xqQTuMomci>@*} zbgtpn>}J=TXAxm|kaYsC`5MZ`w$R^*fJhp1XzY&flxq~^LcOu1!Df>r zu*B`8ROtk#y)Vro+S==GrkoBg0OgN58j^~@^Mm&^rtlHYDQ93z3o1$B? zdYa5R5*%-tdk@>gLD`VE;fekraOk}5dtE`zVPR^l9A)S{jJ&aMrrmMAN-w_R-40Xi?EAob!`PM!{hMFOD5@kY|vHTib}f+^UH^65pi?3|{Va(A1ZwXRqH& zzP?K2^~(&70h@EKT>UMFIi5!^qotd7elq!SXcjnidQQzQx!j(p7-F2Ez>2MjU}`y7djHB_KY%&xK$d&P??Vm9}#ul1uX_Y#V6q#Q@ zJ_BOR+VyEH~TC+n9xu*rvmG8bdd<`#kBqN0S$7gxMdBq8wI(?|v9- zCwd(H__8YH4Ssv(z>x z5lohRpl(&GR9&C+oHkeg&FE;&huED1;&Ps^6dvB4$CZe~uX^}Edwh4N18Yt>cjZnX z$YV(eOQzu?i`VP#r}7RFhQ5y0?KO);UJ$?6YO}&>$)x(*&w+0Uhdr~Z4~v0+4sI(a0|w3C+~ZZarzuC362|V zc;VwY#YMl$3JIF6!6e(QfL|v6>(WkKXvipyL1jGgMfvN@oKE@1{4P-8-p;>5%W+S@ z2lt$?;*XUWDxI5Br9KTjW&*`feS~ zao2%GNIu1oQ9^LnZjj)1WekJ2;%O~93mr?_(_*LzK1FROXuXEnVQQ4Fvs5Sn+?u2^ zdl1EdnuO2)o03(}`mAWY(0rL?&aJ76^8|%VCa-rs3%|-IhZaFWS~cf^DyGk`LDTK8 zp{d>vyQ&7Ja?u*jr*BtK(nMe#YJUA5$%ZZW5^q{lPRZG2F6er^eUHxn%3(a++otlW z^*w9eG?)u<3D#No0Zz-ZR=pFqipd7YUfLB+=cd1GCHwp6w3zLDhb~|5M>3ZheO&Ui zNOPHfmNi-G$CkvOeg@W(gbJRs-H#pFp{ivdZ%{A(&WKO|b9NHm>C1xt)Hg~6&5_o!f$ z4dqB0Fu{Ut+ZHvJBvdpI90$kzQU`J#cS+UReX?;Qh9DvW0*yc(yv!fuo>FEAX}E}A zuIre_n`=xsPzxlKfi;A@<_cbvV&EJ5-A_R-r{t)&T-U3p{DbaKm?G?3c2;XSV4+~Y zslh`f1G^E~wG8(i4llb9q`5m9>rX?h{ggC$CVCI={F^u2)Qo{89Cu7DmtccN!mzfg z>JEV;X!WtD-Q%FfNJ=oCLGPtqVjw{~d4^_X^~;#2u-?6cHD&w3&WQ24(k!^T2Nx%V zyl`ML=Z)!0hTZy)oq<~3(jGx3(NDK_Jkf@j7VK-DmhT%|36n-lx*1 zbX;imwdInja@1_dg)*fzL&fuv+pBeJ7reakfyEMys9t}x?TU#}%8yOiP zEk>8Ug!>n>L3U!s=`TPa!*hhgc?$D2BUS7{@LmFM-rb+IqAJmdG^Xa%v%{8tt?bVk zmRpphlyDzJCU5>kATdR=fdSpQN6`s-UEpy-&2V1VA=TpQN>dt+&y*INX7_2!&5{({ zeQ=+-mcg6Ky6p$w{Ud{^Mmp9+J;RZ`F?;X??L(>Zx)Y28EP37fArmy-LE`XolH~MU zSMj|p@E{{4Yh6)+;sEw+Hq?e-gL(J%8upIM;VGA?kdvEMN8jl&SS3ot;}=N#Z7vQq zX|##N>hPVyn`3m|R!FbVd_*SLiz<41UYmFe833DS-+cP>7hW$H?@7*a1FAyrw$Cxc z=BtY$tkJg}mP7tWmdmd_SQqX07m0=O#7->ZxjhoXqiu$QgG>`sMmp5$QM-SfJuxX} zHm9g{%i(oKm;?1YEa}*mYL*wv!iXEVFZoOeOtpTk6Uh$KH6bB`bG37i5i*{Qo4tfQ z)RgTt8(p=vEk+W?SIh)vY<1=KBObh`#aG6dE@zKkOQjgZq&g`Z7c~%uHYJbl_i2^q z*2%U*tF2`yPU@v4ggUK1kJ>bXGFd-2YD5X%{VcI!(ZITRF>bBQs$U^(4Z$0qJfF2z zBaOrR%5FN~4bmHH$@x*qRlDI^R|ceF$46EIb+&s%haY!b4}dsKXh+GDzI_u$|I~+= zTqG(lWCbaD(G=)<|PjOSNR>)4k>x-fl@RrEKYf zYsqRyADSy>J4>ENj?_&A*JC^NY2Vo!d@ejiuW8g4HE7|woA}d&=Xg5PK|1)D)B3@+ zo6j=t`s?NmRZ?Zu^aoVbHS5af=1y+!*IaZe8t7Ft1~ahww3{^(?Nq|FE8knt z5)cUf1L%n@cgNtrJdx=AgM(m}oxLj?$5}+?5T)X|3jp%MEv^ptHE z1s1cv@I#0PgOC!=kK}XJ*tp?wt&W)<7-k$PZ*QK)cmFbP41fDjFG&{J_GJXIL!WrS3rfuIBKj|DLP*0` zeHLt#$q~H@CQV6Y;+pu*A44I(U=v@T71RrZ}?sh;|NMWB-6$ zfR(dnsFUzm)qngGR0wIW{%-_hsz*U%f_B#V_?C-~=ceo2l^|r?;gONv)IMGM)8+c` zw5XroJUl$??Q0}S(}IlHGsY__D&phg)wGlz^Q30-T3bEV+uSGbdf{w-1$v$ z{2iO$F;^_IJ|q;8m;1?WaF;%jaSJBS(l(Gyu_vPsst#aW>vp4$)I5DtrAmzu$WNOj zGqDW=1G7Jo#cOcw5k5ebY|60*hJ%BN_1h#wzfFlSyer7HHTr={>^438 z37_`v4Bhikh2#JeD+v2=H#p%!6>;LsdhA8qed-BFKqkD8TJU%AP1y$~Z_Eda&6$~| zUy7TZzHt0GsFvw)i5QnKDT8fXB9Nx5P~k}}ap1b_E=hbg%bk+{|dXYu2{CO8EZEmHT(wsU8N5Bc}&(J~P#we@zI5padc&y83^6DnA|sTSLp zeDDxeuXK=Mhh_aI_rC&(4kML}Y_JyJH6OB!F7kCJm`_sh1YY-Z743`L8gdFyL%(UG z8q1Y+)JV$EU$Ckv)Fv_1asqBY($WqUk1`ftt5ypt7QcH9-ePpT^c=E-dc?B%Ke=FT z{^>dEpaT&7U~CCw`cKN#DB=dCWdnjBaQ}OJqnnsa` z#X-p-Mcp>uGun4V5=A3ZfxxLx561s1#8P1&VlzT_$39Wn66=wE{Vlg^rR8*3JjTsC z^uxR6Z23Gg7y-*hCcS;gA3Yj$`_*itK>*k2^G4K=ro$PTTVi2i89XQtjd6h)L^4ss zNjyQvg;8s|r9dd*!KKxGjNWdz_=c{{8A*Uhf>^<_S>Uyp{!w;!C@+Sjt!@US+S>sm z`jG@t`c$B&NJ6%7J5c4bSWJapq0iKqX;o8RPbP0T^jM+YA@u1g{nbFh<`9-`%O_0u zIPk;Eo*$xH-v8*{TykdgrOT0grh@K_%fuAYt4A5$dNGiwd5&~}TvJ($g~B%Cweo@| zmBX{8l?Ji-_MWe19zo8xMD=1hK8(ug0MOL(mue1ZMT+W_L>`Pn(WS{;fEOaSv+Z~{zo3IKp%FCkZBTqji4f+mr0o`;m8 z-s$2vSq$j1ynFcut@RZ_Le`3}m#&)BcrncFkc`hTO3GKiN=sHcLt3y=hwuEy;0*A1K5>ArZ1gOQJjqN4d}M+2J@%Y5e4T${7%3 ztV*KlZu|5hb9K~9RFHWj7w`>)f|u{vc8L$FP^}#aIBs}5!Fa(aG|SAqyzI< zkfbD5Bg~mkBV?GYnU|tu@Ss;Ucp7ME4nd`;zKfaNhBFuaK4Ho<2eNM2_me|y4kX|Z zK~|Z08OZY_lt20oP!yAKbRPt>!~v*s&#O@8D;4lYr8L*&_?|&5D1V*lHx)ANSp>kC zs6&s`cT&)1xOjk4HYY9A=kbR7i4%_rR5&P3SPCpE>dg^pCZoXlvISmlJ-7pwY~Q_P zfNOLyIJNi-)K%%eAhe+yGCL_hlAJ<_=;-ycZ=p>>nIF!M3g4}(U8B3_cR3$&o3ee^ z;lW@1;C+bT_Ac}73vP}=KrFtCuP{P@ol|XG&;-j)F=EX=1bv(J>TO2>7GQE^#v}V_ z^y)&J?QnC8Vf1!fi;jis(p?6YwQseW77cLYak-<8)Iv2Rbm{}ifgcrdfmT8_g>o2H zGbWfUN=Z^HCuOt|@jm$ZCe!N@EVU2kB+*;c% zr^3R_fu7WD7)XjW=U$dcD9dP!?Cpm0WN*46r#0{@B1idY>7=kt-&ze`mAEX~;)Ti> zDGWjPYjzo2in=NDAWcv=0w56Mdq!Spt}hc|s zkX^ltM*=yKN{0j=*Qb^XXde-OQE`7>9$ocqtOLto6-vE;iW#`mHsfrH?IFb|;!6>- zOt&GQ8bgg!l{;>EEht zmnXsowYxO~H|OinPW3m_5*=V#Q`3M;ncG=fTIK6+0<#Tn?g{VR!-GUi89Wcm`#%L0=!1pXa#O7sbw5eez+Pn42Tv2aGI_OxIJuZsmd%5+? zOuWk;R--!``Ej==#yh$^L^3rc_yyMY?r!tQ-+$*7$^p4V(iihfV9xrw@3iJ7CQ2vP zdYIN~beuUrR5OsXeL(XYs-kZ(PO!&21j1rIPG8C0YeUf~;1SO+IA8cLU)XkdHev0q zhzLgcz5AMYa@s$#C==oK5eIOw#_L9YY^=y#=BjvqYSsOndvIJN17lL}0OetW-#96o z4eg21&{&_2m=nF=qkRmCv|FDhW$@!G9M!&m)@5n3KRFfuzVIn~NI3rCS>Mn*a_T?~ zUl^h0)hu+S?T>aUkfToIqXF4L>b|sud+vNJ9WBMdsFUcqw!6kmIuDFcHV(HjWpkND z7WzOaj2c8)Gk_vF^#BuyY;&Hg5ss30I4oP~GXtvMyu(^4&98H=b4dicnw{_qsP+(` zvOpsu-?{Qxs+>P6L$QSUouP`QMoc?j-5q_qZe^rvfmeb zi>$fDE!n<_k&U{VpUf5qMFQz$t0_h=^BG1farQe?>s}*^XVX7_VR^lbw~%2yZ+Mk# z?^1@OI$9|mWfV{;QMO88@X~R5Uw!r0tbk-j#N>KiNIQOGWZ@k*ZnCZ~IoPvNF9$tc zA-`z|SIm-U%Tuk%Sz2t+7zEE5LI4)6ep;6nKPOiAE{}&{NL8djWM>=lPry=AauG7V zC?>1;N$O@JCt2$GoNh5D1Ac9;W31Qeeg$Bg2Vt95LQkC_r;8snR6 z&Y24fu>jDM0)}1C{NwZirX7$LY*h0eAB764AWK*lQ<<69R6}1RR~unz{8v5D>*K@B zN|GILryk7=JlseiFZYX+3~bv|4Jct)h7-s0qBll#U8o%t0+KfVcy{h27ByrRCQv{ zDFX(LW)t{@ocFKjcYWKRZcom9#T#?aElMGmH=&?-wud{K7C0znUpz;Fo-n82K8-c8C;K0Y3Qp@4Wy@Bb*1d!_t^--iW@p>2{CzGPIyK zPPGZvEJKk7Q++lFs%#3rwJB6IlZYdIjAMWjPnbVW5?OW~TvhH6`qFUDI1*rliF={- z{B-2!-G>9|AD@03yOV}NW|YSO4D$>jo273tOkwMU$g$^}xN<%SsV}Y%z`oP-v6Lt% zWa%!U?!+BoDze)0&LdxNz`rZ5Oh!RNVg*(vQw_KeZdrHhes%DXN1y7-;BW9+{LcO6 ze5iy`1=;*1$KxI=Q6H6_Z8J17YNK0UF&UuiHZQAEnaI>Fr*h-2yl%dCp1&m+kqTPm zJwqX-P_S2RPAOEcyp-?GId|sElPG_hpAYIB$L4W&;oq;>M(?t3-&G;ZyfH*^&SYO} z+VgPwa_;WY?j*6)taWkI=t_*^&z;d~0ShoR{uMoqR=bnopvG&n>SHvyV3XgwsOY=| zP419{V0&o66p_sd4}aA<#pFDeUs_+AFy#xMQPMp^IC=pc}%&)YcZ5=b%UX6 zhi1wi6RC$Ue7`jXXFpe$oeP7VD8gO<2aS_#@jK^BZUSyVHxwW=oa?|clJbUq#U*e! zq8y#Y(tXttz*kJr8NpnztxH20=}RhTGL-w#)b|MoNm!B9;ut{09+{^zwYpt&4<%4o zr?2e|%StB8@I$yf8GdOJqRZ6HGsKt>Egj$+w>>B$i9c7w@Ggb?(>fs~{ugLIx+j}% z9Pc&iN&rCU32B~k14#bfXYILj#=?yYl ziH9B9cTu3*R>LMwL|;nnA&sr(ianp$l<;8=z#y$)0t9k!75nI~u(<@Vg9+Sy%%~2N z$bl@O`e2vOxLF)%UKcfOT-pjJS69`&8c2zj&2I-SIp+G=);HR&qzo$PzDd)6+A|wp z1Sl0^zzE^Xg=tA9;t>As;P_{oeuqJNPuLL;i-v{ln6NXt6bHR7gzqZjp-xxO;KzV_ zcMb_m#*N6EfyL?m4HcG)#h8^EIh9>z74jplZ!VQIxJ(dy9yHMEkz|(Rec62G5P&Qf*gP zslItt3_#zaM099cr`OJQp^IUY$!f-V)DaZyTG?8I8A0suv8^h^pwK!Z8i(|DD9z-4 zZX1j;QSFB(4$Jok`HLEn$Ig7=(~uWAS;5niT>)Xlv6acn?*Ps=QJHcCaZPF0Rj-sn zOWeB$jB=_lc^H)V;*`3KdK-CL+>vdn@a-6bLZLbiZEf;~kUuHYqnJ;Ri!JPf6wJ;) zC0~WP^|32qFzwl$jzO0#w&LQ!C*+Q1e**o60qiDrO-3!;MY63vkVh$Y?T+W2`h3Fk zpVkMsJ}$&oq{A<)sWf=&EwISA!N@i?2gh1nWi_=j-+aKkKD6pHrwhCNgOWfq833@4ganL6$q7Gy{OU4e;9D3Qg^tN+U$mG1iS_4vU6#+4Q9l-M z#SAgKO~K0q!)Qyh5XC*y9zEV&y$~y&9}%0~eSPs2Kr3?}1`rRpe|;iP2RC zfgXre!qx_>rjC9d)Qw~+ryiI})?1v0Uo`pd?MQtMzN)Qxf|v`wd4eCMY8;hnzpOaf zLRJX{S+)_E*EkOlCQQc@bgF+S<%Az z-@-U>tTV2K&T>VMxySUzFhQO!@* zvoBLwxr|wP#FPXo(QZ6Q27j}tlm=?B(%Qf)py+BNC^C z;8XFf5>Dk%gCNcx7LntK@tcP13JV*CFBAW2&jQf3gaO<{rIRk|(^b1IYQuiSIdTN(vM|*MlqJ{Z>yvH)lol&xfPJ$#N|*7m3&do> z1a1z@5JCf~8N|#=f6szV`jK4}>q5S!LX8>0X3^8ybF1`yqbiw2Et}*T3V=h)v&gj~ zCXL~}Z~YFYjjb7E!mmSi_`rpUZ6r!0aCqp4+&8Gwt?6F^Uw5~zhJf!2(YAD&qE8RW z=loWc+dQZQp?nw#c2C9{V|i))))9(ivBzVI+F6RM3B?!GH6bx%wRpaFU^9>pLi>&z z+lDyk_obU*)LOXqNp?k>%f`VwAR~k=y${dbNbz^2M}*$1f?Vd0zd$lrPoz97=OYzg z6WA>OCdQ+C$1EKkgL1yb7jc%eL1@|iMkcEX4Ol857vJQ`C+a?v?T^@$r2oZK3$8G@ z4HD`V;Yivu=`R6jUNCV0M4kG1sIrHqF`?Ff^;3&4;=%G&D1`$gtsp{OnJ=#x&fWIx z%W-_iY}Yz#>m<>5yVq6a*Vt=6$(Cz2uo6G4^ySm8wM(P0nMF_Tmi*qXdwXcc*g28@@ZsygUW|kPqNT-t0P(Sp6c%RH?6x z(!%v?W^OS9v6kR5uxZeidhC;kvtA_x;0m#~bm}}+RWS^ks1kk2w-|v1t!Yqlq7Ml0 zFT$;tTi-%RhA4_j8*3N&#t(%W)Hr{6kmI>nQJsEW%Rqrl6sd0|4A4*W1;CY$`Td8t$l{4pHAt$m%>soEuYer;kbkb+CmW&K(^0v zJvqn6UZ?_c{yp#FYllNkgT6=O972&}c-Th>qR$LLpED0*WkV`Ydy){V9hg?1SxE7t zK_4-oGn*uvqHj4$WDTI}2InD#;}?QDr5QvwA_{fjxc9BBTbhsOF;fcwFa|yVu&HFT?@U}GSj&R5(dy*RN{+5ublgJy0tYKxrj0t z0h=wlHlkn}??;)xXOPP1{iU}}m)h-+dHi0lX0RWBx}IwAKDG=3u9WL*S_ze|^MRbS zh!`qBQAsj8(i}-#0z$Xyok5i7Pyh}yq?;_?0KS7=Vb7-m2jzTYRo*h|+U^c=Rudtm z@vtsd&Hly>I*#-5jQR06P+R6}flx~V)y;;MUVUr!2PMGiy99h`fQU9I+j=c*wM?>C zL2Qn2nVA9+L8YXO5G6VB*RimMr;nSI%cTzOpcnmtqp^w>t0UD91bN+u-^%-OZfMW? ztUfQ{h$%7^G}0+5H-k^PB9K1F9Lr&MjoRsL zgcp?wxY5=yL0AM(sH4qiXJdOv#1{L_g@8DEDpZ*dJoi@)-9O#aq%>n(yHr9ef)Clt z$^l9t0-@Q4WT}NJ16Z(|piCy$Od%0!Ai7ks*5NH=qbbqE9Tzo_GhpU96eWp{9_|q0 zk8L0DHCveLa46spv6a8DV(}w(A+&#QjrWUKyfirus!aWcUsIto0`m5{1Zgk$n6j)u zG>v*S9*@^2yqqfDQE|UT-*K+n489dtzpVNWZOc>Wo)HwWJ2h{L-10g%VwhUckh3Z? zBN2TmHk`@zye%Kzm@|1BHLU6~w|nHroA(aJpkE0VjR$@AZb6SyyT#`6OSqb=o~0R z?U4`uO4Ks_I)T95s4>BC87FDS=wwS+_0Q%7szRVt;b80eT-KY(*9W z7SB~)W0QxjD_O!$6o6z(xiL0s=pWBOw$H&__fn3{njN9ND_2bt&|ZEd%`e1)Ob+?i z-EVL2Kr^wMXp;%hE+B(Pt#mrG~uzOr;BcJ1z z8i1}fK5)ee(-BA_DV<0ICGejFGF2nU{754;UD5IDAHY|2;tMtNdVWG+p|ps}Le9Xf z>M;!H_-KRyVa8Z?R^@I`$@7`NnooqKWLd84+g?>v;{Mj&7=3a~DXzJ&Nqz1blmLDS zrJNEjFs5XhzYtNfwc;vb_8nCn<+*$qj7`F4@1fJ;WaVTCWMRCI-*4k`gT&s$k-wmb zdt+)MQX*9IzI2VIh+{hw#242hXPVVtZIrF?_20@=DlTjy;*6_nvpuK>@7P4vpfiF=|FzTy&{<(E$Ffv4Q zSd$EmyqI=+F8NVjn!Q zEjSmyzw@xweSeP|so?s~5;oAaM=QB9XJYg;MdQXGp5PtV%JDfY~>K?<- z|LsYs2@YALGeKb(+XnyLvORSEG@Olxo_E==i@wEE%f-o`QeCv?jvBvg{Lw^rOgQ|wHJCiI(#mtg4|@jNgJVU0Zfx3G|LwzJPJFH zG_43nTV#%<3v79b5W_nveRg2UlfBi16BkMZzsBJ8a7-vOd64Y(U37*>y%6K{amFxv28Et-qx|O5rlzzPA0mFf#8&{3 zly!v|<)ntNgljY9ec5tdS>OA$iDrC|d5_7<`ft;C)Ld0RT75jaNLv*|Azg)Q>W&?k$RWXL-eoW zs-V#L@u}CYUzjk__TQL-Me~0WXx}*fOP~n5)KC%0RXosBqQ8e~iP;FLGJ8n(jpp!o z9K*vUvZ^qDHauGkD#f=DW)!~aFMF$(@BiwlkrX8XSVU`ojcbr4WQP9bW=cj`Ke5T~ z|6M2Se_8ji11e#YM1gbpemWiMJ(QfB%)`Tj0KVmumTt#j)`$1@iQe?Y#Dt*zsD}xe zM#(GCGwcX>9$Y)-6+Dpj*p77grH zIZ-BG9iIR2J`4Fh?JSbn$31Y$I!+|zKI*}w=!NC!-KMa$6B_y>?NwdxP z7w8BLO}zL2&uzua+U`(-t?py3VnNkBwrU&df4M}as43G-kEC8sc*FOX8wwOXOGf|l zM4@ilp}pp3)NFO;e=l;(ZsS5PqV|;`6iaW1gWGB{R@=)9t@seITZ@Mwx(JvlV(ss) ziSPY#vhyCsu4F%z52VpzqO$HhkgUYRj)?rlGn1Vl?){xKmB5Z69vm zl}#m`fo6spM21qgTBF*m7JVNIEVKc`Z1_!P^H0GpO0oE+9Bg(22GG=^VuD>G`OPOoPE)j5|SD)tF9m7QzY|Qt2gPuydD^>E>HvAXR$KTT$uu99}{-rbi z_0cy`ThAF!RW=ugUh7GtC*djXoC0fwpQE~f<*G()<|#Fr>Z(*zo?*khkJE~BSW9+( z)YS{;v0#s73dQvH=j~G`rGFYV0M@n6tXvJYfXkY^e*Rv@-<%kRnMBP5w+q=6aaJdt zZ5?y|8qzPO_}no{{DORoXJpEa$Mh~7A`Ef}3U});Jt{X-a#;cou1!(^AI${2Ud&fW zEXVE#Hm@|^zqi&|L-mhco-DP3?0S#(l?0sxh%cMxmeRLjF(P!SwHo_!iIxIF{xYW@3h$n9S5x6#qQr>i~J+_ zrVMrnX^|@8?elN@xn#RVT+p1~I{tovRkt#w$T2I1G49sLxR(^;7)22i644Kg~zGkz&euou5ziYO{7WMktW-xH(QRq})xBq=pU4?$F z1VDU?j|zi=0MNE{Phq+=?@M~+q-@=@k(@d+43NcI1LTnRCLjqg+Qd+9fDZX$OuVHH z34>)mF=>q6rHtY+F#}8W+J*JBi0}ANxPHN37CUI~GGke2(oINVU%L99&s5E!EysgL zUbm4+2Vv_Q5Ru(*x(QDtVQ`G~5SBE#dH>9FEvo*t&39j{vie$P+}}GcP8Une#RIa( zELRV3f1_HwhR6N7r(Hi2YWF-MOo`@d81xykb&RH+&A^uFgIj{H^4LBXOhlziJ^@vd z>iDwHh{A~um<+7+GhEjHIr(bKxX!4!2Rtu_rVFKdPfOxA4A>;Xym5zQtiOE6ahc6RI%ikJRLXDxzC%70PS-*!YLmE)Aqb!8?o-y0p8nAzxiMxu z5OaxinP}DVqW$>=Q8DyBd^Hg_XM1?%s;sWBK7@>FeP;|wFFDRN! z-!XXfYq1y;{xNk8cDQBQBnf(pK6Xf&T)t6S(@^|@OwC->lAgrVK-Gk;KXi#uQ!5cGx#@}@ow{V1d zcFYjk%F5|Ka6;RW0YWIG`9DZXh7N{uOLid&pwhTfhrpC?F={z_S!O)?D;ptNdy{?! z>lHdS-?dX%`rPH5T`kQ*yMsp-?;{%@tt)-0`mkA`s9Pk~=#Qy7MtY4bIDCp3>-BDc z=Os#MLL&WnwXnnjq9oVo_%KlM+3y?Qm5PE+tkNRS{a#^FK5={i`=_2ce${icM1UOD zGZ0mcn`ZE$cYUkGHP*vZiax)6;Aw^}b{=Vx*C9{FKN5SGuqF)4GptasL2t(gD^6t> zQ}sQ8n=Kf(OBp{Sogruw^!ADIkF)owZ%_qHMTS}bftXch`U14enyMT|7ZXLzJg}6F z_|#}ZQrlEh%J2fRG;$(Js;_lxak{QP6o|Zn3idGiWC3H0CHK4`DR?LL%6aveV#D% z-5O!m3H^FDVe3$lniVRcmO>tsL1q9w_rCC0W-pr=)SU{2`JX>_%x793SiC|qBaPrd za%w_=i}VBlM2P|8pG6#7FMx-5Z2sz$9?=z%`j$1~4W1k)FP8M>q!Tl`_5G))sft6=#NH`O{Nps-T&kShaty_>xVAb-#Gquafxk~+Do z3%8_XsMDaqDIK6(EGvHFw^Yb@en<>BT};5ip}hU!MF%!m6JG}t9bvWikpz1FUW+~C*rwLF9L6*12qoyG&_g1TSC-(g=jKe!hT=umtJnWc0G z9wzCB5qXFNW)i5&>BK%I%(K{iTC|gHYIGfXayb29zf!Hwl=qO+dNJ#|rPM=q`cwJo z$MGnZ%0%#=5VClQIC06QatF7B3|?gb1lV&W-xw<%MzjqD`MW(y>`4*>RL;~Y?zjmVo-7CQqz{mAO-DmR^~@B+b3^xjMh@MFn! zmX{_YHBOLjW%%BJBd^tFF8nwdZP$Lj<{S5m z%64aV96>+W97+FSzecPdLAx;ZA6mKV2^zEhq1*1EYeHFWe$#LPFsirJ=*&TfNUTa| zNY{|CR6Ku9?1`MpJbU!xenGY#Rzd)t1a_~z2AF&6@JH8}q?@FGYJ*L4wO@IVVqE`c z0N{y$ih{h}o(NfdOPpjSZarKjX){=N3y0y0gl0U}XvpkM)jUxJLJQNi!F(tp#vtzg z%Efpt8l$}{#RWgFA!+KEtI`Iy=s~rbtCEX5oxKwIHx#rZo zQu@R?pOmnR*XPQDu4F*=EREX|AX&b*NPWP=B>T(I@%Q1|`lN!NXJ1wf-k>ON zThWqL;!9$$-WAa0h!*T$CKRSm+94ax;J`+B0*$W{xKYYYe(LZ*5%&T;5Pv_`x*T%s z5qEzjyT`SAav@Xgelej4cs1vY#}GYBbnyAK6@1nech|cZZG6JC{>y@hw!YcFV{6eq z>V?ENgt;%sa;i9Z>;!pnDZ>;zkV>-HS@J3;IgVA$qXYCr?X#WU0`usz*aOD8uS@8!$|J2sFtmp`Yn84s?ykRF^+k7M))UxKK1< zqL(7y+tQoXDBO?mcW6a6XqO(D_ILPu_&FKLKf^CVPoI`I%mdq`io^#pzx%)fy0@hh znp>^KGqYITp-RPJM4{MNcd?t=eFRtu*<$=0Wbz5L#wlyx7O^NPsAg|EAM+!U)p>e| zgR`arC(KU+Q?qX(w#qW8v$9Dd1|n1P&#=2vG+jo^@KrB3AZ zSQ_26E^Gp)-&zll6?|xAhXok8GPZbiVN?OgGIZjd2K_N}#P?=;<4Q`A+KEcMi3-cO z7#;E#S|^TKZ~3MOKB3Y(7Kan2QOB_+w2#B>5{gO{7dcIR?9a3ki&(Ca>A+kxK<-)m zsgctyEYBU0bBUjnJ3^R!s8;N2(XTohQhJ(Ex7l>6WAmMLQ#v*SNn;kO%C%IZn^3Qg zFoiz7Ouu_hFM~mSYDPnhM+YTrxZqe)v*aVF@PK=^Rkr@wh_=J0A8{Na$OuOgjzfWk zC7VErjOfDRfZ6N?815eI(k7?1V~R!|ue2b<;gtvs;oOVI` z{#}1k|0DT>9Jf^NY@I&blH;a2F1^;A21BTO7M|W~)!3jR?AlKwQ8%qFN^|U?TikVZ zrTRH-uay_r+h#eNxiZ}J<(x2cS$shMMi|kN;_JYB+nbTxHnb5hczei8`1RM7?o+!b z7QQ|p99&U51>3%C_CDIlV>}R!WmyOkSz&|>;s5QR%{TP*elaIL{rIfxYj${*^lh`6 z;YH`&$)QqberBgmi9*FekQvD%Y1&#U%Ai7M*WJlh)d}D9mu-Drq=^~A(mlnR?#%~~nE~s& z(_yU8saX$`ivZKxhO3Z16q=oXj2JVv$uIs{qKZYA z^>GWgI|0kA4~@AhmpGhn;mjL3%o#q{ykf15(S%e(6Ob%qYnxfk{wP;Wh`mgmE%wwS zMh=34n6G3}r_h6I5lmRBQYf!&dj}pKb>?)Td-k4)R4S;)r(s!ClqyvXHajbzGr7lHp zpqYXtZVz~>Bm=SF*8X=#DDC-z8Q&_-*q{_XRt-^ zWsaS)VucR533gscg!X8VsQc8V9g`{<6UfW`_Smw@YG)phOl#p{uU#*I|DX+Z{yha>#+1ugP0_rISWdt%`?h8|o%fM8PM zdkNZUckm}fGtWa@Egu&Sw9&XYB>@;&luX++sa~Ynj}{DhUPEy#<#SGQVkW(?9evEa zs-}x~Bv9lvZn0XMGGM&C!??)E(@lP$Qp zXk)|FPlR-s*1MKBhOj=7IvV`u<4lo7O?-P*7Y%L@zghWpRTac~BU?*ufkB8=5M1i} zlPiBB_!~R%wtw?2XWifg^DY$h4zS4y+dAv^-}=m}L$bil zeIwJE84#(=zPTIS|SnH50h$~R8P4?*LLfAN111nlgW9XGb;~P};Jm|+w z-@AMJ8ik6%7bO)~3M+x5tM#W_918<=hHpa%{aXH#HKX?X34iYP=;?UY$a1*jZh}3_ zqnfA{DPRa2%WUbRn-L|-Jww8p@=X&%68d*_7N_#A$X z+h|hD&d_02?OPG_)X}(kWPYyX+j5EV?7KlqfpyPij=&gP`b7>CQZ~DNZM*%4yes>j zKHi#Zswx#Fg{`RsgWSd$gVR0sp+chmW7;*5p^N^TueWu0@bO*m1}hd6d}>{65?t1+ zAEekBE=H-9KdDbxsTl`T6ysjHQDVl*1y;{gTImR0%lC=4M_7`s1_w zJy@6nz50D&z3lQv71degO~X~c(hg1Jw9JG1?z_IxVX^O7%hw6(7&Kn1KK__wqCPlG~nstHO4FKFfiORE-95i zsgfQI86fDMkUdZQnow2^s_03AIXG>Z=Zg;lKkIZ&kfzN`{jQgtC#IzqY#8+B>bYe8 zP8l}IYur+pLy}cIIXYv|FLzGW8k5RdsvU$xyKUa|J zFO<~)n3?4wAHeFEsnxdTIiRAG2Z-2T|L}h;#T0ZRou+|+4FbYcsaoePsL^&!O&fnk zyj2F7jfDK`kfS5nbf=Jc>U+A-Qv>jxdq}@c_`fQOT?R?W9X7He1kkc(Z(HUsXb)xtsU_AXFEL)NYHq4^?tDYu(fCPZZ;SNSHrz`c9QdT zn0mv$+A=;MwcHA2fw*3IN%H((c_D+qE!d-G6+R{p0YEP^b01BcRZ zfIYS~+~o3ij=N*b%^vNsj&oOLcKV+pGJ8pyU=hXLnY~ozljI{4r^W3Ty;ttw8DT%d zu6(T^nPVoB;U85Dx#H!uYcJ3Ob8fp}bW=t7!7Yf+6s-lOO6F%&JFm~syq`3u1Ha|X z@7GkbN6Fq(kA*2rD)qIf2xabVRV_;mxhe`_AGfIp0Y@`=7gnxNQVx4g*zwiJ9mz$q znIHD}=3GPoVGPO>N5g#(=H{TPHVQ>hdKZKj?H`uPujloBAg(HnSv>eXP2=?_`hX2; z$cJUrbWoR$J~E-R5(>fl*zF<$lqA()i+Pinojr0OC$yKQ&YC#TgLyYnTURIi{Ba}p zxC^7o1Ppw88`B6Tk;`rf_|-|5Sh_XVb@oTWmo!bMuPSu=MrMfv^QezbNIqH=ga-R{ z3cANt=B>mIbq-t3enFv^18IX70aQ!6P1h!9UQT_foWBa&e3Q$Jn(W^rOcuMlYmvuH=Qei>)e;piC_MSu}(0@g4e=w;^o>sKX7-c^Y_ zAbrB`+!1WKnnEk}^Y6(-dDBXI@03_1?0*DIsTnRF7cBQN^JTB@anBw20wB!cFW~ZW zuN+R8Bmr3|A9`!qhEex$Y0p(9LLcxMl+y>7MEEb86=oWWx2QWOgKtR=!K@)0AB2}> z7^pJNY<`%NlDc*spx!>&=pxD@M9X~0j|A9W1T{%&ZN|DkjyD3LmUG{4WLM$5>SWs#DIVu?7$uPMW zZ`5Yic@dyPp2_>g#*Af`V<~@8GiC9Ty^B72=ZTfGsD^RW8;3XC{4R4X1V|0Wfu0s=I~xTtw^+LwhGY6XR+DYVFNtXSXpB4GQAw86-wU1{9~(D_KWFGbwD|NYRH&l8=F zPd+`qV0CFStUHzoXZ3FYXOA;U{==C0>?!=%zH@xW`Fs2O7R$XBi8;6(szb!DJsF?t ze+ue24Rsy6M)NCSR&mVBHOH;O&Za}aQAH@Y`*#8@5h4833piHcIDY#hjhG&jVdpXm*MomV|6ds0X` ziTKj3+&A$Q_mlQe{7X~h&V1;)2{NHE<;7Mb-d^;iAW4_shQj zb#-KXVD3iTg_kMhO*3cmn-%S(`wGLZxE*5pJgg>NjgyYs{C%75P z#x6MBE(drujtTvs%y_F2waf#5m!v5g8#ORt9vl>8@%hrU#dKqLMH$fMNNgu*Op=b2dYCk82|tP literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/occupancy-vgpr.png b/docs/data/how-to/fine-tuning-llms/occupancy-vgpr.png new file mode 100644 index 0000000000000000000000000000000000000000..270bc7a349e7313b833d7858895f6b4c1b3a5005 GIT binary patch literal 295160 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

  • 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 ZH)En?)q~%I9qx1eM5JHy%l|R{zW^V+KVtv@ literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/compute-unit.png b/docs/data/how-to/fine-tuning-llms/compute-unit.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c1f2eb07e1bac1d0f2cdad5e22e3701e506ba7 GIT binary patch literal 45716 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 literal 0 HcmV?d00001 diff --git a/docs/data/how-to/fine-tuning-llms/occupancy-vgpr.png b/docs/data/how-to/fine-tuning-llms/occupancy-vgpr.png new file mode 100644 index 0000000000000000000000000000000000000000..270bc7a349e7313b833d7858895f6b4c1b3a5005 GIT binary patch literal 295160 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