Fritz 21 Handbook

Notes on UCI engines

When using different engines under the program interface, you should know that UCI engines – in contrast to "native" engines such as Komodo, Shredder, Junior or Tiger – communicate with the program interface via a different protocol.

If you have a native and a UCI engine analysing in parallel, the resource distribution is not 50:50; the UCI engine receives somewhat less CPU time. The reason lies in Windows' process management. The foreground process gets a higher priority and therefore more computing time.

Native engines, such as the Fritz engines, all run as threads, so the distribution of computing time remains equal whether the program runs in the background or foreground. UCI engines, however, are processes. Normally the interface is the foreground process and the UCI engine is a background process. Since the Shredder engine runs as the foreground process, it receives more computing time. You can change this by sending both processes to the background. The easiest way to do this is to open the Task Manager, which must then be in the foreground. You can recognise this by the Task Manager's title bar being blue and not grey.

In this case both engines are active as background applications and both receive the same computing time. Any other program serves the same purpose. In Windows there is also a setting with which you can change this.

Loading UCI

Normally this is set to "Optimise for applications"; you can switch it to "Optimise for services". After switching, both engines receive the same computing time. This is generally not advisable, because Windows becomes sluggish to use. The option is intended for servers where the priority of services should not depend on foreground/background status.

Setting priority

On a dual-processor machine there are no problems as long as each engine only uses one processor. Here too the two engines receive the same computing time, since they do not interfere with each other.

The problem only arises here with three engines, since the available resources then have to be shared. It does not occur on a single-processor machine with two UCI engines or two native engines, since in both cases both engines are always treated equally.