Accelerator locks removed
This commit is contained in:
1 parent
79021108f5
commit
07efd5d2a1
7 files changed
+20
-20
No files matched your search
@@ -260,7 +260,7 @@ public sealed class DivisorCycleCache
|
|||||||
}
|
}
|
||||||
|
|
||||||
Accelerator accelerator = _accelerator;
|
Accelerator accelerator = _accelerator;
|
||||||
lock(accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
divisorBuffer = accelerator.Allocate1D<ulong>(requiredCapacity);
|
divisorBuffer = accelerator.Allocate1D<ulong>(requiredCapacity);
|
||||||
powBuffer = accelerator.Allocate1D<ulong>(requiredCapacity);
|
powBuffer = accelerator.Allocate1D<ulong>(requiredCapacity);
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public sealed class MersenneNumberDivisorByDivisorAccelerator
|
|||||||
Counts = intPool.Rent(capacity);
|
Counts = intPool.Rent(capacity);
|
||||||
Cycles = ulongPool.Rent(capacity);
|
Cycles = ulongPool.Rent(capacity);
|
||||||
|
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
DivisorDataBuffer = accelerator.Allocate1D<GpuDivisorPartialData>(capacity);
|
DivisorDataBuffer = accelerator.Allocate1D<GpuDivisorPartialData>(capacity);
|
||||||
OffsetBuffer = accelerator.Allocate1D<int>(capacity);
|
OffsetBuffer = accelerator.Allocate1D<int>(capacity);
|
||||||
@@ -67,7 +67,7 @@ public sealed class MersenneNumberDivisorByDivisorAccelerator
|
|||||||
HitsBuffer.Dispose();
|
HitsBuffer.Dispose();
|
||||||
HitIndexBuffer.Dispose();
|
HitIndexBuffer.Dispose();
|
||||||
|
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
DivisorDataBuffer = accelerator.Allocate1D<GpuDivisorPartialData>(capacity);
|
DivisorDataBuffer = accelerator.Allocate1D<GpuDivisorPartialData>(capacity);
|
||||||
OffsetBuffer = accelerator.Allocate1D<int>(capacity);
|
OffsetBuffer = accelerator.Allocate1D<int>(capacity);
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ public sealed class PrimeOrderCalculatorAccelerator
|
|||||||
MemoryBuffer1D<KeyValuePair<ulong, int>, Stride1D.Dense> pow2ModEntriesToTestOnDevice = Pow2ModEntriesToTestOnDevice;
|
MemoryBuffer1D<KeyValuePair<ulong, int>, Stride1D.Dense> pow2ModEntriesToTestOnDevice = Pow2ModEntriesToTestOnDevice;
|
||||||
if (pow2ModEntriesToTestOnDevice.Length < factorsCount)
|
if (pow2ModEntriesToTestOnDevice.Length < factorsCount)
|
||||||
{
|
{
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
pow2ModEntriesToTestOnDevice.Dispose();
|
pow2ModEntriesToTestOnDevice.Dispose();
|
||||||
Pow2ModEntriesToTestOnDevice = accelerator.Allocate1D<KeyValuePair<ulong, int>>(factorsCount);
|
Pow2ModEntriesToTestOnDevice = accelerator.Allocate1D<KeyValuePair<ulong, int>>(factorsCount);
|
||||||
@@ -145,7 +145,7 @@ public sealed class PrimeOrderCalculatorAccelerator
|
|||||||
MemoryBuffer1D<ulong, Stride1D.Dense> input = Input;
|
MemoryBuffer1D<ulong, Stride1D.Dense> input = Input;
|
||||||
if (input.Length < primeTesterCapacity)
|
if (input.Length < primeTesterCapacity)
|
||||||
{
|
{
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
input.Dispose();
|
input.Dispose();
|
||||||
Input = accelerator.Allocate1D<ulong>(primeTesterCapacity);
|
Input = accelerator.Allocate1D<ulong>(primeTesterCapacity);
|
||||||
@@ -155,7 +155,7 @@ public sealed class PrimeOrderCalculatorAccelerator
|
|||||||
MemoryBuffer1D<byte, Stride1D.Dense> outputByte = OutputByte;
|
MemoryBuffer1D<byte, Stride1D.Dense> outputByte = OutputByte;
|
||||||
if (outputByte.Length < primeTesterCapacity)
|
if (outputByte.Length < primeTesterCapacity)
|
||||||
{
|
{
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
outputByte.Dispose();
|
outputByte.Dispose();
|
||||||
OutputByte = accelerator.Allocate1D<byte>(primeTesterCapacity);
|
OutputByte = accelerator.Allocate1D<byte>(primeTesterCapacity);
|
||||||
@@ -165,7 +165,7 @@ public sealed class PrimeOrderCalculatorAccelerator
|
|||||||
MemoryBuffer1D<int, Stride1D.Dense> outputInt = OutputInt;
|
MemoryBuffer1D<int, Stride1D.Dense> outputInt = OutputInt;
|
||||||
if (outputInt.Length < primeTesterCapacity)
|
if (outputInt.Length < primeTesterCapacity)
|
||||||
{
|
{
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
outputInt.Dispose();
|
outputInt.Dispose();
|
||||||
OutputInt = accelerator.Allocate1D<int>(primeTesterCapacity);
|
OutputInt = accelerator.Allocate1D<int>(primeTesterCapacity);
|
||||||
@@ -180,7 +180,7 @@ public sealed class PrimeOrderCalculatorAccelerator
|
|||||||
MemoryBuffer1D<ulong, Stride1D.Dense> outputUlong = OutputUlong;
|
MemoryBuffer1D<ulong, Stride1D.Dense> outputUlong = OutputUlong;
|
||||||
if (outputUlong.Length < newSize)
|
if (outputUlong.Length < newSize)
|
||||||
{
|
{
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
outputUlong.Dispose();
|
outputUlong.Dispose();
|
||||||
OutputUlong = accelerator.Allocate1D<ulong>(newSize);
|
OutputUlong = accelerator.Allocate1D<ulong>(newSize);
|
||||||
@@ -190,7 +190,7 @@ public sealed class PrimeOrderCalculatorAccelerator
|
|||||||
MemoryBuffer1D<int, Stride1D.Dense> outputInt = OutputInt;
|
MemoryBuffer1D<int, Stride1D.Dense> outputInt = OutputInt;
|
||||||
if (outputInt.Length < newSize)
|
if (outputInt.Length < newSize)
|
||||||
{
|
{
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
outputInt.Dispose();
|
outputInt.Dispose();
|
||||||
OutputInt = accelerator.Allocate1D<int>(newSize);
|
OutputInt = accelerator.Allocate1D<int>(newSize);
|
||||||
@@ -204,7 +204,7 @@ public sealed class PrimeOrderCalculatorAccelerator
|
|||||||
MemoryBuffer1D<ulong, Stride1D.Dense> input = Input;
|
MemoryBuffer1D<ulong, Stride1D.Dense> input = Input;
|
||||||
if (input.Length < newSize)
|
if (input.Length < newSize)
|
||||||
{
|
{
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
input.Dispose();
|
input.Dispose();
|
||||||
Input = accelerator.Allocate1D<ulong>(newSize);
|
Input = accelerator.Allocate1D<ulong>(newSize);
|
||||||
@@ -214,7 +214,7 @@ public sealed class PrimeOrderCalculatorAccelerator
|
|||||||
MemoryBuffer1D<ulong, Stride1D.Dense> outputUlong = OutputUlong;
|
MemoryBuffer1D<ulong, Stride1D.Dense> outputUlong = OutputUlong;
|
||||||
if (outputUlong.Length < newSize)
|
if (outputUlong.Length < newSize)
|
||||||
{
|
{
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
outputUlong.Dispose();
|
outputUlong.Dispose();
|
||||||
OutputUlong = accelerator.Allocate1D<ulong>(newSize);
|
OutputUlong = accelerator.Allocate1D<ulong>(newSize);
|
||||||
@@ -227,7 +227,7 @@ public sealed class PrimeOrderCalculatorAccelerator
|
|||||||
var accelerator = _accelerators[acceleratorIndex];
|
var accelerator = _accelerators[acceleratorIndex];
|
||||||
Accelerator = accelerator;
|
Accelerator = accelerator;
|
||||||
AcceleratorIndex = acceleratorIndex;
|
AcceleratorIndex = acceleratorIndex;
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
Input = accelerator.Allocate1D<ulong>(Math.Max(specialMaxFactorCapacity, primeTesterCapacity));
|
Input = accelerator.Allocate1D<ulong>(Math.Max(specialMaxFactorCapacity, primeTesterCapacity));
|
||||||
OutputByte = Accelerator.Allocate1D<byte>(primeTesterCapacity);
|
OutputByte = Accelerator.Allocate1D<byte>(primeTesterCapacity);
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ public class GpuKernelPool
|
|||||||
var host = MersenneDivisorCycles.Shared.ExportSmallCyclesSnapshot();
|
var host = MersenneDivisorCycles.Shared.ExportSmallCyclesSnapshot();
|
||||||
MemoryBuffer1D<ulong, Stride1D.Dense>? device;
|
MemoryBuffer1D<ulong, Stride1D.Dense>? device;
|
||||||
|
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
device = accelerator.Allocate1D<ulong>(host.Length);
|
device = accelerator.Allocate1D<ulong>(host.Length);
|
||||||
}
|
}
|
||||||
@@ -195,7 +195,7 @@ public class GpuKernelPool
|
|||||||
MemoryBuffer1D<ulong, Stride1D.Dense>? deviceLastOnePow2;
|
MemoryBuffer1D<ulong, Stride1D.Dense>? deviceLastOnePow2;
|
||||||
MemoryBuffer1D<ulong, Stride1D.Dense>? deviceLastSevenPow2;
|
MemoryBuffer1D<ulong, Stride1D.Dense>? deviceLastSevenPow2;
|
||||||
|
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
deviceLastOne = accelerator.Allocate1D<uint>(hostLastOne.Length);
|
deviceLastOne = accelerator.Allocate1D<uint>(hostLastOne.Length);
|
||||||
deviceLastSeven = accelerator.Allocate1D<uint>(hostLastSeven.Length);
|
deviceLastSeven = accelerator.Allocate1D<uint>(hostLastSeven.Length);
|
||||||
|
|||||||
@@ -521,7 +521,7 @@ public sealed partial class MersenneNumberDivisorByDivisorGpuTester : IMersenneN
|
|||||||
|
|
||||||
if (_divisorBuffer == null)
|
if (_divisorBuffer == null)
|
||||||
{
|
{
|
||||||
lock(accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
_divisorBuffer = accelerator.Allocate1D<GpuDivisorPartialData>(1);
|
_divisorBuffer = accelerator.Allocate1D<GpuDivisorPartialData>(1);
|
||||||
_offsetBuffer = accelerator.Allocate1D<int>(1);
|
_offsetBuffer = accelerator.Allocate1D<int>(1);
|
||||||
@@ -551,7 +551,7 @@ public sealed partial class MersenneNumberDivisorByDivisorGpuTester : IMersenneN
|
|||||||
{
|
{
|
||||||
int desiredCapacity = requiredCapacity > _capacity ? requiredCapacity : _capacity;
|
int desiredCapacity = requiredCapacity > _capacity ? requiredCapacity : _capacity;
|
||||||
_capacity = desiredCapacity;
|
_capacity = desiredCapacity;
|
||||||
lock (accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
_exponentsBuffer = accelerator.Allocate1D<ulong>(desiredCapacity);
|
_exponentsBuffer = accelerator.Allocate1D<ulong>(desiredCapacity);
|
||||||
_hitBuffer = accelerator.Allocate1D<byte>(desiredCapacity);
|
_hitBuffer = accelerator.Allocate1D<byte>(desiredCapacity);
|
||||||
|
|||||||
@@ -354,7 +354,7 @@ internal static partial class PrimeOrderGpuHeuristics
|
|||||||
MemoryBuffer1D<ulong, Stride1D.Dense>? resultBuffer;
|
MemoryBuffer1D<ulong, Stride1D.Dense>? resultBuffer;
|
||||||
MemoryBuffer1D<byte, Stride1D.Dense>? statusBuffer;
|
MemoryBuffer1D<byte, Stride1D.Dense>? statusBuffer;
|
||||||
|
|
||||||
lock(accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
phiFactorBuffer = accelerator.Allocate1D<ulong>(GpuSmallPrimeFactorSlots);
|
phiFactorBuffer = accelerator.Allocate1D<ulong>(GpuSmallPrimeFactorSlots);
|
||||||
phiExponentBuffer = accelerator.Allocate1D<int>(GpuSmallPrimeFactorSlots);
|
phiExponentBuffer = accelerator.Allocate1D<int>(GpuSmallPrimeFactorSlots);
|
||||||
@@ -518,7 +518,7 @@ internal static partial class PrimeOrderGpuHeuristics
|
|||||||
// with out preallocated buffers. Share the pool with Pow2ModWide kernel.
|
// with out preallocated buffers. Share the pool with Pow2ModWide kernel.
|
||||||
MemoryBuffer1D<ulong, Stride1D.Dense>? exponentBuffer;
|
MemoryBuffer1D<ulong, Stride1D.Dense>? exponentBuffer;
|
||||||
MemoryBuffer1D<ulong, Stride1D.Dense>? remainderBuffer;
|
MemoryBuffer1D<ulong, Stride1D.Dense>? remainderBuffer;
|
||||||
lock(accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
exponentBuffer = accelerator.Allocate1D<ulong>(exponents.Length);
|
exponentBuffer = accelerator.Allocate1D<ulong>(exponents.Length);
|
||||||
remainderBuffer = accelerator.Allocate1D<ulong>(exponents.Length);
|
remainderBuffer = accelerator.Allocate1D<ulong>(exponents.Length);
|
||||||
@@ -597,7 +597,7 @@ internal static partial class PrimeOrderGpuHeuristics
|
|||||||
MemoryBuffer1D<GpuUInt128, Stride1D.Dense> exponentBuffer;
|
MemoryBuffer1D<GpuUInt128, Stride1D.Dense> exponentBuffer;
|
||||||
MemoryBuffer1D<GpuUInt128, Stride1D.Dense> remainderBuffer;
|
MemoryBuffer1D<GpuUInt128, Stride1D.Dense> remainderBuffer;
|
||||||
|
|
||||||
lock(accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
exponentBuffer = accelerator.Allocate1D<GpuUInt128>(length);
|
exponentBuffer = accelerator.Allocate1D<GpuUInt128>(length);
|
||||||
remainderBuffer = accelerator.Allocate1D<GpuUInt128>(length);
|
remainderBuffer = accelerator.Allocate1D<GpuUInt128>(length);
|
||||||
|
|||||||
@@ -862,7 +862,7 @@ public class MersenneDivisorCycles
|
|||||||
// GpuKernelPool.Run((accelerator, stream) =>
|
// GpuKernelPool.Run((accelerator, stream) =>
|
||||||
MemoryBuffer1D<ulong, Stride1D.Dense>? bufferDiv;
|
MemoryBuffer1D<ulong, Stride1D.Dense>? bufferDiv;
|
||||||
MemoryBuffer1D<ulong, Stride1D.Dense>? bufferCycle;
|
MemoryBuffer1D<ulong, Stride1D.Dense>? bufferCycle;
|
||||||
lock(accelerator)
|
// lock (accelerator)
|
||||||
{
|
{
|
||||||
bufferDiv = accelerator.Allocate1D(validDivisors);
|
bufferDiv = accelerator.Allocate1D(validDivisors);
|
||||||
bufferCycle = accelerator.Allocate1D<ulong>(idx);
|
bufferCycle = accelerator.Allocate1D<ulong>(idx);
|
||||||
|
|||||||
Reference in new issue
Block a user