from petrw1:


Make all the stats pages into tables so that resizing, etc. keeps the data lined up and formatted. That is, the top-producers, Primenet Summary and Progress Reports. Sometimes the dividing lines get crooked; some text resizes but the extry boxes don't move/resize, and the up/down rank-change arrows don't move with the text so unless they are at default size, which is too small for my eyes, they are not next to the corresponding value.

And because many tables/lists are multi-page stop the heading lines from scrolling.

On the assignments page along with TF show the bit levels assigned.

From CPU Properties page have a link to Assignments or Results for the selected CPU.

Credit redistribution tool.

Let me "PING" my CPUs from the V5 server so I don't have to wait a day to see if they are dead and need to make a trip to restart them. (Or let me force a remote manual communication).

Either on the assignment page or via a tool show the expected points for an assignment.

I will echo someone else's suggestion for the ability to "request" a type of work and range of exponents or number of bits and if available and appropriate the server will assign them.

Some of the reports have a default report which can be quite long (i.e. Exponent Status or Factoring Limits). Let me choose the ranges before the report is displayed to save the server/network overhead and wait time.

Similar to the v4 benchmarks page let me choose a CPU type and exponent and have it estimate the run time.

When I sort the Exponent Status report by some other column and then by exponent again it gets all messed up. 



GW:  roundoff of 0.40625 and 0.4375 are usually not hardware errors - adjust error message accordingly


Some random feature requests, some old, some new (from James H):

    * When you have a lot of work queued up in more than 1 worker thread, it will take up almost all of the vertical space in the "Status..." dialog showing you the work queued for Thread #1.  that is, it lists as much of Worker #1's work as it can, but then just shows that Worker #2 has something to do, but you can't even see the first line. It would (I think) be more useful to allocate 1/<workers> of the available lines to each worker thread, such that I can see the next 16 assignments for each of my 2 worker threads, rather than the next 32 assignments for Thread#1 and 0 for Thread#2.
    * tooltip on system tray currently shows status of worker #1; can it please show one line per thread?
    * right-click in system tray and set Prime95 to "low-memory mode" to limit it to worktypes that don't use a lot of memory (TF, LL, P-1 stage1, etc) so that the user can (temporarily) limit the memory usage if they're about to do something that uses at lot of RAM during a scheduled period when Prime95 is usually allocated a lot of RAM (e.g. 3am Photoshop or gaming sessions).
    * LowMemWhileRunning setting (similar to PauseWhileRunning) to automatically kick Prime95 into low-memory-using worktypes when a memory-hogging program is launched, so the user doesn't have to manually set low-memory mode every time they launch Photoshop or Battlefield etc.
    * PauseWhileRunning ability to pause only X number of threads (e.g. pause 1 of 4 threads while notepad.exe is running, to allow a full core available to that program, while the others threads continue to work on Prime95)
    * more complex scheduling for RAM usage: the ability to schedule multiple periods during the day when RAM usage can be high/low, different schedules for different days of the week. For example, I would set mine to high memory use most of the time, except (M-F,0600-0900;M-F,1800-2200;S-S,0800-2200).
    * ability to specify more than one type of worktype preference; for example I'd choose to any of TF, ECM or P-1. Ideally you could set a percentage distribution between the worktypes (e.g. spend 50% of time on TF, 30% on ECM and 20% on P-1) or have a "whatever-makes-most-sense" checkbox to auto-distribute the work among the selected types.
    * ability to merge main+comm threads
    * If one thread is idle because it has run out of work to do that doesn't require a lot of RAM, see if it can borrow or steal a worktodo entry from another thread. For example, if thread #1 is doing P-1 work, but it's done all the stage1 work it can for now but needs to wait until more memory is available, it should be able to look at the queued work for other threads and steal (or borrow) low memory work (TF, P-1 stage 1, LL, etc) to do while it waits for more memory to be available.
    * Have a worktype of "TF up to ___ bits" -- this would be basically a modification of the "TF to low limits", perhaps if you restrict the range of values entered (to something between 2^56 and 2^64?, perhaps defaulted to a sensible value based on general machine speed (e.g. 2^64 on a modern CPU but 2^56 for a 486, etc)) it would replace both the "TF to low limits" worktype, and the manual TF work that LMH does.
    *Prime95 should check not only if "other worker threads are using lots of memory now", but also whether the amount of memory left is enough to do something useful in. For example, right now I have 3072MB allocated to Prime95, and thread #2 is using (only) 1340MB for ECM-stage-2 (presumably it doesn't need any more than that for the work it's doing). Thread #1 isn't letting itself do any stage2 work because "other worker threads are using lots of memory now". But it should be able to do some of the Stage2 work it has queued up that wouldn't use more than the still-available 1700MB of memory anyways.
edit1: Times when lots of memory is available should be considered precious and if two (or more) "high-memory" tasks can co-exist, they probably should. For example, the next ECM-stage-2 work that Thread #2 has just moved on to is using only 279MB, leaving ~2793MB available to thread #1, but it still won't consider that it can try doing any Stage2 work.
edit2: Perhaps it would be best to prioritize queued lots-of-memory work in descending order of RAM requirements, such that when a lot of memory is available the worker thread would look at the available memory and work first on the queued exponent that requires the most memory, and move on to lower-memory tasks if the requisite amount of RAM isn't available. This would extend naturally into doing "no-memory" tasks last (such as P-1/ECM stage 1, TF, LL, etc) if there are no P-1/ECM Stage2 tasks queued that can fit in the available memory.


Investigate hugetlbfs for linux support of 4MB page size.

"C:\Documents and Settings\George\Desktop\house to do.txt"
I'd like a LowMemoryUseWhileRunning setting which would limit Prime95 to only low-memory tasks, such as P-1.stage1, LL, TF.  I find that Prime95's CPU usage is not an issue for me (idle priority seems to work very well), but the disk thrashing when loading up a memory-hogging program (Adobe*, games, etc) is unacceptable, and I need to either stop Prime95 completely or set the min/max memory settings to 8MB or somesuch to force Prime95 not to do any P-1.stage2.



Keep a different rolling average for factoring and ll testing (and ECM?).  We
could give better estimates that way.


Paul Z requests this change:

we got a request (by Peter) Montgomery to take into account the stage 1
time in the save files. Indeed, with -v, gmp-ecm display the expected 
total time to find a factor of 20, 30, ... digits. With the -resume
option, the stage 1 time is 0, so the expected time is wrong.
One solution (we already implemented) is to have a command line option
to tell gmp-ecm the time spent in stage 1.
Another one (more user-friendly) would be to store the total time spent
in stage 1 (or 2) in the save file, for example CPUTIME=42 (say in seconds)
[we already have TIME=... for the date where the save file was created].
Would you agree with that change? Would it hurt your Prime95/mprime code?




I have a question for the next version of prime95 could you add a feature for people that do lots of small factoring for lmh.
Prime95 takes a lot of time to read and write to files what about a read write buffer like prime95 lets you chose how much test data it can load to ram then it will go though it all and write it to a 10 meg write buffer once the buffer is full it writes it back to a results file.


Also, did you see the discussion about the configuration of
the "Iterations between screen outputs:" parameter ?
When running ECM, it would be nice to have prime95
automatically applying some ratio on the value used for
factoring or LLT on Mersenne numbers. I'm now using 1000000
instead of 10000 in order to not have hundreds of lines
written every second.
When mixing usual work (LLT or Factoring) and ECM curves in
the worktodo file as I do, it should be useful. Is it possible ?


From a new user who gets eager near end of the LL test:
Put % in title updated more often than worker window (so that worker window
stays neat).  Or maybe different iter_output rules when near the end of the
test 


From akruppa:
How about making the thresholds depend on p (mod 120)? For example, for candidate factors p==1 (mod 120), we know that 120|p-1, giving P-1 a much higher chance of recovering such factors if missed by trial division. Otoh, with p==119 (mod 120), p-1 has no prime factors <5 except a single 2, so these are poor candidates for P-1 and could be trial divided higher.
So for each class r (mod 120), compute the limit where for a prime p==r (mod 120) the probability of (1.) not being covered by P-1, and (2.) dividing the Mersenne number is better than some threshold. (1.) depends on r and the size of p, (2.) only on the size of p. (1.) can be computed accurately, I've played with problems like that recently.
It could be worthwhile to treat more separate classes, say 96 classes (mod 840), or even 960 classes (mod 9240), so knowledge that 7 or 11, resp., divides p-1 can be used for calculating the trial factoring limit for that class.

tempFileName should take k,b,n,c as arguments, generating unique names for
all combinations.  We should abandon the 8.3 file name format (renaming old
style mangled 8 character names to new unmangled names).

Pfactor=55459,2,9011278,1,40000,420000 hangs in guess_pminus1_bounds

Have gwnum setup choose the x87 FFT if it is smaller (and faster) than the
SSE2 FFT.  Makes sense for many AMD64 chips (most FFT sizes) and Pentium M.

Fix crash bugs when gwsetup (and LucasSetup) returns error code.  Happens
when exponent = 79000000 on SSE2 machines.

For HT machines add a pause when slows down capability.  The theory is when
the user tries to do real work and prime95 slows down noticeably (because
of hyperthreading) then we should pause so we don't slow down the user.

From beejaybee:
(4) An idea based on an experience I have had which others no doubt share. I 
no longer have any access to several systems based at my former employer 
which were running mprime. Nevertheless they still start running on the very 
rare occasions they are booted. Unfortunately because of server problems they 
usually lock up after a few days.
No use to these systems as I can't update the clients, but it would be a help 
if new versions of the client could be made to check the length of time since 
the last time they contacted the server on startup (except the very first 
time) and, if greater than the server timeout, do not start up - logging the 
event to prime.log as well as to the client display window (if appropriate).


add Pause_while_running_threads - an INI setting telling us how many threads
to stall when a pause program is found.


I only have one "possible" future suggestion in regard to Prime95 program. You see, it would be very nice in my opinion, if it would be possible for users to be able to "/prevent (users) from accessing the Advanced/Quit GIMPS... dialog box./" beside the already existing "LockUserInfo=1" option in the "prime.ini" file to "/prevent (users) from accessing the Test/User Information dialog box./"


Copy *.sln, *.vcproj, *.use when we upgrade to VC8.

Reduce the column multiplier memory by a factor of 2.  Requires coding mods
to xnorm_2d_setup and all the add/sub/fixup code.



Reread prime.ini frequently as it helps users that remotely administer a system and find restarting difficult.


prime95 runs in the tray but could you specify an undocumented function that will allow you to change the name it appears under so when i mouse over it will say prime95 or some variable i put in.


Eliminate 2 multiplies from xnormal.mac!  A 1% performance improvement.  
The idea is to eliminate the two fudge multiplies by rounding to the
proper multiple of two.  The tricky part is the carry must be generated 
for the multiple of two of the next word.

Does doubling the amount of grp multiplier data make sense?  It halves
the time creating XMM_COL_MULTS table every iteration, but increase data
used in the L2 cache (nasty for small cache chips?)


can we improve prefetching for the non-sectored P4-M 64 byte cache line


Todo:

1)  Option to disable rolling average updates, or time them to occur with a
    save file creation.  For users trying to reduce disk spin-ups from a
    power saving disk spin down.
0)  Is there a problem that WinXP marks the prime95 folder read-only by
    default?  Should we provide option for storing ini files and temp files
    in more standard places?
5) Test Windows NT shutdown and logoff do they save intermediate file?
8) Create a screen saver that
   tells service to start/stop - could hook it into existing screen savers???
13)  Add the -c option to prime95. 

From Ernst (to improve SSE2 factoring?):
Alpha (and most other RISCs) also lack add-with-carry, so I emulate it.
E.g. if lo,hi,x are unigned 64-bit ints, and lo and hi represent the lower and
upper halves a of a 128-bit int, add x to the lower part and do the carry
like so:
lo += x;
hi += (lo < x);
This also works on the x86, but I'm not sure about the P4's 64-bit integer
add and compare capabilities .


* It would be nice to have links to this forum, the PrimeNet server and the Mersenne org home page on the Help Menu. 
* A forums link from the web "banner" menus.



Big ideas:
----------

3 new FFT sizes by coding a 3*2^N sized pass 2!!




Important ideas:
----------------

Make DLLs out of the math code.  Then make prime95 act as the Ntsetup
screen and ship ntprime with prime95.
Make a screen saver part of the package too (a la seti)

Make it possible to select and copy the text in the on-screen window.

3) change the recovery procedure to not delete the save files when it uses them or at least the oldest one - perhaps there has to be a save file out of the p q sequence that is left alone for manual intervention at least copy the q to the p instead of renaming it. I know that this will take longer, but this is error recovery, not normal operation 
4) allow for comments in the worktodo.ini file. this would allow the client to comment out the "problem" exponent and go on to the next one. 


2. If I have the UI open and a try icon at the bottom of my screen.  I can click on either and tell it to stop executing and it does.  However if I right click on the tray icon the middle item of the menu that come up still say "Stop" not "Continue" or "Restart" which would make much more sense.  If I select it then it does restart execution. 

3. I expect you are going to claim that this is a deliberate feature, but I'm going to report it anyway.  In the "Configure PrimeNet" dialogue I unchecked the box that says "Request whatever type of works makes most sense" and then I unchecked the 4 boxes below it.  Hoping that this would make it complete the work it already had assigned, but that it wouldn't then get any more work.  However, it decide that this means return to getting work that makes most sense and consequently got a first time LL test, I wasn't going to have access to these machines much longer so this was the last thing I wanted it to do.  Maybe you could but in a warning dialogue for this situation. 


Hyperthreading Data
-------------------

Notes:
we used Advanced:Time rather than the benchmark.
0 and 1 are the physical CPUs, 2 and 3 are the "virutal" CPUs created by hyperthreading
System = 2 2.2GHz P4 Xeon "Prestonia" CPUs. 4GB PC800 Rambus memory. OS=Win2k
Exponent =10M (8.97M to 10.24M(512K) on Mersenne benchmark page)

Test Case 1: Running a single instance of Prime95 on each CPU

CPU # Iteration Time(average in ms)

0 24.081
1 24.024
2 24.042
3 24.044

Test case 2: Running 2 instances of Prime95 on various CPUs 

CPU # Iteration Time(average in ms)

0 25.188ms
1 25.161ms

0 25.217
2 25.127

0 48.380
3 47.821

1 47.538
2 46.838

1 25.185
3 25.126

2 25.161
3 25.191

Test Case 3: Running 3 instances of Prime 95 

CPU # Iteration Time(average in ms)

0 25.603
1 50.352
2 50.807

0 50.386
2 25.591
3 50.849

Test Case 4: Running 4 instances of Prime95 

CPU # Iteration Time(average in ms)

0 56.343
1 55.881
2 55.795
3 56.448

Test Case 5: Running 4 instances of Prime95, Running LL on "Primary" CPUs and factoring on "Virtual" CPUs. 

CPU # Iteration Time(average in ms)

0 39.589
1 39.667
2 Factoring
3 Factoring

Test Case 6: Running 4 instances of Prime95, Running LL on 1 CPU, and Factoring on the rest. 

CPU # Iteration Time(average in ms)

0 39.003
1 Factoring
2 Factoring
3 Factoring


Minor stuff:
------------

Suggestion for Prime95 program when we stop or upgrade
during a P-1 test:
When it (re)starts a P-1 test, the program message to
the window says:
Starting P-1 factoring ...
Has it thrown away the previous results? It seems to
write a save file, so my impression is that it has
not.
In case(s) where it has kept previous results, that
message should say Restarting ... to not worry the
user.

While I'm emailing you can I report a defect that I find annoying, but which isn't serious and I expect very few people will hit.  I have most computers configured so that they only have enough memory to do 2nd stage P-1 factoring during the night.  During the day they check to see every now and again if they can start doing P-1 factoring again - this much is fair enough.  However, what I find annoying is that they report this in the Prime95 window, this seems pointless when it wasn't doing P-1 factoring and it concludes it can't start it now, what's the point of reporting that - especially when it takes up so many lines in the window.  If it is doing LL-testing (on another exponent) the iteration that it reports it is doing at this point is always equal to 1 modulo 2^64 (64K) - or at least it has been whenever I've check the value.  I usually have Iterations between screen outputs set to 100,000, once I set it to a smaller amount and I didn't get the "I still can't do P-1 factoring" messages.
 

p0000000 is a kludge and does not work on dual CPU systems

One of my machines finished an exponent (call it p1) and reported it
to PrimeNet.  It then started a LL on the next exponent (p2).  IMO,
PrimeNet show now show that I am on iteration 1 of p2.

Run the reporting-to-primenet in a separate thread.

Don't update the last-results date in ranges if the line is a duplicate.


At 10:12 PM 9/4/97 +0200, you wrote:
>then how about the following:
>
>make 4 tables, each has 256 entries (actually: program counters)
>
>then do
>move table1[al] to program counter
>
>table1[x] points to the target where to jump if one of the last bits is set.
>after the test it jumps back to the move-line abouve, with the bit xored out.
You may be onto something here.  Instead of a table of program counters,
lets have a table of "highest set bit" - this would emulate a BSF instruction
except that instead of operating on a 32-bit word it operates on an 8-bit byte.
This is better than a table of program counters because the "jmp table1[al]"
instruction is very expensive - the chip's branch prediction logic is useless.
The table would only use 255 bytes, so would have minimum impact on the 
L1 cache.  Of course, i need to preceed the table lookup with a test for
a zero byte.

The warp icon causes people to call IS - how about slowing it down and
changing the icon.

Neither screen saver will start up the LL test after it does the 
factoring when using a primenet.dll.

- Bug report: Prime95 14.2 won't find the database when it's on the desktop
(in my case, that's "C:\Windows\Profiles\Steinar\Skrivebord")

>* you don't actually say (that i found) anywhere in the
>  documentation how to to only factoring.  mention something like
>  a sample command line.  i say this because someone couldn't
>  figure it out.

-5) Allow any name for the results file (so they can be stored in a common
    directory).
-4) Call fflush after printf in mprime.
38) Give per-iteration time estimates in the readme file so the user knows
    some other task isn't eating all the CPU time.
45) Automatically take advantage of multi-processors.
55) A menu choice to show the results file without going to DOS.
56) Force writing the directory entry after closing the pNNNNNN file,


Is it possible to add some functionallity to NTSetup.exe to monitor the 
progress of NTPrime? It is possible to have a look at the results file but 
that way is not pleasing me. What are your idea's?

can you change the linux (or all unix) sources a little bit. By default
all iteration prints are written to the results file.
Please print it to STDOUT or make the switch -I0 (null, zero) that no
output is printed.


Now a few minor complaints:
2. When the range is finished restarting the service without
setting a new range results in a "WinNT internal error".  That's
a little bit irritating, though certainly nothing that needs to
be fixed right now.


While preparing the mprime commands for my next range, I wondered about the
applicability of the PAUSE feature of linux mprime. Currently I have
set the options "-l1.4 -p120". What I would actually want to specify is
   "please pause whenever the load goes over 1.4, test the load every
   60 seconds, and resume when the load goes under 0.7".
(The 60 seconds doesn't have to be variable, as the load is a 60 second
average this is the "only" reasonable number.)
This would allow me to stop mprime for the full duration of a long
batchjob on the machine.


Here are some suggestions for your wonderful Prime95:
* add the capability to run the task in "hide" mode so one cannot notice
   "Prime95" if he strikes ctrl+alt+del.
* little tip: the text backgound color is not the same of the windows' 
   panel background color. If one changes it, text seems to "eat" the
   background.


> I haven't seen the mprime source, but it shouldn't be much to add a
>	fflush(stdout);
> after each status line.  This will flush the stdout file stream.
This would work, but it would be better to add
	setbuf(stdout,NULL);
at the beginning of the program.  That way no buffering will be done.

> I haven't seen the mprime source, but it shouldn't be much to add a
>  fflush(stdout);
> after each status line.  This will flush the stdout file stream.
    or just switch output to unbuffered before starting to write to stdout
with:
    setvbuf (stdout, NULL, _IONBUF, 0);



>In an earlier message, I warned you that I would some time 
>comment, in a spirit of helpfulness, on the instructions,
>etc. that come with the GIMPS package.  Here I go.
>
>I struggled a bit, at the beginning, establishing 
>appropriate settings and preferences.  In particular, 
>the Tray Icon/No Icon choice got me in trouble.  I expect
>that others might have the same problem, and perhaps 
>some extra information might be included in the ReadMe file.
>
>In particular, the three sections of the Options menu work in
>three different ways.  The first two are independent, and one 
>has a sub-menu.  The third, the touchy one, toggles between
>the two choices.  This toggling was not clear to me at the start.
>
>I imprudently got into the no icon situation and reduced.
>I used ESC, then turned off the machine.  I removed the
>prime95 family of files and unzipped again.  It didn't help.
>Finally I thought of an .ini file, found it and changed it in
>notepad.  Presto, all was forgiven.  Given all that, let me
>suggest a process, you can decide whether it will work:
>
>If you find ourself in the no icon, no window situation, then
>  1 -- pull up the .ini file in notepad
>  2 -- change the icon setting
>  3 -- store
>  4 -- stop the prime program with ESC
>  5 -- restart the prime program by clicking its icon in windows explorer
>All should be fixed.
>
>I am surprised that the Windows system will not permit the user to find the 
>prime program with ALT-TAB.  I guess that I don't understand something
>about status or priority of running programs.
>
>One more, on the same subject.  I found no reference to "Tray"
>or "Tray Icon" in Windows help.  Is this a standard term?  I didn't 
>know what to expect from this choice.  Perhaps there is another term, 
>or is the Windows Help just stupid.  (I am not yet convinced otherwise.)


I would like to be able to carry exponents to test / results to send back
from one machine connected to the Internet (using PrimeNet server) and
other machines not connected or using NT service.
Get exponents seems not to difficult, just pick some lines from worktodo.ini,
but sending backs results seems impossible.


I do miss a feature from the previous version.  The old version grayed
out the user ID, password and computer ID on the user information
window when it was running.
I miss this feature -- I have users who love to tamper with things,
particularly setups that are easy to get at.  I'd like to
see that disabled again, or an option in the prime.ini file to
lock the user settings so nobody can tamper with them once they're
set right.  Password entry from Prime95 itself, or edit the
prime95.ini file to change the feature -- either would be fine --
so long as I can keep their grubby hands out of the setups.



1. add an 'are you sure' on exit, maybe as an option defaulting to
   current behavior.
   i've closed prime95 too many times by mistake
   w/o first hitting escape or menu/stop
   thus losing up to 30-35 minutes of testing

3. make a menu that allows a user to invoke notepad or some editor to
   look at all text files (or at least the log files) associated with
   prime95
     prime.log
     results.txt and
     the various ini files the prime95 uses.
     whatsnew, the readme



I'm using prime95 since a few days now and have a suggestion for the
next version. I would like to use the program on computers in an
internetcafe. So I would like a lock-function for the program. I
imagine a function, that I can lock the program with a password, which
locks all functions, so another person cannot change the priorities or
the primenet-password.
I think there should no big problem to implement such a function.


BTW: An option in Prime95 to store away a backup of all intermediate files 
to a SMB-share every once in a while (i.e. once a day at a time when the 
network is accessible) would be nice.  This would prevent data loss due to 
disk crash, and would ease automatic restore of old work if the program 
and its files are deleted and only the program itself is restored.  Prime95 
should only mount the backup-share to save the file, and then dismount it 
at once.  That way it takes the least of resources from the server and 
makes sure the file is actualy written (not stored in any fancy write-back 
cache).


I agree...having an "hours of operation" feature would be nice.  Any
thoughts on that, George?


From time to time I make significant changes to my system - for
instance, I'll soon be installing a new motherboard.  For the
sake of "neatness", I would like to make such changes after I've
finished with the current exponent, and before I start with the
next.  The built-in facilities of 'prime' don't address this.



From: "Brian J Beesley" <BJ.Beesley@ulst.ac.uk>

There is an inconsistency between NTPrime (16.3.1) and NTSetup (same 
version). If you adjust the "days of work" in NTSetup, you may be 
allocated exponents, which NTPrime then proceeds to "throw back" at 
the server.

Workaround, stop the Prime service whilst running NTSetup. Perhaps 
this should be documented, I didn't see it anywhere in the readme 
file (but I might not have looked hard enough)

Suggested fix, have NTPrime rescan the .ini files, instead of 
using the settings read when it was started.

Suggestion - "priority" for factorization over LL tests - it would be 
possible to change this so that factorization got priority when the 
task was a pre-factoring for a LL test but not when the test is a 
factorizing test - I've a feeling that there are a lot of systems out 
there (on v15 software) who have a LL test nearly complete but aren't 
completing it because they keep getting factorizations to do, and 
these block the LL test from ever finishing. This problem becomes 
relevant to all  versions if someone changes from default/LL tests to 
requesting factorizations only. The suggested algorithm is:

if you have a LL/double checking assignment which should have a 
factorization pass before starting the LL test phase, suspend current 
work & run the factorization phase;
otherwise, run the existing assignment to completion before starting 
any new test;
when selecting a new test, choose first, any incomplete LL test 
(Pnnnnnnn file present), second, any factorization assignments, 
finally, the LL/double check test in the assignments list (if there 
is more than one, choose the lowest exponent).



>Version 23.2.1 hung up while trying to get exponents
>from server.
>Prime95 is very good about retrying the server later
>when it is trying to upload a result; you may have to
>extend that same checking to the task of getting
>exponents?
This problem is not specific to version 23.2 - that code has not changed.
Interestingly, the results reporting and getting exponents use
the same routine to contact the server.  I can only speculate that the
OS became confused and did not return from a call to send or receive
a message.
The only thing I can do is to move the server communication code into
its own thread.  The hard part will be to do so in a portable way.  I'll
add it to my wish list.





I was running my MSVC++ compiler together with WinTop, and I wanted to
terminate prime95 to make sure, that the compiler was not slowed down by it
(I wanted to see the average percentage given to prime95 be transfered to
the idle thread). I clicked the [x] on the prime95 window, and it disappeared.
Now, WinTop showed, that prime95 was still running, both threads, one on full
steam, which probably means that prime95 is saving the result before shutting
down (LL testing). If you during this period start prime95 again, ANOTHER
prime95 process will be started, having just one thread using no cpu, and
with no window! This also prevents the first (real) instance of prime95 to
shut down, after the save is done, it just continues running at no cpu usage,
together with the second instance - and all other instances started hereafter,
which also have 1 thread and no window - until all instances of prime95 are
killed using WinTop, to bring things back to normal.



menu commands like
vacation or holiday are a little hard to figure out.  What I really wish
(though it would add overhead) would be a status bar at the bottom so
when you have an menu option highlighted it told you what it did. 



1)  Should raw_estimate add together factoring, P-1, and LL test time?
2)  Accurate estimates for all work-types even those in progress.
3)  primecontinue should handle pXXXXXXX continuation files for pfactor.
5)  what about machines with low memory (how do we identify them?) -
	don't let them get any pfactor assignments
9)  clear exponents must be able to replace p-1 flag in test= lines.



First, some minor cosmetics... (NT)
1) a scroll bar would be nice on the output page so you could scroll up
and see what it's been doing.

Now, for the linux part.
1) no notification was given on screen that the machine was about to start
a self-test.  yes, it's in the readme.txt file but it could have been on
screen also.
2) I would like to package mprime for seamless installation on either
redhat or debian systems (can't yet decide which dist to stick with!).  In
order to do this the license might need to be tweaked.  You don't actually
have a license file in the tar I downloaded that I can see.  Would you
like it covered by the GPL or something different?
3) I would like to suggest a few command line switches.  for example,
remove the 'auto-configure' on first run behaviour and add a 'mprime -C'
to configure.  What I'd suggest doing is to automatically install mprime
to run at boot time and add a configuration file option to say 'continue
running at boot time'.  Basically, the gist is that the user controls if
it runs all the time or not by a configuration file, not system settings.
5) I'd like to tidy up the menu system a little, perhaps putting an
ncurses interface to it?
6) add a daemon mode so it cleans up a 'ps' display.
7) perhaps add a set-uid mode so if root should happen to start it during
boot time, it won't continue running as root....




I have some suggestions for later versions:
* Add a right-click menu.
I want to right click on the icon and have a menu with, for example, "Status",
"Continue"/"Stop", and "Connect to Prime Net server now". I don't think it's
too hard to implement, is it? 
* Change icon(s)
I'd think it's funnier to have a more informative icon in the traybar. I want
to see if it's working, idle, connected to PrimeNet etc.
I attach a zip with a few icons in. You are free to use them if you want.



I just thought of another little useful improvement to Prime95: Why not let
Prime95 write to local.ini, how far it has got in the process? It could be
done while updating rollingaverage, a simple "Progress=182745/5812087" would
be enough, or for factoring "Progress=4/16" for each of the 16 loops.
This would make it possible to monitor remote machines, without having to go
there to check. For factoring this is possible by dumping the p??????? file
(the loop count is easy to find in there), but for LL tests, this is not
possible, at least I have not been able to figure it out.


I note from doing two factorings with different start and end 
numbers of bits, on a large exponent (10.5M+-) that the CRC 
tag at the end does not change.  Please consider for your next 
release, folding the limit bit numbers into the CRC generation 
too, so that a quick low power of two can't be used to fake a 
claim on a more cpu-intensive factoring run.



For the readme file (Win98):
Thanks for writing back. in fact, i fixed the problem a short time before
you wrote. it appears there is an accessory with a function similar to
wintop embedded within win98. you can acces it from the start bar via:
start/program/accessory/system tools/system information.  within this
structure it is in the software envoronment/running tasks subdirectory. i
only provide this info in case you ever get a similar question. the problem
program was found, fixed, and my computer finished the self test in five or
so minutes. 




Someone wanted:  AdvancedFactor=2122363,55,56
accepted in the worktodo file.




From sturle:

First a suggestion for NTPrime.

Some people are sceptical about running NTPrime on the machines in 
students computer labs.  Their main considerations are:

o NTPrime consumes a lot of memory which it accesses all the time.  
  This makes the computer less responsive for certain tasks where 
  memory, not CPU, is the bottleneck.
o When a student uses the "Task Manager" it looks like a process has 
  gone berserk.  He or she send mail to the administrators or ask the 
  supervisors, which have to explain what it is every time.  

Some students have access to the lab 24hrs, so it is little help in 
turning it on and off at special times. 

Is it possible to add a feature to NTPrime to suspend all calculations 
and release all memory used for FFTs when someone log on, and resume 
when they log off or have been idle for a specified time?  

Also I would like the fature of having Prime95 and friends set the 
ComputerID to the DNS name of the machine as default.  To the first or 
n'th ".", at another option in prime.ini.  This would save a lot of 
work in creating unique local.ini-files for each installation.



From a Linux user:

To find whether the laptop is plugged in, type "cat /proc/apm". If you get "No
such file or directory", and you are running on a laptop, you need to
recompile your kernel. I get that error on the desktop, which is running
mprime, but the laptop has the file, and I get the following:
With the laptop plugged in:
1.2 1.1 0x03 0x01 0x00 0x01 100% -1 ?
With it unplugged:
1.2 1.1 0x03 0x00 0x00 0x01 98% 220 min
The fourth word appears to indicate whether the laptop is plugged in.
Immediately after unplugging the laptop, you may read "-1%" from /proc/apm .
If this happens, wait a minute and try again.




From Aaron Blosser:

I had done some thinking on it, and wouldn't it be great if there were some
sort of "live update" feature, where it could upgrade itself when new
versions come out.  That's pie in the sky and I remember discussing
previously how that wouldn't work for everyone - security issues, bandwidth
issues, etc. but perhaps if it were an option.

At the very least, I think that there should be an "alert" or other
notification of some sort when a new version comes out, rather than relying
on emails being sent.  The problems with version 17 should give a good
example of how that would help.  A problem is found with a version, or
simply a new faster version is out, so the next time Prime contacts
Primenet, it sees some flag set and pops up a box on the screen telling the
user about the new version.  And a seperate option for how often to check
for "messages" besides the number of days between checking in at primenet to
update expected completion dates.

One other thing that is, perhaps more pie in the sky, but central
configuration for a team.  What I mean is, for all my computers, I generally
have them set the same in terms of days between check ins, minutes between
retries, etc.  If I ever need to change some setting, I have to go to each
machine (over the network at least) and change each instance.  I thought
it'd be nice if there were a feature where you could set some configuration
to point to a local network share that contains the latest "master" copy of
the prime.ini file.  Each time the program starts, it would check the master
for any changes, or continue with the existing INI file if the master isn't
reachable or if no changes were found.  Or maybe have it check it on a
regular, adjustable schedule.



I know how we can make incremental CPU time credit work, but we need
to think through what happens if the work is never finished.  Maybe
that's ok to credit anyway?



I agree that a mouse click for every instance would create more problems
than it would solved but I think the idea of some additional warning
mechanism has some possible merit.  There are a number of less intrusive
options availible other than a message box which would REQUIRE user
interaction.  For example, have the Icon in the system tray change color
and/or blink based upon the urgency of the update (some sort of code that
George could set on the primenet server).  And/or as reminder the next time
Prime95 is unmaximized add a text message (or even a hyper-link to jump to
the download page) in the window that displays the current iteration count .





From Will Galway:

As you say on your "free software" webpage, you can't imagine why
people would WANT to run prime95 as a screensaver, but I'm afraid I
have an answer (that I'm not too happy with).

 1.) The spiffy new DELL OptiPlex GX1p that was recently placed in my
     office, with a fast 400 MHz Pentium II processor, has a display
     that flickers horribly whenever the machine is doing intensive
     floating point computation.  I'm not sure if it's just my machine 
     -- I suspect it's a design "feature" of this model.

 2.) It's running Windows NT, in a mode where only an "administrator"
     can do many things on the machine.  Since the machine will be
     shared with other people in my office, I can't just stay logged in all 
     the time, and when I log out all my processes are killed off.
     The best compromise seems to be to get our local administrator to 
     install prime95 -- but my officemates will kill me if it makes
     the screen flicker all the time, thus my "need" for a screensaver 
     version.

A bit more generally, for "political reasons" I think I might be able
to talk a few other administrators (or just regular people) into
running prime95 on their machines -- in part because the concept of a
screensaver is probably something that they're more
familiar/comfortable with.

So, what do you think -- would it be easy to bring the screensaver
code up to date?  (Or, is the setup modular enough that I can use the
current screensaver version along with Version 18.1.1 of prime95?




IniFileWritable bug?...
I couldn't log in to our main server for some days because my
account was locked through misunderstanding.
My disk quota on the server was overfulled in that time
and mprime running on several machines which connected
to main server via NFS zeroed out some setting files
such as local.ini and worktodo.ini.
So, every time when every machine runs mprime,
it asked primenet server for new exponent because it couldn't
find anything in worktodo.ini :-(


5. can I provide an icon for About PrimeNet server?

6. fix userinfo settings to send update to server if anything changes

7. fix Manual PrimeNet Communication feature to send packets for
assignmentResult when appropriate

9. fix?: 'send update completion dates' seems to wait too long, far longer than
the network connect rate




Support two save files when factoring (we do in ecm and LL testing)
Support three save files?


Does the PrimeNT app have the same command line functionality as the Prime95?
Specifically the -A and -W switches.






X-Sender: kkriesel@facstaff.wisc.edu
X-Mailer: Windows Eudora Pro Version 3.0 (32)
Date: Wed, 21 Jul 1999 23:58:52 -0500
To: "George F. Woltman" <woltman@magicnet.net>
From: Ken Kriesel <kkriesel@facstaff.wisc.edu>
Subject: a suggestion for v19 Prime95

The recent mailing list discussion of whether there was a way to 
determine whether an LLtest is right or not without duplicating
that magnitude of effort led me to the following.

In hexadecimal, the first several iterations for any value P of current
interest follows a predictable pattern.  The pattern persists until
the result of an iteration grows larger than Mp, and so is independent
of P for a time.
L(n+1)=Ln^2-2;
n      hex Ln       binary Ln
2          4
3          E                                          
4         C2                                      1100 0010
5       9302                            1001 0011 0000 0010
6  5468 4C02        0101 0100 0110 1000 0100 1100 0000 0010
7  1BD6 96D9 F03D 3002         ... 1101 0011 0000 0000 0010

least significant 64-bits only below:
8  8cc8 8407 a9f4 c002
9  5559 9f9d 37d3 0002
10 f460 d65d df4c 0002
11 e180 d807 7d30 0002
12 9bdb 491d f4c0 0002
13 4ceb b477 d300 0002

etc for all n I found to check, where Mp> Ln, & Ln<=2^(2^(n-1)); 
Mp>2^(2^(n-1))
2^p>2^(2^(n-1))+1
p>2^(n-1)
log(2)p+1>n
 log(2)33,219,281=24.985>n
 log(2)5,000,000=22.25>n
(In practice I've found the limits at low n occur at slightly lower p
than expected.)

That is, the rightmost 2(n+1) bits begin with binary 0011, then in the middle
there are 2(n-2) zero bits, then a 1 and another 0.

For exponents 16,777,215<p~33,000,000, the max n for this to hold is 
only around 24, so it is only useful as a check of the first iterations.  
But that may be sufficient to catch either some inadequate FFT lengths, or 
programming errors like occurred in V17.  It seems to me that this 
check would be extremely fast, since the bit lengths are short and
given by formula.
The test only need be done once per LLtest, before the iteration whose
input squared would exceed Mp.  The number of bits that should match
is respectable for exponents of current interest; over 40 bits.
If the shifting of these check values to the shift count of the LLtest 
was done by a separate algorithm, those bits should still match.
It presents an opportunity for defensive programming.



I am using the Gimps software on 5 computers, all Wintel machines.
Management of these machines is getting to be a pain, since I'm trying
to tweak their settings to get the best results.  Would there be a way
that I would change the settings for individual machines on the Primenet
status page and then the next time the clients sent in a status report
the server would return a list of updated settings?

The second is the strange way the countinuation files are saved.
If I specify two backup files than 3 backup files exist
while saving and 2 exist all other time. However, if I specify
not using two backup files than mprime always uses only one file
named pXXXXXXX that is during the writing there is not a single
complete continuation file. It seems to me that it will be better
to introduce two new parameters instead of current TwoBackupFiles.
Parameters would have the following meaning:
SaveFilesChars -- string consisting of characters used as first
	characters of continuation files,
CreateTemp -- boolean (0 or 1) value which indicates whether
	an additional temporary file is needed while saving
	continuation file.
In other words, current configuration item would be mapped in
the following manner:
	TwoBackupFiles=0 --> SaveFilesChars=p and CreateTemp=0
and
	TwoBackupFiles=1 --> SaveFilesChars=pqr and CreateTemp=1.
And I want to specify for me SaveFilesChars=pr and CreateTemp=1.



B2 limits above 4 billion - especially for P-1 factoring.



Add file locking in Linux.  Allows mprime to run in background while
a mprime in foreground contacts the server.





Make torture test always available?   It could stop automatically if
thread is running.



Mprime package

Add hyperlinks to FAQ pages and newsletter signup.




Now before the new version of Prime95 is released I have some
suggestions for new function which should not be too difficult to add:

- A menu item that forces the program to write intermediate data to
  disk. It is useful, when the user wants to install a new program or
  play a game which probably forces the computer to crash. So it is
  possible to save data without exiting the program before a riskful
  action.

- A function which prvents writing to disk for some time. When the user
  writes a CDr, it sometimes is dangerous, when prime95 writes
  intermediate results to disk during that time.

- Extended status information
  -relative speed of the system (e.g. using rolling average)
  -hours in use
  -# flops done (calculated)
  -# iterations done  (total of all exponents)
  -history: all tested iterations on this machine 
  -processor usage (compared with the unused system




Rather than have the server figure out CPU time for account
crediting, the client should figure it out and send it in.
Much more flexible (as in new work types).




From Ernst Mayer:  Reduce normalization data by half (not a big time win)
or more (two 8192 x 128 arrays can be one 4096 x 256 array)

>>Using the
>>identity wt(j)*wt(N-j) = 2, I can use the same two small tables for the
>>inverse weights.

>You lost be a little here.  I have one array pair for the weights and 
>another array pair for the inverse weights.  You're saying I can reduce 
>this by half?

Indeed you can.

>Can you explain quickly - or do I need to go doodle with
>some pen and paper for a while?

Probably a bit of both. The easiest way to see this is to first write
a little code to generate a full length-N DWT weights array, with index
running from 0 to N-1. Then, define an extra array element N and set it
equal to 2. This is so that the identity wt(j)*wt(N-j) = 2 will hold also
for j=0 (without the extra wt(N) element, wt(N-j) is undefined.)

Now write a simple do-loop to verify the above identity, allowing for
a little roundoff error - you can also use such a loop to check the accuracy
of your weight factors.

Once you've convinced yourself the above works, it's pretty easy to modify
your 2-small-array scheme to use the same arrays (call them wt0 and wt1)
for your forward and inverse weights - whatever you do with the absolute
weights array index (call it j) to get your indices for accessing elements
of wt0 and wt1, replacing j with N-j and multiplying the result by an added
factor of 0.5 should generate the inverse weight.

Note that (similarly to the extra wt(N) element you need using the full-size
weights array), you need extra wraparound elements wt0(dim0)=2*wt0(0) and
wt1(dim1)=2*wt1(0) to get the proper inverse weights in all cases.

I also eliminate the extra multiply-by-0.5 needed for inverse weights as 
follows:
when calculating the forward weights, I use a 2-element auxiliary array with
elements arr(0)=1.0, arr(1)=0.5. The sign bit of one of my integer ops tells
me which of these two I need. For inverse weights everything is the same, but
I need to multiply by an additional 0.5, so I simply add another element to
the array, arr(2)=0.25, and add one to the aforementioned sign bit when doing
an inverse weight, i.e. instead of using arr(0:1) as my two scalar 
multipliers,
I use arr(1:2).






> I also accidentally ran two or three instances of the client, and it complained
> about it's work file or something, and delete it.  89% complete doing whatever
> it was doing, and it restarted at 0.
Not a problem with the Win9x/NT client - it just brings the running client
to the front.  I haven't experienced this problem when I've accidentally
run a couple (haven't run three) clients off the same directory, but I'm not
saying it couldn't happen.  Again, perhaps something for the *NIX porters
to look at - perhaps drop a lockfile with a pid and check it on startup?



Also, the source seems to be released something like "feel free to use
this code to make the world a better place as you see fit", but doesn't
actually have a license.  I would incourage you to release it under either
the GNU General Public License (http://www.gnu.org/copyleft/gpl.html), or
if you want to allow commercial use, the BSD license (which I'm
significantly less familiar with).





There doesn't appear to be a Debian package, and I've seen no reference to
a RedHat package.  Are there any plans to do these ?  Would probably
increase participation among Linux users....





mprime -d -e "ECM=727,44000000,0,1,0,0,0,64"
to do a single curve on M727 and ignoring worktodo.ini. I guess there is
a feature freeze on v19.0, but perhaps this can go in a future version
of mprime?


Stupid question - would it be more sensible to build an interface for 
inter-process communication into prime95 (giving basic info such as 
current iteration number, time to go etc) & make a pretty front end 
(screen saver or whatever) interface with that, instead of building 
it into prime95 directly? The message block could probably be shared 
with X clients, the NT service version & maybe also clients other 
than Prime95; having built the GUI, it could be maintained 
independently of the Mersenne client, which would be a major 
practical advantage of this design approach.




I recommend you 2 little tricks:
1) rename your program to Prime2000.
2) can you put automatic install like into my program (Sum99) ?
It's just a RegKey to setup:
HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run
instead of:
HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\RunService


For ECM Prime95 allows 2^N+1 exponents in the 100-79,300,000
range, which is slightly above F26:
    What does 79,300,000 represent - an FFT size boundary or some
    arithmetical limitation ?
    Do you plan to increase it in the near future, say to ~ F28 ?
Finally as a very low priority Prime95 feature request, it would
be useful for performance comparisons if there were some kind of
"UNDOC" setting like   LogTimesToResults = 0 or 1   that would
output ONLY the four timing lines to results.txt viz:
    Stage 1 complete ....... Time: xxx.yyy sec
    Stage 1 GCD complete ... Time: xxx.yyy sec
    Stage 2 complete ....... Time: xxx.yyy sec
    Stage 2 GCD complete ... Time: xxx.yyy sec
or is there some other easy way to save Prime95 window output
(excluding iterations) to some kind of timings.log for posterity ?
Then when we are running P5 4.0GHz or Itaniums  8^D  we can feel
smug and look back at how slow things were in the days of yore !



From: Alexander Kruppa <alexander.kruppa@stud.tu-muenchen.de>
Organization: Technische Universitaet Muenchen
X-Mailer: Mozilla 3.0 (X11; I; SunOS 5.7 sun4u)
To: woltman@magicnet.net
Subject: Suggestions

Hi George,

a few suggestions for a future version of Prime95/mprime. These are only
factoring relevant and thus probably of little interest for the majority
of the Gimpsers, so they may have to take a back seat to more important
improvements but nonetheless.. here goes:

A command line control option, like the perl one-liner option -e, i.e.
mprime -d -e "ECM=727,44000000,0,1,0,0,0"
to do one ECM curve on M727 while ignoring the worktodo.ini file. I
mentioned this on the mailing list before.

Stage 2 and perhaps Stage 1 limit >2^32, especially for P-1. Probably a
lot of work, too.

A program that prints the info from the P-1/ECM save files (current
bound, curve number, etc).








Dear Mr Woltman,

I'm writing to you to highlight a (small) problem with Prime95 running under
Win95.

The problem arises when the Windows95 virtual memory manager tries to reduce the
swapfile size by re-claiming discarded pages. This process runs at the same low
priority level as Prime95, and gets very few CPU cycles (or disk I/O for that
matter).

Assume the swapfile at any point is 50 MB. Closing a particular application
might reduce the need for virtual RAM by 10MB. The VMM runs as a 'system idle'
process and will re-arrange the swapfile in order to reduce it to 40 MB. If
another application requests memory before the VMM has finished compacting the
swapfile, VMM will gladly increase the swapfile size beyond 50 MB even if parts
of the memory image are unallocated.
With Prime95 taking all the CPU cycles it can get, the VMM is nearly never able
to finish the housekeeping in time. Net : wildly inflated swapfiles, degrading
system performance.

If one closes or interrupts Prime95, VMM gets in action and starts rattling the
disk drive, potentially for several minutes.

I hope my description makes sense. I realise this is strictly speaking not a
Prime95 problem - the Win95 VMM isn't smart enough, or should run at a higher
priority level. Maybe this is improved in Win98 or NTx.

Otherwise, I'm very pleased with the concept and implementation of
GIMPS/Prime95. I discovered it through a column in BYTE.com, and have Prime95
(v18) running on an MMX 233.

Regards,

Wim Van de Velde
Procter & Gamble Europe
Brussels - Belgium
wvandevelde@yahoo.com or vandevelde.wm@pg.com

GW:  Can GlobalMemoryStatus help???





See Will's diff files.
I need to see if there are any "strict" or "lint" type options
I can add to my C compiles.  I get no warnings on this code!




Create a license.txt file for all releases.  Refer to 
http://www.gnu.org/copyleft/gpl.htm and our exceptions
(security.c, asm code, prize rules, and entropia.com concerns)




I'm running the client on a laptop with a PII under Windows NT 4.0 SP5
and have unchecked "Run program even ...." in the options/preferences
menu. The client keep on running, in other words it disregards this
option.
	GW:  Gray the choice??  What of Windows 2000???



I noticed that prime95 gives an error when it is writing to the results file
when this file is opened with quick view. It then writes a line to the log
file
that there was an error but it doesn't write the line that should be written
in the results file. The results are probably written to the prime.spl file
but
this one isn't used when testing manually so we could miss a factor or
LL test. It might be better to write the line that should be written to the
results to the log file with the error message.



I hope my suggestions are not getting on your nerves..
Anyhow, heres another one. If you plan to extend the stage 2 limit for
P-1 beyond 2^32, could you make it so that one can specify both start
and endpoint for stage 2? That way, the stage 2 can be distributed over
several machines, which would be really interesting for huge runs like
the one on F14 

I just had the following problem when running out of disk space while
the mprime client was running. My local.ini and worktodo.ini got shrinked
to zero bytes. Luckily, i had backup and had everything was fine once i 
freed some space.
It might be worthwhile to put a 3 step rewrite of these files like we
do for the p and q files or even just create a local.tmp and rename it
later to local.ini instead of blindly assuming that we will have space
to rewrite it.

In addition, would it be a good idea to add the following into the program:
Whenever someone unchecks the checkmark for Use PrimeNet to get work and 
report results, a pop-up window appears, warning the user that the PrimeNet 
system won't register CPU time, whenever the computer finishes calculations 
on a number before the checkmark is checked again. People like myself won't 
be making the same mistake again, and if we do, we were forewarned.









Date: Wed, 22 Dec 1999 00:22:40 -0600
From: Sam <sam123@bigfoot.com>
X-Mailer: Mozilla 4.7 [en]C-AtHome0405  (Win98; U)
X-Accept-Language: en
To: woltman@alum.mit.edu
Subject: Prime95 suggestions


Sir,

I have a Bachelor's in Comp Sci and have worked as a computer engineer,
consulting on both hardware and software performace for about 8 years.

GIMPS does not have the "mass appeal", "excitement", and other
attraction to the populace as SETI@home does. However, I think GIMPS
could pick up a few tips from SETI@home. The SETI@home clients can be
set to do something visually entertaining, if somewhat worthless. Some
examples are power/frequency/time graphs, various small windows with
lots of status information in a graphical format (progress bar), and
other items such as estimated time till completion. Another plug-in to
the SETI@home client displays that area of the sky that the user is
analyzing data for. Granted, these plug-ins and other graphical features
do *slow down* the calculations, but it's conceivable that the extra
interest such features would have would attract more people and offset
the net slowdown per machine. I have not worked in a corporate
environment for 2.5 years, but I understand that many people use the
SETI client in screensaver mode in their offices, and the
power/frequency/time graphs put on an interesting show and results in
inquiries about getting the 'screen saver.' SETI currently has about 1.5
million contributors. Of course, SETI also has lean clients without
fluff for those who want to race to completion in the shortest time
possible. I would like some form of intermittant animation or the task
bar icon (perhaps a heartbeat?) to let me know my machine was busily
working away at something of value even if I have writers block.

SETI also provides lots of 'team recognition', in the form of *hourly*
updates to team and individuals work units completed. This generates a
lot of excitement as team 'compete' with each other. SETI has groups for
Colleges, Universities, Junior colleges, Large corporations, Medium
corporations, etc. Employees at Compaq (Alpha), SGI (Cray I believe?),
Microsoft, Intel want to beat their 'competition'.  The environment
fostered by this breakdown of categories creates a sence of 'urgency'
because no one wants to let their team 'down.'

Intel built on overly fast FPU because they wanted to penetrate the
work-server-station market and compete with the likes of Sun, HP-Apollo,
etc. To my knowledge that never happened, but it does make make the
InTeLigent EviL processors the items of choice for the lay crowds that
would participate in a program such as GIMPS or SETI. Unfortunately this
means that Cyrix, AMD (excluding Athlon), IDT Winchip etc users
generally have much longer times to completion and this is demoralizing.
I would like to see some optimizations for other chips. I am not sure if
the context was GIMPS or SETI, but I recall a message stating the 3DNOW!
was not acceptable as an optimization because it was only single
precision. Couldn't normaliztion, rolls, shift, and loops be built to
perform operations on greater than single precision data. I recall the
days of the 6502 that had no multiply, and integer multiplication was
implemented by repeated rolls, shifts, and adds. A floating point system
was supported, even though the 6502 did not inherently support a
floating point data type. (I think they used 5 bytes, 40 bits, on an 8
bit machine.) Surely some approach could be used to realize the
performance enhancing capabilities of 3DNOW! for the AMD crowd.
Otherwise people will get frustrated and give up. An 'estimated time
till completion' field would let see the progress they are making and
not get discoraged so easily.

The prime95 window display could be made more interesting. I really
don't know what to make of the clock cycle counts, but they should at
least have commas every 3 spaces to make reading them easier. I propose
a display that would show what percentage of the CPU that Prime95
received since the last screen iteration.

I commend you on making  Prime95 to be so unobtrusive -- very little to
no impact of machine performance, small memory footprint does not
seriously aggravate memory page faulting/process swapping, and the
client seems to be really stable and not conflict with other software.
Evidently the same can not be said about the SETI client.

Sam







I would also like to suggest a minor enhancement to Prime95's factoring.
It would be helpful if the program would list the decimal length and
primality status of the factors it finds, much like GMP-ECM does. I
envision something like this:
M170189 has a probable prime factor of 18 digits: 755309146835160991
M360 has a composite factor of 71 digits:
12403248634896328129782889171975382905959125015859452422534565158970175



Suggestion for future release - parameterize day/night time by day 
of the week. Lots of people work e.g. Mon through Fri, night-time 
settings would be appropriate even during daytime hours at the 
weekend. The converse might be true for home-based systems.
The reason I suggest to parameterize is that not everyone works 
Mon - Fri, or even five consecutive days in the week, for that matter


if you change e.g. memory or day/night hours in CPU/Options 
whilst the program is running, it outputs the "startup message" 
again.  How about a "stopping for memory settings change" message.





Make factoroverride work with primenet.





A wishlist item from Paul Leyland:
it would be nice if the status box
could be copied to the clipboard 


Run on battery - make option work in nt service version





Could you please handle some signals with the following (mprime-specific)
meanings?
SIGUSR1 - Set time to `day time'
SIGUSR2 - Set time to `night time'
This will:
- Make it possible to have more advanced scripts, like having different
  rules for different days.
- Make it possible for a knowing sysadmin to reduce the RAM needed by
  mprime, if he/she thinks it's needed (without killing mprime).
- Make it possible for me to set `nighttime' when I go to bed, because I
  go to bed at the weirdest times ;-)
...all this without changing mprime further, and it shouldn't be too
difficult to implement either (just remember an `external control only'
option, for bypassing the time checks entirely).



Display factoring chances in Pminus1 worktodo lines (just like Pfactor).


Put all strings in the resource file for internationalization purposes.






Looking through the results file recently on the numbers that I am QA testing 17850113 & 20399993 I noticed that periodically - no make that sporadically, periodically implies some sort of regularity - Prime95 spits out results. It is set to write to the results file every 100ki terations and I have interim save files set to 100k but there is no (discernible) pattern to these outputs
[Fri Jun 16 16:29:58 2000]
Iteration 15000000 / 20399993
UID: nitro/Liberator, M20399993 interim WW5 residue 24413B5D3722B3C7 at iteration 15000000
UID: nitro/Liberator, M20399993 interim WW5 residue FB91DDF744A69D7F at iteration 15000001
UID: nitro/Liberator, M20399993 interim WW5 residue E6498E363AF3A352 at iteration 15000002
[Sat Jun 17 17:25:42 2000]
Iteration 15138817 / 20399993                      ******************  this one
[Sun Jun 18 04:21:24 2000]
UID: nitro/Liberator, M20399993 interim WW5 residue 243C2F3B3AEC42BE at iteration 15200000
UID: nitro/Liberator, M20399993 interim WW5 residue A59B993F1F088E06 at iteration 15200001
UID: nitro/Liberator, M20399993 interim WW5 residue 0056ADC061330114 at iteration 15200002
[Sun Jun 18 05:07:41 2000]
Iteration 15204353 / 20399993                      ****************** this one
[Sun Jun 18 16:43:53 2000]
Iteration 15269889 / 20399993                      ****************** this one
[Sun Jun 18 22:04:49 2000]
UID: nitro/Liberator, M20399993 interim WW5 residue 8C31E26B34F1D748 at iteration 15300000
UID: nitro/Liberator, M20399993 interim WW5 residue 73D58D39D7DB5BC0 at iteration 15300001
UID: nitro/Liberator, M20399993 interim WW5 residue 7D5BFF436021D1FA at iteration 15300002
[Mon Jun 19 04:22:17 2000]
Iteration 15335425 / 20399993                      *************** this one





An option to "never assign me a recycled exponent"


given the situation that the savefiles pXXXXXX and qXXXXXX are
readonly (for what reason ever, in my case I copied them from
another machine by burning them on a CD) prime95/ntprime can't
write to these 2 files and generates a new savefile rXXXXXX.
So far so good, but: when Prime95/NTprime stops and restarts
(by a re-boot or whatever) it still reads only the first save
files and does not take into account that the third is actualy
the last savefile, so all the work done so far is lost. This
also means that the exponent cannot be tested, if the program
exits before the last iteration... kind of a endless loop...




This leads on to a suggestion for a functionality improvement:


When running P-1 on small exponents the cost of the GCD is very small 
(only a couple of seconds). When running with large limits it would 
be worth doing the GCD at intervals so that an early exit could be 
made when an "easy" factor is discovered. Could I suggest that you 
change the "Stage1GCD" parameter in prime.ini so that it would work 
as at present if the value were 0 or 1, but if the value were another 
positive integer N, it would run GCD a total of N times during _each_ 
stage. (Or possibly using Stage2GCD to give a different number of 
GCDs in stage 2 - in this case 0 is meaningless & should be read as 
1!)


e.g. if B1=1000000, B2=25000000 and Stage1GCD=5, then run GCD at 
200000, 400000, 600000, 800000 & 1000000 in stage 1, and at 5000000, 
10000000, 15000000, 20000000 & 25000000 in stage 2.


This suggestion would have no impact on the normal operation of the 
program, though it would be highly confusing to implement this 
suggestion _without_ the suggested "bug fix" to report the actual 
limits used.


--------------------------------------------------


I have recently swapped from using the client version to the NT service
version.  One the features I liked about the client version was the program
detected it was running on battery power and paused until back on mains
power to conserve battery life.  Can this feature be added to the NT service
please.



--------------------------

is there anyway to remotely configure prime95 if your the team leader?
i was trying to find a way that i could make every one in my teams prime.ini 
change the time between reporting into prime net
If not you should maybe add this feature to the new version.



---------------------------


>How would this work?  In undoc.txt there are ways to redirect prime95
>to a network drive for its INI files.


Yes, but what if that is not mounted? I know about the feature, I just wanted an
extension so I can specify a path like:


prime.ini=\\primeserver\%i\prime.ini


(Let %i be the IP of the computer, or the computer ID, or whatever -- I'd prefer
the IP, for my purposes.)




Transmeta Crusoe processor type.






Hi Ernst,

At 01:33 AM 1/28/2001 -0500, EWMAYER@aol.com wrote:
So it's been running for a couple of months on my lowly
p150 at home, and it's gotten from about 35% done (where
I picked up the work) to around 75% the last time I
checked it, earlier today. I rebooted, and lo and behold, it
restarted the run from the 35% point! So I look at the
directory and see that it's apparently been writing all
its checkpoint data to a single r-prefixed savefile, and
the p-and-q-savefiles are the same as when i originally
got them. Luckily I quickly made a copy of the r-file
at this point, since a few more minutes and two months 
of work would have gotten wiped out (as soon as the next
checkpoint was reached). So apparently if the program
detects that the p-and-q-files are read-only, it diverts
all future saves to the r-file. OK, I understand that.
But...why doesn't it look for an existing r-file when
it starts up, to avoid the above scenario?

Prime95 always creates an r-file.  It writes the r-file, deletes p-file,
renames q-file to p-file, renames r-file to q-file.  Since p and q
were read only the r-file never got renamed.

At startup, prime95 used the p-file since it was valid.  It does not check
the creation dates of any q or r-files to see if they are more recent.

Perhaps prime95 could be made a little smarter in handling weird
error conditions.

Regards,
George




I also have a question about making different language versions of
Prime95. Do you advocate such a project? 
If it should be done, then it might be better to have all the
user-readable strings used in Prime95 in a separate file, defined either
as macros, as variables or ideally as an array of pointers to a memory
area with the individual strings so they can be reloaded at run-time.
Then there would not be a different version of Prime95 for each
language, only a different language file.
---> Linux requires the separate file approach




>    The next problem comes with large assignments for B2.  Typically, B2 is
>* 100 larger than B1.  However, when I submit the following in worktodo.ini
>Pminus1=727,3000000000,300000000000,0,0
>Prime 95 responds with
>P-1 on M727 with B1=3000000000, B2=3647256576
>[Mon Feb 12 13:35:59 2001]
>UID: k5gj/1, M727 completed P-1, B1=3000000000, B2=3647256576, WW1: 8C2F1614
>>    Also note that Stage 1 promptly wrote 222 megabytes of updates to
>results.txt.  This was cured by changing  prime.ini  to
>ResultsFileIterations=9999999999
>(This will cause an error the next time the Options/Preferences is entered)



mprime crashes reporting 200+ digit factors to primenet.  The user
tried P-1 on M10000.



make sequential calls to is_big_word, set_fft_value, get_fft_value, etc.
faster by eliminating divides, etc.



have save file and results line output keep track of which cpu types
ran the ll test (in case a p4 code bug is found)



Would it be possible, when mprime -v is executed while another mprime is 
running, to print out something along the lines of
Mprime version 20.7 now executing iteration 12345/1000003
Expected completion 2:34 AM, Monday, April 2, 2001
0 results waiting to be sent; work queued through April 15
I would find something like that quite helpful.  




A few days ago I discovered a feature in v20 which I think may be a 
bug. What happened was that the client picked up a new assignment 
from PrimeNet & started running P-1 on it. The checkin interval 
expired during the P-1 run, but when the P-1 run completed the 
completion dates were not reported at the same time as the P-1 result 
was communicated. Instead the server was contacted again (presumably 
at the next 64K iteration checkpoint) & the completion dates were 
reported then.
Should the completion dates not be reported immediately if the 
checkin interval has elapsed and the client contacts the server for 
any reason?
Obviously this is not a big deal, but since you are working on a new 
version, perhaps it's a good time to tidy up this sort of thing.




> I would like to have my Linux machine contact your server 
> more often. (more
> than once a month)  I have tried to add the line that the 
> windows version
> changes with no effect.  Is there a line I can add to one of 
> the config.
> files to make it do this?



Oh, one little request for the next version of prime95, could you write a
comment at the end of the worktodo.ini file that says the expected completion
dates of the work entries in question?  I don't even know if it's comment
safe, it just hit me when I was looking through one and I wanted to know
when one would be done.  I had to dig through the prime.log file to find
it.  Helps for us with mprime running in the background.




is there anyway you can put the teams total odds of winning on
there member page?
 


Something else: the facility you have included to save work files 
with an ending other than "ini" is probably of value to any user of 
Windows Me, as the system restore feature overwrites the ini files 
when doing a restore. Maybe worth adding this information to the 
undoc.txt and/or readme and/or website?




Ideas/todo:
	Add align 8 and align 32 as necessary
	Try aligning loops on 16 byte boundaries
	Do more macros in lucas1p.mac?
	do more +/-128 tricks in fft2b.mac, in fft3.mac?
	if 64K obj limit can be solved should we abandon the 
		eliminated type 2 and 3 code?  should we abandon
		the commonize code in fft1a and fft1b?
	normalize_012 can be simpler(?) if we subtract the BIGVAL early.
		Remember no rounding is needed since we now have all integers
	make sure the complex part of common pass1 and pass2 code fits in 8K
	Make maxerr scalable (not 0.40) just like maxdiff??
	Support SUMINP vs. SUMOUT check for 2^N+1 multiplies
	the first four_complex_fft in pass2 macros should be a special 
		one (_0 or _2)
	the complex code in pass2 MUST use special fft_0 and fft_1 macros
		for best speed
	when pass0 ends in a two_two_complex, we must find a way
		to make SCD = 16 (or write an eight_complex macro???)
	should we really waste 16 bytes in gpm3???
	Can we reduce the plus1 premult data by creatively collapsing
		it with the pass2 premultiplier data? or use 2 complex muls?
	Use x^30 or x^48 stage 2 ECM???  Zimmerman's latest stage 2???
	Bill Daly's or Crandll's new papers or new fermat.c ell_dbl an
		ell_add??
	uadd, usub, uaddsub would be faster if they did one whole cache
		line in the innermost loop (better L1 cache behavior)



bug report:
Memory allocation (in P95>Options>CPU menue)was at 200/200MB on Stage 2 (out of 256MB) and programs were running slooowwww. So I changed memory to 64/64. It caused client to restart at 0% Stage1 





An option to only test world-record-sized Mersenne primes.



See emails with Daran.  They show that more P-1 and less trial factoring
makes sense.  Furthermore, TF, P-1, then more TF makes sense.




Is it possible to have the windows client scrollable for a defined number of lines. As it is
today whenever a line disappears from the screen it is gone completely.






Brian Beesley:  should the program code used in the database reflect the 
architecture as well as the program version and OS?
George:  Yes.  I'll add this to the todo list.  Perhaps I'll reserve some
bits of the error code to indicate which architectures performed iterations
on the exponent.




This option in Prime95 should perhaps be called
"Create Two LL Backup Files" because it only seems to
affect LL mode. 





Nussbaumer 5-point FFT  - does not seem faster
new_x5r_fft MACRO r1, r2, r3, r4, r5, t1, t2, t3
	movapd	t2, r4			;; 0-5 T4 = R4
	addpd	r4, r3			;; 1-4 T2 = R3 + R4
	movapd	t1, r2			;; 2-7 T3 = R2
	addpd	r2, r5			;; 3-6 T1 = R2 + R5
	movapd	t3, XMM_M809		;; 4-9 M4 = -.809

	subpd	t2, r3			;; 6-9 T4 = R4 - R3
	movapd	r3, r2			;; 7-12 T6 = T1
	addpd	r2, r4			;; 8-11 T5 = T1 + T2

	subpd	t1, r5			;; 10-13 T3 = R2 - R5
	mulpd	t3, t2			;; 11-16 M4 = T4 * -.809
	addpd	r1, r2			;; 12-15 M0 = R1 + T5
	mulpd	r2, XMM_P309		;; 13-18 M1 = T5 * .309
	subpd	r3, r4			;; 14-17 T6 = T1 - T2

	addpd	t2, t1			;; 16-19 T4 + T3
	mulpd	t1, XMM_M262		;; 17-22 M5 = T3 * -.809

	addpd	r2, r1			;; 19-22 S1 = M1 + M0
	mulpd	t2, XMM_P588		;; 20-25 M3 = .588 * (T3 + T4)

	mulpd	r3, XMM_P951		;; 22-27 M2 = T6 * .951
	movapd	r4, r2			;; 23-29 S4 = S1

	addpd	t1, t2			;; 26-29 S5 = M5 + M3
	addpd	t2, t3			;; 28-31 S3 = M3 - M4
	addpd	r2, r3			;; 30-33 S2 = S1 + M2
	subpd	r4, r3			;; 32-35 S4 = S1 - M2
	ENDM





