# 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
#
# Workflow for running compilation benchmarks.
# It is designed to be called from a parent workflow.
# The concurrency of this workflow is controlled by the caller's job.

name: Benchmark Compilation

on:
  workflow_call:
    inputs:
      runner-group:
        required: true
        type: string
      runner-env:
        required: true
        type: string
      e2e-test-artifacts-dir:
        required: true
        type: string
      e2e-test-artifacts-gcs-artifact-dir:
        required: true
        type: string
      e2e-test-artifacts-build-log:
        required: true
        type: string
      e2e-test-artifacts-build-log-gcs-artifact:
        required: true
        type: string
    outputs:
      compile-stats-results:
        description: |
          Local path to the compilation benchmark results.
        value: ${{ jobs.compilation_benchmarks.outputs.compile-stats-results }}
      compile-stats-results-gcs-artifact:
        description: |
          GCS path to the uploaded compilation benchmark results.
        value: ${{ jobs.compilation_benchmarks.outputs.compile-stats-results-gcs-artifact }}

env:
  # This duplicates the variable from ci.yml. The variable needs to be in env
  # instead of the outputs of setup because it contains the run attempt and we
  # want that to be the current attempt, not whatever attempt the setup step
  # last ran in. It therefore can't be passed in via inputs because the env
  # context isn't available there.
  GCS_DIR: gs://iree-github-actions-${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}-artifacts/${{ github.run_id }}/${{ github.run_attempt }}

jobs:
  compilation_benchmarks:
    runs-on:
      - self-hosted # must come first
      - runner-group=${{ inputs.runner-group }}
      - environment=${{ inputs.runner-env }}
      - cpu
      - os-family=Linux
    env:
      E2E_TEST_ARTIFACTS_DIR: ${{ inputs.e2e-test-artifacts-dir }}
      E2E_TEST_ARTIFACTS_GCS_ARTIFACT_DIR: ${{ inputs.e2e-test-artifacts-gcs-artifact-dir }}
      E2E_TEST_ARTIFACTS_BUILD_LOG: ${{ inputs.e2e-test-artifacts-build-log }}
      E2E_TEST_ARTIFACTS_BUILD_LOG_GCS_ARTIFACT: ${{ inputs.e2e-test-artifacts-build-log-gcs-artifact }}
    outputs:
      compile-stats-results: ${{ steps.collect.outputs.compile-stats-results }}
      compile-stats-results-gcs-artifact: ${{ steps.upload.outputs.compile-stats-results-gcs-artifact }}
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
      - name: "Downloading assets"
        id: "download-assets"
        env:
          BENCHMARK_CONFIG: ${{ env.E2E_TEST_ARTIFACTS_DIR }}/compilation-benchmark-config.json
          BENCHMARK_CONFIG_GCS_ARTIFACT: ${{ env.E2E_TEST_ARTIFACTS_GCS_ARTIFACT_DIR }}/compilation-benchmark-config.json
        run: |
          mkdir -p "${E2E_TEST_ARTIFACTS_DIR}"
          gcloud storage cp "${BENCHMARK_CONFIG_GCS_ARTIFACT}" "${BENCHMARK_CONFIG}"
          gcloud storage cp \
            "${E2E_TEST_ARTIFACTS_BUILD_LOG_GCS_ARTIFACT}" \
            "${E2E_TEST_ARTIFACTS_BUILD_LOG}"
          jq -r \
            --arg GCS_ARTIFACT_DIR "${E2E_TEST_ARTIFACTS_GCS_ARTIFACT_DIR}" \
            '.module_dir_paths | map("\($GCS_ARTIFACT_DIR)/\(.)") | join("\n")' \
            "${BENCHMARK_CONFIG}" | \
            gcloud storage cp -r --read-paths-from-stdin \
              "${E2E_TEST_ARTIFACTS_DIR}"
          echo "benchmark-config=${BENCHMARK_CONFIG}" >> "${GITHUB_OUTPUT}"
      - name: "Collecting compilation statistics"
        id: collect
        env:
          BENCHMARK_CONFIG: ${{ steps.download-assets.outputs.benchmark-config }}
          COMPILE_STATS_RESULTS: benchmark-results/compile-stats-results.json
        run: |
          mkdir -p benchmark-results
          ./build_tools/benchmarks/collect_compilation_statistics.py \
            --e2e_test_artifacts_dir="${E2E_TEST_ARTIFACTS_DIR}" \
            --build_log="${E2E_TEST_ARTIFACTS_BUILD_LOG}" \
            --compilation_benchmark_config="${BENCHMARK_CONFIG}" \
            --output="${COMPILE_STATS_RESULTS}"
          echo "compile-stats-results=${COMPILE_STATS_RESULTS}" >> "${GITHUB_OUTPUT}"
      - name: "Uploading benchmark results"
        id: upload
        env:
          COMPILE_STATS_RESULTS: ${{ steps.collect.outputs.compile-stats-results }}
          COMPILE_STATS_RESULTS_GCS_ARTIFACT: ${{ env.GCS_DIR }}/${{ steps.collect.outputs.compile-stats-results }}
        run: |
          gcloud storage cp \
            "${COMPILE_STATS_RESULTS}" \
            "${COMPILE_STATS_RESULTS_GCS_ARTIFACT}"
          echo "compile-stats-results-gcs-artifact=${COMPILE_STATS_RESULTS_GCS_ARTIFACT}" >> "${GITHUB_OUTPUT}"
