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 |
|
Marek Lemańczyk
|
f993561cd5
|
Eagerly build combined divisors and restore two-A-one-B default
|
2025-10-28 23:43:15 +01:00 |
|
Marek Lemańczyk
|
e8d163f595
|
Add three-A-two-B combined divisor schedule
|
2025-10-28 23:22:16 +01:00 |
|
Marek Lemańczyk
|
465b40bf35
|
Add three-A-one-B schedule to combined tester
|
2025-10-28 23:09:41 +01:00 |
|
Marek Lemańczyk
|
4c445f2a42
|
Switch combined heuristic divisors to 1A-1B schedule
|
2025-10-28 22:55:17 +01:00 |
|
Marek Lemańczyk
|
41bff698e8
|
Add combined heuristic prime tester with shared divisor arrays
|
2025-10-28 22:40:51 +01:00 |
|
mlemanczyk
|
0850227881
|
Switched to heuristic GPU for a better performance than the standard one.
|
2025-10-28 22:15:33 +01:00 |
|
Marek Lemańczyk
|
c693a05708
|
Add reusable group B divisor tables without trailing-three primes
|
2025-10-28 21:56:18 +01:00 |
|
Marek Lemańczyk
|
b83bddf49a
|
Merge pull request #247 from mlemanczyk/codex/fix-unhandled-exception-in-evenperfectbitscanner
Fix GPU Montgomery multiply to avoid unsupported intrinsics
|
2025-10-28 21:10:09 +01:00 |
|
mlemanczyk
|
e5f5cd563e
|
Merge branch 'codex/fix-unhandled-exception-in-evenperfectbitscanner' of https://github.com/mlemanczyk/even-perfect-numbers-scanner into codex/fix-unhandled-exception-in-evenperfectbitscanner
|
2025-10-28 21:08:14 +01:00 |
|
Marek Lemańczyk
|
3304335072
|
Rename CPU Montgomery multiply and align GPU helper
|
2025-10-28 21:06:40 +01:00 |
|
mlemanczyk
|
ab045a62c4
|
Revert "Temporarily enabling heuristic GPU order checks."
This reverts commit 4db06cfe80.
|
2025-10-28 21:04:09 +01:00 |
|
Marek Lemańczyk
|
eaee599f25
|
Use GPU-safe Montgomery multiply in kernels
|
2025-10-28 20:58:02 +01:00 |
|
mlemanczyk
|
4db06cfe80
|
Temporarily enabling heuristic GPU order checks.
|
2025-10-28 20:49:41 +01:00 |
|
mlemanczyk
|
bead40713c
|
Switching .IsPrime check to CPU for much higher performance.
|
2025-10-28 20:49:11 +01:00 |
|
mlemanczyk
|
ca8ab2bcf8
|
Tester made static to better mimic production code.
|
2025-10-28 20:48:35 +01:00 |
|
Marek Lemańczyk
|
d149700311
|
Merge pull request #246 from mlemanczyk/codex/compare-cpu-and-gpu-execution-paths
Make GPU sieve results authoritative
|
2025-10-28 20:14:33 +01:00 |
|
Marek Lemańczyk
|
1792349bad
|
Make GPU sieve results authoritative
|
2025-10-28 20:14:22 +01:00 |
|
mlemanczyk
|
2f461ee001
|
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-28 20:12:45 +01:00 |
|
mlemanczyk
|
93aed56f23
|
Non-heuristic GPU benchmark uncommented, since we improved it.
|
2025-10-28 20:12:41 +01:00 |
|
Marek Lemańczyk
|
ff9774925e
|
Merge pull request #245 from mlemanczyk/codex/move-buildsmallprimes-to-divisorgenerator-g256a9
Enable residue-aware GPU sieve in PrimeTester
|
2025-10-28 20:00:22 +01:00 |
|
Marek Lemańczyk
|
1f9421430b
|
Reuse GPU divisor tables across PrimeTester batches
|
2025-10-28 19:53:11 +01:00 |
|
Marek Lemańczyk
|
c53966e481
|
Enable residue-aware GPU sieve in PrimeTester
|
2025-10-28 18:39:18 +01:00 |
|
mlemanczyk
|
3d43d52f2e
|
Console logging updated
|
2025-10-28 16:04:42 +01:00 |
|
Marek Lemańczyk
|
fa4bb0bcc1
|
Merge pull request #243 from mlemanczyk/codex/modify-evenperfectbitscanner-to-use-taskthreadpool
Refactor by-divisor scheduling to use task thread pool
|
2025-10-28 15:47:47 +01:00 |
|
Marek Lemańczyk
|
c4c783610b
|
Add start gate to by-divisor task scheduling
|
2025-10-28 15:32:15 +01:00 |
|
Marek Lemańczyk
|
29f58e3059
|
Refactor by-divisor scheduling to use task thread pool
|
2025-10-28 15:11:21 +01:00 |
|
Marek Lemańczyk
|
29af0cb0ce
|
Merge pull request #242 from mlemanczyk/codex/modify-taskthreadpool-to-terminate-threads-after-tasks
Stop tracking double disposal in TaskThreadPool
|
2025-10-28 14:29:48 +01:00 |
|
Marek Lemańczyk
|
3edf2cd575
|
Stop tracking double disposal in TaskThreadPool
|
2025-10-28 14:29:34 +01:00 |
|
Marek Lemańczyk
|
a89ed7576e
|
Merge pull request #241 from mlemanczyk/codex/remove-executionscope-structure
Remove GPU context creation lock
|
2025-10-28 13:39:43 +01:00 |
|
Marek Lemańczyk
|
86990ae0f7
|
Remove kernel initialization lock from GPU leases
|
2025-10-28 13:30:47 +01:00 |
|
Marek Lemańczyk
|
de7ddd8db3
|
Remove GPU context creation lock
|
2025-10-28 13:26:20 +01:00 |
|
mlemanczyk
|
139899fa5e
|
More console logs added.
|
2025-10-28 02:11:24 +01:00 |
|
Marek Lemańczyk
|
c39a99a4fd
|
Merge pull request #240 from mlemanczyk/codex/analyze-mersenne=bydivisor-loops-for-early-breaks-kynlfe
Remove temporary by-divisor review documents
|
2025-10-28 02:01:52 +01:00 |
|
Marek Lemańczyk
|
6dd5cea79f
|
Remove temporary by-divisor review documents
|
2025-10-28 02:01:28 +01:00 |
|
Marek Lemańczyk
|
bd0727131f
|
Merge pull request #238 from mlemanczyk/codex/optimize-evenperfectbitscanner-loops-kit1so
Hoist prime order thresholds in CPU heuristics
|
2025-10-27 21:31:23 +01:00 |
|
Marek Lemańczyk
|
968dd89d0d
|
Remove by-divisor path map document
|
2025-10-27 21:28:41 +01:00 |
|
Marek Lemańczyk
|
94a4ed8328
|
Hoist prime order thresholds in CPU heuristics
|
2025-10-27 21:24:43 +01:00 |
|
mlemanczyk
|
d381abe0cc
|
We'll now clear the dictionary after renting, to avoid unnecessary clearing if it's not going to be used anymore.
|
2025-10-27 16:54:49 +01:00 |
|
mlemanczyk
|
50d66a5186
|
Switched to GPU version in some places.
|
2025-10-27 15:30:10 +01:00 |
|
Marek Lemańczyk
|
1bd3d5c163
|
Merge pull request #235 from mlemanczyk/codex/modify-primetester.isprime-for-gpu
Add GPU prime tester overload for preallocated buffers
|
2025-10-27 00:03:38 +01:00 |
|
Marek Lemańczyk
|
9a0e328995
|
Reintroduce MulHigh CPU helper and tighten GPU sieve loop
|
2025-10-26 23:41:14 +01:00 |
|
Marek Lemańczyk
|
e2f68cedf2
|
Short-circuit small prime sieve kernel loops
|
2025-10-26 22:42:27 +01:00 |
|
Marek Lemańczyk
|
0e1212aa1c
|
Split MulHigh extensions into CPU and GPU variants
|
2025-10-26 22:42:21 +01:00 |
|
Marek Lemańczyk
|
3d458fc6da
|
Use precomputed small prime squares in GPU sieve
|
2025-10-26 22:28:04 +01:00 |
|
Marek Lemańczyk
|
794e092e57
|
Refactor GPU partial factoring context handling
|
2025-10-26 21:46:11 +01:00 |
|