blob: 37535a923c890f78ad82b6c9c3267c532de74fd9 [file] [log] [blame]
# Copyright 2022 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# An image for running mmperf: https://github.com/mmperf/mmperf.
#
# mmperf benchmarks matrix-multiplication workloads on IREE and various backends
# such as OpenBLAS, MKL, TVM, Halide, CuBLAS, etc.
#
# These backends are included either in this image or as a submodule in the
# mmperf repo. Later versions of Clang, LLVM, Python and Ubuntu are needed
# to satisfy the dependency requirements of the backends.
FROM gcr.io/iree-oss/perf@sha256:0e1c92dde6ec7312c7c92a8ee329892ad83bae4b7968e4f2c98f99ffad3faa48
######## CUDA ########
RUN apt-get update \
&& apt-get install -y \
nvidia-cuda-toolkit \
&& mkdir -p "/usr/nvvm/libdevice" \
&& ln -s "/usr/lib/nvidia-cuda-toolkit/libdevice/libdevice.10.bc" "/usr/nvvm/libdevice/libdevice.10.bc"
##############
######## MKL ########
WORKDIR /install-mkl
RUN wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB \
&& apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB \
&& sh -c 'echo deb https://apt.repos.intel.com/mkl all main > /etc/apt/sources.list.d/intel-mkl.list' \
&& apt-get update \
&& apt-get install -y intel-mkl-64bit-2018.2-046 \
&& rm -rf /install-mkl
WORKDIR /
ENV MKL_DIR="/opt/intel/mkl"
##############
######## OPENBLAS ########
RUN apt-get update \
&& apt-get install -y libopenblas-dev
##############
######## BLIS ########
WORKDIR /install-blis
RUN git clone --recurse-submodules https://github.com/flame/blis \
&& cd blis \
&& ./configure --prefix=/opt/blis --enable-cblas -c amd64 \
&& make -j 32 \
&& make install \
&& rm -rf /install-blis
WORKDIR /
ENV BLIS_DIR="/opt/blis"
##############
######## MMPERF ########
COPY build_tools/docker/context/setup_mmperf.sh /usr/local/bin
ARG MMPERF_SHA="1ebd6b9a72745e88b855c44d7320a92c83508f80"
# Generate a version of mmperf for CPU.
RUN mkdir -p "/usr/local/src/mmperf" \
&& /usr/local/bin/setup_mmperf.sh "/usr/local/src/mmperf" "${MMPERF_SHA}"
ENV MMPERF_REPO_DIR="/usr/local/src/mmperf/mmperf"
############## \