Analyst uses computational resources according to what has been made available in the “Job Configuration”. A given simulation is distributed among the available resources via several different approaches:
Independent portions of the solution are sent to different processes which may reside on a single computer or multiple cluster nodes (computers). Examples of independent portions of the solution are different frequencies in RF3p problems and different phase advances in OM2p/OM3p problems. Dividing up the problem this way is highly efficient, since little communication is required once the separate portions of the solution are running on the different processes.
Large meshes may be divided up via domain decomposition where each section of the mesh is solved by a different process. Parallelization via domain decomposition on a multiple cluster nodes (computers) allows Analyst to find solutions for geometries that are too large to solve on a single computer. It comes at a higher computational cost, since it requires frequent communication between processors during the solve. Analyst partitions the system using a graph-theory approach to minimize the communication required.
Multithreading divides the work between multiple cores/processors in a single node (computer). It allows Analyst to effectively use all computational resources on a particular node. Efficient multithreading also occurs on the individual computers used in a multiple-node run.
Each of the Analyst simulators may use a hybrid of these approaches, based on which offers the best advantages for a given setup. These approaches are detailed in the sections for those simulation types. The various solver types (RF3p, OM2p/OM3p, ES3p, and MS2p/MS3p) generate sparse linear systems that must be solved, and the associated linear matrix solvers are architected to make use of modern multiple-core machines and clusters. See “Linear Solver” for more details.