Multiple python versions (#42)

* Support multiple Python versions in single build

* RPATH + Split up config into config and runtime

* pybind11 submodule

* Docker build updates
This commit is contained in:
Jonathan R. Madsen
2022-04-21 21:36:07 -05:00
zatwierdzone przez GitHub
rodzic d98e60a17f
commit 4db6ba3d28
37 zmienionych plików z 1554 dodań i 870 usunięć
+12 -1
Wyświetl plik
@@ -16,7 +16,7 @@ RUN yum update -y && \
yum groupinstall -y "Development Tools" && \
yum install -y centos-release-scl && \
yum install -y epel-release && \
yum install -y devtoolset-9 python3-pip openmpi3-devel zlib-devel numactl-devel papi-devel dpkg-devel dpkg-dev && \
yum install -y devtoolset-9 python3-pip openmpi3-devel zlib-devel numactl-devel papi-devel dpkg-devel dpkg-dev wget && \
python3 -m pip install 'cmake==3.18.4'
ARG AMDGPU_RPM=21.40.2/rhel/7.9/amdgpu-install-21.40.2.40502-1.el7.noarch.rpm
@@ -28,6 +28,17 @@ RUN yum install -y https://repo.radeon.com/amdgpu-install/${AMDGPU_RPM} && \
yum update -y && \
yum clean all
ARG PYTHON_VERSIONS="6 7 8 9"
RUN 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 python=3.${i} pip; done && \
conda clean -a -y && \
conda init
RUN ln -s /opt/rocm-* /opt/rocm
WORKDIR /home
+12 -1
Wyświetl plik
@@ -15,7 +15,7 @@ ENV PATH /usr/local/bin:${PATH}
RUN zypper update -y && \
zypper dist-upgrade -y && \
zypper install -y -t pattern devel_basis && \
zypper install -y python3-pip openmpi3-devel gcc-c++ git libnuma-devel dpkg-devel rpm-build && \
zypper install -y python3-pip openmpi3-devel gcc-c++ git libnuma-devel dpkg-devel rpm-build wget && \
python3 -m pip install 'cmake==3.18.4'
# ARG AMDGPU_RPM=21.40.2/sle/15/amdgpu-install-21.40.2.40502-1.noarch.rpm
@@ -28,5 +28,16 @@ RUN zypper --no-gpg-checks install -y https://repo.radeon.com/amdgpu-install/${A
zypper install -y rocm-hip-sdk roctracer-dev rocm-smi-lib rocprofiler-dev && \
zypper clean --all
ARG PYTHON_VERSIONS="6 7 8 9"
RUN 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 python=3.${i} pip; done && \
conda clean -a -y && \
conda init
WORKDIR /home
SHELL [ "/bin/bash", "--login", "-c" ]
+13 -3
Wyświetl plik
@@ -17,18 +17,28 @@ SHELL [ "/bin/bash", "-c" ]
ARG EXTRA_PACKAGES=""
ARG ROCM_REPO_VERSION="debian"
ARG ROCM_REPO_DIST="ubuntu"
ARG PYTHON_VERSIONS="6 7 8 9"
ENV PATH ${HOME}/.local/bin:${PATH}
RUN apt-get update && \
apt-get dist-upgrade -y && \
apt-get install -y build-essential cmake libnuma-dev wget gnupg2 m4 bash-completion git-core autoconf libtool autotools-dev python3-pip lsb-release libpapi-dev libpfm4-dev libudev-dev && \
apt-get install -y build-essential cmake libnuma-dev wget gnupg2 m4 bash-completion git-core autoconf libtool autotools-dev python3-pip lsb-release libpapi-dev libpfm4-dev libudev-dev libopenmpi-dev rpm librpm-dev && \
python3 -m pip install 'cmake==3.18.4' && \
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add - && \
echo "deb [arch=amd64] https://repo.radeon.com/rocm/apt/${ROCM_REPO_VERSION}/ ${ROCM_REPO_DIST} main" | tee /etc/apt/sources.list.d/rocm.list && \
apt-get update && \
apt-get dist-upgrade -y && \
apt-get install -y rocm-dev rocm-utils roctracer-dev rocprofiler-dev hip-base hsa-amd-aqlprofile hsa-rocr-dev hsakmt-roct-dev ${EXTRA_PACKAGES}
apt-get install -y rocm-dev rocm-utils roctracer-dev rocprofiler-dev hip-base hsa-amd-aqlprofile hsa-rocr-dev hsakmt-roct-dev ${EXTRA_PACKAGES} && \
apt-get autoclean
RUN 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 python=3.${i} pip; done && \
conda clean -a -y && \
conda init
ENV LC_ALL C.UTF-8
WORKDIR /home
+36 -27
Wyświetl plik
@@ -1,27 +1,16 @@
#!/usr/bin/env bash
if [ ! -f CMakeLists.txt ]; then
echo "Error! Execute script from source directory"
exit 1
if [ ! -f ../CMakeLists.txt ]; then
echo "Error! Execute script from source directory"
exit 1
else
cd ..
fi
fi
set -e
build-release()
{
CONTAINER=$1
OS=$2
ROCM_VERSION=$3
CODE_VERSION=$4
MPI=$4
docker run -it --rm -v ${PWD}:/home/omnitrace --env DISTRO=${OS} --env ROCM_VERSION=${ROCM_VERSION} --env VERSION=${CODE_VERSION} --env MPI=${MPI} ${CONTAINER} /home/omnitrace/scripts/build-release.sh
}
: ${DISTRO:=ubuntu}
: ${VERSIONS:=20.04 18.04}
: ${ROCM_VERSIONS:=5.0 4.5 4.3}
: ${MPI:=0}
send-error()
{
echo -e "\nError: ${@}"
@@ -34,6 +23,25 @@ verbose-run()
eval $@
}
build-release()
{
CONTAINER=$1
OS=$2
ROCM_VERSION=$3
CODE_VERSION=$4
shift
shift
shift
shift
verbose-run docker run -it --rm -v ${PWD}:/home/omnitrace --env DISTRO=${OS} --env ROCM_VERSION=${ROCM_VERSION} --env VERSION=${CODE_VERSION} --env PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\" ${CONTAINER} /home/omnitrace/scripts/build-release.sh ${@}
}
: ${DISTRO:=ubuntu}
: ${VERSIONS:=20.04 18.04}
: ${ROCM_VERSIONS:=5.0 4.5 4.3}
: ${MPI:=0}
: ${PYTHON_VERSIONS:=6 7 8 9}
n=0
while [[ $# -gt 0 ]]
do
@@ -50,16 +58,17 @@ do
shift
ROCM_VERSIONS=${1}
;;
"--python-versions")
shift
PYTHON_VERSIONS=${1}
;;
"--")
shift
SCRIPT_ARGS=${@}
break
;;
*)
if [ "${n}" -eq 0 ]; then
DISTRO=${1}
elif [ "${n}" -eq 1 ]; then
VERSIONS=${1}
elif [ "${n}" -eq 2 ]; then
ROCM_VERSIONS=${1}
else
send-error "Unsupported argument at position $((${n} + 1)) :: ${1}"
fi
send-error "Unsupported argument at position $((${n} + 1)) :: ${1}"
;;
esac
n=$((${n} + 1))
@@ -73,6 +82,6 @@ do
TAG=${DISTRO}-${VERSION}
for ROCM_VERSION in ${ROCM_VERSIONS}
do
build-release jrmadsen/omnitrace-${TAG}-rocm-${ROCM_VERSION} ${DISTRO}-${VERSION} ${ROCM_VERSION} ${CODE_VERSION} ${MPI}
build-release jrmadsen/omnitrace-${TAG}-rocm-${ROCM_VERSION} ${DISTRO}-${VERSION} ${ROCM_VERSION} ${CODE_VERSION} ${SCRIPT_ARGS}
done
done
+9 -5
Wyświetl plik
@@ -3,6 +3,7 @@
: ${ROCM_VERSIONS:="5.0 4.5 4.3"}
: ${DISTRO:=ubuntu}
: ${VERSIONS:=20.04 18.04}
: ${PYTHON_VERSIONS:="6 7 8 9"}
: ${CI:=""}
set -e
@@ -35,6 +36,10 @@ do
shift
ROCM_VERSIONS=${1}
;;
"--python-versions")
shift
PYTHON_VERSIONS=${1}
;;
*)
if [ "${n}" -eq 0 ]; then
DISTRO=${1}
@@ -65,17 +70,16 @@ do
ROCM_REPO_DIST="ubuntu"
ROCM_REPO_VERSION=${i}
case "${i}" in
5.0*)
5.1*)
ROCM_REPO_VERSION="debian"
;;
4.1* | 4.0*)
ROCM_REPO_DIST="xenial"
;;
*)
send-error "Unsupported combination :: ${DISTRO}-${VERSION} + ROCm ${i}"
;;
esac
verbose-run docker build . -f ${DOCKER_FILE} --tag jrmadsen/omnitrace-${DISTRO}-${VERSION}-rocm-${i} --build-arg DISTRO=${DISTRO} --build-arg VERSION=${VERSION} --build-arg ROCM_REPO_VERSION=${ROCM_REPO_VERSION} --build-arg ROCM_REPO_DIST=${ROCM_REPO_DIST}
verbose-run docker build . -f ${DOCKER_FILE} --tag jrmadsen/omnitrace-${DISTRO}-${VERSION}-rocm-${i} --build-arg DISTRO=${DISTRO} --build-arg VERSION=${VERSION} --build-arg ROCM_REPO_VERSION=${ROCM_REPO_VERSION} --build-arg ROCM_REPO_DIST=${ROCM_REPO_DIST} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\"
elif [ "${DISTRO}" = "centos" ]; then
case "${VERSION}" in
7)
@@ -106,7 +110,7 @@ do
send-error "Unsupported combination :: ${DISTRO}-${VERSION} + ROCm ${i}"
;;
esac
verbose-run docker build . -f ${DOCKER_FILE} --tag jrmadsen/omnitrace-${DISTRO}-${VERSION}-rocm-${i} --build-arg DISTRO=${DISTRO} --build-arg VERSION=${VERSION} --build-arg AMDGPU_RPM=${ROCM_RPM}
verbose-run docker build . -f ${DOCKER_FILE} --tag jrmadsen/omnitrace-${DISTRO}-${VERSION}-rocm-${i} --build-arg DISTRO=${DISTRO} --build-arg VERSION=${VERSION} --build-arg AMDGPU_RPM=${ROCM_RPM} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\"
elif [ "${DISTRO}" = "opensuse" ]; then
case "${VERSION}" in
15.*)
@@ -134,7 +138,7 @@ do
send-error "Unsupported combination :: ${DISTRO}-${VERSION} + ROCm ${i}"
;;
esac
verbose-run docker build . -f ${DOCKER_FILE} --tag jrmadsen/omnitrace-${DISTRO}-${VERSION}-rocm-${i} --build-arg DISTRO=${DISTRO_IMAGE} --build-arg VERSION=${VERSION} --build-arg AMDGPU_RPM=${ROCM_RPM}
verbose-run docker build . -f ${DOCKER_FILE} --tag jrmadsen/omnitrace-${DISTRO}-${VERSION}-rocm-${i} --build-arg DISTRO=${DISTRO_IMAGE} --build-arg VERSION=${VERSION} --build-arg AMDGPU_RPM=${ROCM_RPM} --build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\"
fi
done
done