mlemanczyk
|
6d1ff1372e
|
Factoring switched to PrimeTester.IsPrime for the best performance. PrimeOrderCalculator.PartialFactor switched to GPU factorization. Every so often it will send work to GPU instead of CPU. BatchedResources renamed to MersenneNumberDivisorByDivisorAccelerator for consistency and moved to its own file. It now uses array instead of dictionary for lookup free performance.
|
2025-11-23 00:07:03 +01:00 |
|
mlemanczyk
|
7b09c1fd3b
|
Missing accelerator returns to pool added
|
2025-11-20 15:57:07 +01:00 |
|
mlemanczyk
|
497b1fcf89
|
Kernels replaced with pre-compiled actions for better performance
|
2025-11-20 03:00:11 +01:00 |
|
mlemanczyk
|
df04ba601c
|
Various small optimizations and cleanups. Methods made static, where possible. Duplicated & slow PrimeTester.BinaryGcd implementation removed. Optimized version was used instead.
|
2025-11-20 01:43:29 +01:00 |
|
mlemanczyk
|
9939c5d562
|
Divisor will now be saved to CSV file
|
2025-11-19 22:14:28 +01:00 |
|
mlemanczyk
|
54fdff0a4e
|
GPU calculations frequency adjusted
|
2025-11-19 21:38:07 +01:00 |
|
mlemanczyk
|
5cac51479e
|
GPU memory allocations protected with lock to prevent shared memory access issues. GPU usage limited for the best performance.
|
2025-11-19 16:49:01 +01:00 |
|
mlemanczyk
|
02d16bf05c
|
Tiny cleanup
|
2025-11-18 06:02:43 +01:00 |
|
mlemanczyk
|
a5696ca17f
|
App crash fix related to unassigned value
|
2025-11-18 06:02:22 +01:00 |
|
mlemanczyk
|
56be12ab95
|
Cleanup & compilation fixes.
|
2025-11-18 04:45:18 +01:00 |
|
mlemanczyk
|
bc51962f9d
|
Cleanup
|
2025-11-18 04:37:11 +01:00 |
|
mlemanczyk
|
801b1be3e3
|
Cleanup
|
2025-11-18 04:22:39 +01:00 |
|
mlemanczyk
|
66ca969929
|
Naming improvements and small cleanup
|
2025-11-18 03:43:52 +01:00 |
|
mlemanczyk
|
bf7c4bab39
|
Accelerator buffers integrated
|
2025-11-18 01:13:12 +01:00 |
|
mlemanczyk
|
342eff2726
|
GpuKernelPool.GetOrAddKernels removed in --mersenne=bydivisor mode. PartialFactorResult.WithAdditionalPrime will now modify the current instance instead of creating new copy for better performance. SmallPrimeFactorViews renamed to SmallPrimeFactorGpuTables for consistency with other static tables.
|
2025-11-17 23:33:59 +01:00 |
|
mlemanczyk
|
2fc74cf98d
|
Cleanup
|
2025-11-17 20:12:00 +01:00 |
|
mlemanczyk
|
f630bfb598
|
HeuristicCombinedPrimeTesterAccelerator integrated with PrimeOrderCalculatorAccelerator.
|
2025-11-17 17:38:23 +01:00 |
|
mlemanczyk
|
183b147135
|
Heuristic tables split into 2 groups
|
2025-11-17 16:04:27 +01:00 |
|
mlemanczyk
|
c413ee1162
|
Revert "Stream handling simplified to avoid dictionary lookups in favor of array lookups with known indexes."
This reverts commit a84445ef2a.
|
2025-11-16 17:14:48 +01:00 |
|
mlemanczyk
|
a84445ef2a
|
Stream handling simplified to avoid dictionary lookups in favor of array lookups with known indexes.
|
2025-11-16 15:01:51 +01:00 |
|
mlemanczyk
|
cd7636ddbe
|
Manual accelerator stream creations replaced with pool
|
2025-11-15 13:45:24 +01:00 |
|
mlemanczyk
|
0540411cad
|
Accelerator index added for dictionary-less use-cases
|
2025-11-15 02:21:45 +01:00 |
|
mlemanczyk
|
6cb63b6e73
|
Internal accelerator array removed
|
2025-11-14 12:03:31 +01:00 |
|
mlemanczyk
|
42447c4e43
|
BinaryGcd switched to the best performing variant according to benchmarks.
|
2025-11-14 11:43:16 +01:00 |
|
mlemanczyk
|
be435b7760
|
Kernels made part of the accelerators for better performance.
|
2025-11-13 18:52:46 +01:00 |
|
mlemanczyk
|
0d2a88c45f
|
GpuPrimeWorkLimiter.Acquire() / .Release() removed to save time on the hot-path with billions of calls. We'll rely on AcceleratorStreamPool limits and synchronization.
|
2025-11-13 17:52:13 +01:00 |
|
mlemanczyk
|
1552e10ff0
|
VS Code settings updated.
|
2025-11-13 15:42:09 +01:00 |
|
mlemanczyk
|
c53aa517f7
|
GpuScratchBuffer / -Pool naively integrated with PriemOrderCalculatorAccelerator (formerly Pow2MontgomeryAccelerator). FactorEntry replaced with 2 arrays - unused field removed. Small cleanup.
|
2025-11-13 14:41:27 +01:00 |
|
mlemanczyk
|
43863d03fb
|
Performance improvements
|
2025-11-13 00:51:32 +01:00 |
|
mlemanczyk
|
5bc65464d0
|
Initial PollardRho implementation for GPU. Added pool for accelerator streams shared across the threads. GPU processing performance and stabilization improvements. GpuUInt128.BinaryGcd switched to the version which outperformed other in benchmarks.
|
2025-11-12 21:18:30 +01:00 |
|
mlemanczyk
|
735bfa1557
|
GPU accelerator recycled for better performance.
|
2025-11-12 07:39:52 +01:00 |
|
mlemanczyk
|
fdc2da7dae
|
Accelerator leak fixed.
|
2025-11-11 16:40:44 +01:00 |
|
mlemanczyk
|
cf5f78c2ef
|
PrimeTesterByLastDigitAccelerator integrated into Pow2MontgomeryGpuCalculator for better performance.
|
2025-11-11 13:36:21 +01:00 |
|
mlemanczyk
|
0de9871529
|
Functionality and classes separated. Kernel initialization made dependent on a flag. Cleanup.
|
2025-11-10 18:35:50 +01:00 |
|
mlemanczyk
|
45dfa3b724
|
Console logging extended with kernel warmup progress
|
2025-11-10 18:18:12 +01:00 |
|
mlemanczyk
|
fa89958736
|
Stabilization improvements. Stream will be released when releasing GPU lease to prevent application crashes.
|
2025-11-10 14:30:30 +01:00 |
|
Marek Lemańczyk
|
2726c369f6
|
Merge pull request #256 from mlemanczyk/codex/optimize-evenperfectbitscanner-for-static-arrays
Adopt upstream GPU scratch isolation fixes
|
2025-11-09 21:53:50 +01:00 |
|
mlemanczyk
|
d0b1639a5d
|
GPU stabilization improvements to prevent calculation crashes
|
2025-11-09 21:52:16 +01:00 |
|
mlemanczyk
|
a338bb0d0b
|
Merge branch 'codex/optimize-evenperfectbitscanner-for-static-arrays' of https://github.com/mlemanczyk/even-perfect-numbers-scanner into codex/optimize-evenperfectbitscanner-for-static-arrays
|
2025-11-07 15:39:11 +01:00 |
|
mlemanczyk
|
8e779c5c9e
|
GpuKernelLease removed
|
2025-11-07 15:36:45 +01:00 |
|
mlemanczyk
|
da3093a9ba
|
GpuKernelLease removed
|
2025-11-07 15:18:17 +01:00 |
|
mlemanczyk
|
0410fd2c91
|
PooledContext removal - continuation. GpuKernelLease prepared for removal.
|
2025-11-07 14:13:11 +01:00 |
|
mlemanczyk
|
f4e365194d
|
GpuContextPool removed, because we share context and accelerator between threads, using streams to separate.
|
2025-11-07 12:52:20 +01:00 |
|
mlemanczyk
|
7c035239b4
|
Cleanup. Classes & structs extracted to their own files.
|
2025-11-07 10:34:31 +01:00 |
|
mlemanczyk
|
119690086a
|
ConcurrentDictionary removed. Kernel made dependent on the shared GPU context.
|
2025-11-07 10:16:33 +01:00 |
|
mlemanczyk
|
9537addf38
|
ArrayPool<T> replaced with ThreadStaticPools
|
2025-11-07 00:46:16 +01:00 |
|
mlemanczyk
|
c004e140db
|
Ignore words extended
|
2025-11-06 18:54:18 +01:00 |
|
mlemanczyk
|
de2a78b27b
|
Streams added to all kernels and GPU operations to separate threads from each other.
|
2025-11-06 18:53:55 +01:00 |
|
mlemanczyk
|
64d615c402
|
Various optimizations to separate non-static data between threads and resolve read/write access issue.
|
2025-11-04 20:45:56 +01:00 |
|
Marek Lemańczyk
|
5a17fa64d5
|
Restore per-lease kernel containers
|
2025-11-04 00:46:59 +01:00 |
|
Marek Lemańczyk
|
dbde6337ea
|
Tie GPU scratch buffers to context leases
|
2025-11-04 00:26:38 +01:00 |
|
Marek Lemańczyk
|
4c4d4243fb
|
Merge remote-tracking branch 'github/codex/optimize-evenperfectbitscanner-for-static-arrays-khd9w8' into work
# Conflicts:
# PerfectNumbers.Core/Gpu/GpuContextPool.cs
# PerfectNumbers.Core/Gpu/GpuKernelLease.cs
# PerfectNumbers.Core/Gpu/GpuKernelPool.cs
# PerfectNumbers.Core/Gpu/GpuStaticTableInitializer.cs
# PerfectNumbers.Core/Gpu/Kernels/PrimeOrderSpecialMaxKernels.cs
# PerfectNumbers.Core/PrimeOrderCalculator.Cpu.cs
# PerfectNumbers.Core/PrimeOrderCalculator.Gpu.cs
# PerfectNumbers.Core/PrimeTester.cs
|
2025-11-03 23:59:12 +01:00 |
|
Marek Lemańczyk
|
507daaddb9
|
Merge pull request #253 from mlemanczyk/codex/optimize-evenperfectbitscanner-for-primetestergpucontextleas
Add GPU lease warm-up and shared limiter
|
2025-11-02 14:02:42 +01:00 |
|
Marek Lemańczyk
|
1cbe7bf869
|
Use GpuPrimeWorkLimiter for GPU lease limiting
|
2025-11-02 14:02:15 +01:00 |
|
Marek Lemańczyk
|
00d4e9bde2
|
Add GPU lease warm-up and shared limiter
|
2025-11-02 13:47:57 +01:00 |
|
mlemanczyk
|
0e7bbae132
|
GPU contexts and accelerators made shared to prevent application crashes with high no. of threads.
|
2025-11-02 12:51:31 +01:00 |
|
mlemanczyk
|
b33a3c8e75
|
Compilation error fixed
|
2025-11-02 11:25:41 +01:00 |
|
mlemanczyk
|
07be671726
|
Various small optimizations
|
2025-11-02 11:24:18 +01:00 |
|
Marek Lemańczyk
|
76dfe108a9
|
Address feedback on GPU pooling and heuristic factoring
|
2025-11-02 11:22:49 +01:00 |
|
Marek Lemańczyk
|
5339c3c304
|
Use span growth instead of dictionaries in partial factor
|
2025-11-02 11:22:38 +01:00 |
|
Marek Lemańczyk
|
ab6a416de2
|
Warm GPU resources before thread startup
|
2025-11-02 11:22:28 +01:00 |
|
mlemanczyk
|
2281d9535e
|
Revert "Merge pull request #251 from mlemanczyk/codex/refactor-prime-checking-on-gpu-n5t2pm"
This reverts commit 936ce239db, reversing
changes made to e14b77e504.
|
2025-11-02 11:22:14 +01:00 |
|
Marek Lemańczyk
|
936ce239db
|
Merge pull request #251 from mlemanczyk/codex/refactor-prime-checking-on-gpu-n5t2pm
Warm GPU resources before thread startup
|
2025-11-01 04:09:00 +01:00 |
|
mlemanczyk
|
22f20bfe98
|
Various small optimizations
|
2025-11-01 03:42:36 +01:00 |
|
Marek Lemańczyk
|
b7c34f4960
|
Preload divisor generator tables for GPU pool contexts
|
2025-10-31 23:01:28 +01:00 |
|
Marek Lemańczyk
|
469c8057d3
|
Flatten heuristic trial division bounds checks
|
2025-10-31 22:45:59 +01:00 |
|
Marek Lemańczyk
|
8c662c5c85
|
Address feedback on GPU pooling and heuristic factoring
|
2025-10-31 21:47:42 +01:00 |
|
Marek Lemańczyk
|
567b92792c
|
Use span growth instead of dictionaries in partial factor
|
2025-10-31 18:52:00 +01:00 |
|
Marek Lemańczyk
|
6864b316d5
|
Warm GPU resources before thread startup
|
2025-10-31 16:56:25 +01:00 |
|
mlemanczyk
|
e14b77e504
|
Batch size made dynamic - dependent on the value
|
2025-10-30 02:43:15 +01:00 |
|
Marek Lemańczyk
|
30af16a4f6
|
Merge pull request #249 from mlemanczyk/codex/optimize-heuristiccombinedprimetester-calculations
Use divisor square tables in heuristic combined prime tester
|
2025-10-29 22:31:52 +01:00 |
|
mlemanczyk
|
fc5700f82c
|
IsPrime with cancellation token removed.
|
2025-10-29 22:31:28 +01:00 |
|
Marek Lemańczyk
|
f9504a6a19
|
Use atomic flag writes in heuristic trial division
|
2025-10-29 20:40:40 +01:00 |
|
Marek Lemańczyk
|
5ac05489c1
|
Use precomputed divisor squares in heuristic prime tester
|
2025-10-29 20:22:41 +01:00 |
|
Marek Lemańczyk
|
f7a0627ce5
|
Align heuristic prime testers with squared limits
|
2025-10-29 19:35:59 +01:00 |
|
Marek Lemańczyk
|
5536dc4865
|
Fix GPU by-divisor hang for small primes
|
2025-10-29 19:21:41 +01:00 |
|
Marek Lemańczyk
|
c61df1c33b
|
Inline batch copies for GPU prime tester
|
2025-10-29 19:21:32 +01:00 |
|
Marek Lemańczyk
|
2b0fc5be13
|
Pool reusable GPU leases with embedded kernel state
|
2025-10-29 18:22:40 +01:00 |
|
Marek Lemańczyk
|
a4ac82e74d
|
Inline GPU kernel state into prime tester leases
|
2025-10-29 18:13:51 +01:00 |
|
Marek Lemańczyk
|
23fa56b356
|
Embed kernel state lookup in GPU leases
|
2025-10-29 18:13:46 +01:00 |
|
Marek Lemańczyk
|
08499fdda1
|
Refine GPU prime tester leasing
|
2025-10-29 17:39:38 +01:00 |
|
Marek Lemańczyk
|
6395b06b19
|
Optimize single GPU prime path and reuse lease buffers
|
2025-10-29 17:20:21 +01:00 |
|
Marek Lemańczyk
|
83a6c6c558
|
Scope GPU prime tester buffers to leases
|
2025-10-29 17:05:17 +01:00 |
|
Marek Lemańczyk
|
ca53ddc798
|
Inline GPU lease buffers into the context lease
|
2025-10-29 16:53:29 +01:00 |
|
Marek Lemańczyk
|
aab785650d
|
Manage GPU lease buffers without kernel scratch pool
|
2025-10-29 16:53:22 +01:00 |
|
Marek Lemańczyk
|
13b59abb1c
|
Embed GPU scratch buffers in context leases
|
2025-10-29 16:25:38 +01:00 |
|
Marek Lemańczyk
|
b753654ebb
|
Enforce valid divisor selectors in heuristic combined tester
|
2025-10-29 15:32:40 +01:00 |
|
Marek Lemańczyk
|
b0158a844a
|
Use divisor squares to bound heuristic combined trial division
|
2025-10-29 15:13:54 +01:00 |
|
mlemanczyk
|
4ab77ba170
|
Merge branch 'codex/analyze-gc-instances-in-checkdivisors-method' of https://github.com/mlemanczyk/even-perfect-numbers-scanner into codex/analyze-gc-instances-in-checkdivisors-method
|
2025-10-29 14:06:08 +01:00 |
|
Marek Lemańczyk
|
47eee81d3c
|
Merge pull request #248 from mlemanczyk/codex/optimize-heuristicprimetester-for-divisor-selection
Add filtered group B divisor tables for heuristic GPU checks
|
2025-10-29 14:05:02 +01:00 |
|
mlemanczyk
|
b2865b54ce
|
Tiny optimization
|
2025-10-29 14:04:25 +01:00 |
|
mlemanczyk
|
4c79c4087e
|
Various optimizations
|
2025-10-29 14:00:38 +01:00 |
|
mlemanczyk
|
3147728d5b
|
Benchmarks for heuristic combined methods added
|
2025-10-29 04:53:13 +01:00 |
|
mlemanczyk
|
880b1cd962
|
Revert "Unroll divisor-by-divisor GPU kernel loops"
This reverts commit 5d14efb739.
|
2025-10-29 04:51:28 +01:00 |
|
Marek Lemańczyk
|
5d14efb739
|
Unroll divisor-by-divisor GPU kernel loops
|
2025-10-29 04:31:45 +01:00 |
|
Marek Lemańczyk
|
f49963c4f6
|
Restore Math.Sqrt heuristic bound
|
2025-10-29 01:43:12 +01:00 |
|
Marek Lemańczyk
|
5a9e103bd5
|
Replace heuristic sqrt with log2-based estimate
|
2025-10-29 01:29:12 +01:00 |
|
Marek Lemańczyk
|
eeeff42be6
|
Replace heuristic sqrt with integer algorithm
|
2025-10-29 01:02:31 +01:00 |
|
Marek Lemańczyk
|
b54f4b6bd6
|
Simplify combined heuristic divisor selection
|
2025-10-29 00:44:46 +01:00 |
|
Marek Lemańczyk
|
b2cb17a96f
|
Return to one-A-one-B combined schedule
|
2025-10-29 00:44:39 +01:00 |
|