Inline GPU capability checks for pow2 heuristics
This commit is contained in:
1 parent
75586d07b8
commit
b2a7190c14
2 files changed
+2
-13
No files matched your search
@@ -73,7 +73,7 @@ internal static class PrimeOrderGpuHeuristics
|
||||
|
||||
PrimeOrderGpuCapability capability = s_capability;
|
||||
|
||||
if (!SupportsPrime(prime, capability))
|
||||
if (prime.GetBitLength() > capability.ModulusBits)
|
||||
{
|
||||
overflowRegistry[prime] = 0;
|
||||
return GpuPow2ModStatus.Overflow;
|
||||
@@ -81,7 +81,7 @@ internal static class PrimeOrderGpuHeuristics
|
||||
|
||||
for (int i = 0; i < exponents.Length; i++)
|
||||
{
|
||||
if (!SupportsExponent(exponents[i], capability))
|
||||
if (exponents[i].GetBitLength() > capability.ExponentBits)
|
||||
{
|
||||
return GpuPow2ModStatus.Overflow;
|
||||
}
|
||||
@@ -91,16 +91,6 @@ internal static class PrimeOrderGpuHeuristics
|
||||
return computed ? GpuPow2ModStatus.Success : GpuPow2ModStatus.Unavailable;
|
||||
}
|
||||
|
||||
private static bool SupportsPrime(ulong prime, PrimeOrderGpuCapability capability)
|
||||
{
|
||||
return prime.GetBitLength() <= capability.ModulusBits;
|
||||
}
|
||||
|
||||
private static bool SupportsExponent(ulong exponent, PrimeOrderGpuCapability capability)
|
||||
{
|
||||
return exponent.GetBitLength() <= capability.ExponentBits;
|
||||
}
|
||||
|
||||
private static bool TryComputeOnGpu(ReadOnlySpan<ulong> exponents, ulong prime, Span<ulong> results)
|
||||
{
|
||||
try
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
- Inline the PrimeOrderGpuHeuristics capability checks at each call site and delete the temporary SupportsPrime/SupportsExponent helpers once the overflow gating is stable.
|
||||
- Swap PrimeOrderGpuHeuristics.Pow2ModCpu for the existing Pow2MontgomeryModWindowed helper and plan the same windowed ladder for the GPU kernel implementation.
|
||||
- Extend the GPU numeric type probe to cover proposed custom types such as GpuUInt256 and GpuUInt512 once their definitions are available so we can plan the wide-order heuristics on the device.
|
||||
Reference in new issue
Block a user