six is used in develop, but wasn't used in the GCN staging branch. Change-Id: Ic1ca42df871d1e683c288282497267d00421609f Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/32235 Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com> Reviewed-by: Jason Lowe-Power <power.jg@gmail.com> Maintainer: Jason Lowe-Power <power.jg@gmail.com> Tested-by: kokoro <noreply+kokoro@google.com>
150 lines
5.3 KiB
Docker
150 lines
5.3 KiB
Docker
FROM ubuntu:16.04
|
|
|
|
# Should be minimal needed packages
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
findutils \
|
|
file \
|
|
libunwind8 \
|
|
libunwind-dev \
|
|
pkg-config \
|
|
build-essential \
|
|
gcc-multilib \
|
|
g++-multilib \
|
|
git \
|
|
ca-certificates \
|
|
m4 \
|
|
scons \
|
|
zlib1g \
|
|
zlib1g-dev \
|
|
libprotobuf-dev \
|
|
protobuf-compiler \
|
|
libprotoc-dev \
|
|
libgoogle-perftools-dev \
|
|
python-dev \
|
|
python \
|
|
python-yaml \
|
|
python-six \
|
|
wget \
|
|
libpci3 \
|
|
libelf1 \
|
|
libelf-dev \
|
|
cmake \
|
|
openssl \
|
|
libssl-dev \
|
|
libboost-filesystem-dev \
|
|
libboost-system-dev \
|
|
libboost-dev
|
|
|
|
ARG gem5_dist=http://dist.gem5.org/dist/develop
|
|
|
|
# Install ROCm 1.6 binaries
|
|
RUN wget -qO- ${gem5_dist}/apt_1.6.2.tar.bz2 \
|
|
| tar -xjv \
|
|
&& cd apt_1.6.2/pool/main/ \
|
|
&& dpkg -i h/hsakmt-roct-dev/* \
|
|
&& dpkg -i h/hsa-ext-rocr-dev/* \
|
|
&& dpkg -i h/hsa-rocr-dev/* \
|
|
&& dpkg -i r/rocm-utils/* \
|
|
&& dpkg -i h/hcc/* \
|
|
&& dpkg -i r/rocm-opencl/* \
|
|
&& dpkg -i r/rocm-opencl-dev/*
|
|
|
|
# Get ROCm libraries we need to compile from source (and ROCm-profiler)
|
|
RUN git clone --single-branch https://github.com/ROCm-Developer-Tools/HIP/ && \
|
|
git clone --single-branch https://github.com/ROCmSoftwarePlatform/hipBLAS/ && \
|
|
git clone --single-branch https://github.com/ROCmSoftwarePlatform/rocBLAS/ && \
|
|
git clone --single-branch https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/ && \
|
|
git clone --single-branch https://github.com/ROCmSoftwarePlatform/MIOpen/ && \
|
|
git clone --single-branch https://github.com/RadeonOpenCompute/rocm-cmake/ && \
|
|
git clone --single-branch https://github.com/rocmarchive/ROCm-Profiler.git
|
|
|
|
# Apply patches to various repos
|
|
RUN mkdir -p /patch && cd /patch && \
|
|
wget ${gem5_dist}/rocm_patches/hipBLAS.patch && \
|
|
wget ${gem5_dist}/rocm_patches/hip.patch_v2 && \
|
|
wget ${gem5_dist}/rocm_patches/miopen-conv.patch && \
|
|
wget ${gem5_dist}/rocm_patches/rocBLAS.patch
|
|
|
|
RUN git -C /HIP/ checkout 0e3d824e && git -C /HIP/ apply /patch/hip.patch_v2 && \
|
|
git -C /hipBLAS/ checkout ee57787e && git -C /hipBLAS/ apply /patch/hipBLAS.patch && \
|
|
git -C /rocBLAS/ checkout cbff4b4e && git -C /rocBLAS/ apply /patch/rocBLAS.patch && \
|
|
git -C /MIOpenGEMM/ checkout 9547fb9e && \
|
|
git -C /MIOpen/ checkout 01d6ca55c && git -C /MIOpen/ apply /patch/miopen-conv.patch
|
|
|
|
ENV ROCM_PATH /opt/rocm
|
|
ENV HCC_HOME ${ROCM_PATH}/hcc
|
|
ENV HSA_PATH ${ROCM_PATH}/hsa
|
|
ENV HIP_PATH ${ROCM_PATH}/hip
|
|
ENV HIP_PLATFORM hcc
|
|
ENV PATH ${ROCM_PATH}/bin:${HCC_HOME}/bin:${HSA_PATH}/bin:${HIP_PATH}/bin:${PATH}
|
|
ENV HCC_AMDGPU_TARGET gfx801
|
|
|
|
# Create build dirs for machine learning ROCm installs
|
|
RUN mkdir -p /HIP/build && \
|
|
mkdir -p /rocBLAS/build && \
|
|
mkdir -p /hipBLAS/build && \
|
|
mkdir -p /rocm-cmake/build && \
|
|
mkdir -p /MIOpenGEMM/build && \
|
|
mkdir -p /MIOpen/build
|
|
|
|
# Do the builds, empty build dir to trim image size
|
|
WORKDIR /HIP/build
|
|
RUN cmake .. && make -j$(nproc) && make install && rm -rf *
|
|
|
|
WORKDIR /rocBLAS/build
|
|
RUN CXX=/opt/rocm/bin/hcc cmake -DCMAKE_CXX_FLAGS="--amdgpu-target=gfx801" .. && \
|
|
make -j$(nproc) && make install && rm -rf *
|
|
|
|
WORKDIR /hipBLAS/build
|
|
RUN CXX=/opt/rocm/bin/hcc cmake -DCMAKE_CXX_FLAGS="--amdgpu-target=gfx801" .. && \
|
|
make -j$(nproc) && make install && rm -rf *
|
|
|
|
WORKDIR /rocm-cmake/build
|
|
RUN cmake .. && cmake --build . --target install && rm -rf *
|
|
|
|
WORKDIR /MIOpenGEMM/build
|
|
RUN cmake .. && make miopengemm && make install && rm -rf *
|
|
|
|
# Should link this in as a volume if at all possible
|
|
RUN mkdir -p /.cache/miopen && chmod 777 /.cache/miopen
|
|
|
|
# Un-set default c++ version for MIOpen compilation
|
|
# As MIOpen 1.7 requires c++14 or higher
|
|
RUN sed -i 's/INTERFACE_COMPILE_OPTIONS "-std=c++amp;-fPIC;-gline-tables-only"/#&/' /opt/rocm/hcc-1.0/lib/cmake/hcc/hcc-targets.cmake && \
|
|
sed -i 's/INTERFACE_COMPILE_OPTIONS "-hc"/#&/' /opt/rocm/hcc-1.0/lib/cmake/hcc/hcc-targets.cmake
|
|
|
|
WORKDIR /MIOpen
|
|
# Half is required; This is the version that MIOpen would download
|
|
RUN wget https://github.com/pfultz2/half/archive/1.12.0.tar.gz && \
|
|
tar -xzf 1.12.0.tar.gz
|
|
|
|
WORKDIR /MIOpen/build
|
|
RUN CXX=/opt/rocm/hcc/bin/hcc cmake \
|
|
-DCMAKE_BUILD_TYPE=Debug \
|
|
-DCMAKE_INSTALL_PREFIX=/opt/rocm \
|
|
-DMIOPEN_BACKEND=HIP \
|
|
-DCMAKE_PREFIX_PATH="/opt/rocm/hip;/opt/rocm/hcc;/opt/rocm/rocdl;/opt/rocm/miopengemm;/opt/rocm/hsa" \
|
|
-DMIOPEN_CACHE_DIR=/.cache/miopen \
|
|
-DMIOPEN_AMDGCN_ASSEMBLER_PATH=/opt/rocm/opencl/bin \
|
|
-DHALF_INCLUDE_DIR=/MIOpen/half-1.12.0/include \
|
|
-DCMAKE_CXX_FLAGS="-isystem /usr/include/x86_64-linux-gnu" .. && \
|
|
make -j$(nproc) && make install && rm -rf *
|
|
|
|
# Re-set defaults
|
|
RUN sed -i 's/#\(INTERFACE_COMPILE_OPTIONS "-std=c++amp;-fPIC;-gline-tables-only"\)/\1/' /opt/rocm/hcc-1.0/lib/cmake/hcc/hcc-targets.cmake && \
|
|
sed -i 's/#\(INTERFACE_COMPILE_OPTIONS "-hc"\)/\1/' /opt/rocm/hcc-1.0/lib/cmake/hcc/hcc-targets.cmake
|
|
|
|
# Create performance DB for gfx801.
|
|
WORKDIR /opt/rocm/miopen/share/miopen/db
|
|
RUN cp gfx803_64.cd.pdb.txt gfx801_4.cd.pdb.txt && \
|
|
cp gfx803_64.cd.pdb.txt gfx801_8.cd.pdb.txt && \
|
|
cp gfx803_64.cd.pdb.txt gfx801_16.cd.pdb.txt && \
|
|
cp gfx803_64.cd.pdb.txt gfx801_32.cd.pdb.txt && \
|
|
cp gfx803_64.cd.pdb.txt gfx801_64.cd.pdb.txt
|
|
|
|
# Install profiler from .deb file, works for 1.6.2
|
|
WORKDIR /ROCm-Profiler
|
|
RUN dpkg -i package/rocm-profiler_4.0.6036_amd64.deb
|
|
|
|
WORKDIR /
|