The 3x + 1 class record search
|
|
|
What software do I need to join?
You don't need anything special really. The main program is a small EXE program that can run on any Windows platform. So you need a PC. Sorry, there is no version for MacIntosh or Unix systems.
To make it easier to restart the process after a system shutdown there is a small scriptfile. This is written in VBScript. To make that run you need Windows Script Host (WSH). Windows 2000 and Windows XP machines have this by default, but it also comes with IE. It is easy to check the presence of WSH: if a file with a .vbs extension shows a pale blue scroll icon then your system has WSH active.
What's the impact on my system?
The impact on your system is usually very low indeed:
On Windows XP or Vista (or on other true NT versions such as NT 4, Windows 2000 or Windows 2003) the impact is almost nothing. The program runs in a virtual DOS Window, which usually takes something like 0,5 MB of RAM. It runs on idle priority, so it just uses the cycles your machine would otherwise spend doing nothing. It writes just a single line of text to the hard disk every cycle - a cycle takes around 15 minutes on a 1GHz machine, it might take longer or shorter on your machine depending on the speed of your processor. It does not open any other files or use any other resources. It also does not send any emails or perform any other network activities.
On the older Windows98 or Windows/ME machines however there is no command available to start a program on idle priority. The program is therefore started with 'normal' priority. You could therefore experience an occasional effect on other applications. Note though that Windows98/ME is tuned to give maximum priority to foreground applications, which strongly reduces any effect of the calculation process.
In general it is also a good idea to check your screen saver settings. Some screen savers perform lots of graphics and use big amounts of CPU time. This will obviously slow down the calculation process.
Currently the searches are performed in 'blocks' of 20,000,000,000,000 (20.1012). Such a block would take roughly 19 days of (idle) time on a 1000 MHz processor.
Where do I download the software?
You can download the software very quickly by using this
link (only 15 kilobytes).
You then put it in a folder somewhere and request a block
to search through (see below).
How do I get a block assigned?
The distributed search is done by assigning 'blocks' of 20.1012 numbers.
Simply email
and I'll reply to you with the next free block as soon as possible.
You should then soon see your name appear on the
progress page as well.
You then change the third line of the .vbs file (using notepad) to your block
number and you're ready to go. Simply start the script (the vbs-file) to run.
The program will automatically tell you how long the block calculation will take
on your machine, based on your processor's speed.
If you are running on Windows9x you will get a small warning the first time you start. This is just to make sure you are aware that on Windows9x performance might be slightly affected.
If you have a pentium-4 processor and Windows XP your system will probably something called hyperthreading: the system will think your hardware actually has two processors, each using 50% of the available time. You can make your block go twice as fast by splitting it in half. See below how to do that (it's really easy).
How do I stop the search?
The program has no "clean" procedure to stop the search. It was found that building in a neat way to stop makes the performance go down. If you need to stop the search simply kill the program. This does not destroy earlier results, since they were written to the logfile.
How do I restart the search?
When you run the .vbs script it will automatically restart a the point it left off. So after a reboot just restart the script.
In general it's a good idea to make the .vbs script run at system startup. This way you will never have to bother about restarting the program when your system has shut down, because everything is restarted automatically whenever you reboot. You can make the script run at system startup by using the Scheduler.
How do results get reported?
The program writes a log file entry every 18,000,000,000 numbers (which is 234), and also whenever it starts or finishes. It also logs every interesting number. There are not many interesting numbers at these big numbers, just about one in every 5 . 1012 , and sometimes they come in groups as well, so it is not at all strange if you search for a week and find (almost) nothing. The program also writes the time and the number of overflows found. This last number enables a check on whether results are correct and reproducible.
The idea is that once the block is finished you mail the logfile to . The logfile is not very big (~50 kb), and of course you could use winzip to make it even smaller.
What if I want to abandon the project?
Obviously you can always end your participation whenever you want to.
Please tell me if you want to leave, that way I can ask someone else to finish
your block. If you mail me the (perhaps incomplete) logfiles that saves work, too.
Occasionally it unfortunately happens that someone asks for a block but never finishes it.
If a block is not finished after 5 months I will try to contact you. If I don't receive
any reply I must assume you no longer wish to participate and I will have to reassign
the block.
What's the 3x+1 problem about, really?
The 3x+1 problem is one of the simplest unsolved mathematical problems. You can read all about it at my 3x+1 homepage. A short and straightforward explanation can also be found at Wolfram's brilliant MathWorld website. If you're really interested try following the link to the Lagarias 3x+1 overview.
What do I do without Script Host?
The easiest solution is to download it from the Microsoft scripting website. It's free, and it's small (only 700 kB or so).
If you don't want to run scripts at your system you can still run the program without too much trouble, but you would need to restart it manually every time your system has shut down, specifying the last number written to the logfile. To see how this works look at the next section.
How does the software program work?
The trick is that it can be run from the command line, like this:
start /low w422f /o /c233 /fw2840.log 2844,456,000,000,000
This is what this means:
/low : start on idle priority. This ensures the program is not slowing down your system.
Note that this option is not available on Windows 9x systems.
/o : optimized run. This is to verify the program is started properly and not accidentally.
/c<number> : (optional) the number of loops. Each loop is 232, or almost 4,300,000,000. If you use 233 loops you get just about 1012, and 4657 is the number you need to do an entire 20.1012 block. If you do not specify a count the program will run "forever".
/f<filename> : (optional) filename in which to log the result. Results are appended to this file, so previous results are never overwritten. If no filename is specified it will use 'wondrous.log'.
<number> : the number to start with. This is automatically rounded down to a multiple of 232, so the last 9 digits are not very important usually. The comma's are optional, and just help to make it more readable.
Frequently Asked Questions
| Q: | Can I split a block over two or more computers? |
| A: |
You certainly can. At the top of the .vbs file you'll find something like
Const blockstart = 65920 Const blockinterval = 20 although the first line of course should specify your own assigned block. If you were to change this into Const blockstart = 65920 Const blockinterval = 10 your computer will calculate only the first half of the interval. Then, on a second PC you could use Const blockstart = 65930 Const blockinterval = 10 so that this machine would take care of the second half. This trick will obviously also work on a machine with hyperthreading. You can start two processes on the same machine (since they write to separate logfiles that's no problem at all) and finish in half the time! |
| Q: | I do not appear to have Windows Script Host. Where do I get it? |
| A: |
The easiest way to obtain Script Host is to download the latest version
from the Microsoft site.
It's free, and it's somewhere around 700 Kb. |
| Q: | What happens if I abort the program or reboot? Does the program remember where to restart? Shouldn't I close the program properly? |
| A: | The calculation program itself does not support any proper shutdown, because it turned out this would seriously lower the performance. The scriptfile however will automatically check the logfile and restart the process where it left off. |
| Q: | I inspected the logfile and saw it reported lots of overflows. Should this worry me? |
| A: | Not at all. The program usually calculates in 64 bits. Occasionally a number is found that needs more than 64 bits to perform the calculation. Calculation for that number is then restarted using 128 bits. Every time this happens this is counted as an overflow. The number of overflows per 16 billion interval is reported to provide a check on the proper running of the program. |
Back to the general 3x+1 page.