Merge pull request #78 from RadeonOpenCompute/dev-complete

Updates for ROCm4.1 dockerfiles
This commit is contained in:
Peng
2021-03-23 21:29:38 -05:00
committed by GitHub
11 changed files with 184 additions and 20 deletions

View File

@@ -1,4 +1,7 @@
FROM centos:7
LABEL maintainer=peng.sun@amd.com
ARG ROCM_VERSION=4.1
# Base
RUN yum -y install git java-1.8.0-openjdk python; yum clean all
@@ -8,6 +11,7 @@ RUN yum --enablerepo=extras install -y epel-release
# Install required base build and packaging commands for ROCm
RUN yum -y install \
ca-certificates \
bc \
bridge-utils \
cmake \
@@ -71,7 +75,7 @@ RUN yum install -y devtoolset-7-libatomic-devel devtoolset-7-elfutils-libelf-dev
# Install the ROCm rpms
RUN yum clean all
RUN echo -e "[ROCm]\nname=ROCm\nbaseurl=http://repo.radeon.com/rocm/yum/3.9\nenabled=1\ngpgcheck=0" >> /etc/yum.repos.d/rocm.repo
RUN echo -e "[ROCm]\nname=ROCm\nbaseurl=https://repo.radeon.com/rocm/yum/$ROCM_VERSION\nenabled=1\ngpgcheck=0" >> /etc/yum.repos.d/rocm.repo
RUN yum install -y rocm-dev

View File

@@ -0,0 +1,90 @@
FROM centos:7
LABEL maintainer=peng.sun@amd.com
ARG ROCM_VERSION=4.1
# Base
RUN yum -y install git java-1.8.0-openjdk python; yum clean all
# Enable epel-release repositories
RUN yum --enablerepo=extras install -y epel-release
# Install required base build and packaging commands for ROCm
RUN yum -y install \
ca-certificates \
bc \
bridge-utils \
cmake \
cmake3 \
devscripts \
dkms \
doxygen \
dpkg \
dpkg-dev \
dpkg-perl \
elfutils-libelf-devel \
expect \
file \
gettext \
gcc-c++ \
libgcc \
glibc.i686 \
libcxx-devel \
ncurses \
ncurses-base \
ncurses-libs \
numactl-devel \
numactl-libs \
libssh \
libunwind-devel \
libunwind \
llvm \
llvm-libs \
make \
openssl \
openssl-libs \
openssh \
openssh-clients \
pciutils \
pciutils-devel \
pciutils-libs \
python \
python-pip \
python-devel \
pkgconfig \
pth \
qemu-kvm \
re2c \
kmod \
file \
rpm \
rpm-build \
subversion \
wget
# Enable the epel repository for fakeroot
RUN yum --enablerepo=extras install -y fakeroot
RUN yum clean all
# On CentOS, install package centos-release-scl available in CentOS repository:
RUN yum install -y centos-release-scl
# Install the devtoolset-7 collection:
RUN yum install -y devtoolset-7
RUN yum install -y devtoolset-7-libatomic-devel devtoolset-7-elfutils-libelf-devel
# Install the ROCm rpms
RUN yum clean all
RUN echo -e "[ROCm]\nname=ROCm\nbaseurl=https://repo.radeon.com/rocm/yum/$ROCM_VERSION\nenabled=1\ngpgcheck=0" >> /etc/yum.repos.d/rocm.repo
RUN yum install -y rocm-dev rocm-libs
# Set ENV to enable devtoolset7 by default
ENV PATH=/opt/rh/devtoolset-7/root/usr/bin:/opt/rocm/hcc/bin:/opt/rocm/hip/bin:/opt/rocm/bin:/opt/rocm/hcc/bin:${PATH:+:${PATH}}
ENV MANPATH=/opt/rh/devtoolset-7/root/usr/share/man:${MANPATH}
ENV INFOPATH=/opt/rh/devtoolset-7/root/usr/share/info${INFOPATH:+:${INFOPATH}}
ENV PCP_DIR=/opt/rh/devtoolset-7/root
ENV PERL5LIB=/opt/rh/devtoolset-7/root//usr/lib64/perl5/vendor_perl:/opt/rh/devtoolset-7/root/usr/lib/perl5:/opt/rh/devtoolset-7/root//usr/share/perl5/
ENV LD_LIBRARY_PATH=/opt/rocm/lib:/usr/local/lib:/opt/rh/devtoolset-7/root$rpmlibdir$rpmlibdir32${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
ENV PYTHONPATH=/opt/rh/devtoolset-7/root/usr/lib64/python$pythonvers/site-packages:/opt/rh/devtoolset-7/root/usr/lib/python$pythonvers/
ENV LDFLAGS="-Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib64 -Wl,-rpath=/opt/rh/devtoolset-7/root/usr/lib"

View File

@@ -1,12 +0,0 @@
# This dockerfile is meant to serve as a rocm base image. It registers the dnf rocm package repository, and
# installs the rocm-dev package.
FROM fedora:24
LABEL maintainer=kent.knox@amd
# Register the ROCM package repository, and install rocm-dev package
RUN dnf -y update \
&& printf "[remote]\nname=ROCm Repo\nbaseurl=http://repo.radeon.com/rocm/yum/rpm/\nenabled=1\ngpgcheck=0\n" | tee /etc/yum.repos.d/rocm.repo \
&& dnf -y install \
rocm-dev \
&& dnf -y clean all

View File

@@ -5,9 +5,10 @@ FROM ubuntu:18.04
LABEL maintainer=peng.sun@amd.com
# Register the ROCM package repository, and install rocm-dev package
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends curl libnuma-dev gnupg \
&& curl -sL http://repo.radeon.com/rocm/rocm.gpg.key | apt-key add - \
&& printf "deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main" | tee /etc/apt/sources.list.d/rocm.list \
ARG ROCM_VERSION=4.1
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl libnuma-dev gnupg \
&& curl -sL https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add - \
&& printf "deb [arch=amd64] https://repo.radeon.com/rocm/apt/$ROCM_VERSION/ xenial main" | tee /etc/apt/sources.list.d/rocm.list \
&& apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
sudo \
libelf1 \

View File

@@ -0,0 +1,21 @@
# This dockerfile is meant to serve as a rocm base image. It registers the debian rocm package repository, and
# installs the rocm-dev package.
FROM ubuntu:18.04
LABEL maintainer=peng.sun@amd.com
# Register the ROCM package repository, and install rocm-dev package
ARG ROCM_VERSION=4.1
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl libnuma-dev gnupg \
&& curl -sL https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add - \
&& printf "deb [arch=amd64] https://repo.radeon.com/rocm/apt/$ROCM_VERSION/ xenial main" | tee /etc/apt/sources.list.d/rocm.list \
&& apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
sudo \
libelf1 \
kmod \
file \
rocm-dev \
rocm-libs \
build-essential && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

View File

@@ -5,9 +5,10 @@ FROM ubuntu:20.04
LABEL maintainer=peng.sun@amd.com
# Register the ROCM package repository, and install rocm-dev package
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends curl libnuma-dev gnupg \
&& curl -sL http://repo.radeon.com/rocm/rocm.gpg.key | apt-key add - \
&& printf "deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main" | tee /etc/apt/sources.list.d/rocm.list \
ARG ROCM_VERSION=4.1
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl libnuma-dev gnupg \
&& curl -sL https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add - \
&& printf "deb [arch=amd64] https://repo.radeon.com/rocm/apt/$ROCM_VERSION/ xenial main" | tee /etc/apt/sources.list.d/rocm.list \
&& apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
sudo \
libelf1 \

View File

@@ -0,0 +1,21 @@
# This dockerfile is meant to serve as a rocm base image. It registers the debian rocm package repository, and
# installs the rocm-dev package.
FROM ubuntu:20.04
LABEL maintainer=peng.sun@amd.com
# Register the ROCM package repository, and install rocm-dev package
ARG ROCM_VERSION=4.1
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl libnuma-dev gnupg \
&& curl -sL https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add - \
&& printf "deb [arch=amd64] https://repo.radeon.com/rocm/apt/$ROCM_VERSION/ xenial main" | tee /etc/apt/sources.list.d/rocm.list \
&& apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
sudo \
libelf1 \
kmod \
file \
rocm-dev \
rocm-libs \
build-essential && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

View File

@@ -0,0 +1,12 @@
#| This Dockerfile provides a compatibility check for ROCm docker container.
ARG base_image
FROM ${base_image}
MAINTAINER Peng Sun <peng.sun@amd.com>
COPY scripts/compatibility-check.sh /opt/rocm/bin/rocm-compatibility-test.sh
RUN chmod a+x /opt/rocm/bin/rocm-compatibility-test.sh
ENTRYPOINT ["/opt/rocm/bin/rocm-compatibility-test.sh"]
# Default to a login shell
CMD ["/bin/bash", "-l"]

View File

@@ -15,9 +15,10 @@ MAINTAINER Peng Sun <Peng.Sun@amd.com>
# Initialize the image
# Modify to pre-install dev tools and ROCm packages
ARG ROCM_VERSION=4.1
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends curl gnupg && \
curl -sL http://repo.radeon.com/rocm/rocm.gpg.key | apt-key add - && \
sh -c 'echo deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main > /etc/apt/sources.list.d/rocm.list' && \
sh -c 'echo deb [arch=amd64] http://repo.radeon.com/rocm/apt/$ROCM_VERSION/ xenial main > /etc/apt/sources.list.d/rocm.list' && \
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
sudo \
libelf1 \

View File

@@ -0,0 +1,12 @@
#| This Dockerfile provides a compatibility check for ROCm docker container.
ARG base_image
FROM ${base_image}
MAINTAINER Peng Sun <peng.sun@amd.com>
COPY scripts/compatibility-check.sh /opt/rocm/bin/rocm-compatibility-test.sh
RUN sudo chmod a+x /opt/rocm/bin/rocm-compatibility-test.sh
ENTRYPOINT ["/opt/rocm/bin/rocm-compatibility-test.sh"]
# Default to a login shell
CMD ["/bin/bash", "-l"]

13
scripts/compatibility-check.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
/opt/rocm/bin/rocminfo 2>&1 | /bin/grep "HSA Error" > /dev/null
if [ $? -eq 0 ]
then
echo "Error: Incompatible ROCm environment."
echo "The Docker container requires the latest kernel driver to operate correctly."
echo "Upgrade the ROCm kernel to v4.1 or newer, or use a container tagged for v4.0.1 or older."
echo "For more information, see"
echo "https://rocmdocs.amd.com/en/latest/Current_Release_Notes/Current-Release-Notes.html#"
exit 1
fi
exec "$@"