Merge pull request #152 from mlemanczyk/codex/optimize-accelerator-allocation-for-mersennedivisorcycles

Remove GPU fallback from context pool
This commit is contained in:
Marek Lemańczyk authored and GitHub committed 2025-10-11 18:37:48 +02:00
commit fca650b285
3 files changed
+13 -7

No files matched your search

+7 -4
View File
@@ -145,8 +145,7 @@ public static class GpuContextPool
public object ExecutionLock => _ctx.ExecutionLock; public object ExecutionLock => _ctx.ExecutionLock;
internal void ReturnToPool()
public void Dispose()
{ {
if (disposed) if (disposed)
{ {
@@ -156,6 +155,10 @@ public static class GpuContextPool
Return(_ctx); Return(_ctx);
disposed = true; disposed = true;
} }
}
}
public void Dispose()
{
ReturnToPool();
}
}
}
+4 -1
View File
@@ -396,7 +396,10 @@ public ref struct GpuKernelLease(IDisposable limiter, GpuContextLease gpu, Kerne
_stream?.Dispose(); _stream?.Dispose();
_stream = null; _stream = null;
_gpu?.Dispose(); if (_gpu.HasValue)
{
_gpu.Value.ReturnToPool();
}
_gpu = null; _gpu = null;
_executionLock = null; _executionLock = null;
@@ -1715,10 +1715,10 @@ internal static partial class PrimeOrderGpuHeuristics
GpuUInt128[]? rentedExponents = null; GpuUInt128[]? rentedExponents = null;
GpuUInt128[]? rentedResults = null; GpuUInt128[]? rentedResults = null;
var lease = GpuKernelPool.GetKernel(useGpuOrder: true); var lease = GpuKernelPool.GetKernel(useGpuOrder: true);
var execution = lease.EnterExecutionScope();
try try
{ {
var execution = lease.EnterExecutionScope();
Accelerator accelerator = lease.Accelerator; Accelerator accelerator = lease.Accelerator;
AcceleratorStream stream = lease.Stream; AcceleratorStream stream = lease.Stream;
var kernel = GetPow2ModWideKernel(accelerator); var kernel = GetPow2ModWideKernel(accelerator);
@@ -1755,7 +1755,6 @@ internal static partial class PrimeOrderGpuHeuristics
exponentBuffer.Dispose(); exponentBuffer.Dispose();
remainderBuffer.Dispose(); remainderBuffer.Dispose();
execution.Dispose();
return true; return true;
} }
catch (Exception) catch (Exception)
@@ -1775,6 +1774,7 @@ internal static partial class PrimeOrderGpuHeuristics
ArrayPool<GpuUInt128>.Shared.Return(rentedResults, clearArray: false); ArrayPool<GpuUInt128>.Shared.Return(rentedResults, clearArray: false);
} }
execution.Dispose();
lease.Dispose(); lease.Dispose();
} }
} }