Files
TheRock/docs/development/installing_artifacts.md
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

445 lines
16 KiB
Markdown

# Installing Artifacts
This document provides instructions for installing ROCm artifacts from TheRock builds.
## Command Options
The
[`build_tools/install_rocm_from_artifacts.py`](/build_tools/install_rocm_from_artifacts.py)
script supports the following command-line options, organized by category:
### Source Options
Choose one of these options to specify where to install from:
| Option | Type | Description |
| ------------------ | ------ | ----------------------------------------------------------------- |
| `--input-dir` | String | Existing TheRock directory to copy from |
| `--latest-release` | Flag | Install the latest nightly release (built daily from main branch) |
| `--release` | String | Release version from nightly or dev tarballs |
| `--run-id` | String | GitHub CI workflow run ID to install from |
### Repository Options
| Option | Type | Description |
| ------------------- | ------ | -------------------------------------------------------------------------------------------------------------- |
| `--amdgpu-family` | String | AMD GPU family target (required). See [therock_amdgpu_targets.cmake](../../cmake/therock_amdgpu_targets.cmake) |
| `--output-dir` | Path | Output directory for TheRock installation (default: `./therock-build`) |
| `--run-github-repo` | String | GitHub repository for CI run ID (default: `GITHUB_REPOSITORY` env var or `ROCm/TheRock`) |
### Component Selection
| Option | Type | Description |
| --------------- | ---- | -------------------------------------------------- |
| `--base-only` | Flag | Include only base artifacts (minimal installation) |
| `--blas` | Flag | Include BLAS artifacts |
| `--debug-tools` | Flag | Include ROCm debugging tools artifacts |
| `--fft` | Flag | Include FFT artifacts |
| `--hipdnn` | Flag | Include hipDNN artifacts |
| `--hiptensor` | Flag | Include hipTensor artifacts |
| `--libhipcxx` | Flag | Include libhipcxx artifacts |
| `--hipthreads` | Flag | Include hipThreads artifacts |
| `--miopen` | Flag | Include MIOpen artifacts |
| `--prim` | Flag | Include primitives artifacts |
| `--rand` | Flag | Include random number generator artifacts |
| `--rccl` | Flag | Include RCCL artifacts |
| `--rocdecode` | Flag | Include rocDecode artifacts (Linux only) |
| `--rocjpeg` | Flag | Include rocJPEG artifacts (Linux only) |
| `--rocjitsu` | Flag | Include rocjitsu artifacts (Linux only) |
| `--mirage` | Flag | Include mirage artifacts (Linux only) |
| `--rocalution` | Flag | Include rocALUTION artifacts |
| `--rocwmma` | Flag | Include rocWMMA artifacts |
| `--tests` | Flag | Include test artifacts for enabled components |
> [!NOTE]
> `--rocdecode` and `--rocjpeg` require `sysdeps-amd-mesa` and are only
> available on Linux.
### Utility Options
| Option | Type | Description |
| ----------- | ---- | ---------------------------------------------------------- |
| `--dry-run` | Flag | Show what would be downloaded without actually downloading |
### Default Behavior
By default for CI workflow retrieval (`--run-id`), all artifacts (excluding test artifacts) will be downloaded. To customize:
- Use `--base-only` for minimal installation (core ROCm only)
- Use component flags (`--blas`, `--fft`, etc.) to select specific libraries
- Add `--tests` to include test artifacts for enabled components
### Selecting Your GPU Family
Select your AMD GPU family from [therock_amdgpu_targets.cmake](https://github.com/ROCm/TheRock/blob/main/cmake/therock_amdgpu_targets.cmake#L44-L81). Common families include:
- `gfx110X-all` - RDNA 3 consumer GPUs (RX 7000 series)
- `gfx94X-dcgpu` - MI300 series datacenter GPUs
- `gfx90X-dcgpu` - MI200 series datacenter GPUs
### Finding GitHub Run IDs
The `--run-id` option fetches artifacts from a GitHub Actions CI workflow run
with the chosen ID.
#### Finding GitHub Run IDs Manually
To find a workflow run ID manually using the GitHub UI:
1. Navigate to the [TheRock Actions page](https://github.com/ROCm/TheRock/actions)
1. Click on the "CI" workflow
1. Find a successful run (green checkmark)
1. Click on the run to view details
1. The run ID is the number in the URL: `https://github.com/ROCm/TheRock/actions/runs/[RUN_ID]`
For example, if the URL is `https://github.com/ROCm/TheRock/actions/runs/15575624591`, then the run ID is `15575624591`.
#### Finding GitHub Run IDs Programmatically
> [!TIP]
> These scripts use the GitHub API which rate limits unauthenticated requests.
>
> Installing the [`gh` CLI](https://cli.github.com/) and authenticating with
> [`gh auth login`](https://cli.github.com/manual/gh_auth_login) is recommended.
If you have a commit SHA and want to find the corresponding run ID, use
`find_artifacts_for_commit.py`:
```bash
# Find the workflow run ID and artifact URLs for a specific commit
python build_tools/find_artifacts_for_commit.py \
--commit 77f0cb2112d1d0aaae0de6088a6e4337f2488233 \
--artifact-group gfx110X-all
```
This queries the GitHub API for workflow runs on that commit and prints the
artifact location info including the run ID.
To find the most recent commit on a branch that has artifacts available:
```bash
# Find the latest commit ROCm/TheRock's "main" branch with artifacts
python build_tools/find_latest_artifacts.py \
--artifact-group gfx110X-all
```
For rocm-libraries or other repositories, specify `--repo` and `--workflow`:
```bash
python build_tools/find_artifacts_for_commit.py \
--commit ab692342ac4d00268ac8a5a4efbc144c194cb45a \
--repo ROCm/rocm-libraries \
--workflow therock-ci.yml \
--artifact-group gfx94X-dcgpu
```
<!-- TODO: Add --commit option to install_rocm_from_artifacts.py that uses
find_artifacts_for_commit internally, so users don't need to run two
commands. -->
### Finding Release Versions
#### Finding Release Versions Manually
TheRock provides two types of release tarballs:
The installer reads published release tarballs directly from the matching S3
release bucket. The public multi-arch indices below let users browse available
versions and manually download tarballs.
##### Nightly Tarballs
Nightly tarballs are built daily and follow the naming pattern: `MAJOR.MINOR.aYYYYMMDD`
**To find and use a nightly release:**
1. Visit the [nightly multi-arch tarball index](https://rocm.nightlies.amd.com/tarball-multi-arch/)
1. Look for files matching your GPU family. Files are named: `therock-dist-linux-{GPU_FAMILY}-{VERSION}.tar.gz`
- Example: `therock-dist-linux-gfx110X-all-7.11.0a20251124.tar.gz`
1. Extract the version from the filename (the part after the last hyphen, before `.tar.gz`)
- In the example above, the version is: `7.11.0a20251124`
1. Use this version string with `--release`:
```bash
python build_tools/install_rocm_from_artifacts.py \
--release 7.11.0a20251124 \
--amdgpu-family gfx110X-all
```
**Version format:** `X.Y.ZaYYYYMMDD`
- `X.Y.Z` = ROCm version (e.g., `7.11.0`)
- `a` = alpha version
- `YYYYMMDD` = build date (e.g., `20251124` = November 24, 2025)
##### Dev Tarballs
Dev tarballs are built from specific commits and follow the naming pattern: `MAJOR.MINOR.PATCH.dev0+{COMMIT_HASH}`
**To find and use a dev release:**
1. Visit the [dev multi-arch tarball index](https://rocm.devreleases.amd.com/tarball-multi-arch/)
1. Look for files matching your GPU family. Files are named: `therock-dist-linux-{GPU_FAMILY}-{VERSION}.tar.gz`
- Example: `therock-dist-linux-gfx94X-dcgpu-6.4.0.dev0+8f6cdfc0d95845f4ca5a46de59d58894972a29a9.tar.gz`
1. Extract the version from the filename (the part after the last hyphen, before `.tar.gz`)
- In the example above, the version is: `6.4.0.dev0+8f6cdfc0d95845f4ca5a46de59d58894972a29a9`
1. Use this version string with `--release`:
```bash
python build_tools/install_rocm_from_artifacts.py \
--release 6.4.0.dev0+8f6cdfc0d95845f4ca5a46de59d58894972a29a9 \
--amdgpu-family gfx94X-dcgpu
```
**Version format:** `X.Y.Z.dev0+{HASH}`
- `X.Y.Z` = ROCm version (e.g., `6.4.0`)
- `dev0` = development build indicator
- `{HASH}` = full Git commit hash (40 characters)
#### Using The Latest Release
To automatically install the latest nightly release without manually finding a version string, use the `--latest-release` flag:
```bash
python build_tools/install_rocm_from_artifacts.py \
--latest-release \
--amdgpu-family gfx110X-all
```
To preview what would be downloaded without actually downloading:
```bash
python build_tools/install_rocm_from_artifacts.py \
--latest-release \
--amdgpu-family gfx110X-all \
--dry-run
```
### Fetching Artifacts from Other Repositories
By default, the script fetches artifacts from the repository defined in the `GITHUB_REPOSITORY` environment variable. If that variable is unset, it defaults to `ROCm/TheRock`.
You can specify a different repository using the `--run-github-repo` argument. For example, to fetch artifacts from the `ROCm/rocm-libraries` repository:
```bash
python build_tools/install_rocm_from_artifacts.py \
--run-id [RUN_ID] \
--amdgpu-family gfx110X-dgpu \
--run-github-repo ROCm/rocm-libraries
```
## Installing Per-Commit CI Artifacts Manually
For advanced use cases, you can manually download and flatten CI artifacts using AWS CLI and the `fileset_tool.py` script.
1. Find the CI workflow run that you want to install from. For example, search
through recent successful runs of the `ci.yml` workflow for `push` events on
the `main` branch
[using this page](https://github.com/ROCm/TheRock/actions/workflows/ci.yml?query=branch%3Amain+is%3Asuccess+event%3Apush)
(choosing a build that took more than a few minutes - documentation only
changes skip building and uploading).
1. Download the artifacts for that workflow run from S3 using either the
[AWS CLI](https://aws.amazon.com/cli/) or
[AWS SDK for Python (Boto3)](https://aws.amazon.com/sdk-for-python/):
```bash
export LOCAL_ARTIFACTS_DIR=~/therock-artifacts
export LOCAL_INSTALL_DIR=${LOCAL_ARTIFACTS_DIR}/install
mkdir -p ${LOCAL_ARTIFACTS_DIR}
mkdir -p ${LOCAL_INSTALL_DIR}
# Example: https://github.com/ROCm/TheRock/actions/runs/15575624591
export RUN_ID=15575624591
export OPERATING_SYSTEM=linux # or 'windows'
aws s3 cp s3://therock-ci-artifacts/${RUN_ID}-${OPERATING_SYSTEM}/ \
${LOCAL_ARTIFACTS_DIR} \
--no-sign-request --recursive --exclude "*" --include "*.tar.xz"
```
1. Flatten the artifacts:
```bash
python build_tools/fileset_tool.py artifact-flatten \
${LOCAL_ARTIFACTS_DIR}/*.tar.xz -o ${LOCAL_INSTALL_DIR}
```
> [!NOTE]
> The `install_rocm_from_artifacts.py` script automates this process and is the recommended approach for most use cases.
## Usage Examples
### Install from CI Run with BLAS Components
```bash
python build_tools/install_rocm_from_artifacts.py \
--run-id 19588907671 \
--amdgpu-family gfx110X-all \
--blas --tests
```
### Install from Nightly Tarball with Multiple Components
Install RCCL and FFT components from a nightly build for gfx94X:
```bash
python build_tools/install_rocm_from_artifacts.py \
--release 6.4.0rc20250416 \
--amdgpu-family gfx94X-dcgpu \
--rccl --fft --tests
```
### Install from rocm-libraries Repository
Download artifacts from the `ROCm/rocm-libraries` repository:
```bash
python build_tools/install_rocm_from_artifacts.py \
--run-id 19644138192 \
--amdgpu-family gfx94X-dcgpu \
--tests \
--run-github-repo ROCm/rocm-libraries
```
### Install Media Libraries from CI Run (Linux only)
Install rocDecode and rocJPEG artifacts from a CI run:
```bash
python build_tools/install_rocm_from_artifacts.py \
--run-id 19588907671 \
--amdgpu-family gfx110X-all \
--rocdecode --rocjpeg
```
### Install from Dev Tarball
Install a development build using a commit hash version:
```bash
python build_tools/install_rocm_from_artifacts.py \
--release 6.4.0.dev0+e015c807437eaf32dac6c14a9c4f752770c51b14 \
--amdgpu-family gfx110X-all
```
### Preview Before Downloading
Use `--dry-run` with any source to see what would be downloaded:
```bash
python build_tools/install_rocm_from_artifacts.py \
--run-id 15052158890 \
--amdgpu-family gfx94X-dcgpu \
--blas --tests \
--dry-run
```
## Adding Support for New Components
When you add a new component to TheRock, you will need to update `install_rocm_from_artifacts.py` to allow users to selectively install it.
> [!NOTE]
> You only need to modify `install_rocm_from_artifacts.py` when adding an entirely new component to TheRock.<br>
> Typically if you are adding a new .toml file you will need to add support to `install_rocm_from_artifacts.py`.<br>
> Adding libraries to existing components, (such as including a new library in the `blas` component) requires no script changes.
### Step-by-Step Guide
Here's how to add support for a hypothetical component called `newcomponent`:
#### Step 1: Verify the Artifact is Built
Ensure your component's artifact is properly defined in CMake and built:
```bash
# Check that the artifact is created during build
cmake --build build
ls build/artifacts/newcomponent_*
```
You should see artifacts like:
- `newcomponent_lib_gfx110X`
- `newcomponent_test_gfx110X`
- etc.
#### Step 2: Add Command-Line Argument
Open `build_tools/install_rocm_from_artifacts.py` and add a new argument in the `artifacts_group`:
```python
artifacts_group.add_argument(
"--rccl",
default=False,
help="Include 'rccl' artifacts",
action=argparse.BooleanOptionalAction,
)
artifacts_group.add_argument(
"--newcomponent",
default=False,
help="Include 'newcomponent' artifacts",
action=argparse.BooleanOptionalAction,
)
artifacts_group.add_argument(
"--tests",
default=False,
help="Include all test artifacts for enabled libraries",
action=argparse.BooleanOptionalAction,
)
```
#### Step 3: Add to Artifact Selection Logic
In the `retrieve_artifacts_by_run_id` function, add your component to the conditional logic:
```python
# filepath: \home\bharriso\Source\TheRock\build_tools\install_rocm_from_artifacts.py
if args.base_only:
argv.extend(base_artifact_patterns)
elif any([args.blas, args.fft, args.miopen, args.prim, args.rand, args.rccl, args.newcomponent]):
argv.extend(base_artifact_patterns)
extra_artifacts = []
if args.blas:
extra_artifacts.append("blas")
if args.fft:
extra_artifacts.append("fft")
if args.miopen:
extra_artifacts.append("miopen")
if args.prim:
extra_artifacts.append("prim")
if args.rand:
extra_artifacts.append("rand")
if args.rccl:
extra_artifacts.append("rccl")
if args.rocprofiler_compute:
extra_artifacts.append("rocprofiler-compute")
if args.rocprofiler_systems:
extra_artifacts.append("rocprofiler-systems")
if args.newcomponent:
extra_artifacts.append("newcomponent")
extra_artifact_patterns = [f"{a}_lib" for a in extra_artifacts]
```
#### Step 4: Update Documentation
Add your new component to the command options table in this document (see the table above).
#### Step 5: Test Your Changes
Test that artifacts can be fetched with your new flag:
```bash
# Test with a CI run
python build_tools/install_rocm_from_artifacts.py \
--run-id YOUR_RUN_ID \
--amdgpu-family gfx110X-all \
--newcomponent --tests
```
#### Step 6: Update Test Configuration (Optional)
If you want to add tests for your component in CI, also update `build_tools/github_actions/fetch_test_configurations.py`. See [Adding Tests](./adding_tests.md) for details.