GPU memory allocations protected with lock to prevent shared memory access issues. GPU usage limited for the best performance.

This commit is contained in:
mlemanczyk committed 2025-11-19 16:49:01 +01:00
1 parent 02d16bf05c
commit 5cac51479e
12 files changed
+236 -148

No files matched your search

@@ -240,13 +240,12 @@ public sealed class HeuristicCombinedPrimeTester
var kernel = gpu.HeuristicCombinedTrialDivisionKernel;
var flagView1D = gpu.OutputInt!.View;
bool compositeDetected = false;
int divisorLength = GetCombinedDivisors(nMod10).Length;
bool compositeDetected;
// int compositeFlag = 0;
Span<int> compositeFlag = stackalloc int[1];
flagView1D.MemSetToZero(stream);
int compositeFlag = 0;
flagView1D.CopyFromCPU(stream, ref compositeFlag, 1);
var kernelLauncher = kernel.CreateLauncherDelegate<Action<AcceleratorStream, Index1D, byte, ArrayView<int>, ulong, ulong, HeuristicCombinedGpuViews>>();
var kernelLauncher = gpu.HeuristicCombinedTrialDivisionKernelLauncher;
kernelLauncher(
stream,
1,
@@ -255,13 +254,13 @@ public sealed class HeuristicCombinedPrimeTester
n,
maxDivisorSquare,
gpu.DivisorTables);
flagView1D.CopyToCPU(stream, ref compositeFlag, 1);
flagView1D.CopyToCPU(stream, compositeFlag);
stream.Synchronize();
AcceleratorStreamPool.Return(acceleratorIndex, stream);
// GpuPrimeWorkLimiter.Release();
compositeDetected = compositeFlag != 0;
compositeDetected = compositeFlag[0] != 0;
return compositeDetected;
}