Considering that parallel systems exploiting a single form of parallelism have been studied and efficiently implemented, it may seem that the task of combining the two forms of parallelism in a unique framework can be reduced to a simple engineering problem. This in consideration of the apparent orthogonal nature of the two forms of parallelism.
A more careful observation shows that this is not the case: combining different forms of parallelism introduces new complex issues to be solved, mainly related to environment representation and memory management. This can be illustrated quite easily. As we have shown in the previous sections, the different forms of parallelism impose specific constraints on the way in which environments and data areas are managed:
Furthermore, in order to guarantee a proper response to unbalanced distribution of or- and and-parallelism in the computation tree, the structure of the teams need to be dynamic, i.e., agents should be allowed to move from one team to another, or to create new teams in case of necessity. This requires the presence in the system of a top-level scheduler, whose task is to select the best teams configuration.
This layered approach to and/or-parallelism has been adopted in the most recent proposals related to and/or-parallelism, like Andorra-I [21, 85], ACE [47, 46], and SPBA [43, 42].