Fill-up Speed-up at Start-up

Talk about anything Wheel Generator related which doesn't fit in the other forums
Post Reply
draughtsman
Site Admin
Posts: 112
Joined: Thu Jan 17, 2008 4:22 am
Location: Melbourne, Australia

Fill-up Speed-up at Start-up

Post by draughtsman » Tue Jun 09, 2009 5:21 am

During the development phase of WG 1.8 Anastasios sent me some notes on the speed up process that operates within the tool.

To me these notes demonstrated the depth of thinking and the detail he has applied to Wheel Generator and I thought I might share them with you. So it really comes as no surprise at all that WG is tearing up those old covering world records. And the notes do of course explain very nicely about filling up speed up at start up and when you might make use of it.

Speed up at start up can be enabled under Options>Preferences and incidentally the speedup repository of data can be quite substantial - possibly hundred's of megabytes built in a few seconds.

Cheers
draughtsman


To better understand this, start building a covering with the check box enabled and then do the same again with the check box disabled and observe how the speedup indication at the coverage panel changes.

The speedup is a huge repository of data, which is used to store information that can be used by the engine, without the need to compute the information as optimization proceeds. This of course takes some time, and in fact is the reason you observe a delay between pressing the Optimize button and seeing the engine actually commence optimizing. If you enable the speedup check box at the Preferences window (under Options), WG will fully compute all the data in this speedup array before starting the optimization. So, when the engine requires data that can be found in the speedup, it uses it right away without the need to recompute that. Thus, with speedup enabled there is a significant boost to calculation speed during optimizing.

On the other hand, it is not necessary to fill up the speedup in advance. The engine understands that the data are not currently available in the speedup, thus it computes as required but additionally it places it at the speedup, so the next time it will need that particular information, it will be available without the need to recompute. This progressive speedup fill-up occurs when the check box is not checked.

Both approaches have advantages and disadvantages.

Advantages of having the speedup option checked (fill-up speedup in advance):
1- Engine operates at full speed right at the beginning, since the computations have been performed in advance.
2- In case the assigned additional memory is too much for the system to handle, you'll receive an out of memory message beforehand, so you know you have to reduce the demands.
Disadvantages of speedup fill-up in advance:
1- It takes time, depending on the covering under construction, until the optimization commences.
2- The whole memory requirements for the speedup will be allocated in advance, which may not all be required, therefore we may have assigned a lot of system's memory to WG processing where it could be allocated to other programs. Given that the speedup generally requires significant MB to operate, this can be a drawback.

Advantages of having the speedup option unchecked (fill-up speedup on request - when needed):
1- Almost instant start to the optimization process. Only the bare initialization is performed, thus no delays.
2- Depending on the covering, we may never need to use all the speedup information. In that case, this option allocates as much memory as needed, and only when needed.
Disadvantages:
1-Since at the very beginning the speedup is empty (fills up on demand), the engine operates at a much lower speed, since it has to compute the information required and place it into speedup. Therefore, the engine is slower at the beginning but as the speedup fills up (again, we may never need the complete speedup), the engine runs at full speed.
2-We may encounter an out of memory error after a few hours of optimization (to contradict the advantage 2 of the other method). In that case, the engine stops its operation and WG enters pause mode, so the user can save his work, but we can't know in advance if this condition will occur and when, and so warn the user beforehand.

In general ‘small’ coverings (few numbers and few blocks) will not benefit much by having Speedup enabled, however large covering designs will benefit considerably during the optimizing process but at the expense of the time taken to build the speedup data repository. Plus the additional benefit of immediately establishing if an out of memory condition will arise prior to any optimizing.

These are the differences of the checked vs unchecked option regarding the speedup initialization.

Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests