-
Notifications
You must be signed in to change notification settings - Fork 4
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
[Perf] Linux/x64: 71 Regressions on 7/2/2024 7:47:18 PM #37893
[Perf] Linux/x64: 71 Regressions on 7/2/2024 7:47:18 PM #37893
Comments
Run Information
Regressions in System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>*' System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.Sin(BufferLength: 128)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarAddend(BufferLength: 128)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.Truncate(BufferLength: 128)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.Sin(BufferLength: 3079)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_Vectors(BufferLength: 128)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarAddend(BufferLength: 3079)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarMultiplier(BufferLength: 128)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_Vectors(BufferLength: 3079)ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>*' System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.Max_Vector(BufferLength: 3079)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.Max_Vector(BufferLength: 128)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.Max_Scalar(BufferLength: 128)ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>*' System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.CosineSimilarity(BufferLength: 128)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.FusedMultiplyAdd_Vectors(BufferLength: 3079)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.Truncate(BufferLength: 3079)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.FusedMultiplyAdd_ScalarMultiplier(BufferLength: 3079)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.Sin(BufferLength: 3079)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.FusedMultiplyAdd_ScalarMultiplier(BufferLength: 128)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.Truncate(BufferLength: 128)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.Sin(BufferLength: 128)ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Text.Perf_Utf8Encoding
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Perf_Utf8Encoding*' System.Text.Perf_Utf8Encoding.GetString(Input: Greek)ETL FilesHistogramJIT DisasmsSystem.Text.Perf_Utf8Encoding.GetBytes(Input: EnglishAllAscii)ETL FilesHistogramJIT DisasmsSystem.Text.Perf_Utf8Encoding.GetString(Input: EnglishMostlyAscii)ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>*' System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>.IndexOfMax(BufferLength: 128)ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Buffers.Tests.SearchValuesByteTests
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Buffers.Tests.SearchValuesByteTests*' System.Buffers.Tests.SearchValuesByteTests.IndexOfAnyExcept(Values: "abcdefABCDEF0123456789")ETL FilesHistogramJIT DisasmsSystem.Buffers.Tests.SearchValuesByteTests.IndexOfAny(Values: "abcdefABCDEF0123456789")ETL FilesHistogramJIT DisasmsSystem.Buffers.Tests.SearchValuesByteTests.IndexOfAnyExcept(Values: "abcdefABCDEF0123456789Ü")ETL FilesHistogramJIT DisasmsSystem.Buffers.Tests.SearchValuesByteTests.ContainsAny(Values: "abcdefABCDEF0123456789")ETL FilesHistogramJIT DisasmsSystem.Buffers.Tests.SearchValuesByteTests.ContainsAny(Values: "abcdefABCDEF0123456789Ü")ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository |
Run Information
Regressions in System.Globalization.Tests.StringSearch
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Globalization.Tests.StringSearch*' System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, Ordinal, False))ETL FilesHistogramJIT DisasmsSystem.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, Ordinal, False))ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Buffers.Text.Tests.Base64Tests
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Buffers.Text.Tests.Base64Tests*' System.Buffers.Text.Tests.Base64Tests.Base64IsValid(NumberOfBytes: 1000)ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_Uri
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_Uri*' System.Tests.Perf_Uri.EscapeDataString(input: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.IO.Tests.Perf_File
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Tests.Perf_File*' System.IO.Tests.Perf_File.WriteAllText(size: 10000)ETL FilesHistogramJIT DisasmsSystem.IO.Tests.Perf_File.AppendAllText(size: 10000)ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.IO.Tests.BinaryWriterExtendedTests
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Tests.BinaryWriterExtendedTests*' System.IO.Tests.BinaryWriterExtendedTests.WriteAsciiString(StringLengthInChars: 8000)ETL FilesHistogramJIT DisasmsSystem.IO.Tests.BinaryWriterExtendedTests.WriteAsciiString(StringLengthInChars: 2000000)ETL FilesHistogramJIT DisasmsSystem.IO.Tests.BinaryWriterExtendedTests.WriteAsciiCharArray(StringLengthInChars: 2000000)ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Int32>
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Int32>*' System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Int32>.TrailingZeroCount(BufferLength: 3079)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Int32>.PopCount(BufferLength: 128)ETL FilesHistogramJIT DisasmsSystem.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Int32>.PopCount(BufferLength: 3079)ETL FilesHistogramJIT DisasmsDocsProfiling workflow for dotnet/runtime repository |
@tannergooding is this from dotnet/runtime@c65d921 ? range is dotnet/runtime@745b776...c8e4f2c |
It could be, but its a bit surprising if that's the case? Maybe this is a case where the |
Adding interp intrinsics without updating the jiterpreter will usually regress performance, yes. |
I see, that's a bit unfortunate. I'll keep it in mind for future PRs, however. Is there something we can do in the meantime to improve the handling? I don't see anything in https://github.com/dotnet/runtime/blob/main/src/mono/browser/runtime/jiterpreter-trace-generator.ts or related files that looks to handle the concept of "bitcasting". However, I don't believe WASM needs to track the actual type and the Based on other code, this looks like it'd be roughly: append_ldloc(builder, getArgU16(ip, 2), WasmOpcode.PREFIX_simd, WasmSimdOpcode.v128_load);
append_simd_store(builder, ip); handled as part of |
That all looks right to me. A bitcast would indeed be a no-op in the WASM SIMD128 model since it's all just 'v128'. If the src and dest addresses are the same you can skip the operation entirely, but I don't know how often that would happen. |
Are you aware of any other locations that might need to be updated, or is it mostly relegated to |
The trace generator is the only part of the jiterpreter you should need to modify for most SIMD stuff. The table of intrinsics is automatically generated during the build process. The jiterpreter's statistics system will automatically track which SIMD intrinsics were unhandled during the JIT process (if it's turned on) and you can use that to try and identify where there are coverage gaps. |
Run Information
Regressions in System.Buffers.Tests.SearchValuesCharTests
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
System.Buffers.Tests.SearchValuesCharTests.LastIndexOfAny(Values: "abcdefABCDEF0123456789Ü")
ETL Files
Histogram
JIT Disasms
System.Buffers.Tests.SearchValuesCharTests.ContainsAny(Values: "abcdefABCDEF0123456789")
ETL Files
Histogram
JIT Disasms
System.Buffers.Tests.SearchValuesCharTests.IndexOfAnyExcept(Values: "abcdefABCDEF0123456789Ü")
ETL Files
Histogram
JIT Disasms
System.Buffers.Tests.SearchValuesCharTests.LastIndexOfAnyExcept(Values: "abcdefABCDEF0123456789Ü")
ETL Files
Histogram
JIT Disasms
System.Buffers.Tests.SearchValuesCharTests.LastIndexOfAnyExcept(Values: "abcdefABCDEF0123456789")
ETL Files
Histogram
JIT Disasms
System.Buffers.Tests.SearchValuesCharTests.IndexOfAny(Values: "abcdefABCDEF0123456789")
ETL Files
Histogram
JIT Disasms
System.Buffers.Tests.SearchValuesCharTests.ContainsAny(Values: "abcdefABCDEF0123456789Ü")
ETL Files
Histogram
JIT Disasms
System.Buffers.Tests.SearchValuesCharTests.IndexOfAnyExcept(Values: "abcdefABCDEF0123456789")
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Text.Json.Serialization.Tests.ReadJson<BinaryData>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
System.Text.Json.Serialization.Tests.ReadJson<BinaryData>.DeserializeFromString(Mode: Reflection)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Text.Perf_Ascii
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
System.Text.Perf_Ascii.ToLower_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.EqualsIgnoreCase_ExactlyTheSame_Bytes_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.ToUpper_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.EqualsIgnoreCase_ExactlyTheSame_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.ToLowerInPlace_Bytes(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.ToLowerInPlace_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.IsValid_Bytes(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.ToLower_Bytes_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.Equals_Bytes(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.FromUtf16(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.ToUpperInPlace_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.EqualsIgnoreCase_ExactlyTheSame_Bytes(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.EqualsIgnoreCase_DifferentCase_Bytes(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.Equals_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.ToLower_Bytes(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.EqualsIgnoreCase_DifferentCase_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.TrailingZeroCount(BufferLength: 3079)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.PopCount(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.PopCount(BufferLength: 3079)
ETL Files
Histogram
JIT Disasms
System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.TrailingZeroCount(BufferLength: 128)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Text.Tests.Perf_Encoding
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
System.Text.Tests.Perf_Encoding.GetBytes(size: 512, encName: "ascii")
ETL Files
Histogram
JIT Disasms
System.Text.Tests.Perf_Encoding.GetBytes(size: 512, encName: "utf-8")
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: