Skip to content

Reduce CI per-job wall time #1772

Description

@doraemonmj

Platform

All / Unknown

Runtime Variant

All / Unknown

Summary

Several CI jobs are close to or above 10 minutes. The goal is to reduce the
wall time of each existing job without splitting jobs or changing the current
pre-commit gate.

The initial focus is:

  • st-sim-a2a3
  • st-sim-a5
  • st-onboard-a2a3
  • st-onboard-a5

The solution must support both GitHub-hosted and self-hosted execution. The
self-hosted sim runner also starts from a fresh server for each run, while
Onboard runners have different performance tiers.

Git Commit ID

04791a7

CANN Version

N/A — CI-level optimization across simulation and hardware jobs.

Driver Version

N/A — CI-level optimization across simulation and hardware jobs.

Host Platform

Other (please specify): GitHub-hosted Ubuntu/macOS and self-hosted Linux
runners.

Reproduction

Run the pull request CI on the same commit and record each job's wall time and
the following step groups:

# Group Actions step durations into:
# setup / install / runtime or kernel build / cache / test / DFX

Compare p50 and p90 separately by job, OS, execution path, and anonymous
runner performance tier. Do not combine GitHub-hosted, self-hosted, macOS,
Linux, or different self-hosted tiers into one average.

Expected Performance

  • Reduce the p50 and p90 wall time of the target jobs without splitting them.
  • Keep the existing pre-commit dependency and test semantics.
  • Avoid regressions on slower self-hosted runner tiers.
  • Keep representative per-PR coverage and run lower-frequency coverage in
    Daily CI.

Actual Performance

Recent successful PR CI runs show the following p50 values:

Job / runner Job Install Scene DFX
a2a3sim / Ubuntu 10.9m 2.3m 6.9m 1.2m
a2a3sim / macOS 11.2m 1.8m 7.0m 1.4m
a5sim / Ubuntu 10.5m 2.3m 6.5m 59s
a5sim / macOS 10.9m 2.6m 6.5m 1.0m

Onboard results vary significantly by runner tier: the observed p50 ranges
from 7.4m to 22.7m for a2a3 and from 3.4m to 8.6m for a5.

Profiling Data (Optional)

Scene execution is about 60% of sim ST wall time, while package installation
usually costs another 1.8-2.6 minutes. Package installation currently invokes
the CMake ALL target and can build runtimes that the job does not use.

Additional Context

Planned work:

  • Add coarse step timing for setup, installation, build, cache, test, and DFX.
  • Build only the runtime platform required by each CI job and remove repeated
    installation or runtime build work.
  • Evaluate remote cache by its total restore/save cost and control job-local
    parallelism by runner tier.
  • Re-measure p50 and p90 before changing the per-PR test set.
  • If jobs remain slow, retain representative PR smoke coverage and move
    lower-frequency or redundant cases to Daily CI.

Initial test migration candidates:

  • Move redundant Collective P4 variants on a2a3sim, a5sim, and a2a3 Onboard
    to Daily CI. Keep all P2 cases, one representative Allreduce Ring P4, and
    the invalid-rank check in PR CI.
  • Move the large a5 Onboard Case1 variants for basic Paged Attention, Batch
    Paged Attention, and Unroll Manual Scope when an equivalent small case is
    already in PR CI.
  • Move Benchmark BGEMM, SPMD Paged Attention, 4D Unroll, and similar large
    cases only after adding or promoting an equivalent small PR smoke case.
  • Keep Pod, UT, DFX, SDMA, fault recovery, timeout, cross-device dependency,
    and state-machine tests in PR CI because they provide independent or unique
    coverage.

Acceptance criteria:

  • No job splitting and no change to the pre-commit gate.
  • Before/after p50 and p90 are reported for every affected runner path and
    tier.
  • Cache changes include hit rate, transfer time, and storage size.
  • Every case removed from PR CI records the saved time, retained smoke
    coverage, and its Daily CI destination.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions