rocprofiler-compute Docker Images in GHCR (#1195)
* Initial cleanup of compute workflows and skeleton of ghcr workflow * Add containers-ci.yml, update opensuse and rhel dockerfiles * rename id in rocprofiler-compute-ghcr.yml * Add new line to end of containers-ci.yml * Update action versions for rocprofiler-compute-ghcr.yml * Switch back to SHA for action versions * Add conda set solver classic fix to compute CI dockerfiles * Update conda install for compute Dockerfiles * Change opensuse version to 15.6 in containers-ci.yml * Add fix for ubuntu noble to compute Dockerfile.ubuntu.ci * Add default distro and version to Dockerfile.ubuntu.ci * Updated regex for tarball version * Remove Python3.8 from compute CI Dockerfiles * Change RHEL 9.4 to 9, add retry for compute workflow * Revert name change for compute rhel workflow * update path naming * Remove binutils-gold from Dockerfile.opensuse.ci * Remove conda python installs from Dockerfile.ci files in compute * Change CMake version to 3.21 in compute Dockerfile.ci files * Update checkout actions from v4 to v5
This commit is contained in:
@@ -0,0 +1,136 @@
|
|||||||
|
name: Publish GHCR Packages for rocprofiler-compute CI Images
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: 0 5 * * *
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
paths:
|
||||||
|
- '.github/workflows/rocprofiler-compute-ghcr.yml'
|
||||||
|
- 'projects/rocprofiler-compute/docker/**'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- '.github/workflows/rocprofiler-compute-ghcr.yml'
|
||||||
|
- 'projects/rocprofiler-compute/docker/**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
prepare_matrix_ci:
|
||||||
|
if: github.repository == 'ROCm/rocm-systems'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
matrix_data: ${{ steps.generate_matrix_ci.outputs.matrix_data }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
sparse-checkout: projects/rocprofiler-compute/docker
|
||||||
|
|
||||||
|
- name: Output data for containers matrix
|
||||||
|
working-directory: projects/rocprofiler-compute/docker
|
||||||
|
id: generate_matrix_ci
|
||||||
|
run: |
|
||||||
|
MATRIX_CONTENT=$(cat containers-ci.yml | yq '.matrix' -I=0 -o=json)
|
||||||
|
echo "matrix_data=$MATRIX_CONTENT" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
rocprofiler-compute-ci-gfx:
|
||||||
|
needs: prepare_matrix_ci
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
system: ${{ fromJSON(needs.prepare_matrix_ci.outputs.matrix_data) }}
|
||||||
|
gpu: [ 'gfx94X', 'gfx950' ]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
sparse-checkout: projects/rocprofiler-compute
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set up Docker variables
|
||||||
|
id: setup_vars_gfx
|
||||||
|
run: |
|
||||||
|
if [ ${{ matrix.system.distro }} = "opensuse" ]; then
|
||||||
|
DISTRO_IMAGE="opensuse/leap"
|
||||||
|
elif [ ${{ matrix.system.distro }} = "rhel" ]; then
|
||||||
|
DISTRO_IMAGE="rockylinux/rockylinux"
|
||||||
|
else
|
||||||
|
DISTRO_IMAGE=${{ matrix.system.distro }}
|
||||||
|
fi
|
||||||
|
echo "distro_image=${DISTRO_IMAGE}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
if [ ${{ matrix.system.distro }} = "debian" ]; then
|
||||||
|
DOCKER_FILE=Dockerfile.ubuntu.ci
|
||||||
|
else
|
||||||
|
DOCKER_FILE=Dockerfile.${{ matrix.system.distro }}.ci
|
||||||
|
fi
|
||||||
|
echo "docker_file=${DOCKER_FILE}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Get the latest build of The Rock tarball
|
||||||
|
id: therock
|
||||||
|
run: |
|
||||||
|
sudo apt-get install -y python3-pip
|
||||||
|
python3 -m pip install -U pip
|
||||||
|
python3 -m pip install -U awscli
|
||||||
|
export PATH=~/.local/bin:$PATH
|
||||||
|
KEY=$(aws s3api list-objects-v2 \
|
||||||
|
--bucket therock-nightly-tarball \
|
||||||
|
--no-sign-request \
|
||||||
|
--output json \
|
||||||
|
--query "sort_by(Contents[?contains(Key, 'linux-${{ matrix.gpu }}')], &LastModified)[-1].Key")
|
||||||
|
KEY=${KEY//\"/}
|
||||||
|
test -n "$KEY" || { echo "No ${{ matrix.gpu }} tarball found"; exit 1; }
|
||||||
|
echo "tarball=${KEY}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Extract metadata (tags, labels) for Docker
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f # v5.8.0
|
||||||
|
with:
|
||||||
|
images: ghcr.io/ROCm/rocprofiler-${{ matrix.system.distro }}
|
||||||
|
|
||||||
|
- name: Build CI GFX Container (Does not Push on PR)
|
||||||
|
id: docker_build
|
||||||
|
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||||
|
with:
|
||||||
|
file: projects/rocprofiler-compute/docker/${{ steps.setup_vars_gfx.outputs.docker_file }}
|
||||||
|
platforms: linux/amd64
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
build-args: |
|
||||||
|
DISTRO=${{ steps.setup_vars_gfx.outputs.distro_image }}
|
||||||
|
VERSION=${{ matrix.system.version }}
|
||||||
|
GPU_TYPE=${{ matrix.gpu }}
|
||||||
|
GPU_TARBALL=${{ steps.therock.outputs.tarball }}
|
||||||
|
tags: |
|
||||||
|
ghcr.io/rocm/rocprofiler-${{ matrix.system.distro }}:${{ matrix.system.version }}-compute-ci-${{ matrix.gpu }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
|
||||||
|
# Retry a copy of docker_build if Docker build failed due to intermittent failure
|
||||||
|
- name: Build CI GFX Container Retry (Does not Push on PR)
|
||||||
|
if: steps.docker_build.outcome != 'success'
|
||||||
|
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||||
|
with:
|
||||||
|
file: projects/rocprofiler-compute/docker/${{ steps.setup_vars_gfx.outputs.docker_file }}
|
||||||
|
platforms: linux/amd64
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
build-args: |
|
||||||
|
DISTRO=${{ steps.setup_vars_gfx.outputs.distro_image }}
|
||||||
|
VERSION=${{ matrix.system.version }}
|
||||||
|
GPU_TYPE=${{ matrix.gpu }}
|
||||||
|
GPU_TARBALL=${{ steps.therock.outputs.tarball }}
|
||||||
|
tags: |
|
||||||
|
ghcr.io/rocm/rocprofiler-${{ matrix.system.distro }}:${{ matrix.system.version }}-compute-ci-${{ matrix.gpu }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
@@ -1,8 +1,5 @@
|
|||||||
# This is a basic workflow to help you get started with Actions
|
name: rocprofiler-compute RHEL
|
||||||
|
|
||||||
name: rocprofiler-compute RHEL 8/9
|
|
||||||
|
|
||||||
# Controls when the workflow will run
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
@@ -32,8 +29,6 @@ on:
|
|||||||
- '!**/.wordlist.txt'
|
- '!**/.wordlist.txt'
|
||||||
- '!projects/rocprofiler-compute/docs/**'
|
- '!projects/rocprofiler-compute/docs/**'
|
||||||
- '!projects/rocprofiler-compute/docker/**'
|
- '!projects/rocprofiler-compute/docker/**'
|
||||||
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
@@ -43,9 +38,8 @@ concurrency:
|
|||||||
env:
|
env:
|
||||||
ROCM_VERSION: "7.2.0"
|
ROCM_VERSION: "7.2.0"
|
||||||
|
|
||||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build-rhel:
|
||||||
# The type of runner that the job will run on
|
# The type of runner that the job will run on
|
||||||
# Using rocprofiler-systems images and later installing rocm, the official rocm images for al8 red hat variant are too large- this is a workaround.
|
# Using rocprofiler-systems images and later installing rocm, the official rocm images for al8 red hat variant are too large- this is a workaround.
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -56,6 +50,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os-release: [ '8.10', '9.4' ]
|
os-release: [ '8.10', '9.4' ]
|
||||||
build-type: ['Release']
|
build-type: ['Release']
|
||||||
|
|
||||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
# Note- RHEL8 references python3.9 as python39, whereas RHEL9 default version is already 3.9, so we only need to call it as python3
|
# Note- RHEL8 references python3.9 as python39, whereas RHEL9 default version is already 3.9, so we only need to call it as python3
|
||||||
steps:
|
steps:
|
||||||
@@ -75,6 +70,7 @@ jobs:
|
|||||||
yum -y install cmake3
|
yum -y install cmake3
|
||||||
yum -y install which
|
yum -y install which
|
||||||
yum -y install glibc-langpack-en
|
yum -y install glibc-langpack-en
|
||||||
|
|
||||||
- name: Install ROCm Packages
|
- name: Install ROCm Packages
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
uses: nick-fields/retry@v3
|
uses: nick-fields/retry@v3
|
||||||
@@ -92,10 +88,12 @@ jobs:
|
|||||||
yum install -y https://repo.radeon.com/amdgpu-install/${ROCM_MAJOR}.${ROCM_MINOR}/rhel/9.4/amdgpu-install-${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1.el9.noarch.rpm
|
yum install -y https://repo.radeon.com/amdgpu-install/${ROCM_MAJOR}.${ROCM_MINOR}/rhel/9.4/amdgpu-install-${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1.el9.noarch.rpm
|
||||||
fi
|
fi
|
||||||
yum install -y rocm-dev
|
yum install -y rocm-dev
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
sparse-checkout: projects/rocprofiler-compute
|
sparse-checkout: projects/rocprofiler-compute
|
||||||
|
|
||||||
- name: Install Python prereqs
|
- name: Install Python prereqs
|
||||||
working-directory: projects/rocprofiler-compute
|
working-directory: projects/rocprofiler-compute
|
||||||
run: |
|
run: |
|
||||||
@@ -109,11 +107,13 @@ jobs:
|
|||||||
cd build
|
cd build
|
||||||
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocprofiler-compute -DPYTEST_NUMPROCS=4 ..
|
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocprofiler-compute -DPYTEST_NUMPROCS=4 ..
|
||||||
make install
|
make install
|
||||||
|
|
||||||
- name: CTest- Analyze Commands
|
- name: CTest- Analyze Commands
|
||||||
working-directory: projects/rocprofiler-compute
|
working-directory: projects/rocprofiler-compute
|
||||||
run: |
|
run: |
|
||||||
cd build
|
cd build
|
||||||
ctest --verbose -R test_analyze_commands
|
ctest --verbose -R test_analyze_commands
|
||||||
|
|
||||||
- name: CTest- Analyze Workloads
|
- name: CTest- Analyze Workloads
|
||||||
working-directory: projects/rocprofiler-compute
|
working-directory: projects/rocprofiler-compute
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
# This is a basic workflow to help you get started with Actions
|
|
||||||
|
|
||||||
name: rocprofiler-compute Ubuntu 22.04
|
name: rocprofiler-compute Ubuntu 22.04
|
||||||
|
|
||||||
on:
|
on:
|
||||||
@@ -31,8 +29,6 @@ on:
|
|||||||
- '!**/.wordlist.txt'
|
- '!**/.wordlist.txt'
|
||||||
- '!projects/rocprofiler-compute/docs/**'
|
- '!projects/rocprofiler-compute/docs/**'
|
||||||
- '!projects/rocprofiler-compute/docker/**'
|
- '!projects/rocprofiler-compute/docker/**'
|
||||||
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
@@ -40,7 +36,7 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build-ubuntu-jammy:
|
||||||
# The type of runner that the job will run on
|
# The type of runner that the job will run on
|
||||||
# https://hub.docker.com/r/rocm/dev-ubuntu-22.04/tags
|
# https://hub.docker.com/r/rocm/dev-ubuntu-22.04/tags
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -54,15 +50,18 @@ jobs:
|
|||||||
apt-get install -y git
|
apt-get install -y git
|
||||||
apt-get install -y python3-pip
|
apt-get install -y python3-pip
|
||||||
apt-get install -y cmake
|
apt-get install -y cmake
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
sparse-checkout: projects/rocprofiler-compute
|
sparse-checkout: projects/rocprofiler-compute
|
||||||
|
|
||||||
- name: Install Python prereqs
|
- name: Install Python prereqs
|
||||||
working-directory: projects/rocprofiler-compute
|
working-directory: projects/rocprofiler-compute
|
||||||
run: |
|
run: |
|
||||||
python3 -m pip install -r requirements.txt
|
python3 -m pip install -r requirements.txt
|
||||||
python3 -m pip install -r requirements-test.txt
|
python3 -m pip install -r requirements-test.txt
|
||||||
|
|
||||||
- name: Configure and install
|
- name: Configure and install
|
||||||
working-directory: projects/rocprofiler-compute
|
working-directory: projects/rocprofiler-compute
|
||||||
run: |
|
run: |
|
||||||
@@ -70,11 +69,13 @@ jobs:
|
|||||||
cd build
|
cd build
|
||||||
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocprofiler-compute -DPYTEST_NUMPROCS=4 ..
|
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocprofiler-compute -DPYTEST_NUMPROCS=4 ..
|
||||||
make install
|
make install
|
||||||
|
|
||||||
- name: CTest- Analyze Commands
|
- name: CTest- Analyze Commands
|
||||||
working-directory: projects/rocprofiler-compute
|
working-directory: projects/rocprofiler-compute
|
||||||
run: |
|
run: |
|
||||||
cd build
|
cd build
|
||||||
ctest --verbose -R test_analyze_commands
|
ctest --verbose -R test_analyze_commands
|
||||||
|
|
||||||
- name: CTest- Analyze Workloads
|
- name: CTest- Analyze Workloads
|
||||||
working-directory: projects/rocprofiler-compute
|
working-directory: projects/rocprofiler-compute
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -2,19 +2,17 @@ ARG DISTRO=opensuse/leap
|
|||||||
ARG VERSION=15.3
|
ARG VERSION=15.3
|
||||||
FROM ${DISTRO}:${VERSION}
|
FROM ${DISTRO}:${VERSION}
|
||||||
|
|
||||||
ENV HOME /root
|
ENV HOME=/root
|
||||||
ENV SHELL /bin/bash
|
ENV SHELL=/bin/bash
|
||||||
ENV BASH_ENV /etc/bash.bashrc
|
ENV BASH_ENV=/etc/bash.bashrc
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
WORKDIR /tmp
|
WORKDIR /tmp
|
||||||
SHELL [ "/bin/bash", "-c" ]
|
SHELL [ "/bin/bash", "-c" ]
|
||||||
|
|
||||||
ENV PATH /usr/local/bin:${PATH}
|
ENV PATH=/usr/local/bin:${PATH}
|
||||||
|
|
||||||
ARG EXTRA_PACKAGES=""
|
ARG EXTRA_PACKAGES=""
|
||||||
# ARG ELFUTILS_DOWNLOAD_VERSION="0.186"
|
|
||||||
# ARG NJOBS="12"
|
|
||||||
|
|
||||||
RUN set +e; \
|
RUN set +e; \
|
||||||
zypper --non-interactive -i --gpg-auto-import-keys refresh; \
|
zypper --non-interactive -i --gpg-auto-import-keys refresh; \
|
||||||
@@ -26,23 +24,23 @@ RUN set +e; \
|
|||||||
RUN zypper --non-interactive update -y && \
|
RUN zypper --non-interactive update -y && \
|
||||||
zypper --non-interactive dist-upgrade -y && \
|
zypper --non-interactive dist-upgrade -y && \
|
||||||
zypper --non-interactive install -y -t pattern devel_basis && \
|
zypper --non-interactive install -y -t pattern devel_basis && \
|
||||||
zypper --non-interactive install -y python3-pip gcc-c++ git dpkg-devel rpm-build curl wget binutils-gold && \
|
zypper --non-interactive install -y python3-pip gcc-c++ git dpkg-devel rpm-build curl wget && \
|
||||||
python3 -m pip install 'cmake==3.28.4' && \
|
python3 -m pip install 'cmake==3.21' && \
|
||||||
zypper --non-interactive clean --all
|
zypper --non-interactive clean --all
|
||||||
|
|
||||||
ARG PYTHON_VERSIONS="6 7 8 9 10 11 12"
|
# The Rock Tarball
|
||||||
|
ARG GPU_TYPE=""
|
||||||
RUN wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh && \
|
ARG GPU_TARBALL=""
|
||||||
bash miniconda.sh -b -p /opt/conda && \
|
RUN if [ -n "$GPU_TYPE" ] && [ -n "$GPU_TARBALL" ]; then \
|
||||||
export PATH="/opt/conda/bin:${PATH}" && \
|
VERSION=$(echo "$GPU_TARBALL" | sed -nE 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'); \
|
||||||
conda config --set always_yes yes --set changeps1 no && \
|
if [ -z "$VERSION" ]; then \
|
||||||
conda update -c defaults -n base conda && \
|
echo "Error: Could not extract version from GPU_TARBALL ('$GPU_TARBALL')." >&2; \
|
||||||
for i in ${PYTHON_VERSIONS}; do conda create -n py3.${i} -c defaults -c conda-forge python=3.${i} pip numpy; done && \
|
exit 1; \
|
||||||
for i in ${PYTHON_VERSIONS}; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy pandas dataclasses; done && \
|
fi; \
|
||||||
conda clean -a -y && \
|
python3 -m pip install -U awscli; \
|
||||||
cd /tmp && \
|
aws s3 cp "s3://therock-nightly-tarball/${GPU_TARBALL}" rocm-${VERSION}-${GPU_TYPE}.tar.gz --no-sign-request; \
|
||||||
shopt -s dotglob extglob && \
|
mv rocm-${VERSION}-${GPU_TYPE}.tar.gz /opt/rocm-${VERSION}-${GPU_TYPE}.tar.gz; \
|
||||||
rm -rf *
|
fi
|
||||||
|
|
||||||
WORKDIR /home
|
WORKDIR /home
|
||||||
SHELL [ "/bin/bash", "--login", "-c" ]
|
SHELL [ "/bin/bash", "--login", "-c" ]
|
||||||
|
|||||||
@@ -1,42 +1,39 @@
|
|||||||
|
|
||||||
ARG DISTRO=rockylinux
|
ARG DISTRO=rockylinux
|
||||||
ARG VERSION=8
|
ARG VERSION=8
|
||||||
FROM ${DISTRO}:${VERSION}
|
FROM ${DISTRO}:${VERSION}
|
||||||
|
|
||||||
ENV HOME /root
|
ENV HOME=/root
|
||||||
ENV SHELL /bin/bash
|
ENV SHELL=/bin/bash
|
||||||
ENV BASH_ENV /etc/bash.bashrc
|
ENV BASH_ENV=/etc/bash.bashrc
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
WORKDIR /tmp
|
WORKDIR /tmp
|
||||||
SHELL [ "/bin/bash", "-c" ]
|
SHELL [ "/bin/bash", "-c" ]
|
||||||
|
|
||||||
ENV PATH /usr/local/bin:${PATH}
|
ENV PATH=/usr/local/bin:${PATH}
|
||||||
|
|
||||||
ARG EXTRA_PACKAGES=""
|
ARG EXTRA_PACKAGES=""
|
||||||
# ARG ELFUTILS_DOWNLOAD_VERSION="0.186"
|
|
||||||
# ARG NJOBS="12"
|
|
||||||
|
|
||||||
RUN yum groupinstall -y "Development Tools" && \
|
RUN yum groupinstall -y "Development Tools" && \
|
||||||
yum install -y epel-release && \
|
yum install -y epel-release && \
|
||||||
yum install -y --allowerasing curl dpkg-devel python3-pip wget zlib-devel which git && \
|
yum install -y --allowerasing curl dpkg-devel python3-pip wget zlib-devel which git && \
|
||||||
yum clean all && \
|
yum clean all && \
|
||||||
python3 -m pip install --upgrade pip && \
|
python3 -m pip install --upgrade pip && \
|
||||||
python3 -m pip install 'cmake==3.28.4'
|
python3 -m pip install 'cmake==3.21'
|
||||||
|
|
||||||
ARG PYTHON_VERSIONS="6 7 8 9 10 11 12"
|
# The Rock Tarball
|
||||||
|
ARG GPU_TYPE=""
|
||||||
RUN wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh && \
|
ARG GPU_TARBALL=""
|
||||||
bash miniconda.sh -b -p /opt/conda && \
|
RUN if [ -n "$GPU_TYPE" ] && [ -n "$GPU_TARBALL" ]; then \
|
||||||
export PATH="/opt/conda/bin:${PATH}" && \
|
VERSION=$(echo "$GPU_TARBALL" | sed -nE 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'); \
|
||||||
conda config --set always_yes yes --set changeps1 no && \
|
if [ -z "$VERSION" ]; then \
|
||||||
conda update -c defaults -n base conda && \
|
echo "Error: Could not extract version from GPU_TARBALL ('$GPU_TARBALL')." >&2; \
|
||||||
for i in ${PYTHON_VERSIONS}; do conda create -n py3.${i} -c defaults -c conda-forge python=3.${i} pip numpy; done && \
|
exit 1; \
|
||||||
for i in ${PYTHON_VERSIONS}; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy pandas dataclasses; done && \
|
fi; \
|
||||||
conda clean -a -y && \
|
python3 -m pip install -U awscli; \
|
||||||
cd /tmp && \
|
aws s3 cp "s3://therock-nightly-tarball/${GPU_TARBALL}" rocm-${VERSION}-${GPU_TYPE}.tar.gz --no-sign-request; \
|
||||||
shopt -s dotglob extglob && \
|
mv rocm-${VERSION}-${GPU_TYPE}.tar.gz /opt/rocm-${VERSION}-${GPU_TYPE}.tar.gz; \
|
||||||
rm -rf *
|
fi
|
||||||
|
|
||||||
WORKDIR /home
|
WORKDIR /home
|
||||||
SHELL [ "/bin/bash", "--login", "-c" ]
|
SHELL [ "/bin/bash", "--login", "-c" ]
|
||||||
|
|||||||
@@ -1,48 +1,52 @@
|
|||||||
|
ARG DISTRO=ubuntu
|
||||||
ARG DISTRO
|
ARG VERSION=22.04
|
||||||
ARG VERSION
|
|
||||||
FROM ${DISTRO}:${VERSION}
|
FROM ${DISTRO}:${VERSION}
|
||||||
|
|
||||||
ENV HOME /root
|
ENV HOME=/root
|
||||||
ENV LANG C.UTF-8
|
ENV LANG=C.UTF-8
|
||||||
ENV SHELL /bin/bash
|
ENV SHELL=/bin/bash
|
||||||
ENV BASH_ENV /etc/bash.bashrc
|
ENV BASH_ENV=/etc/bash.bashrc
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
WORKDIR /tmp
|
WORKDIR /tmp
|
||||||
SHELL [ "/bin/bash", "-c" ]
|
SHELL [ "/bin/bash", "-c" ]
|
||||||
|
|
||||||
ARG EXTRA_PACKAGES=""
|
ARG EXTRA_PACKAGES=""
|
||||||
# ARG ELFUTILS_DOWNLOAD_VERSION="0.186"
|
|
||||||
# ARG BOOST_DOWNLOAD_VERSION="1.79.0"
|
|
||||||
# ARG NJOBS="12"
|
|
||||||
ARG PYTHON_VERSIONS="6 7 8 9 10 11 12"
|
|
||||||
|
|
||||||
ENV PATH /usr/local/bin:${PATH}
|
|
||||||
ENV LIBRARY_PATH /usr/local/lib:/usr/local/lib64:${LIBRARY_PATH}
|
|
||||||
ENV LD_LIBRARY_PATH /usr/local/lib:/usr/local/lib64:${LD_LIBRARY_PATH}
|
|
||||||
ENV CMAKE_PREFIX_PATH /usr/local:${CMAKE_PREFIX_PATH}
|
|
||||||
|
|
||||||
|
ENV PATH="/usr/local/bin:${PATH}"
|
||||||
|
ENV LIBRARY_PATH="/usr/local/lib:/usr/local/lib64"
|
||||||
|
ENV LD_LIBRARY_PATH="/usr/local/lib:/usr/local/lib64"
|
||||||
|
ENV CMAKE_PREFIX_PATH="/usr/local"
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get dist-upgrade -y && \
|
apt-get dist-upgrade -y && \
|
||||||
apt-get install -y autoconf autotools-dev bash-completion build-essential bzip2 cmake curl environment-modules git-core gnupg2 gzip libtool locales lsb-release m4 python3-pip unzip wget zip zlib1g-dev && \
|
apt-get install -y autoconf autotools-dev bash-completion build-essential bzip2 cmake curl environment-modules git-core gnupg2 gzip libtool locales lsb-release m4 python3-pip unzip wget zip zlib1g-dev && \
|
||||||
python3 -m pip install 'cmake==3.28.4' && \
|
|
||||||
apt-get autoclean && \
|
apt-get autoclean && \
|
||||||
locale -a && \
|
locale -a
|
||||||
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh && \
|
|
||||||
bash miniconda.sh -b -p /opt/conda && \
|
|
||||||
export PATH="/opt/conda/bin:${PATH}" && \
|
|
||||||
conda config --set always_yes yes --set changeps1 no && \
|
|
||||||
conda update -c defaults -n base conda && \
|
|
||||||
for i in ${PYTHON_VERSIONS}; do conda create -n py3.${i} -c defaults -c conda-forge python=3.${i} pip numpy; done && \
|
|
||||||
for i in ${PYTHON_VERSIONS}; do /opt/conda/envs/py3.${i}/bin/python -m pip install numpy pandas dataclasses; done && \
|
|
||||||
conda clean -a -y && \
|
|
||||||
cd /tmp && \
|
|
||||||
shopt -s dotglob extglob && \
|
|
||||||
rm -rf *
|
|
||||||
|
|
||||||
|
RUN OS_VERSION=$(grep '^VERSION_ID=' /etc/os-release | cut -d'=' -f2 | tr -d '"') && \
|
||||||
|
OS_ID=$(grep '^ID=' /etc/os-release | cut -d'=' -f2 | tr -d '"') && \
|
||||||
|
if [ "${OS_ID}" == "ubuntu" ] && [ "${OS_VERSION}" == "22.04" ]; then \
|
||||||
|
python3 -m pip install 'cmake==3.21'; \
|
||||||
|
else \
|
||||||
|
python3 -m pip install --break-system-packages 'cmake==3.21'; \
|
||||||
|
fi
|
||||||
|
|
||||||
ENV LC_ALL C.UTF-8
|
# The Rock Tarball
|
||||||
|
ARG GPU_TYPE=""
|
||||||
|
ARG GPU_TARBALL=""
|
||||||
|
RUN if [ -n "$GPU_TYPE" ] && [ -n "$GPU_TARBALL" ]; then \
|
||||||
|
VERSION=$(echo "$GPU_TARBALL" | sed -nE 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'); \
|
||||||
|
if [ -z "$VERSION" ]; then \
|
||||||
|
echo "Error: Could not extract version from GPU_TARBALL ('$GPU_TARBALL')." >&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
pip install --upgrade pip; \
|
||||||
|
pip install awscli --break-system-packages; \
|
||||||
|
aws s3 cp "s3://therock-nightly-tarball/${GPU_TARBALL}" rocm-${VERSION}-${GPU_TYPE}.tar.gz --no-sign-request; \
|
||||||
|
mv rocm-${VERSION}-${GPU_TYPE}.tar.gz /opt/rocm-${VERSION}-${GPU_TYPE}.tar.gz; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
ENV LC_ALL=C.UTF-8
|
||||||
WORKDIR /home
|
WORKDIR /home
|
||||||
SHELL [ "/bin/bash", "--login", "-c" ]
|
SHELL [ "/bin/bash", "--login", "-c" ]
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Supported OS combinations for continuous integration
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
# ubuntu
|
||||||
|
- distro: "ubuntu"
|
||||||
|
version: "22.04"
|
||||||
|
- distro: "ubuntu"
|
||||||
|
version: "24.04"
|
||||||
|
# opensuse
|
||||||
|
- distro: "opensuse"
|
||||||
|
version: "15.6"
|
||||||
|
# RHEL8
|
||||||
|
- distro: "rhel"
|
||||||
|
version: "8.10"
|
||||||
|
# RHEL9
|
||||||
|
- distro: "rhel"
|
||||||
|
version: "9"
|
||||||
Reference in New Issue
Block a user