From 07efd5d2a1a91da616c217a573168051e49a232f Mon Sep 17 00:00:00 2001 From: mlemanczyk Date: Sun, 23 Nov 2025 14:59:29 +0100 Subject: [PATCH] Accelerator locks removed --- PerfectNumbers.Core/DivisorCycleCache.cs | 2 +- ...ersenneNumberDivisorByDivisorAccelerator.cs | 4 ++-- .../PrimeOrderCalculatorAccelerator.cs | 18 +++++++++--------- PerfectNumbers.Core/Gpu/GpuKernelPool.cs | 4 ++-- .../MersenneNumberDivisorByDivisorGpuTester.cs | 4 ++-- .../Gpu/MersenneNumberDivisorGpuTester.cs | 2 +- .../Gpu/PrimeOrderGpuHeuristics.cs | 6 +++--- PerfectNumbers.Core/MersenneDivisorCycles.cs | 2 +- 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/PerfectNumbers.Core/DivisorCycleCache.cs b/PerfectNumbers.Core/DivisorCycleCache.cs index 4145a8d..39c0d39 100644 --- a/PerfectNumbers.Core/DivisorCycleCache.cs +++ b/PerfectNumbers.Core/DivisorCycleCache.cs @@ -260,7 +260,7 @@ public sealed class DivisorCycleCache } Accelerator accelerator = _accelerator; - lock(accelerator) + // lock (accelerator) { divisorBuffer = accelerator.Allocate1D(requiredCapacity); powBuffer = accelerator.Allocate1D(requiredCapacity); diff --git a/PerfectNumbers.Core/Gpu/Accelerators/MersenneNumberDivisorByDivisorAccelerator.cs b/PerfectNumbers.Core/Gpu/Accelerators/MersenneNumberDivisorByDivisorAccelerator.cs index b76772a..b1d2386 100644 --- a/PerfectNumbers.Core/Gpu/Accelerators/MersenneNumberDivisorByDivisorAccelerator.cs +++ b/PerfectNumbers.Core/Gpu/Accelerators/MersenneNumberDivisorByDivisorAccelerator.cs @@ -19,7 +19,7 @@ public sealed class MersenneNumberDivisorByDivisorAccelerator Counts = intPool.Rent(capacity); Cycles = ulongPool.Rent(capacity); - lock (accelerator) + // lock (accelerator) { DivisorDataBuffer = accelerator.Allocate1D(capacity); OffsetBuffer = accelerator.Allocate1D(capacity); @@ -67,7 +67,7 @@ public sealed class MersenneNumberDivisorByDivisorAccelerator HitsBuffer.Dispose(); HitIndexBuffer.Dispose(); - lock (accelerator) + // lock (accelerator) { DivisorDataBuffer = accelerator.Allocate1D(capacity); OffsetBuffer = accelerator.Allocate1D(capacity); diff --git a/PerfectNumbers.Core/Gpu/Accelerators/PrimeOrderCalculatorAccelerator.cs b/PerfectNumbers.Core/Gpu/Accelerators/PrimeOrderCalculatorAccelerator.cs index bdd6369..f39802a 100644 --- a/PerfectNumbers.Core/Gpu/Accelerators/PrimeOrderCalculatorAccelerator.cs +++ b/PerfectNumbers.Core/Gpu/Accelerators/PrimeOrderCalculatorAccelerator.cs @@ -135,7 +135,7 @@ public sealed class PrimeOrderCalculatorAccelerator MemoryBuffer1D, Stride1D.Dense> pow2ModEntriesToTestOnDevice = Pow2ModEntriesToTestOnDevice; if (pow2ModEntriesToTestOnDevice.Length < factorsCount) { - lock (accelerator) + // lock (accelerator) { pow2ModEntriesToTestOnDevice.Dispose(); Pow2ModEntriesToTestOnDevice = accelerator.Allocate1D>(factorsCount); @@ -145,7 +145,7 @@ public sealed class PrimeOrderCalculatorAccelerator MemoryBuffer1D input = Input; if (input.Length < primeTesterCapacity) { - lock (accelerator) + // lock (accelerator) { input.Dispose(); Input = accelerator.Allocate1D(primeTesterCapacity); @@ -155,7 +155,7 @@ public sealed class PrimeOrderCalculatorAccelerator MemoryBuffer1D outputByte = OutputByte; if (outputByte.Length < primeTesterCapacity) { - lock (accelerator) + // lock (accelerator) { outputByte.Dispose(); OutputByte = accelerator.Allocate1D(primeTesterCapacity); @@ -165,7 +165,7 @@ public sealed class PrimeOrderCalculatorAccelerator MemoryBuffer1D outputInt = OutputInt; if (outputInt.Length < primeTesterCapacity) { - lock (accelerator) + // lock (accelerator) { outputInt.Dispose(); OutputInt = accelerator.Allocate1D(primeTesterCapacity); @@ -180,7 +180,7 @@ public sealed class PrimeOrderCalculatorAccelerator MemoryBuffer1D outputUlong = OutputUlong; if (outputUlong.Length < newSize) { - lock (accelerator) + // lock (accelerator) { outputUlong.Dispose(); OutputUlong = accelerator.Allocate1D(newSize); @@ -190,7 +190,7 @@ public sealed class PrimeOrderCalculatorAccelerator MemoryBuffer1D outputInt = OutputInt; if (outputInt.Length < newSize) { - lock (accelerator) + // lock (accelerator) { outputInt.Dispose(); OutputInt = accelerator.Allocate1D(newSize); @@ -204,7 +204,7 @@ public sealed class PrimeOrderCalculatorAccelerator MemoryBuffer1D input = Input; if (input.Length < newSize) { - lock (accelerator) + // lock (accelerator) { input.Dispose(); Input = accelerator.Allocate1D(newSize); @@ -214,7 +214,7 @@ public sealed class PrimeOrderCalculatorAccelerator MemoryBuffer1D outputUlong = OutputUlong; if (outputUlong.Length < newSize) { - lock (accelerator) + // lock (accelerator) { outputUlong.Dispose(); OutputUlong = accelerator.Allocate1D(newSize); @@ -227,7 +227,7 @@ public sealed class PrimeOrderCalculatorAccelerator var accelerator = _accelerators[acceleratorIndex]; Accelerator = accelerator; AcceleratorIndex = acceleratorIndex; - lock (accelerator) + // lock (accelerator) { Input = accelerator.Allocate1D(Math.Max(specialMaxFactorCapacity, primeTesterCapacity)); OutputByte = Accelerator.Allocate1D(primeTesterCapacity); diff --git a/PerfectNumbers.Core/Gpu/GpuKernelPool.cs b/PerfectNumbers.Core/Gpu/GpuKernelPool.cs index 4632216..ae856b6 100644 --- a/PerfectNumbers.Core/Gpu/GpuKernelPool.cs +++ b/PerfectNumbers.Core/Gpu/GpuKernelPool.cs @@ -151,7 +151,7 @@ public class GpuKernelPool var host = MersenneDivisorCycles.Shared.ExportSmallCyclesSnapshot(); MemoryBuffer1D? device; - lock (accelerator) + // lock (accelerator) { device = accelerator.Allocate1D(host.Length); } @@ -195,7 +195,7 @@ public class GpuKernelPool MemoryBuffer1D? deviceLastOnePow2; MemoryBuffer1D? deviceLastSevenPow2; - lock (accelerator) + // lock (accelerator) { deviceLastOne = accelerator.Allocate1D(hostLastOne.Length); deviceLastSeven = accelerator.Allocate1D(hostLastSeven.Length); diff --git a/PerfectNumbers.Core/Gpu/MersenneNumberDivisorByDivisorGpuTester.cs b/PerfectNumbers.Core/Gpu/MersenneNumberDivisorByDivisorGpuTester.cs index a939a8c..2246178 100644 --- a/PerfectNumbers.Core/Gpu/MersenneNumberDivisorByDivisorGpuTester.cs +++ b/PerfectNumbers.Core/Gpu/MersenneNumberDivisorByDivisorGpuTester.cs @@ -521,7 +521,7 @@ public sealed partial class MersenneNumberDivisorByDivisorGpuTester : IMersenneN if (_divisorBuffer == null) { - lock(accelerator) + // lock (accelerator) { _divisorBuffer = accelerator.Allocate1D(1); _offsetBuffer = accelerator.Allocate1D(1); @@ -551,7 +551,7 @@ public sealed partial class MersenneNumberDivisorByDivisorGpuTester : IMersenneN { int desiredCapacity = requiredCapacity > _capacity ? requiredCapacity : _capacity; _capacity = desiredCapacity; - lock (accelerator) + // lock (accelerator) { _exponentsBuffer = accelerator.Allocate1D(desiredCapacity); _hitBuffer = accelerator.Allocate1D(desiredCapacity); diff --git a/PerfectNumbers.Core/Gpu/MersenneNumberDivisorGpuTester.cs b/PerfectNumbers.Core/Gpu/MersenneNumberDivisorGpuTester.cs index 73e72ff..574df81 100644 --- a/PerfectNumbers.Core/Gpu/MersenneNumberDivisorGpuTester.cs +++ b/PerfectNumbers.Core/Gpu/MersenneNumberDivisorGpuTester.cs @@ -63,7 +63,7 @@ public sealed class MersenneNumberDivisorGpuTester Queue> resultBuffers = GetQueue(accelerator); if (!resultBuffers.TryDequeue(out var resultBuffer)) { - // lock(accelerator) + // lock (accelerator) { resultBuffer = accelerator.Allocate1D(1); } diff --git a/PerfectNumbers.Core/Gpu/PrimeOrderGpuHeuristics.cs b/PerfectNumbers.Core/Gpu/PrimeOrderGpuHeuristics.cs index c3113af..014f837 100644 --- a/PerfectNumbers.Core/Gpu/PrimeOrderGpuHeuristics.cs +++ b/PerfectNumbers.Core/Gpu/PrimeOrderGpuHeuristics.cs @@ -354,7 +354,7 @@ internal static partial class PrimeOrderGpuHeuristics MemoryBuffer1D? resultBuffer; MemoryBuffer1D? statusBuffer; - lock(accelerator) + // lock (accelerator) { phiFactorBuffer = accelerator.Allocate1D(GpuSmallPrimeFactorSlots); phiExponentBuffer = accelerator.Allocate1D(GpuSmallPrimeFactorSlots); @@ -518,7 +518,7 @@ internal static partial class PrimeOrderGpuHeuristics // with out preallocated buffers. Share the pool with Pow2ModWide kernel. MemoryBuffer1D? exponentBuffer; MemoryBuffer1D? remainderBuffer; - lock(accelerator) + // lock (accelerator) { exponentBuffer = accelerator.Allocate1D(exponents.Length); remainderBuffer = accelerator.Allocate1D(exponents.Length); @@ -597,7 +597,7 @@ internal static partial class PrimeOrderGpuHeuristics MemoryBuffer1D exponentBuffer; MemoryBuffer1D remainderBuffer; - lock(accelerator) + // lock (accelerator) { exponentBuffer = accelerator.Allocate1D(length); remainderBuffer = accelerator.Allocate1D(length); diff --git a/PerfectNumbers.Core/MersenneDivisorCycles.cs b/PerfectNumbers.Core/MersenneDivisorCycles.cs index 27fc63d..550186c 100644 --- a/PerfectNumbers.Core/MersenneDivisorCycles.cs +++ b/PerfectNumbers.Core/MersenneDivisorCycles.cs @@ -862,7 +862,7 @@ public class MersenneDivisorCycles // GpuKernelPool.Run((accelerator, stream) => MemoryBuffer1D? bufferDiv; MemoryBuffer1D? bufferCycle; - lock(accelerator) + // lock (accelerator) { bufferDiv = accelerator.Allocate1D(validDivisors); bufferCycle = accelerator.Allocate1D(idx);