Skip to content

perf-analyzer: Add version 2.60.0 - #2350

Merged
luhenry merged 4 commits into
mainfrom
perf-analyzer
Sep 27, 2026
Merged

luhenry merged 4 commits into
mainfrom
perf-analyzer

Conversation

@luhenry

@luhenry luhenry commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

Compiles the Triton Performance Analyzer CLI (C++, with gRPC, protobuf, abseil and curl built from source) and ships it in a py3-none wheel. Upstream publishes no riscv64 wheel.

Mirrors upstream's documented source build; upstream's wheel job runs in NVIDIA's internal CI.

Differs from upstream

  • Built from the r26.04 head commit - no tags; it is the commit the PyPI binary reports
  • TRITON_ENABLE_GPU=OFF - CUDA does not exist on riscv64; drops CUDA shared memory only
  • RapidJSON built from a pinned commit - Rocky 10 does not package it, and 1.1.0 fails with GCC 14
  • -DABSL_USE_UNSCALED_CYCLECLOCK=0 - abseil's riscv64 rdcycle traps on Linux 6.6+ (unscaledcycleclock: remove RISC-V support abseil/abseil-cpp#1644)

Testing

  • runs upstream's perf_analyzer_unit_tests, then perf_analyzer --version from the installed wheel on each interpreter
  • skips the invalid json subcase - it asserts RapidJSON 1.1.0's error code, which later RapidJSON changed
  • skips concurrency_sequence and the serial_sequences subcase of custom_load_sequences - they compare request counts against wall-clock sleeps (the latter reads the counters while the workers are still sending), and failed intermittently on a busy runner: both passed on the first run, then failed on the second with the same sources (522 of an expected 600 +/-10%; per-sequence counts one to two requests apart). The deterministic sequence-to-thread split is covered by Configure threads and Calculate thread ids, which pass.

License: Wheel statically links gRPC, abseil (Apache-2.0), protobuf, re2 (BSD-3-Clause), c-ares (MIT), curl (curl) and libb64, and bundles OpenSSL (Apache-2.0); upstream ships no licence text for them, so the build adds it.

Patches

  • 0001-forward-third-party-repo-tag.patch - To upstream [not submitted yet]. Without it the release branch builds against third_party main (gRPC 1.81.1 instead of 1.54.3). Not riscv64-specific.

Build the Triton Performance Analyzer CLI from the r26.04 head of
triton-inference-server/perf_analyzer (the commit the PyPI 2.60.0 binary
reports) without CUDA, and package it with the repo's own pyproject.toml
as a py3-none-manylinux_2_39_riscv64 wheel.
luhenry added a commit that referenced this pull request Sep 26, 2026
@github-actions

github-actions Bot commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-09-27 16:38 UTC

The unit test asserts RapidJSON 1.1.0's error code for an unescaped
control character (kParseErrorStringEscapeInvalid, 10); RapidJSON after
Tencent/rapidjson@85500e8 reports kParseErrorStringInvalidEncoding (12),
and 1.1.0 itself does not compile with GCC 14.
concurrency_sequence checks completed requests against a sleep-based
expectation (+/-10%), and custom_load_sequences' serial_sequences subcase
compares per-sequence counters read without the stats lock while the
worker threads are still sending. Both passed on the first run and failed
on the second (522 vs 600; 45,44,44 logged after a failed check) with the
same sources, while the deterministic sequence-to-thread split tests
("Configure threads", "Calculate thread ids") passed both times.
The wheel test found perf_analyzer silent: GCC links the non-PIE CLI at
riscv64's default text base 0x10000, and the RPATH auditwheel's patchelf
writes for the grafted libssl/libcrypto moved the first PT_LOAD down to
0xc000 in the built wheel, below the runner's vm.mmap_min_addr (65536),
so the exec is killed before main and the Python wrapper, which ignores
the return code, exits 0 with no output. Raise the base with
-Ttext-segment, as build-pygraphviz.yml does.

PrintVersion() also writes to std::cerr, so the version check has to
capture stderr to see the commit.
@luhenry
luhenry merged commit fb308f9 into main Sep 27, 2026
9 checks passed
@luhenry
luhenry deleted the perf-analyzer branch September 27, 2026 16:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant