**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.