# Copyright 2025 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

name: PkgCI Sharktank Tests
on:
  workflow_call:
    inputs:
      artifact_run_id:
        type: string
        default: ""
  workflow_dispatch:
    inputs:
      artifact_run_id:
        type: string
        default: ""

jobs:
  tests:
    name: "sharktank_tests :: ${{ matrix.name }}"
    runs-on: ${{ matrix.runs-on }}
    strategy:
      fail-fast: false
      matrix:
        include:
          # CPU
          - name: cpu_task
            target: target_cpu
            rocm-chip: none
            models-config-file: models_cpu_llvm_task.json
            backend: cpu
            iree_test_files: /home/nod/iree_tests_cache
            sku: cpu
            runs-on:
              - self-hosted # must come first
              - persistent-cache
              - Linux
              - X64

          # AMD GPU
          - name: amdgpu_rocm_mi300_gfx942
            rocm-chip: gfx942
            backend: rocm
            iree_test_files: /shark-cache/data/iree-regression-cache
            sku: mi300
            target: target_hip
            runs-on: linux-mi325-1gpu-ossci-iree-org
          - name: amdgpu_rocm_mi308_gfx942
            rocm-chip: gfx942
            backend: rocm
            iree_test_files: /home/esaimana/iree_tests_cache
            sku: mi308
            target: target_hip
            runs-on: nodai-amdgpu-mi308-x86-64

    env:
      VENV_DIR: ${{ github.workspace }}/venv
      PACKAGE_DOWNLOAD_DIR: ${{ github.workspace }}/.packages
      TEST_OUTPUT_ARTIFACTS: ${{ github.workspace }}/model_output_artifacts
      IREE_TEST_FILES: ${{ matrix.iree_test_files }}
    steps:
      - name: Checking out IREE repository
        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
        with:
          submodules: false

      - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v5.4.0
        with:
          # Must match the subset of versions built in pkgci_build_packages.
          python-version: "3.11"

      - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
        if: ${{ inputs.artifact_run_id == '' }}
        with:
          name: linux_x86_64_release_packages
          path: ${{ env.PACKAGE_DOWNLOAD_DIR }}

      - name: Checkout test suites repository
        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
        with:
          repository: iree-org/iree-test-suites
          ref: 612f93663b32ea86ea442e87be549f1056a5de1c
          path: iree-test-suites
          lfs: false

      - name: Setup Python virtual environment
        run: |
          ./build_tools/pkgci/setup_venv.py ${VENV_DIR} \
            --artifact-path=${PACKAGE_DOWNLOAD_DIR} \
            --fetch-gh-workflow=${{ inputs.artifact_run_id }}
          source ${VENV_DIR}/bin/activate
          pip install -e ${{ github.workspace }}/iree-test-suites/sharktank_models
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Run sharktank model tests
        run: |
          source ${VENV_DIR}/bin/activate
          pytest iree-test-suites/sharktank_models \
              -rA \
              --log-cli-level=info \
              --override-ini=xfail_strict=false \
              -m ${{ matrix.target }} \
              --timeout=120 \
              --durations=0 \
              --ignore=iree-test-suites/sharktank_models/benchmarks \
              --ignore=iree-test-suites/sharktank_models/quality_tests
        env:
          HIP_TARGET: ${{ matrix.rocm-chip }}
          ASSET_PATH: ${{ github.workspace }}/iree-test-suites/sharktank_models

      - name: Run quality tests
        run: |
          source ${VENV_DIR}/bin/activate
          pytest \
            iree-test-suites/sharktank_models/quality_tests \
            -rpFe \
            --log-cli-level=info \
            --durations=0 \
            --timeout=1200 \
            --capture=no \
            --test-file-directory=${{ github.workspace }}/tests/external/iree-test-suites/sharktank_models/quality_tests \
            --external-file-directory=${{ github.workspace }}/tests/external/iree-test-suites/test_suite_files
        env:
          ROCM_CHIP: ${{ matrix.rocm-chip }}
          SKU: ${{ matrix.sku }}
          IREE_TEST_FILES: ${{ env.IREE_TEST_FILES }}
          BACKEND: ${{ matrix.backend }}


      # Since the benchmark tests require compiled model files, this step must run after the quality tests
      - name: Run benchmark tests
        run: |
          source ${VENV_DIR}/bin/activate
          pytest \
            iree-test-suites/sharktank_models/benchmarks \
            --log-cli-level=info \
            --retries=7 \
            --timeout=600 \
            --test-file-directory=${{ github.workspace }}/tests/external/iree-test-suites/sharktank_models/benchmarks \
            --external-file-directory=${{ github.workspace }}/tests/external/iree-test-suites/test_suite_files

          echo "$(<${JOB_SUMMARY_PATH}/job_summary.md )" >> $GITHUB_STEP_SUMMARY
        env:
          ROCM_CHIP: ${{ matrix.rocm-chip }}
          SKU: ${{ matrix.sku }}
          IREE_TEST_FILES: ${{ env.IREE_TEST_FILES }}
          BACKEND: ${{ matrix.backend }}
          JOB_SUMMARY_PATH: ${{ github.workspace }}/iree-test-suites


  # These temporary tests are designed for targets who do not have cached
  # artifacts and unable to run quality and benchmark tests
  # TODO (geomin12): add cached artifact support for w7900
  model-test:
    name: "sharktank_model_tests :: ${{ matrix.name }}"
    runs-on: ${{ matrix.runs-on }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: rocm_hip_w7900
            rocm-chip: gfx1100
            target: target_hip
            runs-on: [Linux, X64, iree-w7900x2, persistent-cache]
    env:
      VENV_DIR: ${{ github.workspace }}/venv
      PACKAGE_DOWNLOAD_DIR: ${{ github.workspace }}/.packages
      TEST_OUTPUT_ARTIFACTS: ${{ github.workspace }}/model_output_artifacts
    steps:
      - name: Checking out IREE repository
        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
        with:
          submodules: false

      - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v5.4.0
        with:
          # Must match the subset of versions built in pkgci_build_packages.
          python-version: "3.11"

      - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
        if: ${{ inputs.artifact_run_id == '' }}
        with:
          name: linux_x86_64_release_packages
          path: ${{ env.PACKAGE_DOWNLOAD_DIR }}

      - name: Checkout test suites repository
        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
        with:
          repository: iree-org/iree-test-suites
          ref: 612f93663b32ea86ea442e87be549f1056a5de1c
          path: iree-test-suites
          lfs: false

      - name: Setup Python virtual environment
        run: |
          ./build_tools/pkgci/setup_venv.py ${VENV_DIR} \
            --artifact-path=${PACKAGE_DOWNLOAD_DIR} \
            --fetch-gh-workflow=${{ inputs.artifact_run_id }}
          source ${VENV_DIR}/bin/activate
          pip install -e ${{ github.workspace }}/iree-test-suites/sharktank_models
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Run sharktank model tests
        run: |
          source ${VENV_DIR}/bin/activate
          pytest iree-test-suites/sharktank_models \
              -rA \
              --log-cli-level=info \
              --override-ini=xfail_strict=false \
              -m ${{ matrix.target }} \
              --timeout=120 \
              --durations=0 \
              --ignore=iree-test-suites/sharktank_models/benchmarks \
              --ignore=iree-test-suites/sharktank_models/quality_tests
        env:
          HIP_TARGET: ${{ matrix.rocm-chip }}
          ASSET_PATH: ${{ github.workspace }}/iree-test-suites/sharktank_models
