Skip to content
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

EgorBot for hamarb123 in #99596 #273

Open
EgorBot opened this issue Jan 29, 2025 · 2 comments
Open

EgorBot for hamarb123 in #99596 #273

EgorBot opened this issue Jan 29, 2025 · 2 comments

Comments

@EgorBot
Copy link
Owner

EgorBot commented Jan 29, 2025

Processing dotnet/runtime#99596 (comment) command:

Command

-intel -amd

using BenchmarkDotNet.Attributes;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

public class Benchmarks
{
    private int[] source = null!;
    private int[] dest = null!;

    [Params(1, 4, 8, 16, 64, 256, 1024, 16384)]
    public int N;

    [GlobalSetup]
    public void Setup()
    {
        source = new int[N];
        dest = new int[N];
        new Random(42).NextBytes(MemoryMarshal.AsBytes(source.AsSpan()));
    }

    //test to see if the new codegen using shuf over perm is meaningfully faster
    [Benchmark]
    public void TestReverseEndianness() => System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(source, dest);
}

(EgorBot will reply in this issue)

@EgorBot
Copy link
Owner Author

EgorBot commented Jan 29, 2025

Benchmark results on linux_azure_genoa

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 9V74, 1 CPU, 8 logical and 4 physical cores
  Job-NZEGIC : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
  Job-KRDJMP : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
Method Toolchain N Mean Error Ratio
TestReverseEndianness Main 1 2.130 ns 0.0005 ns 1.00
TestReverseEndianness PR 1 2.181 ns 0.0005 ns 1.02
TestReverseEndianness Main 4 2.112 ns 0.0011 ns 1.00
TestReverseEndianness PR 4 2.112 ns 0.0005 ns 1.00
TestReverseEndianness Main 8 1.846 ns 0.0045 ns 1.00
TestReverseEndianness PR 8 2.115 ns 0.0011 ns 1.15
TestReverseEndianness Main 16 2.129 ns 0.0104 ns 1.00
TestReverseEndianness PR 16 2.223 ns 0.0107 ns 1.04
TestReverseEndianness Main 64 4.905 ns 0.0009 ns 1.00
TestReverseEndianness PR 64 4.906 ns 0.0015 ns 1.00
TestReverseEndianness Main 256 20.959 ns 0.4269 ns 1.00
TestReverseEndianness PR 256 21.124 ns 0.4491 ns 1.01
TestReverseEndianness Main 1024 74.340 ns 0.0685 ns 1.00
TestReverseEndianness PR 1024 73.255 ns 0.0610 ns 0.99
TestReverseEndianness Main 16384 1,288.386 ns 0.1772 ns 1.00
TestReverseEndianness PR 16384 1,272.751 ns 0.1428 ns 0.99

BDN_Artifacts.zip

cc @hamarb123 (agent_logs.txt). EgorBot manual: link.

@EgorBot
Copy link
Owner Author

EgorBot commented Jan 29, 2025

Benchmark results on linux_azure_cascadelake

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 8 logical and 4 physical cores
  Job-QECZCG : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
  Job-UTMNHM : .NET 10.0.0 (42.42.42.42424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
Method Toolchain N Mean Error Ratio
TestReverseEndianness Main 1 2.672 ns 0.0039 ns 1.00
TestReverseEndianness PR 1 2.876 ns 0.0007 ns 1.08
TestReverseEndianness Main 4 2.412 ns 0.0029 ns 1.00
TestReverseEndianness PR 4 2.414 ns 0.0075 ns 1.00
TestReverseEndianness Main 8 2.044 ns 0.0139 ns 1.00
TestReverseEndianness PR 8 2.045 ns 0.0030 ns 1.00
TestReverseEndianness Main 16 2.433 ns 0.0069 ns 1.00
TestReverseEndianness PR 16 2.482 ns 0.0062 ns 1.02
TestReverseEndianness Main 64 6.432 ns 0.0311 ns 1.00
TestReverseEndianness PR 64 6.425 ns 0.0652 ns 1.00
TestReverseEndianness Main 256 19.812 ns 0.0287 ns 1.00
TestReverseEndianness PR 256 19.923 ns 0.0283 ns 1.01
TestReverseEndianness Main 1024 77.652 ns 0.0253 ns 1.00
TestReverseEndianness PR 1024 77.094 ns 0.0158 ns 0.99
TestReverseEndianness Main 16384 1,732.283 ns 0.2492 ns 1.00
TestReverseEndianness PR 16384 1,735.780 ns 0.0807 ns 1.00

BDN_Artifacts.zip

cc @hamarb123 (agent_logs.txt). EgorBot manual: link.

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

No branches or pull requests

1 participant