7.1. Overview of Parallel Ansys Fluent

Ansys Fluent’s parallel solver computes a solution to a large problem by simultaneously using multiple processes that may be executed on the same machine, or on different machines in a network. It does this by splitting up the computational domain into multiple partitions (Figure 7.1: Partitioned Mesh in Parallel Ansys Fluent) and assigning each data partition to a different compute process, referred to as a compute node (Figure 7.2: Partitioned Mesh Distributed Between Two Compute Nodes). Each compute node executes the same program on its own data set, simultaneously, with every other compute node. The host process, or simply the host, does not contain mesh cells, faces, or nodes (except when using the DPM shared-memory model). Its primary purpose is to interpret commands from Cortex (the Ansys Fluent process responsible for user-interface and graphics-related functions) and in turn, to pass those commands (and data) to a compute node which distributes it to the other compute nodes.

Figure 7.1: Partitioned Mesh in Parallel Ansys Fluent

Partitioned Mesh in Parallel Ansys Fluent

Figure 7.2: Partitioned Mesh Distributed Between Two Compute Nodes

Partitioned Mesh Distributed Between Two Compute Nodes

Compute nodes store and perform computations on their portion of the mesh while a single layer of overlapping cells along partition boundaries provides communication and continuity across the partition boundaries (Figure 7.2: Partitioned Mesh Distributed Between Two Compute Nodes). Even though the cells and faces are partitioned, all of the domains and threads in a mesh are mirrored on each compute node (Figure 7.3: Domain and Thread Mirroring in a Distributed Mesh). The threads are stored as linked lists as in the serial solver. The compute nodes can be implemented on a massively parallel computer, a multiple-CPU workstation, or a network of workstations using the same or different operating systems.

Figure 7.3: Domain and Thread Mirroring in a Distributed Mesh

Domain and Thread Mirroring in a Distributed Mesh

For more information, see the following section:

7.1.1. Command Transfer and Communication

The processes that are involved in an Ansys Fluent session are defined by Cortex, a host process, and a set of n compute node processes (referred to as compute nodes), with compute nodes being labeled from 0 to n-1 (Figure 7.4: Ansys Fluent Architecture). The host receives commands from Cortex and passes commands to compute node-0. Compute node-0, in turn, sends commands to all additional compute nodes. All compute nodes (except 0) receive commands from compute node-0. Before the compute nodes pass messages to the host (via compute node-0), they synchronize with each other. Figure 7.4: Ansys Fluent Architecture shows the relationship of processes in Ansys Fluent.

Each compute node is "virtually" connected to every other compute node and relies on its "communicator" to perform such functions as sending and receiving arrays, synchronizing, performing global reductions (such as summations over all cells), and establishing machine connectivity. An Ansys Fluent communicator is a message-passing library. For example, it could be a vendor implementation of the Message Passing Interface (MPI) standard, as depicted in Figure 7.4: Ansys Fluent Architecture.

All of the Ansys Fluent processes (including the host process) are identified by a unique integer ID. The host process is assigned the ID host(=999999). The host collects messages from compute node-0 and performs operation (such as printing, displaying messages, and writing to a file) on all of the data (see Figure 7.5: Example of Command Transfer in Ansys Fluent).

Figure 7.4: Ansys Fluent Architecture

Ansys Fluent Architecture

Figure 7.5: Example of Command Transfer in Ansys Fluent

Example of Command Transfer in Ansys Fluent