Generalized Fermat Prime search program
genefer is an OpenMP® application on CPU and an OpenCL™ application on GPU.
It performs a fast probable primality test for numbers of the form b2n + 1 with Fermat test.
Yves Gallot implemented a new test based on right-angle convolution in Proth.exe in 1999. genefer was a free source code created in 2001. In 2009, Mark Rodenkirch and David Underbakke wrote an implementation for x64 and in 2010, Shoichiro Yamada and Ken Brazier for CUDA. In 2011, Michael Goetz, Ronald Schneider and Iain Bethune added Boinc API and since then genefer has been extensively used by PrimeGrid computing project. In 2013, Yves Gallot wrote different implementations for OpenCL using Number Theoretic Transforms. In 2014, a z-Transform replaced the original weighted transform.
genefer version 22+ is a new C++ application, created in 2022. It was originally written in C and a new design was necessary to achieve new levels of complexity.
It implements an Efficient Modular Exponentiation Proof Scheme discovered by Darren Li.
The test is validated with Gerbicz - Li error checking and a proof is generated with (Pietrzak - Li) algorithm. Thanks to the Verifiable Delay Function, distributed projects run at twice the speed of double-checked calculations.
Any number of the form b2n + 1 such that 2 ≤ b < 2,000,000,000 and 12 ≤ n ≤ 23 can be tested on GPU.
On CPU, the code is optimized for PrimeGrid tests and the limits are b = 2000M (n = 12, 13, 14, 15), b ~ 1500M (n = 16), 1000M (n = 17), 95M (n = 18), 70M (n = 19), 55M (n = 20), 45M (n = 21), 35M (n = 22), 25M (n = 23).
Release 22.12.2, 23.01.0 and 23.07.0 are currently PrimeGrid applications.
Binaries are generated using:
- genefer: Ubuntu 22.04.4 amd64, gcc 11.4
- geneferg: Ubuntu 18.04.6 amd64, gcc 7.5
- genefer_x86, geneferg_x86: Lubuntu 18.04.6 i386, gcc 7.5
- genefer.exe, geneferg.exe, genefer_x86.exe, geneferg_x86.exe: Windows - MSYS2, gcc 13.2
- genefer_macIntel, geneferg_macIntel: MacOS 10.13, llvm/clang 15
- genefer_macARM, geneferg_macARM: MacOS, llvm/clang 15
- genefer_arm64: Ubuntu 22.04 arm64, gcc 11.2
- add FP64 transform on GPU (if FP64 >= 1/4 x INT32 Units).