diff --git a/PerfectNumbers.Core/Gpu/AcceleratorPool.cs b/PerfectNumbers.Core/Gpu/AcceleratorPool.cs index 3ad835d..2f5f8ac 100644 --- a/PerfectNumbers.Core/Gpu/AcceleratorPool.cs +++ b/PerfectNumbers.Core/Gpu/AcceleratorPool.cs @@ -28,7 +28,7 @@ namespace PerfectNumbers.Core.Gpu // Intentionally left empty - there's nothing to do here. We're not really renting anything. } - public static readonly AcceleratorPool Shared = new(1); + public static readonly AcceleratorPool Shared = new(PerfectNumberConstants.RollingAccelerators); private readonly int Capacity; public AcceleratorPool(int capacity) diff --git a/PerfectNumbers.Core/Gpu/Accelerators/PrimeOrderCalculatorAccelerator.cs b/PerfectNumbers.Core/Gpu/Accelerators/PrimeOrderCalculatorAccelerator.cs index 2cb19b6..3ee253c 100644 --- a/PerfectNumbers.Core/Gpu/Accelerators/PrimeOrderCalculatorAccelerator.cs +++ b/PerfectNumbers.Core/Gpu/Accelerators/PrimeOrderCalculatorAccelerator.cs @@ -13,15 +13,13 @@ public sealed class PrimeOrderCalculatorAccelerator [ThreadStatic] private static Queue? _pool; - private static readonly AcceleratorPool _accelerators = new(PerfectNumberConstants.RollingAccelerators); - [MethodImpl(MethodImplOptions.AggressiveInlining)] public static PrimeOrderCalculatorAccelerator Rent(int primeTesterCapacity) { var pool = _pool ??= []; if (!pool.TryDequeue(out var gpu)) { - Accelerator accelerator = _accelerators.Rent(); + Accelerator accelerator = AcceleratorPool.Shared.Rent(); gpu = new(accelerator, PerfectNumberConstants.DefaultFactorsBuffer, primeTesterCapacity, PerfectNumberConstants.DefaultSmallPrimeFactorSlotCount, PerfectNumberConstants.DefaultSpecialMaxFactorCapacity); } else @@ -61,7 +59,7 @@ public sealed class PrimeOrderCalculatorAccelerator internal static void WarmUp() { - Accelerator[]? accelerators = _accelerators.Accelerators; + Accelerator[] accelerators = AcceleratorPool.Shared.Accelerators; int acceleratorCount = accelerators.Length; for (var i = 0; i < acceleratorCount; i++) {