The AIMMS Sparse Execution Engine
Learning about sparse execution
In this chapter, we look under the hood of the AIMMS sparse execution engine. It is not only interesting to know what AIMMS can do, but also, to some extent, how it is done. An understanding of the inner workings of the AIMMS execution engine may also give you a framework for understanding why some formulations of AIMMS statements are more efficient than others, leading to more efficient applications. Increasing the efficiency of your application will help make it a success.
Sparse matrix technology
The AIMMS execution system borrows and extends two simple but powerful concepts from sparse matrix technology. These concepts are:
only store the non-zero values, and
do not compute
0*\(x\) (\(x\) any number), because these computations always result in 0.0 and these results are consequently not stored.
The AIMMS extensions to these borrowed concepts are that:
only non-default values are stored, where the default is a selectable value, and
many operations such as
ANDhave similar behaviors as
Note, however, that other operators, such as the
operators, will have to consider zeros:
0.0 / 0.0results in
0.0 = 0.0results in
The results of these computations are not equal to 0.0 and need to be stored; and therefore ‘sparse execution’ is not applicable to these operators.
This material is presented differently in the AIMMS Academy master course “Execution Efficiency”.