#!/bin/bash

# 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
#
# Sets up `mmperf` (https://github.com/mmperf/mmperf).
#
# `mmperf` benchmarks matrix-multiply workloads on IREE and other backends such
# as RUY, TVM, Halide, CuBLAS, etc. Some backends are included as submodules
# in the `mmperf` repo and built from source, and other backends are expected
# to already be installed.
#
# Usage:
#    ./setup_mmperf.sh \
#        <mmperf repo dir> \
#        <mmperf sha>

set -xeuo pipefail

export REPO_DIR=$1
export REPO_SHA=$2

pushd ${REPO_DIR}

mkdir mmperf
pushd mmperf
git init
git fetch --depth 1 https://github.com/mmperf/mmperf.git "${REPO_SHA}"
git checkout ${REPO_SHA}
git submodule update --init --recursive --jobs 8 --depth 1

# Create virtual environment.
python3 -m venv mmperf.venv
source mmperf.venv/bin/activate
pip install -r requirements.txt
pip install -r ./external/llvm-project/mlir/python/requirements.txt

popd # mmperf

# Since the root user clones the mmperf repo, we update permissions so that a
# runner can access this repo.
chmod -R 777 .

# Make sure there are no local changes to the IREE submodule since the workflow
# updates this at each run.
pushd mmperf/external/iree
git restore .
git submodule foreach --recursive git restore .
popd # mmperf/external/iree

popd # ${REPO_DIR}
