Commit Graph
100 Commits
Author SHA1 Message Date
mlemanczyk 45e3455ff3 DivisorSet.BitContradiction mode added to --mersenne=bydivisor. 2026-01-04 17:59:02 +01:00
mlemanczyk 6a924f4041 DivisorSet.Percentile, Additive and TopDown modes implemented. State files ported to LMDB => FASTER to avoid millions of files in folders. 2026-01-04 12:17:27 +01:00
mlemanczyk 27f65baf3d Predictive and default bydivisor modes will use separate files to track the last checked k to prevent impacting results between modes. 2026-01-03 20:53:57 +01:00
mlemanczyk a6d408f2aa Predictive scanning implemented for bydivisor method. 2026-01-03 20:01:22 +01:00
mlemanczyk ef8034b258 Results updated. 2026-01-03 01:41:10 +01:00
mlemanczyk 6b80e31e6c Pow2MontgomeryModWindowedConvertToStandardCpu usages replaced with a comparison to MontgomeryOne avoiding unnecessary conversions. Results updated. 2026-01-03 01:37:40 +01:00
mlemanczyk 3f59cdc14b Results updated, including trivial divisors. 2026-01-02 23:46:54 +01:00
mlemanczyk ce3079a48e Restored CalculateOrderKernelLauncher kernel setup. 2026-01-02 23:46:30 +01:00
mlemanczyk f3ed5b04a1 Improvements to recognize cases when we only find trivial divisors for p. Not fully fixed, yet. 2026-01-02 23:39:32 +01:00
mlemanczyk 0d11199ef2 Results updated. 2025-12-30 19:45:17 +01:00
mlemanczyk bfb3bcb1e3 Fixed issue with treating Mersenne's number as valid divisor for p. 2025-12-29 22:44:14 +01:00
mlemanczyk be92ef1ae3 Compilation error fixed. 2025-12-29 05:49:45 +01:00
mlemanczyk 7e00a73174 Results updated. 2025-12-28 18:37:34 +01:00
mlemanczyk e02264d3f1 Results updated 2025-12-28 12:34:29 +01:00
mlemanczyk 48ff886fb2 Dictionary extended 2025-12-28 12:28:42 +01:00
mlemanczyk 9a6a1968b7 Merge branch 'simplify-bydivisor' of https://github.com/mlemanczyk/even-perfect-numbers-scanner into simplify-bydivisor 2025-12-28 00:59:18 +01:00
mlemanczyk 87a66e4eca DivisorSet scans added as EnumDependentTemplate to MersenneNumberDivisorByDivisorCpuTesterWithTemplate. New Pow2Groups scan implemented based on statistics for high divisors. MersenneNumberDivisorByDivisorPrimeScan sessions integrated into MersenneNumberDivisorByDivisorPrimeScanSessionWithTemplate. Various micro optimizations to eliminate variable, unnecessary struct creations and continue scans in higher divisor ranges, when lower ranges are exhausted. --bydivisor-k-increment command-line argument added. 2025-12-28 00:45:08 +01:00
mlemanczyk 9391954b3e DivisorSet scans added as EnumDependentTemplate to MersenneNumberDivisorByDivisorCpuTesterWithTemplate. New Pow2Groups scan implemented based on statistics for high divisors. MersenneNumberDivisorByDivisorPrimeScan sessions integrated into MersenneNumberDivisorByDivisorPrimeScanSessionWithTemplate. Various micro optimizations to eliminate variable, unnecessary struct creations and continue scans in higher divisor ranges, when lower ranges are exhausted. --bydivisor-k-increment command-line argument added. 2025-12-28 00:39:36 +01:00
mlemanczyk 759614de54 Fixed invalid index return when EnvironmentConfig.RollingAccelerators is 1. 2025-12-28 00:14:23 +01:00
mlemanczyk 3342ead2d4 DeviceDependentGenerator modified to create all classes in "generated" folder and clean up generated files during dotnet clean process. 2025-12-28 00:13:30 +01:00
mlemanczyk 75a2017385 Heuristic and small prime factor kernels restored in PrimeOrderAcceleratorTemplate. 2025-12-28 00:12:39 +01:00
mlemanczyk 6603f65993 New numbers added for quick and easy reuse without struct creations. 2025-12-28 00:12:39 +01:00
mlemanczyk 6678f24887 Race condition fixed 2025-12-25 23:14:12 +01:00
mlemanczyk 2bf9ff233c PrimeOrderCalculator converted to a template. 2025-12-21 18:02:59 +01:00
mlemanczyk 48df3df290 Fix to update pending list entry with the updated one, after PartialFactorPendingEntry was converted back to struct. 2025-12-20 16:46:57 +01:00
mlemanczyk 9147124ddf MersenneNumberTesterTemplate extended to depend on new enums: CacheStatus & OrderDevice instead of constructor parameters to limit code branches during execution. 2025-12-19 22:01:21 +01:00
mlemanczyk c5c42b0c19 MersenneNumberTesterTemplate made dependent on the calculation method to eliminate unnecessary branching. 2025-12-19 20:01:45 +01:00
mlemanczyk c9a421a1b4 Merge branch 'simplify-bydivisor' of https://github.com/mlemanczyk/even-perfect-numbers-scanner into simplify-bydivisor 2025-12-19 19:02:06 +01:00
mlemanczyk d32eea0212 DeviceDependentGenerator extended to allow generation of enum dependent templates. Name suffix separate to its own attribute. 2025-12-19 19:01:38 +01:00
mlemanczyk 9ff0431f59 DeviceDependentGenerator extended to allow generation of enum dependent templates. Name suffix separate to its own attribute. 2025-12-19 19:01:27 +01:00
mlemanczyk a21ab3134e MersenneNumberTester converted to device dependent MersenneNumberTesterTemplate. 2025-12-19 18:25:27 +01:00
mlemanczyk b53d00a8cc EvenPerfectBitScanner fully migrated to MersenneDivisorCycles. Tiny optimization. 2025-12-19 04:38:01 +01:00
mlemanczyk 74837a407e MersenneDivisorCycles converted to device template. 2025-12-19 04:03:27 +01:00
mlemanczyk 31ecf24522 TODOs added. 2025-12-19 00:10:21 +01:00
mlemanczyk 870819dec6 MersenneNumberDivisorByDivisorCpuTesterWithTemplate optimizations 2025-12-19 00:10:09 +01:00
mlemanczyk 4edad10be8 MethodImpl attributes adjustments. 2025-12-18 20:10:41 +01:00
mlemanczyk ed299edf56 MersenneNumberDivisorByDivisorCpuTesterWithCpuOrder, MersenneNumberDivisorByDivisorCpuTesterWithHybridOrder & MersenneNumberDivisorByDivisorCpuTesterWithGpuOrder converted to device dependent template MersenneNumberDivisorByDivisorCpuTesterWithTemplate. 2025-12-18 20:10:20 +01:00
mlemanczyk 2236c3ec35 MersenneCpuDivisorScanSessionWithCpuOrder, MersenneCpuDivisorScanSessionWithHybridOrder & MersenneCpuDivisorScanSessionWithGpuOrder converted to device dependent templates 2025-12-18 19:46:21 +01:00
mlemanczyk 8ea975f2ed DeviceDependentGenerator added to tasks.json. It can now generate the files during VS Code builds. Ignore list updated. 2025-12-18 09:39:56 +01:00
mlemanczyk af7c9491e4 DeviceDependentGenerator can now add suffix to the name of the generated types. 2025-12-18 09:23:41 +01:00
mlemanczyk 0b226c76e8 #nullable added to auto-generated sources to allow compilations with nullability check enabled. 2025-12-18 09:09:08 +01:00
mlemanczyk 9faa397364 DeviceDependentGenerator added. 2025-12-18 07:37:53 +01:00
mlemanczyk 23748ad3d2 MethodImpl attributes added. Unnecessary try...finally blocks removed. 2025-12-18 05:31:27 +01:00
mlemanczyk 189013b849 Results updated. 2025-12-18 05:09:52 +01:00
mlemanczyk 2abc6aae49 --mersenne=bydivisor testers and sessions integrated and converted to structs. 2025-12-18 05:07:31 +01:00
mlemanczyk 3c80221105 MontgomeryDivisorDataPool.Rent / .Return removed as we no longer pool Montgomery divisor data. UInt128Extensions.MontgomeryDivisorDataPool variables optimized. 2025-12-16 02:27:29 +01:00
mlemanczyk b7773adad8 PrimeOrderCalculator.ExponentLoweringCpu optimized to reuse factors & exponents span instead of its own buffers 2025-12-15 20:22:03 +01:00
mlemanczyk 6d427c6906 Results updated. 2025-12-15 17:23:22 +01:00
mlemanczyk 566cbc3599 PrimeOrderCalculator.Cpu optimizations. 2025-12-15 17:22:55 +01:00
mlemanczyk 5523469e8a Results updated. 2025-12-15 07:31:19 +01:00
mlemanczyk 046cfe7d26 BuildDivisorTransitions application added. 2025-12-15 07:30:29 +01:00
mlemanczyk 97fd041ec0 Tiny cleanup for improved readability. 2025-12-15 04:37:03 +01:00
mlemanczyk 2c18818ac8 PrimeOrderCalculator.PopulateSmallPrimeFactorsCpu, .ExtractSmallPrimeExponent & ULongExtensions.ReduceCycleRemainder optimized. 2025-12-15 04:36:47 +01:00
mlemanczyk 048d1576ef Tiny cleanup. 2025-12-15 04:33:09 +01:00
mlemanczyk dce598c857 Results updated. 2025-12-15 04:32:23 +01:00
mlemanczyk a8a41c6132 Results updated. 2025-12-15 04:12:07 +01:00
mlemanczyk 7c3ed34df3 Results updated. 2025-12-15 04:05:10 +01:00
mlemanczyk 695e164f51 Results updated. 2025-12-15 04:04:52 +01:00
mlemanczyk 974b1da873 Small optimizations 2025-12-14 01:35:13 +01:00
mlemanczyk e0daccdc1a BTree fine-tuned. 2025-12-14 00:19:53 +01:00
mlemanczyk bca059c4f2 Initial BTree version implemented. 2025-12-14 00:03:51 +01:00
mlemanczyk e8cca74f68 DeeterministicRandom types optimized. 2025-12-13 16:00:28 +01:00
mlemanczyk 1b3882addc PrimeOrderCalculator.PartialFactorCpu variables optimized. Removed constant parameter from AddFactorToCollector. 2025-12-13 15:36:32 +01:00
mlemanczyk 0fb5a5fa10 Merge branch 'simplify-bydivisor' of https://github.com/mlemanczyk/even-perfect-numbers-scanner into simplify-bydivisor 2025-12-13 14:29:25 +01:00
mlemanczyk 079b2d5b72 PartialFactorPendingEntry changed back to struct for better performance. 2025-12-13 14:28:01 +01:00
mlemanczyk 96bb6a4340 PartialFactorPendingEntry changed back to struct for better performance. 2025-12-13 14:26:55 +01:00
mlemanczyk a185149eba PrimeOrderCalculator.PartiaFactorCpu optimized to use one-time allocation list and stack. 2025-12-13 14:21:37 +01:00
mlemanczyk 9fcd21b734 Results updated. 2025-12-13 13:37:01 +01:00
mlemanczyk cbf3dfcf2e Results updated. 2025-12-13 05:12:22 +01:00
mlemanczyk ec080ade7f PendingEntry renamed to PartialFactorPendingEntry and moved to its own file. PrimeOrderCalculator.PartialFactor partially optimized to use fixed buffers factors & exponents. 2025-12-13 05:11:02 +01:00
mlemanczyk 8fbe248a49 Revert "Reusable buffers introduced."
This reverts commit 39a66fdef1.
2025-12-13 04:17:30 +01:00
mlemanczyk 39a66fdef1 Reusable buffers introduced. 2025-12-13 04:16:05 +01:00
mlemanczyk fd58079c5a Results updated. 2025-12-13 04:03:05 +01:00
mlemanczyk 964bc8b734 Results updated. 2025-12-12 23:35:47 +01:00
mlemanczyk d9bff88055 Results updated. 2025-12-12 22:06:37 +01:00
mlemanczyk 2607c6e2d4 Results updated. 2025-12-12 20:26:43 +01:00
mlemanczyk e8e67ebf83 Results updated. 2025-12-12 18:50:52 +01:00
mlemanczyk ca3785c20d Results updated. 2025-12-12 18:48:07 +01:00
mlemanczyk 8b0d09cc9c Fixed capacity stack improvements to make sure that each thread gets its own instance. 2025-12-12 14:43:49 +01:00
mlemanczyk 8a5a8a7bb5 Results updated. 2025-12-12 11:51:28 +01:00
mlemanczyk 382f0c01a2 Results updated. 2025-12-12 04:53:13 +01:00
mlemanczyk 3e591586fb Results updated. 2025-12-12 04:10:15 +01:00
mlemanczyk d066c780ea Results updated. 2025-12-12 03:46:42 +01:00
mlemanczyk 15bcde1776 SemaphoreSlim replaced with PollingSemaphore. 2025-12-12 03:41:13 +01:00
mlemanczyk 471f9ac6cf Results updated. 2025-12-12 03:33:26 +01:00
mlemanczyk 8afd761d2a Results updated. 2025-12-12 03:18:04 +01:00
mlemanczyk 477d2675ef Results updated. 2025-12-12 01:52:25 +01:00
mlemanczyk 10f0fa272c Results updated. 2025-12-12 01:05:58 +01:00
mlemanczyk 45c477de5a DefaultThreadPoolCapacity updated to avoid too big arrays without reason. 2025-12-12 00:57:51 +01:00
mlemanczyk 49e47b161d Tiny cleanup. Namespace updated. 2025-12-12 00:56:33 +01:00
mlemanczyk 43376745f5 Benchmarks to compare Interlocked with Atomic added. Atomic replaced with Interlocked on CPU path as better performer. 2025-12-11 23:45:01 +01:00
mlemanczyk 0ec48f1f0b Tiny cleanup 2025-12-11 23:27:25 +01:00
mlemanczyk 51284be4fb Micro-optimizations and adjustments. 2025-12-11 22:50:47 +01:00
mlemanczyk 8f0cc17d90 PoolingSemaphore optimized. 2025-12-11 21:46:07 +01:00
mlemanczyk 60ccb3db74 Results updated. 2025-12-11 21:10:37 +01:00
mlemanczyk 260aa19e44 Pools renamed to FixedCapacityPools. Other fixed capacity collections added. Queues, concurrent queues and standard stacks replaced with fixed capacity stacks. MethodImplOptions.AggressiveInlining and .AggressiveOptimization added to simple methods and getters / setters. Variables optimized in few places. 2025-12-11 21:10:19 +01:00
mlemanczyk 547d43de84 ExponentRemainderStepperCpu local variables optimized. Cache is now driven by manually calculated key to avoid unnecessary allocations. 2025-12-11 05:29:19 +01:00
mlemanczyk 131b3265bc PrimeOrderCalculator.Cpu cleaned up - hybrid & GPU related methods moved to their corresponding files. 2025-12-11 00:00:12 +01:00
mlemanczyk 5df2cc7f9b using cleaned up. 2025-12-10 23:59:04 +01:00
mlemanczyk 05d3061c47 MethodImplOptions.AggressiveOptimization & MethodImplOptions.AggressiveInlining optimized. Small optimizations. 2025-12-10 19:59:51 +01:00