Embed kernel state lookup in GPU leases

This commit is contained in:
Marek Lemańczyk committed 2025-10-29 18:13:46 +01:00
1 parent 08499fdda1
commit 23fa56b356
1 file changed
+1 -21
+1 -21
View File
@@ -208,35 +208,15 @@ public sealed class PrimeTester
public Accelerator Accelerator { get; } public Accelerator Accelerator { get; }
private KernelState? _kernelState;
public PooledContext() public PooledContext()
{ {
Context = Context.CreateDefault(); Context = Context.CreateDefault();
Accelerator = Context.GetPreferredDevice(false).CreateAccelerator(Context); Accelerator = Context.GetPreferredDevice(false).CreateAccelerator(Context);
_kernelState = GpuKernelState.GetOrCreate(Accelerator);
}
public KernelState KernelState
{
get
{
var state = _kernelState;
if (state is null || state.IsDisposed)
{
state = GpuKernelState.GetOrCreate(Accelerator);
_kernelState = state;
}
return state;
}
} }
public void Dispose() public void Dispose()
{ {
ClearGpuCaches(Accelerator); ClearGpuCaches(Accelerator);
_kernelState = null;
Accelerator.Dispose(); Accelerator.Dispose();
Context.Dispose(); Context.Dispose();
} }
@@ -292,7 +272,7 @@ public sealed class PrimeTester
_ctx = ctx; _ctx = ctx;
Accelerator = ctx.Accelerator; Accelerator = ctx.Accelerator;
State = ctx.KernelState; State = GpuKernelState.GetOrCreate(Accelerator);
Input = Accelerator.Allocate1D<ulong>(minBufferCapacity); Input = Accelerator.Allocate1D<ulong>(minBufferCapacity);
Output = Accelerator.Allocate1D<byte>(minBufferCapacity); Output = Accelerator.Allocate1D<byte>(minBufferCapacity);
BufferCapacity = minBufferCapacity; BufferCapacity = minBufferCapacity;