blob: 2daa14e6ee75e1560bc58c83b9bb4c43cf0fa30a [file] [log] [blame]
#!/bin/bash
# Copyright 2023 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 a venv suitable for running IREE Dispatch Profiler and executes
# a suite of runs. This is invoked by a Github workflow and can be invoked
# locally.
#
# Recommend getting default 'python' to be python 3. For example on Debian:
# sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
# Or launch with python=/some/path
#
# Arg 1: The directory where iree-compile, iree-benchmark-module, etc. are
# located. If unset, uses IREE Dispatch Profiler defaults.
# Arg 2: The directory where output is written. If unset, uses
# `dispatch_profiler_output` in current working directory.
set -euo pipefail
TD="$(cd $(dirname $0) && pwd)"
PYTHON="${PYTHON:-python3}"
DISPATCH_PROFILER_IREE_BIN_DIR=${1:-""}
if [[ -z "${DISPATCH_PROFILER_IREE_BIN_DIR}" ]]; then
DISPATCH_PROFILER_IREE_BIN_DIR_FLAG=""
else
DISPATCH_PROFILER_IREE_BIN_DIR_FLAG="--iree-bin-dir=${DISPATCH_PROFILER_IREE_BIN_DIR}"
fi
DISPATCH_PROFILER_OUTPUT_DIR="${2:-"dispatch_profiler_output"}"
DISPATCH_PROFILER_GENERATED_DIR="."
VENV_DIR="dispatch-profiler.venv"
echo "Setting up venv dir: ${VENV_DIR}"
echo "Python: ${PYTHON}"
echo "Python version: $("${PYTHON}" --version)"
echo "Dispatch Profiler IREE bin dir flag: ${DISPATCH_PROFILER_IREE_BIN_DIR_FLAG}"
echo "Dispatch Profiler output dir: ${DISPATCH_PROFILER_OUTPUT_DIR}"
echo "Dispatch profiler generated dir: ${DISPATCH_PROFILER_GENERATED_DIR}"
${PYTHON} -m venv "${VENV_DIR}"
source "${VENV_DIR}/bin/activate"
# Upgrade pip and install requirements. 'python' is used here in order to
# reference to the python executable from the venv.
python -m pip install --upgrade pip
python -m pip install --upgrade -r "${TD}/requirements.txt"
mkdir -p "${DISPATCH_PROFILER_OUTPUT_DIR}"
python "${TD}/generator.py" \
--generated-dir "${DISPATCH_PROFILER_GENERATED_DIR}"
python "${TD}/compile.py" \
${DISPATCH_PROFILER_IREE_BIN_DIR_FLAG} \
--generated-dir "${DISPATCH_PROFILER_GENERATED_DIR}"
python "${TD}/profiler.py" \
${DISPATCH_PROFILER_IREE_BIN_DIR_FLAG} \
--generated-dir "${DISPATCH_PROFILER_GENERATED_DIR}" \
--dispatches="matmul_3456x1024x2048_f16t_f16t_f16t_tile_config_128x128_32x5_tensorcore_mmasync,matmul_3456x1024x2048_f32t_f32t_f32t_tile_config_128x128_16x5_tensorcore_mmasync" \
--output "${DISPATCH_PROFILER_OUTPUT_DIR}/matmul_perf_tensor_core_a100.csv"