Skip to content

Commit 7d7b936

Browse files
authored
Vectorized Multiply (on Avx512) (#45)
* avx512 multiply * Optimize * optimize * optimize * Optimize * Optimize * Simplify * Optimize * Optimize * optimize * Recoment and rename * Optimize * Optimize * Fix benchmarks * Temp refactor * Improved comments * Optimize * Optimize * Optimize * Optimize * Optimize * Optimize * Optimize * Optimize * Optimize * Optimize * Otpimize * Refactor * Clean up comments * Optimize * Optimize * Optimize * Optimize * Optimize * Optimize * Optimize * Revert "Optimize" This reverts commit f380ecf. * Optimize
1 parent 992083e commit 7d7b936

File tree

3 files changed

+206
-62
lines changed

3 files changed

+206
-62
lines changed

src/Nethermind.Int256.Benchmark/Benchmarks.cs

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ public class SignedIntTwoParamBenchmarkBase : SignedBenchmarkBase
8989
public (int, Int256) D;
9090
}
9191

92-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
93-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
92+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
93+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
9494
[MemoryDiagnoser]
9595
public class AddUnsigned : UnsignedTwoParamBenchmarkBase
9696
{
@@ -108,8 +108,8 @@ public UInt256 Add_UInt256()
108108
}
109109
}
110110

111-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
112-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
111+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
112+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
113113
[MemoryDiagnoser]
114114
public class AddSigned : SignedTwoParamBenchmarkBase
115115
{
@@ -127,8 +127,8 @@ public Int256 Add_Int256()
127127
}
128128
}
129129

130-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
131-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
130+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
131+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
132132
[MemoryDiagnoser]
133133
public class SubtractUnsigned : UnsignedTwoParamBenchmarkBase
134134
{
@@ -146,8 +146,8 @@ public UInt256 Subtract_UInt256()
146146
}
147147
}
148148

149-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
150-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
149+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
150+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
151151
[MemoryDiagnoser]
152152
public class SubtractSigned : SignedTwoParamBenchmarkBase
153153
{
@@ -165,8 +165,8 @@ public Int256 Subtract_Int256()
165165
}
166166
}
167167

168-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
169-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
168+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
169+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
170170
[MemoryDiagnoser]
171171
public class AddModUnsinged : UnsignedThreeParamBenchmarkBase
172172
{
@@ -184,8 +184,8 @@ public UInt256 AddMod_UInt256()
184184
}
185185
}
186186

187-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
188-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
187+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
188+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
189189
[MemoryDiagnoser]
190190
public class AddModSinged : SignedThreeParamBenchmarkBase
191191
{
@@ -203,8 +203,8 @@ public Int256 AddMod_Int256()
203203
}
204204
}
205205

206-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
207-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
206+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
207+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
208208
[MemoryDiagnoser]
209209
public class SubtractModUnsinged : UnsignedThreeParamBenchmarkBase
210210
{
@@ -222,8 +222,8 @@ public UInt256 SubtractMod_UInt256()
222222
}
223223
}
224224

225-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
226-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
225+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
226+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
227227
[MemoryDiagnoser]
228228
public class SubtractModSigned : SignedThreeParamBenchmarkBase
229229
{
@@ -241,8 +241,8 @@ public Int256 SubtractMod_Int256()
241241
}
242242
}
243243

244-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
245-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
244+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
245+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
246246
[MemoryDiagnoser]
247247
public class MultiplyUnsigned : UnsignedTwoParamBenchmarkBase
248248
{
@@ -260,8 +260,8 @@ public UInt256 Multiply_UInt256()
260260
}
261261
}
262262

263-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
264-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
263+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
264+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
265265
[MemoryDiagnoser]
266266
public class MultiplySigned : SignedTwoParamBenchmarkBase
267267
{
@@ -279,8 +279,8 @@ public Int256 Multiply_Int256()
279279
}
280280
}
281281

282-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
283-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
282+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
283+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
284284
[MemoryDiagnoser]
285285
public class MultiplyModUnsigned : UnsignedThreeParamBenchmarkBase
286286
{
@@ -298,8 +298,8 @@ public UInt256 MultiplyMod_UInt256()
298298
}
299299
}
300300

301-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
302-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
301+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
302+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
303303
[MemoryDiagnoser]
304304
public class MultiplyModSigned : SignedThreeParamBenchmarkBase
305305
{
@@ -317,8 +317,8 @@ public Int256 MultiplyMod_Int256()
317317
}
318318
}
319319

320-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
321-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
320+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
321+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
322322
[MemoryDiagnoser]
323323
public class DivideUnsigned : UnsignedTwoParamBenchmarkBase
324324
{
@@ -336,8 +336,8 @@ public UInt256 Divide_UInt256()
336336
}
337337
}
338338

339-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
340-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
339+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
340+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
341341
[MemoryDiagnoser]
342342
public class DivideSigned : SignedTwoParamBenchmarkBase
343343
{
@@ -355,8 +355,8 @@ public Int256 Divide_Int256()
355355
}
356356
}
357357

358-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
359-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
358+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
359+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
360360
[MemoryDiagnoser]
361361
public class ExpUnsigned : UnsignedIntTwoParamBenchmarkBase
362362
{
@@ -374,8 +374,8 @@ public UInt256 Exp_UInt256()
374374
}
375375
}
376376

377-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
378-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
377+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
378+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
379379
[MemoryDiagnoser]
380380
public class ExpSigned : SignedIntTwoParamBenchmarkBase
381381
{
@@ -393,8 +393,8 @@ public Int256 Exp_Int256()
393393
}
394394
}
395395

396-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
397-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
396+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
397+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
398398
[MemoryDiagnoser]
399399
public class ExpModUnsigned : UnsignedThreeParamBenchmarkBase
400400
{
@@ -412,8 +412,8 @@ public UInt256 ExpMod_UInt256()
412412
}
413413
}
414414

415-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
416-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
415+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
416+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
417417
[MemoryDiagnoser]
418418
public class ExpModSigned : SignedBenchmarkBase
419419
{
@@ -440,8 +440,8 @@ public Int256 ExpMod_Int256()
440440
}
441441
}
442442

443-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
444-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
443+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
444+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
445445
[MemoryDiagnoser]
446446
public class LeftShiftUnsigned : UnsignedIntTwoParamBenchmarkBase
447447
{
@@ -459,8 +459,8 @@ public UInt256 LeftShift_UInt256()
459459
}
460460
}
461461

462-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
463-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
462+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
463+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
464464
[MemoryDiagnoser]
465465
public class LeftShiftSigned : SignedIntTwoParamBenchmarkBase
466466
{
@@ -478,8 +478,8 @@ public Int256 LeftShift_Int256()
478478
}
479479
}
480480

481-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
482-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
481+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
482+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
483483
[MemoryDiagnoser]
484484
public class RightShiftUnsigned : UnsignedIntTwoParamBenchmarkBase
485485
{
@@ -497,8 +497,8 @@ public UInt256 RightShift_UInt256()
497497
}
498498
}
499499

500-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
501-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
500+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
501+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
502502
[MemoryDiagnoser]
503503
public class RightShiftSigned : SignedIntTwoParamBenchmarkBase
504504
{
@@ -516,8 +516,8 @@ public Int256 RightShift_Int256()
516516
}
517517
}
518518

519-
[SimpleJob(RuntimeMoniker.Net70, baseline: true)]
520-
[NoIntrinsicsJob(RuntimeMoniker.Net70)]
519+
[SimpleJob(RuntimeMoniker.Net90, baseline: true)]
520+
[NoIntrinsicsJob(RuntimeMoniker.Net90)]
521521
[MemoryDiagnoser]
522522
public class IsZeroOne
523523
{

src/Nethermind.Int256.Benchmark/NoIntrinsicsJobAttribute.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22

33
using BenchmarkDotNet.Attributes;
44
using BenchmarkDotNet.Jobs;
@@ -116,6 +116,8 @@ internal static Runtime GetRuntime(this RuntimeMoniker runtimeMoniker)
116116
return CoreRuntime.Core70;
117117
case RuntimeMoniker.Net80:
118118
return CoreRuntime.Core80;
119+
case RuntimeMoniker.Net90:
120+
return CoreRuntime.Core90;
119121
case RuntimeMoniker.Mono:
120122
return MonoRuntime.Default;
121123
case RuntimeMoniker.NativeAot60:

0 commit comments

Comments
 (0)