GCC Toolset 14 Environment
- source /opt/rh/gcc-toolset-14/enable only lasts for the shell session, so run at the beginning of relevant build and test tasks when the OS is AlmaLinux 8.
- CMake tasks set env to behave as if source /opt/rh/gcc-toolset-14/enable command was run.
- Observed that the built ROCm libraries can either be installed on lib or lib64 directories in this OS profile, so ldconfig step is adjusted to look at additional directories. This won't impact usage in ubuntu22 if the lib64 directories don't exist in the custom ROCm build.
- For the llvm linking step we cannot assume the ROCm lib directory exists, as only ROCm lib64 might be present on the build environment.
- libatomic package was added to the gcc toolset setup.
yaml-based Changes
- base set of dnf packages now defined in an array for dependencies that already come pre-installed on the ubuntu22 VMs.
- Changed format of the job matrix for readability.
New Features
- AlmaLinux 8 pipelines for roctracer and ROCdbgapi.
- roctracer pipeline expanded to support compilation for gfx1030 and gfx1100.
- AlmaLinux 8 llvm-project pipeline now builds flang and flang-rt, so re-enabled for ubuntu 22.04 pipeline as well.
TODO
- Revisit why ninja-build is not used for comgr, device-libs, and hipcc.
- Modified job matrices and templates to support a second OS.
- Included creation of Virtual Machine Scale Sets running AlmaLinux OS 8.10 with GCC toolset 14 to match manylinux 2_28.
- Dependency download algorithm modified so that only a single array of package manager (apt) packages need to be provided as input and then the other package managers have a mapping of equivalent packages.
- Cleaned up python3-pip in the arrays as those should already be on the VMs.
- This will be an iterative process of getting components to build on this OS profile, and starting with the components that don't have interdependencies.
- Highest priority is to get the rocm-libraries working.
- Add knobs to toggle aggregate build options.
- Aggregate build pipeline will pull ROCm dependencies from earlier in the same pipeline.
- Changing build pool of some components for more compute power.
- Deleting deprecated component.
- Add Ninja to dependency compilation in MIOpen.
- Add retries to wget for MIOpen CK build case.
---------
Co-authored-by: Daniel Su <danielsu@amd.com>
- Also, fixes to rocprofiler-sdk when incorporating recent features.
- URL encoding algorithm converts trailing '=' in the base64 string to an integer representing the number of those trailing '=' characters.
- pip update click module for test failures.
- Test results are at 99.8% with these fixes.
- Missing cmake dependency from last PR for ROCR-Runtime
- Missing pkg-config dependency for amdsmi
- Modify PATH to find pip's cmake for rocprofiler-sdk
- Dynamically write a Dockerfile based on the environment for the failing job.
- Account for additional dependencies that need to be installed and setup.
- Build and push a custom container based on that dynamic Dockerfile to capture that failing environment.
- Documenting additional setup to install Docker on VMSS during provisioning.
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 <alexxu12@amd.com>
Changing default behaviour for PRs with tag-builds.
Changing build system for some jobs based on execution time.
Co-authored-by: abhimeda <abhinav.meda@amd.com>
Co-authored-by: alexxu-amd <alex.xu@amd.com>