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

Add net8.0 target and AVX-512/Vector512 parsers #23

Merged
merged 30 commits into from
Sep 5, 2023
Merged

Add net8.0 target and AVX-512/Vector512 parsers #23

merged 30 commits into from
Sep 5, 2023

Conversation

nietras
Copy link
Owner

@nietras nietras commented Aug 11, 2023

  • Use nuint for masks and only use Vector512 in 64-bit process.
  • Add benchmark results to benchmarks directory.
  • .NET 8.0 Preview 7 appears to offer nice minor improvements across everything. Some major for floats.

@nietras nietras changed the title Add net8.0 target using preview 7 Add net8.0 target and AVX-512/Vector512 parsers Aug 11, 2023
@nietras
Copy link
Owner Author

nietras commented Aug 12, 2023

BenchmarkDotNet=v0.13.5, OS=Windows 10 (10.0.17763.3287/1809/October2018Update/Redstone5)
Intel Xeon Silver 4316 CPU 2.30GHz, 1 CPU, 40 logical and 20 physical cores
.NET SDK=8.0.100-preview.7.23376.3
  [Host]     : .NET 8.0.0 (8.0.23.37506), X64 RyuJIT AVX2
  Job-TNYKAJ : .NET 8.0.0 (8.0.23.37506), X64 RyuJIT AVX2

Runtime=.NET 8.0  Toolchain=net80  IterationTime=300.0000 ms  
MaxIterationCount=9  MinIterationCount=3  WarmupCount=5  
Method Parser Filler Mean Error StdDev Ratio MB/s Allocated Alloc Ratio
Parse Avx2PackCmpOrMoveMaskTzcnt 0_Assets___ 00000279 49.65 ns 0.636 ns 0.165 ns 1.00 10717.9 - NA
Parse Avx512PackCmpOrMoveMaskTzcnt 0_Assets___ 00000279 46.77 ns 0.801 ns 0.208 ns 1.00 11378.0 - NA
Parse IndexOfAny 0_Assets___ 00000279 387.26 ns 7.467 ns 1.939 ns 1.00 1374.1 - NA
Parse Sse2PackCmpOrMoveMaskTzcnt 0_Assets___ 00000279 57.37 ns 0.844 ns 0.046 ns 1.00 9276.3 - NA
Parse Vector128NrwCmpExtMsbTzcnt 0_Assets___ 00000279 71.10 ns 1.258 ns 0.449 ns 1.00 7485.0 - NA
Parse Vector256NrwCmpExtMsbTzcnt 0_Assets___ 00000279 51.60 ns 0.864 ns 0.308 ns 1.00 10312.0 - NA
Parse Vector512NrwCmpExtMsbTzcnt 0_Assets___ 00000279 48.39 ns 0.578 ns 0.150 ns 1.00 10996.9 - NA
BenchmarkDotNet=v0.13.5, OS=Windows 10 (10.0.17763.3287/1809/October2018Update/Redstone5)
Intel Xeon Silver 4316 CPU 2.30GHz, 1 CPU, 40 logical and 20 physical cores
.NET SDK=8.0.100-preview.7.23376.3
  [Host]     : .NET 8.0.0 (8.0.23.37506), X64 RyuJIT AVX2
  Job-ELMFFO : .NET 7.0.10 (7.0.1023.36312), X64 RyuJIT AVX2
  Job-VWOUDZ : .NET 8.0.0 (8.0.23.37506), X64 RyuJIT AVX2

InvocationCount=Default  IterationTime=300.0000 ms  MinIterationCount=5  
WarmupCount=6  Quotes=False  Reader=String  
Method Runtime Scope Rows Mean Ratio MB MB/s ns/row Allocated Alloc Ratio
Sep______ .NET 7.0 Row 50000 5.478 ms 1.00 29 5326.6 109.6 1.14 KB 1.00
Sylvan___ .NET 7.0 Row 50000 6.268 ms 1.14 29 4655.7 125.4 7.18 KB 6.29
Sep______ .NET 8.0 Row 50000 5.184 ms 0.95 29 5629.1 103.7 1.29 KB 1.13
Sylvan___ .NET 8.0 Row 50000 6.061 ms 1.11 29 4814.4 121.2 7.18 KB 6.29
Sep______ .NET 7.0 Cols 50000 7.120 ms 1.00 29 4098.3 142.4 1.14 KB 1.00
Sylvan___ .NET 7.0 Cols 50000 10.867 ms 1.53 29 2685.2 217.3 7.19 KB 6.28
Sep______ .NET 8.0 Cols 50000 6.497 ms 0.91 29 4491.5 129.9 1.3 KB 1.13
Sylvan___ .NET 8.0 Cols 50000 9.941 ms 1.40 29 2935.5 198.8 7.19 KB 6.28
Sep______ .NET 7.0 Asset 50000 55.868 ms 1.00 29 522.3 1117.4 13800.91 KB 1.00
Sylvan___ .NET 7.0 Asset 50000 74.225 ms 1.33 29 393.1 1484.5 14025.46 KB 1.02
Sep______ .NET 8.0 Asset 50000 51.942 ms 0.93 29 561.8 1038.8 13801.23 KB 1.00
Sylvan___ .NET 8.0 Asset 50000 67.061 ms 1.20 29 435.1 1341.2 14025.01 KB 1.02
BenchmarkDotNet=v0.13.5, OS=Windows 10 (10.0.19044.3086/21H2/November2021Update)
AMD Ryzen 9 5950X, 1 CPU, 32 logical and 16 physical cores
.NET SDK=8.0.100-preview.7.23376.3
  [Host]     : .NET 8.0.0 (8.0.23.37506), X64 RyuJIT AVX2
  Job-IEIWJW : .NET 7.0.10 (7.0.1023.36312), X64 RyuJIT AVX2
  Job-VWGRFR : .NET 8.0.0 (8.0.23.37506), X64 RyuJIT AVX2

InvocationCount=Default  IterationTime=300.0000 ms  MinIterationCount=5  
WarmupCount=6  Quotes=False  Reader=String  
Method Runtime Scope Rows Mean Ratio MB MB/s ns/row Allocated Alloc Ratio
Sep______ .NET 7.0 Row 50000 2.634 ms 1.00 29 11076.8 52.7 1.13 KB 1.00
Sylvan___ .NET 7.0 Row 50000 3.353 ms 1.27 29 8703.7 67.1 7.17 KB 6.33
Sep______ .NET 8.0 Row 50000 2.537 ms 0.96 29 11503.2 50.7 1.13 KB 1.00
Sylvan___ .NET 8.0 Row 50000 3.106 ms 1.18 29 9396.4 62.1 7.17 KB 6.33
Sep______ .NET 7.0 Cols 50000 3.345 ms 1.00 29 8724.8 66.9 1.13 KB 1.00
Sylvan___ .NET 7.0 Cols 50000 5.705 ms 1.71 29 5114.7 114.1 7.18 KB 6.33
Sep______ .NET 8.0 Cols 50000 3.282 ms 0.98 29 8890.3 65.6 1.13 KB 1.00
Sylvan___ .NET 8.0 Cols 50000 5.512 ms 1.65 29 5293.7 110.2 7.18 KB 6.33
Sep______ .NET 7.0 Asset 50000 30.932 ms 1.00 29 943.4 618.6 13799.67 KB 1.00
Sylvan___ .NET 7.0 Asset 50000 43.094 ms 1.39 29 677.2 861.9 14025.03 KB 1.02
Sep______ .NET 8.0 Asset 50000 29.571 ms 0.97 29 986.8 591.4 13799.62 KB 1.00
Sylvan___ .NET 8.0 Asset 50000 30.572 ms 0.99 29 954.5 611.4 14025.23 KB 1.02

@nietras nietras merged commit dc4d738 into main Sep 5, 2023
8 checks passed
@nietras nietras deleted the net8.0 branch September 5, 2023 12:17
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.

2 participants