mlemanczyk
|
7518ba396e
|
Results updated.
|
2025-12-08 20:59:18 +01:00 |
|
mlemanczyk
|
f7dbc017a9
|
Modulo operators replaced with steppers, where possible.
|
2025-12-08 20:57:47 +01:00 |
|
mlemanczyk
|
475507ce0c
|
Results updated.
|
2025-12-08 16:39:07 +01:00 |
|
mlemanczyk
|
5c91d79927
|
State saving frequency increased to prevent too many re-calculations during frequent restarts.
|
2025-12-08 16:35:24 +01:00 |
|
mlemanczyk
|
6e68252279
|
Status update improvement.
|
2025-12-08 02:53:27 +01:00 |
|
mlemanczyk
|
f1109330df
|
Default no. of accelerators increased back to 298 (max without exceptions). State saving interval decreased to limit unnecessary overhead.
|
2025-12-08 02:51:04 +01:00 |
|
mlemanczyk
|
f76cf05e10
|
Exception message added to console output.
|
2025-12-08 02:49:57 +01:00 |
|
mlemanczyk
|
d69ad9c64a
|
State saving interval decreased.
|
2025-12-07 19:17:09 +01:00 |
|
mlemanczyk
|
6887111128
|
BigInteger-friendly steppers added. MersenneResidueStepper converted to struct. Manual residue tracking replaced with steppers. Modulo operations replaced with steppers.
|
2025-12-07 19:16:45 +01:00 |
|
mlemanczyk
|
fbf074ade0
|
Results updated.
|
2025-12-07 13:48:11 +01:00 |
|
mlemanczyk
|
3f9cd53efc
|
Results updated.
|
2025-12-07 00:21:57 +01:00 |
|
mlemanczyk
|
a4c52e7282
|
Results updated.
|
2025-12-06 23:24:03 +01:00 |
|
mlemanczyk
|
9af8244040
|
Results updated.
|
2025-12-06 20:12:09 +01:00 |
|
mlemanczyk
|
788e11588e
|
README updated.
|
2025-12-06 20:11:56 +01:00 |
|
mlemanczyk
|
c44d188720
|
--mersenne=residue filtering results added.
|
2025-12-06 19:47:25 +01:00 |
|
mlemanczyk
|
3cde986fa0
|
Results file updated
|
2025-12-06 15:24:11 +01:00 |
|
mlemanczyk
|
573781f086
|
Results updated
|
2025-12-06 12:33:00 +01:00 |
|
mlemanczyk
|
374bf5fe53
|
Readme updated.
|
2025-12-06 11:33:00 +01:00 |
|
mlemanczyk
|
946798affe
|
Results consolidated into one, raw file
|
2025-12-06 11:30:38 +01:00 |
|
mlemanczyk
|
86f20ed083
|
Support for q > 2^64 added in --mersenne=bydivisor mode
|
2025-12-05 23:33:21 +01:00 |
|
mlemanczyk
|
cf5bd6bc1a
|
PendingEntry.WithPrimality changed to modify the instance instead of creating a new one.
|
2025-12-05 15:51:16 +01:00 |
|
mlemanczyk
|
928e847f1f
|
AscendingdivisorRemainderStepper used in PrimeTesterByLastDigit
|
2025-12-05 14:17:24 +01:00 |
|
mlemanczyk
|
b3a325521a
|
PrimeTester.IsPrimeCpu will now reuse remainders from previous checks.
|
2025-12-04 12:39:56 +01:00 |
|
mlemanczyk
|
efb4933935
|
Tiny cleanup
|
2025-12-04 12:34:42 +01:00 |
|
mlemanczyk
|
19e549adc5
|
Readme extended. Added excluded candidates without recording the factor.
|
2025-12-04 12:27:44 +01:00 |
|
mlemanczyk
|
bce11e0842
|
Factors from primality tests added.
|
2025-12-04 12:16:09 +01:00 |
|
mlemanczyk
|
86192a71b0
|
Divisor checking optimized to only flag if divisor was found or not without returning complete array of hits. We'll now also track residues for 13, 17 & 19 as the most frequent ones.
|
2025-12-03 00:57:25 +01:00 |
|
mlemanczyk
|
85a90c70bf
|
--gpu-ration command-line argument added. AscendingDivisorRemainderStepper implemented in PrimeTester.IsPrimeCpu. PrimeOrderCalculator.RunOnCpu adjusted for low GPU ratios to prevent infinite increase of the counter.
|
2025-12-02 23:36:18 +01:00 |
|
mlemanczyk
|
f43c67c86f
|
Tasks will now save calculations progress and resume calculation upon restart.
|
2025-12-02 00:42:38 +01:00 |
|
mlemanczyk
|
941733905b
|
Hybrid device mode implemented as the current --mersenne=bydivisor CPU execution path. CPU path is now limited to CPU calculations, only.
|
2025-12-01 03:45:39 +01:00 |
|
mlemanczyk
|
353a121d03
|
Alternative to SemaphoreSlim added
|
2025-11-30 15:41:00 +01:00 |
|
mlemanczyk
|
c3254e3fda
|
Temporary restored delegating all work to CPU in CPU mode in preparation for a branch-less split.
|
2025-11-30 15:40:03 +01:00 |
|
mlemanczyk
|
67c1d9309a
|
Reusing prime work limiter to limit the number of active threads.
|
2025-11-30 15:37:01 +01:00 |
|
mlemanczyk
|
fbfc682899
|
Restored heuristic prime tester use
|
2025-11-30 15:35:56 +01:00 |
|
mlemanczyk
|
6a1198c417
|
CPU vs GPU work delegation adjusted to better utilize CPU.
|
2025-11-29 12:09:33 +01:00 |
|
mlemanczyk
|
c311b27dcc
|
Prime testing using divisor tables depending on the last digit separated to its own class. PrimeTester switched back to standard endings.
|
2025-11-27 16:45:02 +01:00 |
|
mlemanczyk
|
a296e62d4d
|
--min-k command-line argument added. Partial factoring switched back to CPU.
|
2025-11-26 22:03:52 +01:00 |
|
mlemanczyk
|
13498dc460
|
Most device buffers integrated into PrimeOrderCalculatorAccelerator. PrimeOrderCalculator switched to partial factoring on GPU.
|
2025-11-26 03:16:39 +01:00 |
|
mlemanczyk
|
5b48a89448
|
Cleanup. Hint removed.
|
2025-11-25 01:34:31 +01:00 |
|
mlemanczyk
|
bacb2a1d18
|
Cleanup. Unnecessary GC collection removed. It doesn't limit RAM usage.
|
2025-11-25 01:30:59 +01:00 |
|
mlemanczyk
|
1e9bd49145
|
Cleanup. No longer applicable TODO removed.
|
2025-11-25 01:30:13 +01:00 |
|
mlemanczyk
|
47521e327a
|
Cleanup
|
2025-11-25 00:50:18 +01:00 |
|
mlemanczyk
|
e8b4c1fc83
|
Missing return of accelerator added
|
2025-11-25 00:34:17 +01:00 |
|
mlemanczyk
|
3e756b262e
|
Cleanup
|
2025-11-25 00:33:54 +01:00 |
|
mlemanczyk
|
e9787f2991
|
Cleanup. Completed TODO removed.
|
2025-11-24 23:53:09 +01:00 |
|
mlemanczyk
|
91894637af
|
Aggressive inlining added to simple switch methods.
|
2025-11-24 22:54:04 +01:00 |
|
mlemanczyk
|
b9ca95bf8c
|
PrimeOrderCalculatorAccelerator.Rent is now created outside of the loops and re-used for all calculations.
|
2025-11-24 22:51:53 +01:00 |
|
mlemanczyk
|
57a50e2a37
|
Pow2Mod kernel specific methods moved to Pow2MontgomeryKernels.
|
2025-11-24 18:04:07 +01:00 |
|
mlemanczyk
|
070e2a14fd
|
MontgomeryDivisorData converted to a pooled class to limit GC pressure. MontgomeryDivisorDataGpu added for GPU operations. PrimeOrderCalculator kernels precompiled during warmup.
|
2025-11-24 15:14:31 +01:00 |
|
mlemanczyk
|
07efd5d2a1
|
Accelerator locks removed
|
2025-11-23 14:59:29 +01:00 |
|
mlemanczyk
|
79021108f5
|
Tiny cleanup
|
2025-11-23 14:53:35 +01:00 |
|
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 |
|