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.
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 16-bit version runs in a virtual DOS Window, which usually takes something like 0,5 MB of RAM. Both versions run 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 10 minutes on a 2GHz 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.
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. Power settings may also put the machine 'to sleep', effectively halting the idle processes as well.
Currently the searches are performed in 'blocks' of 20,000,000,000,000 (20.1012). Such a block would take roughly 10 days of (idle) time on a 2000 MHz processor.
Where do I download the software?
You can download the software very quickly by using this
link (only 15 kilobytes) for the older 16-bit version.
Or you can use this link for the 64-bit version.
You then put it in a folder somewhere and request a block
to search through (see below).
Which version should I use?
On Windows Vista or higher only the newer version will run.
On older versions (before XP) the newer version may not run.
On Windows XP you could run either one - though experience has shown that
the older version runs somewhat faster on such systems. The newer version
is tuned to run on 64-bits systems, which makes it a bit slower on 32-bits systems.
However, the 64-bits version has a nicer user interface and is easier to use.
Also the 64-bits version will run several blocks from one program - the older
version has a separate process for every block it runs. The 64-bit version will
also minimize out of sight to the system tray.
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.
In the 16-bits version 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. In the 64-bits version it's even
easier - just fill in the blocknumber and blocklength and press 'Start'.
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 16-bits 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.
In the 64-bits version simply press the 'Stop' buttons or quit the program. You quit the program by selecting it from the system tray and right-clicking it. Select 'Close' to close the program. Note that clicking on the 'normal' windows close button will only minimize the program to the system tray.
How do I restart the search?
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 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 16-bit software program work?
The 16-bit version 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.
The 64-bit version has a lot more cleverness built in. It will automatically see which blocks you were running the last time - and also detect the logfiles by itself. |
| 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.