View Single Post
Old 2020-05-16, 16:55   #1
EdH
 
EdH's Avatar
 
"Ed Hall"
Dec 2009
Adirondack Mtns

3,461 Posts
Default Polynomial Selection Parameters Discussion

Note: This initial post is for reference only. The following posts are for discussion.

This thread is intended to allow discussion of the parameters used in Polynomial Selection for CADO-NFS. The following parameters are avaiable ("tasks.polyselect." preceeds each in the parameters files):
Code:
degree
threads
P
admin
admax
incr
nrkeep
adrange
nq
sopteffort
ropteffort
I have added the Polynomial Selection section of params.c90 for easy reference to their descriptions and defaults.

Extraction from CADO-NFS params.c90, explaining available parameters:
Code:
###########################################################################
# Polynomial selection task with Kleinjung's algorithm (2008)
###########################################################################

tasks.polyselect.degree = 4        # degree of the algebraic polynomial

#tasks.polyselect.threads = 2
#    # How many threads to use per polyselect process

tasks.polyselect.P = 10000        # choose lc(g) with two prime factors in [P,2P]
    # Setting a large value will most likely find better polynomials,
    # but the number of found polynomials will be smaller.
    # As a rule of thumb, we want at least 100 found polynomials in total
    # (without norm limitation, see below).
    # We must have P larger than primes in the SPECIAL_Q[] list.

tasks.polyselect.admin = 0          # min value for leading coefficient of f(x)
    # If not set, the default is 0.
    # Note: admin is not necessarily a multiple of incr (defined below).

tasks.polyselect.admax = 100e3      # max value for leading coefficient of f(x)
    # In fact the maximal value is admax-1, so that we can run for example:
    # polyselect -admin 1000 -admax 2000 and polyselect -admin 2000 -admax 3000
    # without duplicating the value 2000.

tasks.polyselect.incr = 60        # increment for leading coefficient of f(x)
    # This factor is usually a smooth number, which forces projective roots in
    # the algebraic polynomial. 60 is a good start, 210 is popular as well.
    # Note: admin and admax are not necessarily multiples of incr, for
    # example polyselect -incr 60 -admin 0 -admax 200 will deal with 60, 120,
    # and 180, while polyselect -incr 60 -admin 200 -admax 400 will deal with
    # 240, 300, and 360.

    # The polynomial selection search time is proportional to the
    # length of the search interval, i.e., (admax-admin)/incr.

tasks.polyselect.nrkeep = 40 # number of polynomials kept in stage 1 of
                             # polynomial selection (size optimization)

tasks.polyselect.adrange = 5000        # size of individual tasks
    # Polynomial selection is split into several individual tasks. The
    # complete range from admin to admax has to be covered for the polynomial
    # selection to complete. The number of individual tasks is
    # (polsel_admax-polsel_admin)/polsel_adrange. Each such task is issued as
    # a workunit to a slave for computation.

tasks.polyselect.nq = 256
    # Number of small prime combinations in the leading coefficient of the
    # linear polynomial. Safe to leave at the default value.
    # Recommended values are powers of the degree, e.g., 625 for degree 5,
    # or 1296 for degree 6. Here 256 = 4^4 thus the leading coefficient of
    # the linear polynomial will be q1*q2*q3*q4*p1*p2 where q1,q2,q3,q4 are
    # small primes, and P <= p1, p2 < 2*P. For a given pair (p1,p2), 256
    # different combinations of q1,q2,q3,q4 will be tried.

tasks.polyselect.sopteffort = 0
    # Indicates how much effort is spent in stage 1 (size optimization) of the
    # polynomial selection. The default value is 0. The size optimization time
    # is roughly proportional to 1+sopteffort.

tasks.polyselect.ropteffort = 0.2
    # Indicates how much effort is spent in stage 2 (rootsieve) of the
    # polynomial selection. The number of sublattices considered is
    # proportional to ropteffort, and the rootsieve time is roughly
    # proportional to ropteffort. This is a floating-point value.
EdH is offline   Reply With Quote