Simultaneous Execution of Participant Solutions

System Coupling allows for groups of independent participants to execute their solutions simultaneously. If enabled, groups of participants which have no direct or indirect dependence on one another within a coupling iteration are solved simultaneously. System Coupling groups only those participants for which an iteration of the defined data transfer will introduce no dependence on any of the other participants in the group.

System Coupling's participant partitioning algorithms allocate simultaneous solutions across available compute resources, with the application of the algorithms modified to minimize core usage conflicts. The availability of partitioning algorithms varies according to the platform being used.

System Coupling's Participant Grouping Process

For all coupled analyses, System Coupling performs an initial ordering of participants, as described in Participant Solution Sequencing. When simultaneous participant solutions are enabled, additional resequencing is performed — first, when System Coupling creates groups of independent participants, and then, when it consolidates those groups (where possible) by combining them.

For details on System Coupling's participant grouping process, see:

Creation of Participant Groups

Using the ordered participant list obtained via the process described in Participant Solution Sequencing, System Coupling groups the ordered participants based on their interdependencies with one another, as follows:

  1. System Coupling creates the group, as follows:

    1. In the modified ordered participant list, identify the participants that have no dependencies with other participants on the list.

    2. Create the participant group, using the same criteria as previously:

      • If independent participants have been identified, then combine those participants into a group.

      • If no independent participants have been identified, then create a group with the first participant on the list as its only member.

    3. Adds the new group to the ordered list of groups, determining its position by applying the participant-ordering process (described in Participant Solution Sequencing) to the groups.

    4. Removes the grouped participant(s) from the ordered list of individual participants.

  2. System Coupling repeats step 1 until no ungrouped participants remain on the individual participant list.

Consolidation of Participant Groups

Once an ordered list of participant groups has been created (as described in Creation of Participant Groups),System Coupling further consolidates the list by combining groups together, where possible. It combines the ordered groups (essentially grouping the groups) according to their interdependencies with one another, as follows:

  1. System Coupling creates the first consolidated group, as follows:

    1. In the ordered group list, identify the groups that have dependencies only on groups that come before them on the list.

    2. Combine the identified groups into a consolidated group.

    3. Add the consolidated group to the ordered list, determining its position by applying the participant-ordering process (described in Participant Solution Sequencing) to the groups.

    4. Remove the combined groups from the ordered list.

  2. System Coupling repeats step 1 until all eligible groups on the ordered list have been combined.

Enabling Simultaneous Participant Solutions

For information on enabling simultaneous participant solutions in a given user interface, see:

Enable Simultaneous Participant Solutions in the GUI

To enable simultaneous participant solutions in the GUI:

  1. In the Outline tree, select the Analysis Control branch.

    Analysis settings are shown in the Properties pane.

  2. Set Allow Simultaneous Update to True.

  3. Set Simultaneous Participants to Independent or All.

Simultaneous participant updates are enabled.

Enable Simultaneous Participant Solutions in the CLI

To enable simultaneous participant solutions in the CLI, change the AnalysisControl.AllowSimultaneousUpdate setting to True, as shown below:


DatamodelRoot().AnalysisControl.AllowSimultaneousUpdate = True

Simultaneous participant updates are enabled.

Execution of Simultaneous Participant Solutions

Simultaneous solutions are executed as parallel runs. In all cases, the solutions are allocated across available compute resources by System Coupling's participant partitioning algorithms. When simultaneous solves are enabled, the behavior of System Coupling's partitioning algorithms is modified to mitigate core-usage conflicts.

When a non-default algorithm is used, the corresponding partitioning functionality is unchanged. Whether solving individual participants or groups of simultaneously solved participants, the Distributed Allocate Cores, Distributed Allocate Machines, and Shared Allocate Cores algorithms behave as described in Parallel Processing for Coupling Participants.

When the default Shared Allocate Machines algorithm is used, however, System Coupling adjusts partitioning behavior to minimize situations where multiple participants are attempting to use the same core at the same time. When this default algorithm is used, partitioning behavior is as follows:

  • Individual participants with sequential solutions are partitioned using the specified Shared Allocate Machines algorithm.

  • Participants that are grouped for simultaneous solution are partitioned as follows:

    • Windows: Member participants' resource allocation fractions are re-normalized and the group is partitioned independently of the other participants using the Shared Allocate Cores algorithm.

    • Linux: Member participants' resource allocation fractions are re-normalized and the group is partitioned independently of the other participants using the Distributed Allocate Cores algorithm.

Simultaneous Participant Solution Examples

This section provides examples of coupling participant groupings for simultaneous solutions. Each example includes:

  • Details of the ordering and grouping processes

  • A diagram depicting dependencies and the final participant groupings

Example 22: Nine participants with multiple dependent participant groups

In this example, there are nine participants. None are sending Incremental Displacement.

StageResulting Ordering/Grouping

Stage 1: Participant Ordering

[P-1, P-2, P-3, P-4, P-5, P-6, P-7, P-8, P-9]

Stage 2: Participant Grouping

[[P-3, P-4, P-5, P-8], [P-2, P-6], [P-1, P-7, P-9]]

Stage 3: Group Consolidation

[[P-3, P-4, P-5, P-8], [P-2, P-6], [P-1, P-7, P-9]]


Example 23: Four-participants with multiple dependent participant groups

In this example, there are four participants. None are sending Incremental Displacement.

StageResulting Ordering/Grouping

Stage 1: Participant Ordering

[P-1, P-2, P-3, P-4]

Stage 2: Participant Grouping

[[P-1], [P-2], [P-3], [P-4]]

Stage 3: Group Consolidation

[[P-1], [P-2, P-4], [P-3]]


Example 24: Coupled analysis with an MAPDL participant sending Incremental Displacement

In this example, the MAPDL participant is sending Incremental Displacement to the Fluent participant.

StageResulting Ordering/Grouping

Stage 1: Participant Ordering

[MAPDL-2, FLUENT-1, AEDT-3]

Stage 2: Participant Grouping

[[MAPDL-2], [FLUENT-1], [AEDT-3]]

Stage 3: Group Consolidation

[[MAPDL-2], [FLUENT-1], [AEDT-3]]


Example 25: Alternate scenario with an MAPDL participant sending Incremental Displacement

In this example, the configuration is the same as in the previous example, but the participant names are indexed differently.

StageResulting Ordering/Grouping

Stage 1: Participant Ordering

[MAPDL-1, AEDT-2, FLUENT-3]

Stage 2: Participant Grouping

[[MAPDL-1], [AEDT-2], [FLUENT-3]]

Stage 3: Group Consolidation

[[MAPDL-1, AEDT-2], [FLUENT-3]]