-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mono AOT Benchmarks crash with PlatformNotSupportedException in IndexOfAnyAsciiSearcher.IndexOfAnyCore #106914
Comments
cc @BrzVlad |
/cc @vitek-karas |
This seems to be a regression in 9 - so we should try to fix it. @BrzVlad could you please take a look, seems to be relatively easy to repro. |
Was able to reproduce locally, outside of performance/bdn workflow, with a simple console app. Issue is not related to recent llvm work. I suspect investigation pointed to my PR because the aot compiler (with llvm enabled) used to crash when compiling SPC.dll, with the tests probably working just fine at runtime, falling back to jit instead. This does seem to be a regression from .net8, likely triggered indirectly either by changes in |
We've seen a very similar failure a while back dotnet/performance#4088. |
There were no additions to any of the I don't, at a glance, see any changes to |
Hmmm, actually while Mono defines the ID has part of runtime/src/mono/mono/mini/simd-intrinsics.c Line 5065 in 46c9a4f
Then imports it when runtime/src/mono/mono/mini/simd-intrinsics.c Lines 5420 to 5421 in 46c9a4f
and while runtime/src/mono/mono/mini/mini-llvm.c Lines 9684 to 9690 in 46c9a4f
runtime/src/mono/mono/mini/mini-amd64.c Lines 7576 to 7578 in 46c9a4f
and I don't see anything that would create this type of op, there's only the runtime/src/mono/mono/mini/mini-ops.h Line 992 in 46c9a4f
|
Some more detailed description of the root cause of this issue and potential, non-ideal fix. #107401 |
Description
In the dotnet-runtime-perf pipeline when it runs the micro benchmarks on MonoAOT, any benchmarks which calls IndexOfAnyAsciiSearcher.IndexOfAnyCore internally (e.g.
System.Buffers.Tests.SearchValuesCharTests.IndexOfAnyExcept
) will fail with the following exception:This is consistently reproducible on all the machines in the
Ubuntu.2204.Amd64.Tiger.Perf
queue which has the following set of hardware instrinsics available according to BDN output:HardwareIntrinsics=SSE4.2,AES,BMI1,BMI2,LZCNT,PCLMUL,POPCNT VectorSize=128
.Reproduction Steps
Follow these instructions in the dotnet/performance repo to run the microbenchmarks with
--filter *SearchValuesCharTests.IndexOfAnyExcept*
argument set: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md#dotnet-runtime-testing-for-monoaot.This might not be reproducible depending on the set of intrinsics available on your machine. If needed, we can help give access to a machine from
Ubuntu.2204.Amd64.Tiger.Perf
to debug this on as it is consistently reproducible there.Expected behavior
The benchmark executes successfully
Actual behavior
The benchmark fails to run with the previous exception
Regression?
I believe this was introduced in #105867. The issue is seen in the "Performance linux x64 release mono AOT micro_mono perftiger NoJS False False False net9.0" job in the dotnet-runtime-perf pipeline. The issue first appeared in run 20240812.3 which indicates the following commit range: 15e96fa...96eda8d
Known Workarounds
No response
Configuration
This is reproduced when running benchmarks against versions compiled from
main
.Other information
No response
The text was updated successfully, but these errors were encountered: