Undocumented Features
This file
lists the previously undocumented features available in the program. These features may change or be discontinued
at any time. Their use is totally
unsupported.
·
In prime.ini you can force the program to use different filenames
for 6 files. This is in response to a
user that is running security software that prevents writing to any file with a
.ini extension. There may well be other
uses. You can also change the working
directory (identical to the -W command line argument).
prime.ini=your_filename
local.ini=your_filename
worktodo.ini=your_filename
prime.log=your_filename
prime.spl=your_filename
results.txt=your_filename
WorkingDir=your_directory_name
·
You can change the program's behavior at various times of the
day. See the Time= option described in
the readme.txt file.
·
You can limit how far the program tries to factor a number. This feature should not be used with the
Primenet server. To prevent the factoring
code from factoring higher than 2^n, enter this in prime.ini:
FactorOverride=n
·
You can force the Options/CPU dialog to display times using AM/PM
or a 24-hour clock format. Otherwise,
the program will make its best guess as to the proper format. Add this line to prime.ini:
AMPM=n
where n is 1 for AM/PM formatting and n is
2 for 24-hour formatting.
·
You can adjust how many decimal digits of precision are displayed
in lines output to the screen. In
prime.ini enter a value between 0 and 6:
PercentPrecision=n
·
You can choose whether the program uses the system clock or the
read timestamp counter instruction (RDTSC) to time events. In prime.ini, enter 0 for using the system
clock, 1 for using RDTSC but not outputting clock counts, and 2 for using RDTSC
and outputting clock counts.
RdtscTiming=n
·
You can alter the way the program outputs timings. In prime.ini set:
TimingOutput=n
Where n=1 for seconds with 3 digits of
precision, n=2 for milliseconds with 1 digit of precision, n=3 for milliseconds
with 2 digits of precision, n=4 for milliseconds with 3 digit of
precision. You can turn off the
outputting of timestamps to the screen.
In prime.ini:
TimeStamp=0
·
You can have the timings that are output to the screen be
cumulative (from program restart or start of a new exponent) rather than
resetting after each screen output. Add
this line to prime.ini:
CumulativeTiming=1
·
The program normally will not start any calculation until 90
seconds after a reboot. This is done so
that your normal boot up procedure can be as fast as possible. You can control how long this delay is by
adding this line to prime.ini, where n is the number of seconds to sleep:
BootDelay=n
CpuSupportsRDTSC=0
or 1
CpuSupportsCMOV=0
or 1
CpuSupportsPrefetch=0
or 1
CpuSupportsSSE=0
or 1
CpuSupportsSSE2=0
or 1
This shouldn't be necessary though. Setting the CPU type in Options/CPU is the preferred method. There is one IMPORTANT EXCEPTION. If you have a Celeron the program distinguishes between a Celeron 1 and a Celeron 2 by the clock speed you enter. Anything above 533 is assumed to be a Celeron 2. If you have a Celeron 1 chip running above 533 MHz, then set CpuSupportsPrefetch=0. If you have a Celeron 2 and it is running at 533 MHz or less, then set CpuSupportsPrefetch=1.
· The program also supports different code paths for LL testing on a Pentium 4 based on the size of the L2 cache. You can explicitly specify the L2 cache size although this shouldn't be necessary since the program uses the CPUID instruction to determine the L2 cache size. In local.ini enter:
CpuL2CacheSize=128 or 256 or 512
One added benefit is time estimates in Test/Status will be more accurate because we'll know no factors will be found and the LL test must be run.
·
The program will restrict how many exponents can be added to
worktodo.ini. To override this, change
prime.ini:
MaxExponents=n
·
By default, ECM will stop when a new factor is found for exponents
above 5825. You can have ECM always
stop or always continue searching for factors by using a value of zero or one
in prime.ini:
ContinueECM=n
·
You can skip the GCD in stage 1 of P-1 factoring with this
prime.ini setting:
Stage1GCD=0
·
You can prevent users from accessing the Test/User Information
dialog box. In prime.ini enter:
LockUserInfo=1
·
You can make prime95 ping the Primenet server every time it starts
up. I don't know why you'd want to do
this. In prime.ini enter:
PingAtStartup=1
·
You can have the program generate save files every n
iterations. The files will have a .XXX
extension where XXX equals the current iteration divided by n. In
prime.ini enter:
InterimFiles=n
·
You can have the program output residues every n iterations. The default value is the InterimFiles
value. In prime.ini enter:
InterimResidues=n
·
You can force prime95 to skip the trial factoring step prior to running
a Lucas-Lehmer test. In prime.ini add
this line:
SkipTrialFactoring=1
·
You can do P-1 factoring by adding lines to worktodo.ini:
Pfactor=exponent,how_far_factored,has_been_LL_tested_once
For example, Pfactor=10000157,64,0
·
You can reduce the number of times worktodo.ini is read and
written by setting in prime.ini:
WellBehavedWork=1
This only works for worktodo.ini files
that contain only Factor= lines. Only
turn this on if you have BIG worktodo.ini files and each Factor=operation does
not take much time. You must stop
prime95 before manually editing the worktodo.ini file.
·
In Advanced/Time, you can enter a value between 9994 and 9999 for
the exponent to run a QA script. The QA
file looks like this:
64511,0,400,99999999,3389BC878321980A
Where the first value is the exponent, the
second value is the FFT size where zero means use the default FFT size. The third value is the number of iterations
to run. The fourth value is the shift count
(if the shift count is greater than the exponent a random shift count is
used). The final value is the expected
64-bit residue. The dialog box values
between 9994 and 9999 force slightly different code to run. 9999 and 9998 run straightforward squaring
code, 9998 differs by gathering some standard deviation data. 9997 does squarings also but exercises the
general purpose add/sub/mul routines too.
9996 does operations typical during ECM - the final residue won't match
but the convolution error data can be useful.
9994 and 9995 probably blow up.
·
You can factor a range of exponents for certain factors between b1
and b2 bits inclusive. This feature is
likely to be deleted in a future
release.
Add this to your worktodo.ini file:
AdvancedFactor=start_exponent,end_exponent,b1,b2
·
AdvancedFactor uses the file p0000000 as the name of the
continuation file. This causes problems
if you try to run two prime95s doing Advanced/Factoring on a dual-CPU machine
from the same directory. Add this line
to prime.ini to use a different Advanced/Factor continuation file name:
AdvFacFileName=filename
·
In AdvancedFactor, a start exponent of 8888 forces reading of a
file called factors. The program then
tries to refind each factor using the factoring code. This is not an efficient way to verify factors as it goes through
the entire sieving process and trial factoring many potential factors.
·
In local.ini, both the DayMemory and NightMemory values can be
negative numbers meaning use all but this many megabytes. Thus on a 128MB system a value of -32 means
the program can use 96MB of memory.
·
You can control which FFT sizes are tested by the torture
test. In prime.ini you can set:
MinTortureFFT=n
MaxTortureFFT=m
Where n and m are in "K". The default for n and m is 8 and 1024, which
will run tests on FFT sizes from 8K to 1024K.
Set n to 8 and m to 16 and you will run only small FFT sizes. These FFTs will fit in the L2 cache and may
be more stressful to the CPU.
·
You can control how many minutes each FFT size is tested by the
torture test. In prime.ini set:
TortureTime=n
The
default value is 15 minutes.
·
The program normally does round-off error checking every 128
iterations. When you are testing an exponent
near the limit of an FFT length, the program does this error checking every
iteration.
NearFFTLimitPct=value
The default value is 0.5 (if the exponent
you are testing is within 0.5% of the maximum exponent that can be tested using
the current FFT length, then the extra error checking is performed). A value of 0.0 will turn off this extra
error checking.
·
When Tray Icon or No Icon is selected the "X" at the
right of the title bar will minimize rather than exit. You can make prime95 exit if you
prefer. In prime.ini set:
ExitOnX=1
·
You can change the Windows NT/2000/XP service name and service
display name. The default for both is
"Prime95 Service". In
local.ini, set:
ServiceName=your
service name
DisplayName=your
service display name
You might want to do this if running on a
dual CPU machine and running two prime95's in different directories rather than
running in the same directory with the -A1 switch.
·
The program no longer uses hard FFT crossover points. The soft crossovers have two adjustments in
prime.ini:
SoftCrossovers=n
SoftCrossoverAdjust=n
The first setting controls which exponents
are examined. The default value is
0.2. This means that an exponent that is
0.2% above or below an FFT crossover point are tested for the best FFT size to
use. A value of 0.0 will turn off this
soft FFT crossovers feature. The second
setting defaults to 0.000. This
controls how aggressive or conservative the program is in selecting the best
FFT size. The program normally uses the
smaller FFT size if the average roundoff error is below a value in 0.241 to
0.243 range. If you set
SoftCrossoverAdjust to say 0.003 then the program will use the smaller FFT size
if the average roundoff error is below a value in 0.244 to 0.246 range. This will generate more iterations that
generate roundoff error above 0.40 warnings and a time loss returning to the
previous save file. It also increases
the chance that a deadly roundoff error above 0.6 will occur. On the plus side, using the smaller FFT size
each iteration will be a bit quicker. I
wouldn't set this adjustment to more than 0.006. If you set SoftCrossoverAdjust
to say -0.002, then the program will be more conservative and use the larger
FFT size more often.
·
Alexander Kruppa wrote some code that allows the output of ECM
stage 1 to be passed to Paul Zimmermann's more efficient GMP-ECM stage 2. This program is usually faster in stage
1. You can activate this feature by
entering:
GmpEcmHook=1
in prime.ini. Then select ECM bound #2 between 1 and bound #1. Results.txt will contain data that can be
fed to GMP-ECM for stage 2.
·
In rare cases, users have reported the program can interfere with
the performance of some programs such as disk defragmenters and some games. You
can pause prime95 automatically when these programs are running by adding this
line to prime.ini:
PauseWhileRunning=prog1,prog2,prog3,etc
Note that prime95 will pause if the
program name matches any part of the running program's file name. That is "foobar" will match
"c:\foobar.exe", "C:\FOOBAR\name.exe", and even
"C:\myfoobarprog.exe". By
default, prime95 will check the list of running programs every 64 iterations,
but not more frequently than every 10 seconds.
You can adjust the time period with this prime.ini setting:
PauseCheckInterval=n
where
n is the number of seconds between checking which programs are running.
·
Normally, the program will unreserve an exponent if it is
scheduled to start thirty days after the Test/Primenet Days of work to get
value. You can adjust this interval by
setting in prime.ini:
UnreserveDays=n
where n is the number of days. You should increase this value if you are
loading up worktodo.ini with a large amount of work and do not want any of the
work to be unreserved.
·
By default, Prime95 uses RAS routines to determine if your modem
is connected to the Internet. Microsoft
now prefers the InternetGetConnectedState call in WININET.DLL. To use this method instead of the RAS routines,
add this line to prime.ini:
AlternateModemDetection=1
·
If you are running on a laptop or in a hot room and you want to
slow the program down to reduce heat, then you can add this line to prime.ini:
Throttle=n
where
n is the number of milliseconds to sleep after each iteration.
·
Since P-1 stage 2 runs faster with more memory available you can
have the program only run stage 2 at night when more memory is available. In prime.ini set:
OnlyRunStage2WithMaxMemory=1
·
You can control the maximum prime.log file size. The default is 250K. Add this line to prime.ini to change the
default:
MaxLogFileSize=n
·
You can control what type of URLs are used to contact the PrimeNet
server. In primenet.ini enter:
UseFullURL=n
where n is 0 for use relative URLs, 1 for
use full URLs, 2 for try full URL and if an error is returned try a relative
URL. The default setting is 2. Note
that a full URL is always sent when using a proxy server.