From 84c3c23997f3a1707db14b9397a4e510c8a7c3b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Lema=C5=84czyk?= Date: Thu, 25 Sep 2025 00:05:46 +0200 Subject: [PATCH] Formatting --- EvenPerfectBitScanner/Program.cs | 174 +++++++++++++++---------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/EvenPerfectBitScanner/Program.cs b/EvenPerfectBitScanner/Program.cs index 195f355..da839ca 100644 --- a/EvenPerfectBitScanner/Program.cs +++ b/EvenPerfectBitScanner/Program.cs @@ -34,8 +34,8 @@ internal static class Program private static bool _useByDivisorMode; private static bool _byDivisorPrecheckOnly; private static UInt128 _divisor; - private static MersenneNumberDivisorGpuTester? _divisorTester; - private static IMersenneNumberDivisorByDivisorTester? _byDivisorTester; + private static MersenneNumberDivisorGpuTester? _divisorTester; + private static IMersenneNumberDivisorByDivisorTester? _byDivisorTester; private static ulong? _orderWarmupLimitOverride; private static unsafe delegate* _transformP; private static long _state; @@ -448,18 +448,18 @@ internal static class Program } Console.WriteLine($"Loading divisor cycles into memory..."); - if (string.Equals(Path.GetExtension(cyclesPath), ".csv", StringComparison.OrdinalIgnoreCase)) - { - MersenneDivisorCycles.Shared.LoadFrom(cyclesPath); - } - else - { - MersenneDivisorCycles.Shared.LoadFrom(cyclesPath); - } + if (string.Equals(Path.GetExtension(cyclesPath), ".csv", StringComparison.OrdinalIgnoreCase)) + { + MersenneDivisorCycles.Shared.LoadFrom(cyclesPath); + } + else + { + MersenneDivisorCycles.Shared.LoadFrom(cyclesPath); + } - DivisorCycleCache.Shared.ReloadFromCurrentSnapshot(); + DivisorCycleCache.Shared.ReloadFromCurrentSnapshot(); - Console.WriteLine("Divisor cycles are ready"); + Console.WriteLine("Divisor cycles are ready"); if (useByDivisor) { @@ -519,14 +519,14 @@ internal static class Program _divisorTester = new MersenneNumberDivisorGpuTester(); } - else if (useByDivisor) - { - _byDivisorTester = mersenneOnGpu - ? new MersenneNumberDivisorByDivisorGpuTester() - : new MersenneNumberDivisorByDivisorCpuTester(); - _byDivisorTester.BatchSize = scanBatchSize; - _byDivisorTester.UseDivisorCycles = useDivisorCycles; - } + else if (useByDivisor) + { + _byDivisorTester = mersenneOnGpu + ? new MersenneNumberDivisorByDivisorGpuTester() + : new MersenneNumberDivisorByDivisorCpuTester(); + _byDivisorTester.BatchSize = scanBatchSize; + _byDivisorTester.UseDivisorCycles = useDivisorCycles; + } // Load RLE blacklist (optional) if (!string.IsNullOrEmpty(_rleBlacklistPath)) @@ -885,18 +885,18 @@ internal static class Program bool exhausted = false; ulong divisor = 0UL; int activeCount = 0; - Span hitsSpan = default; - int hitIndex = 0; - int index = 0; - bool useCycleFilter = _byDivisorTester!.UseDivisorCycles; - DivisorCycleCache.Lease cycleLease = default; - ulong cycleLeaseStart = 0UL; - ulong cycleLeaseEnd = 0UL; - ulong[]? cycleValues = null; - ulong divisorCycle = 0UL; + Span hitsSpan = default; + int hitIndex = 0; + int index = 0; + bool useCycleFilter = _byDivisorTester!.UseDivisorCycles; + DivisorCycleCache.Lease cycleLease = default; + ulong cycleLeaseStart = 0UL; + ulong cycleLeaseEnd = 0UL; + ulong[]? cycleValues = null; + ulong divisorCycle = 0UL; - try - { + try + { while (true) { if (Volatile.Read(ref remainingStates) == 0) @@ -909,11 +909,11 @@ internal static class Program divisor = AcquireNextDivisor(ref nextDivisor, divisorLimit, ref divisorsExhaustedFlag, ref finalDivisorBits, out exhausted, ref localDivisorCursor, ref localDivisorsRemaining); - if (divisor == 0UL) - { - if (!exhausted) - { - if (Volatile.Read(ref remainingStates) == 0) + if (divisor == 0UL) + { + if (!exhausted) + { + if (Volatile.Read(ref remainingStates) == 0) { break; } @@ -946,48 +946,48 @@ internal static class Program break; } - continue; - } + continue; + } - if (useCycleFilter) - { - if (!cycleLease.IsValid || divisor < cycleLeaseStart || divisor > cycleLeaseEnd) - { - cycleLease.Dispose(); - cycleLease = DivisorCycleCache.Shared.Acquire(divisor); - cycleLeaseStart = cycleLease.Start; - cycleLeaseEnd = cycleLease.End; - cycleValues = cycleLease.Values; - } - else if (cycleValues is null) - { - cycleValues = cycleLease.Values; - } + if (useCycleFilter) + { + if (!cycleLease.IsValid || divisor < cycleLeaseStart || divisor > cycleLeaseEnd) + { + cycleLease.Dispose(); + cycleLease = DivisorCycleCache.Shared.Acquire(divisor); + cycleLeaseStart = cycleLease.Start; + cycleLeaseEnd = cycleLease.End; + cycleValues = cycleLease.Values; + } + else if (cycleValues is null) + { + cycleValues = cycleLease.Values; + } - if (cycleValues is not null && divisor >= cycleLeaseStart) - { - ulong offset = divisor - cycleLeaseStart; - if (offset < (ulong)cycleValues.Length) - { - divisorCycle = cycleValues[(int)offset]; - } - else - { - divisorCycle = cycleLease.GetCycle(divisor); - } - } - else - { - divisorCycle = cycleLease.GetCycle(divisor); - } - } - else - { - divisorCycle = 0UL; - } + if (cycleValues is not null && divisor >= cycleLeaseStart) + { + ulong offset = divisor - cycleLeaseStart; + if (offset < (ulong)cycleValues.Length) + { + divisorCycle = cycleValues[(int)offset]; + } + else + { + divisorCycle = cycleLease.GetCycle(divisor); + } + } + else + { + divisorCycle = cycleLease.GetCycle(divisor); + } + } + else + { + divisorCycle = 0UL; + } - // Can we prepare as many buffers as many threads were requested upfront and have them prepared in separate task, so that they're always ready when needed? - activeCount = BuildPrimeBuffer(divisor, primeValues, allowedMaxValues, stateFlags, primeBuffer, indexBuffer, completionsBuffer, ref completionsCount, ref remainingStates, activeStateMask, ref activeStartIndex); + // Can we prepare as many buffers as many threads were requested upfront and have them prepared in separate task, so that they're always ready when needed? + activeCount = BuildPrimeBuffer(divisor, primeValues, allowedMaxValues, stateFlags, primeBuffer, indexBuffer, completionsBuffer, ref completionsCount, ref remainingStates, activeStateMask, ref activeStartIndex); if (completionsCount > 0) { @@ -999,9 +999,9 @@ internal static class Program continue; } - hitsSpan = hitsBuffer.AsSpan(0, activeCount); - hitsSpan.Clear(); - session.CheckDivisor(divisor, divisorCycle, primeBuffer.AsSpan(0, activeCount), hitsSpan); + hitsSpan = hitsBuffer.AsSpan(0, activeCount); + hitsSpan.Clear(); + session.CheckDivisor(divisor, divisorCycle, primeBuffer.AsSpan(0, activeCount), hitsSpan); for (hitIndex = 0; hitIndex < activeCount; hitIndex++) { @@ -1039,15 +1039,15 @@ internal static class Program { FlushPendingResults(compositesBuffer, ref compositesCount); } - } - finally - { - cycleLease.Dispose(); - ArrayPool.Shared.Return(compositesBuffer, clearArray: true); - ArrayPool.Shared.Return(completionsBuffer, clearArray: true); - ArrayPool.Shared.Return(indexBuffer, clearArray: true); - ArrayPool.Shared.Return(primeBuffer, clearArray: true); - ArrayPool.Shared.Return(hitsBuffer, clearArray: true); + } + finally + { + cycleLease.Dispose(); + ArrayPool.Shared.Return(compositesBuffer, clearArray: true); + ArrayPool.Shared.Return(completionsBuffer, clearArray: true); + ArrayPool.Shared.Return(indexBuffer, clearArray: true); + ArrayPool.Shared.Return(primeBuffer, clearArray: true); + ArrayPool.Shared.Return(hitsBuffer, clearArray: true); } }); }