Run RISC-V tests with multiple RVV QEMU configurations#19707
Conversation
Given RISC-V allows different hardware implementations to have different vector length (similar to ARM SVE), we want to make sure that we test on different configurations. Luckily, QEMU allows us to simply set a vlen=<128,256,512,...> parameter on QEMU_CPU to emulate different vector length.
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/19707
Note: Links to docs will display an error until the docs builds have been completed. ❌ 2 New Failures, 1 Unrelated Failure, 9 Unclassified FailuresAs of commit e17eca9 with merge base 6ba868e ( NEW FAILURES - The following jobs have failed:
UNCLASSIFIED FAILURES - DrCI could not classify the following jobs because the workflow did not run on the merge base. The failures may be pre-existing on trunk or introduced by this PR:
FLAKY - The following job failed but was likely due to flakiness present on trunk:
This comment was automatically generated by Dr. CI and updates every 15 minutes. |
This PR needs a
|
|
cc @rascani @mergennachin, and @GregoryComer @digantdesai for XNNPACK |
| ) | ||
| if(DEFINED EXECUTORCH_XNNPACK_LOG_LEVEL) | ||
| target_compile_definitions( | ||
| xnnpack-logging PUBLIC XNN_LOG_LEVEL=${EXECUTORCH_XNNPACK_LOG_LEVEL} |
|
@claude review this PR |
|
Claude finished @digantdesai's task in 1m 26s —— View job PR Review: Run RISC-V tests with multiple RVV QEMU configurations
Overall this is a solid PR that adds multi-VLEN QEMU coverage for RVV and integrates XNNPACK microkernel profiling into the CI workflow. A few observations: Workflow Logic (
|
| etdump_path="${output_dir}/${model}_riscv.etdump" | ||
| rm -f "${etdump_path}" | ||
| runner_extra_args+=(--etdump_path="${etdump_path}") |
There was a problem hiding this comment.
Nit: perhaps rename the verbose_xnnpack flag to debug or something else to indicate impact beyond xnnpack build
There was a problem hiding this comment.
Renamed to debug_xnnpack and passing --debug-xnnpack. It's still XNNPACK related but more debug than verbose.
| # segments (e.g. `_gemm_ukernel_`, `_gemm_minmax_ukernel_`, | ||
| # `_gemm_minmax_fp32_ukernel_`, ...). | ||
| _INFIX = r"(?:[a-z0-9]+_)*" | ||
| _KIND_PATTERN = { |
There was a problem hiding this comment.
better way to do this? more maintainable way I guess? pase the type_to_string enum or something?
There was a problem hiding this comment.
Open to suggestions, I'm not the most familiar with XNNPACK and how they name kernels.
pase the type_to_string enum or something?
I'll have a look at what's doable with that.
There was a problem hiding this comment.
Parsing the source file from this py file seems a good starting point. I don't want this to break when we update xnnpack submodule.
It's more aligned with the intent
Summary
This tackles Phase 3 of #18991, in continuation of #19399, #19521, #19617.
Test plan
Exclusively adding CI testing, no new feature. CI will cover the testing.