Since George Woltman found and announced the bug in V17 prime95 and its
relatives, which invalidates Lucas-Lehmer tests started by V17 for p>2^22
(=4194304) with a nonzero shift count, I've been thinking about some 
possibilities for making such bugs less likely to reach the general 
GIMPS user and to have less impact if it does.

First, let me say that I think George, as well as Scott Kurowski, have
done an extraordinary job with both code development and project 
coordination.  The Lucas-Lehmer test is absolutely unforgiving of error.  
Writing a program that produces a correct residue after hundreds or 
thousands of hours on a fast Pentiumxx is a remarkable achievement.  
Doing it efficiently is another.  Coordinating thousands of people 
running it somewhat independently and on numerous operating systems 
is another.

Once the problem was known, the action to minimize future cpu-time loss 
was apparently prompt and vigorous.  Program versions of Prime95 and 
primenet were previously developed quickly when GIMPS as a whole was 
running out of exponents to test (when the limit of the code was 
5,260,000 rather than 20,500,000) or when the primenet server was 
experiencing growing pains.

Since we now have a wealth of exponents to be tested or retested, 
requiring a total expenditure of billions of cpu-hours, perhaps
we could introduce a little more formalism into the program-validation 
process.  I volunteered months ago to test 1 or 2 exponents in each runlength.
Several have completed.  Brian Beesley offered to double-check my 
results, and George has assigned them to Brian as double-checks.
The nature of the just-discovered bug suggests that more test cases are
in order.

I propose the following be considered, for each future version released
(and for the versions in heavy use currently):
1. Code review by qualified volunteers.
2. George and such other people as are qualified, determine which exponents
make good test cases, based on a review of the code.
3. Volunteers with some cpu-power run LLtests and double-checks on the test
cases selected.
4. Volunteers run randomly selected exponents LLtests and others run double-
checks of the same exponents simultaneously.  Random selection may hit
a test case that's useful but was not identified as a separate case.

Sequencing of this where possible would focus first on the exponent ranges
already issued and next to issue from Entropia and the other primenet servers.

Since this project is in a sense George's baby, I feel he has the right
to ok or nix this.  If he says ok, I volunteer to be the contact point
for volunteers to enlist as either code reviewers, testers, or both.
After a week or two I will summarize to George.


Ken


Ken Kriesel
(resident of Madison WI, last year's #1 city and this year's #7)
________________________________________________________________
Unsubscribe & list info -- http://www.scruz.net/~luke/signup.htm

Reply via email to