From 735bfa1557ade93471cc369093fb3032b4156a7d Mon Sep 17 00:00:00 2001 From: mlemanczyk Date: Wed, 12 Nov 2025 07:39:52 +0100 Subject: [PATCH] GPU accelerator recycled for better performance. --- .../MersenneNumberDivisorByDivisorTester.cs | 3 +++ PerfectNumbers.Core/PrimeTester.cs | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/PerfectNumbers.Core/MersenneNumberDivisorByDivisorTester.cs b/PerfectNumbers.Core/MersenneNumberDivisorByDivisorTester.cs index c01c62e..c28859a 100644 --- a/PerfectNumbers.Core/MersenneNumberDivisorByDivisorTester.cs +++ b/PerfectNumbers.Core/MersenneNumberDivisorByDivisorTester.cs @@ -3,6 +3,7 @@ using System.Threading; using System.Threading.Tasks; using System.Globalization; using System.Runtime.InteropServices; +using PerfectNumbers.Core.Gpu.Accelerators; namespace PerfectNumbers.Core; @@ -302,10 +303,12 @@ public static class MersenneNumberDivisorByDivisorTester } Console.WriteLine($"Task finished for range {rangeStart}"); + Pow2MontgomeryAccelerator.DisposeAll(); }, CancellationToken.None, TaskCreationOptions.DenyChildAttach, scheduler); + } startGate.Set(); diff --git a/PerfectNumbers.Core/PrimeTester.cs b/PerfectNumbers.Core/PrimeTester.cs index 76f3bbb..c6dc655 100644 --- a/PerfectNumbers.Core/PrimeTester.cs +++ b/PerfectNumbers.Core/PrimeTester.cs @@ -125,7 +125,8 @@ public sealed class PrimeTester outputView.CopyToCPU(stream, ref flag, 1); stream.Synchronize(); - gpu.Dispose(); + // gpu.Dispose(); + Pow2MontgomeryAccelerator.Return(gpu); GpuPrimeWorkLimiter.Release(); return flag != 0; @@ -240,7 +241,8 @@ public sealed class PrimeTester } stream.Synchronize(); - gpu.Dispose(); + Pow2MontgomeryAccelerator.Return(gpu); + // gpu.Dispose(); GpuPrimeWorkLimiter.Release(); } @@ -303,7 +305,8 @@ public sealed class PrimeTester pool.Return(temp, clearArray: false); resultBuffer.Dispose(); inputBuffer.Dispose(); - gpu.Dispose(); + Pow2MontgomeryAccelerator.Return(gpu); + // gpu.Dispose(); } private static Action, ArrayView> GetSharesFactorKernel(Accelerator accelerator)