Embed kernel state lookup in GPU leases
This commit is contained in:
1 parent
08499fdda1
commit
23fa56b356
1 file changed
+1
-21
@@ -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;
|
||||||
|
|||||||
Reference in new issue
Block a user