View Single Post
Old 2019-07-22, 16:54   #22
kriesel
 
kriesel's Avatar
 
"TF79LL86GIMPS96gpu17"
Mar 2017
US midwest

5·31·43 Posts
Default Worktodo entry formats

This is a quick reference for worktodo entry formats for multiple GIMPS programs.
These are a best-effort summary and not guaranteed to be correct or complete. For confirmation, see the performance or help output of the respective programs, their documentation files, and communications by the authors.

Syntax used here is:

\ [ or \ ] means a literal [ or ] is present. (It needs that space between, or it itself does unwanted formatting of this post)
[a|x] either a or x (but not both)
[a] optional a, nul otherwise
[a|b|<nul>] either a or b or neither, but not both
[a[,b[,c]]] a is optional, if neither ,b nor ,c are present; ,b is optional, if ,c is not present; ,c is optional

(parenthetical comment on an example, that should not be included in an actual worktodo entry)
whatever is outside of <> and [] and () is literal
<variable> means substitute the string representation of the value of variable in place of <variable>

Variables used here:
AID = 32-character hexadecimal assignment ID

AlmostRandomString =
any (US) keyboard character string including space and tab but not including any comma (and perhaps not containing some comment indicators and perhaps including some additional characters; embedded # is ok, but apparently not // or \\)

B1 = first stage bound
B2 = second stage bound
B2_start = where to begin a B2 extension run
comment = free form text not processed by the application
curves_to_run = number of curves for ECM
exponent = power in m=2exponent - 1 and typically a prime
k, b, n, c, for number m = k bn + c and typically a prime. For a Mersenne number, k=1, b=2, c=-1.
from = trial factoring starting bit level; lowest candidate factor ~ 2from
how_far_factored = bits level previously factored to in TF
MAX_LINE_LENGTH =
maximum length of a worktodo entry in characters without a terminating '\0'.
nul = null string, no characters. Not to be confused with \0 the nul character.
nth_run =
[1|2|3] corresponding to start values 2/7, 6/5, or random1/random2 for P+1 nworker = natural number for the worker header / section; 1 2 3 etc as applicable
p-1_done = 1 if done to adequate bounds, 0 if not done already to adequate bounds
prp_base = the number that gets raised to a high power in the PRP test, typically 3

residue_type: From the prime95 undoc.txt:
"PRP supports 5 types of residues for compatibility with other PRP programs. If a is the PRP base and N is the number being tested, then the residue types are:
1 = 64-bit residue of a^(N-1), a traditional Fermat PRP test used by most other programs
2 = 64-bit residue of a^((N-1)/2)
3 = 64-bit residue of a^(N+1), only available if b=2
4 = 64-bit residue of a^((N+1)/2), only available if b=2
5 = 64-bit residue of a^(N*known_factors-1), same as type 1 if there are no known factors"
Additionally, there is a residue type 0 in some versions of gpuowl that is simultaneous PRP and P-1, and most versions of gpuowl perform only a single residue_type of PRP without simultaneous P-1.

squarings = number of squaring iterations for performing a PRP verification/certificate generation

tests_saved = (usually integer) number of future primality saved if a factor is found, usually issued by the server as 2 for a first test candidate, 1 for a double-check candidate, 0 if a sufficient bounds P-1 has already been completed. (Note that "sufficient" may be smaller bounds than would be optimal. I do not know specifically what the PrimeNet server's threshold for "sufficient" is.) Optionally, value can be manually reduced from 2 to 1 if it is known with certainty the primality test will be a PRP with GEC and proof generation, which has a high likelihood of only requiring one primality test. Optionally in mprime /prime95 or CUDAPm1, value can be manually increased up to 10 for aggressive P-1 factoring (larger value inputs are reduced to 10). Mprime/prime95 support rational number (floating point) tests_saved values in decimal, compatible with C %f format, such as 1.4 or 1.16 or 0.96. Mprime/prime95 computes bounds for the entered value, subject to a maximum of 10, and various other considerations including allowable memory usage, and rounds tests_saved in its output to two significant digits, without affecting the bounds selected and used. Values may be restricted to be at least 0 or 1 depending on application and context. (CUDAPm1 requires integer > 0. Gpuowl processes the input value as unsigned integer. Mlucas processes the input as unsigned long, and exits if the value > 2, with a message that the value should be 0, 1, or 2.)

to = trial factoring ending bit level; highest candidate factor ~ 2to


Typically,
Factor=[<AID>,]<exponent>,<from>,<to>
PFactor=[AID>,]<k>,<b>,<n>,<c>,<how_far_factored>,<tests_saved>
Test=[<AID>,]<exponent>,<how_far_factored>,<p-1_done>
Doublecheck=[<AID>,]<exponent>,<how_far_factored>,<p-1_done>
PRP varies

Formats and examples follow for several commonly or historically used GIMPS programs.
Note some are known to be case-sensitive. PFactor != Pfactor for example.


Mfaktc or Mfakto
MAX_LINE_LENGTH is 100
Factor=[<AID>,|<AlmostRandomString>,|<nul>]<exponent>,<from>,<to>
[#|//|\\]whatever comment you want, including valid worktodo entry lines
Factor=7F797F1F8BC4B5C234CB29D8BAD8B680,93040447,74,75
Factor=any-random_text_instead-ofAID.1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,2000000099,75,76
Factor=~./!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<> ? #,2000000099,75,76
// some comment. to is limited to 95 bits in mfaktc, 92 bits in mfakto.
// exponent is limited to 232-1
// 2<to>/<exponent>/2 = kmax is limited to 263.9
CUDAPm1
PFactor=[<AID>,]1,2,<exponent>,-1,<how_far_factored>,<tests_saved>[[#|//|\\]<comment>]
[#|//|\\]whatever comment you want, including valid worktodo entry lines
PFactor=1,2,415000043,-1,82,2
# some comment
Note, to specify the bounds, use the command-line -b1 and -b2 options. Also, CUDAPm1 internally pads tests_saved assuming a primality test error rate of 1.8% per test times two tests. Source code indicates support for inline comments on worktodo lines also.
See https://www.mersenneforum.org/showpo...8&postcount=36 and http://www.mersenneforum.org/showpos...65&postcount=7 for exponent limits.
CUDALucas or cllucas
Test=[<AID>,]<exponent>,<how_far_factored>,<p-1_done>
Doublecheck=[<AID>,]<exponent>,<how_far_factored>,<p-1_done>
[#|//|\\]whatever comment you want, including valid worktodo entry lines
Test=402143717,81,1
DoubleCheck=4BACCC7E79F9878B2D2F606C6DF40123,50879989,74,1
\\ some comment
See https://www.mersenneforum.org/showpo...8&postcount=36 and https://www.mersenneforum.org/showpo...6&postcount=14 for exponent limits.
Gpuowl (may vary in syntax and availability versus version)
(A note of caution, PRP residue type is dependent on gpuowl version. To qualify as a PRP DC, residue types must match.)
See https://www.mersenneforum.org/showpo...8&postcount=36 for version and computation-type specific exponent limits.
TF (V3.7 - v3.9?, Linux, ROCm required)
Factor=[<AID>,]<exponent>,<from>,<to>
Factor=332298607,76,77

P-1
[B1=<B1>[,B2=<B2>];]PFactor=[<AID>|0],1,2,<exponent>,-1,<how_far_factored>,<tests_saved> (v6.x)
B1=790000,B2=16590000;PFactor=A125254BD75564243D4B73D4EC601234,1,2,91538501,-1,77,2 (v6.x)
PFactor=B1:<B1>,<exponent> (v4.x)
PFactor=B1:20000,83780327 (v4.x)

LL (version <0.7)
[Test|DoubleCheck]=[<AID>|0],<exponent>,<how_far_factored>,<p-1_done>
[Test|DoubleCheck]=<exponent>
DoubleCheck=0,70100200,0,0
Test=70100200
LL (version >~v6.11-252 but not v7.x)
DoubleCheck=[AID|0],<exponent>,<how_far_factored>,<p-1_done>
DoubleCheck=1AAFFAAD0000000FFFF,51456287,74,1

PRP (version >0.6; varies in residue type by gpuowl version, type 1 preferred)
(commits beginning ~ v6.11-382, v7.2-93 include nul option for AID field)
PRP=[<AID>|0],<k>,<b>,<n>,<c>,<how_far_factored>,<tests_saved>
PRP=0,1,2,1500000041,-1,87,1

PRPDC (commits beginning ~ v6.11-382, v7.2-93)
PRPDC=[<AID>|0],<k>,<b>,<n>,<c>,<how_far_factored>,<tests_saved>
PRPDC=0,1,2,1500000041,-1,87,1

PRP with merged P-1 (V7.x, standard PRP residue type 1, seed 3)
[B1=<B1>[,B2=<B2>];]PRP=[<AID>|0],1,2,<exponent>,-1,<how_far_factored>,<tests_saved>

PRP-1 (PRP residue type 0)
[B1=<B1>,][B2=<B2>,]PRP=[<AID>|0],1,2,<exponent>,-1,<how_far_factored>,<tests_saved> (~v4.7 - v5.0; defaults to B2=exponent)
B1=2000000,B2=40000000;PRP=0,1,2,82252003,-1,76,0

PRP-CF is not supported in any gpuowl version to date

Comment
; preface a worktodo line with a semicolon (or perhaps anything unexpected) will cause it to be ignored, functioning as a comment, except for the error message it will generate.
Also, for a PRP line, additional content following <p-1 done> and a separating , appears to be ignored, so could serve as an inline comment about the work item in certain gpuowl versions
prime95 / mprime
Supports Fermat numbers and Mersenne numbers. Only Mersenne numbers are covered here. Supports reals as P-1 tests_saved, and probably P+1 also.
See https://www.mersenneforum.org/showpo...8&postcount=36 for computation-type specific exponent limits, and note that cpu type and software version may impose lower limits.
<AID>: an already-issued assignment identifier
N/A: no AID issued yet, and don't get one at the next PrimeNet checkins
<nul>: no AID issued yet, but get one at the next PrimeNet checkin

Worker header (precedes worktodo entries for the given worker)
\ [Worker #<nworker>\ ]
[Worker #1]
TF
Factor=[<AID>,|N/A,|<nul>]<exponent>,<from>,<to>
Factor=N/A,1257787,1,64

P-1
Pminus1=[<AID>,|N/A,|<nul>]<k>,<b>,<n>,<c>,<B1>,<B2>[,"comma-separated-list-of-known-factors"]
Pminus1=[<AID>,|N/A,|<nul>]<k>,<b>,<n>,<c>,<B1>,0,<how_far_factored> ;;~v30.4 or above
Pfactor=[<AID>,|N/A,|<nul>]<k>,<b>,<n>,<c>,<how_far_factored>,<tests_saved>
Pminus1=1,2,660000031,-1,3600000,180000000
Pminus1=1,2,660000031,-1,3600000,3600000 ;;(for stage1-only operation B2=B1)
Pminus1=1,2,660000031,-1,3600000,0,84 ;;(program selects B2 based on available ram and TF to 84 bits)
Pfactor=N/A,1,2,500000693,-1,82,2
Pfactor=N/A,1,2,500000693,-1,82,1.4
Pfactor=N/A,1,2,500000693,-1,82,1.05

P+1 (new with v30.6)
(Note, not productive or recommended for GIMPS wavefront work!) Pplus1=[<AID>,|N/A,|<nul>]<k>,<b>,<n>,<c>,<B1>,<B2>,<nth_run>[,<how_far_factored>][,"comma-separated-list-of-known-factors"]
Pplus1=N/A,1,2,103598543,-1,1000000,30000000,1
Pplus1=N/A,1,2,103598543,-1,1000000,30000000,2
Pplus1=1,2,103598543,-1,1000000,30000000,3

ECM
(Since ECM is not useful for finding new Mersenne primes, it is included here only for completeness)
ECM2=k,b,n,c,B1,B2,curves_to_run[,"comma-separated-list-of-known-factors"]
ECM2=1,2,1277,-1,800000000,800000000000,10
(although such bounds thrash my laptop horribly despite setting to limit ram usage to half)

LL
Test=[<AID>,|N/A,|<nul>]<exponent>,<how_far_factored>,<p-1_done>
Doublecheck=[<AID>,|N/A,|<nul>]<exponent>,<how_far_factored>,<p-1_done>
Test=N/A,82589933,82,1

PRP (and PRP DC for manual assignments, or most versions)
PRP=[<AID>,|N/A,|<nul>]<k>,<b>,<n>,<c>[,<how_far_factored>,<tests_saved>[,<prp_base>,<residue_type>[,"comma-separated-list-of-known-factors"]]]
PRP=N/A,1,2,82589933,-1 (mersenne prime record)
PRP=N/A,1,2,268435459,1,80,0,3,5,"3" (Wagstaff number)
PRP=1,2,82589933,-1,82,0 (to have PrimeNet issue an AID for it at the next checkin)
NOTE: as of v30.x, it's recommended to include <how_far_factored,<tests_saved>, to prevent repeating unnecessary TF from 0 bits, and prevent repeating unnecessary P-1 factoring

PRPDC (via PrimeNet API with new enough prime95/mprime version; per Woltman post; not independently confirmed yet)
PRPDC= instead of PRP=, otherwise same as for PRP as shown above

PRP-CF / PRP-CF-DC
see above, PRP, with comma separated list of known factors

Comment
;whatever comment you want, including valid worktodo entry line copies

PRP Certificate/verification (beginning at v30.1b1)
Cert=AID,k,b,n,c,squarings
Cert=(redacted),1,2,97457587,-1,380694
Mlucas
Supports Fermat numbers and Mersenne numbers. Only Mersenne numbers are covered here.
See https://www.mersenneforum.org/showpo...8&postcount=36 for computation-type specific exponent limits, and note that cpu type and software version may impose lower limits.
LL
[Test|DoubleCheck]=[<AID>,]<exponent>,<how_far_factored>,<p-1_done>
<exponent> (does an LL test of the corresponding Mersenne number; discontinued support of this format as of V20.1.1)
DoubleCheck=B83D23BF447184F586470457AD1E03AF,22831811,66,1
Test=DDD21F2A0B252E499A9F9020E02FE232,48295213,69,0
Test=332220523,80,1
332220523

PRP
V19 adds PRP and PRP DC forms, for Mersenne numbers only, residue-type 1 or 5:
PRP=<AID>,<k>,<b>,<n>,<c>,<to>,<tests_saved>
PRP=<AID>,<k>,<b>,<n>,<c>,<to>,<tests_saved>,<base-of-first-test>,<residue-type>
PRP=<AID>,1,2,<n>,-1,<to>,<tests_saved>
PRP=<AID>,1,2,<n>,-1,<to>,<tests_saved>,<base-of-first-test>,[1|5]
PRP=0123456789ABCDEF0123456789ABCDEF,1,2,332220523,-1,0
PRP=0123456789ABCDEF0123456789ABCDEF,1,2,332220523,-1,0,3,1

P-1 (new with V20.0; following is from my reading of its Mlucas.c and error messages from experiments; note, full length AID is required, even for manually generated unassigned lines)
P[M|m]inus1=<AID>,<k>,<b>,<n>,<c>,<B1>,<B2>[,<how_far_factored>[,<B2_start>[,"comma-separated-list-of-known-factors"]]]
P[f|F]actor=<AID>,<k>,<b>,<n>,<c>,<how_far_factored>,<tests_saved>
PFactor=00000000000000000000000000000000,1,2,468000023,-1,82,2

ECM (this appears to me in the V20 source code, not functional for Mersennes, after a quick look)

No Mlucas version to date offers PRP proof generation or PRP-CF
Mlucas primenet.py (work queuing)
[Test|DoubleCheck]=<AID>,<exponent>,<how_far_factored>,<p-1_done>
PRP=<AID>,<k>,<b>,<n>,<c>,<to>,<tests_saved>
PRP=<AID>,<k>,<b>,<n>,<c>,<to>,<tests_saved>,<base-of-first-test>,<residue-type>

Mfactor
Supports TF on Mersenne numbers, double mersennes, and Fermat numbers.
No worktodo support. Command line options only.
See https://www.mersenneforum.org/showpo...8&postcount=36 for and first attachment at https://www.mersenneforum.org/showpo...24&postcount=1 for build-specific exponent and bits limits.

Factor5
Supports TF on Mersenne numbers.
No worktodo support. Command line options only.
Exponent and bit levels limited by storage space and feasible run time.

Top of this reference thread: https://www.mersenneforum.org/showpo...89&postcount=1
Top of reference tree: https://www.mersenneforum.org/showpo...22&postcount=1

Last fiddled with by kriesel on 2022-06-06 at 23:42 Reason: added prime95 ECM2; case-insensitive-alphabetize variables section
kriesel is online now