Remove Montgomery data from GPU divisor flow
This commit is contained in:
1 parent
69acd3dad9
commit
46a2178d65
4 files changed
+11
-152
No files matched your search
@@ -1,5 +1,4 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
using PerfectNumbers.Core;
|
||||
|
||||
namespace PerfectNumbers.Core.Gpu;
|
||||
|
||||
@@ -7,32 +6,18 @@ internal readonly struct GpuDivisorPartialData
|
||||
{
|
||||
public readonly ulong Modulus;
|
||||
public readonly ReadOnlyGpuUInt128 ModulusWide;
|
||||
private readonly MontgomeryDivisorData _montgomeryData;
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
private GpuDivisorPartialData(ulong modulus, ReadOnlyGpuUInt128 modulusWide, in MontgomeryDivisorData montgomeryData)
|
||||
private GpuDivisorPartialData(ulong modulus, in ReadOnlyGpuUInt128 modulusWide)
|
||||
{
|
||||
Modulus = modulus;
|
||||
ModulusWide = modulusWide;
|
||||
_montgomeryData = montgomeryData;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static GpuDivisorPartialData Create(ulong modulus)
|
||||
{
|
||||
MontgomeryDivisorData montgomery = MontgomeryDivisorData.FromModulus(modulus);
|
||||
return new GpuDivisorPartialData(modulus, new ReadOnlyGpuUInt128(modulus), in montgomery);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static GpuDivisorPartialData FromMontgomery(in MontgomeryDivisorData divisor)
|
||||
{
|
||||
return new GpuDivisorPartialData(divisor.Modulus, new ReadOnlyGpuUInt128(divisor.Modulus), in divisor);
|
||||
}
|
||||
|
||||
public MontgomeryDivisorData MontgomeryData
|
||||
{
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
get => _montgomeryData;
|
||||
ReadOnlyGpuUInt128 modulusWide = new(modulus);
|
||||
return new GpuDivisorPartialData(modulus, in modulusWide);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user