Distributed Iterative Solver Guidelines for HPC Configuration

The distributed iterative solver distributes excitations for faster simulations and to access less memory to solve a large problem. Each task corresponds to a number of excitations and, therefore, more excitations are solved in parallel when the number of tasks increases.

The first consideration for the number of tasks is the memory requirement. Each task uses a similar amount of memory, and the total memory usage doubles as the number of tasks doubles. Thus the number of tasks on each compute node should be restricted to avoid an "Out of Memory" failure.

The second consideration for the number of tasks is the number of excitations. HFSS designates one of the tasks as the master, which does not participate in the iterative process. Thus the number of tasks should be no more than the Total Number of Excitations + 1.

In summary, assuming that you have enough memory, if the number of excitations N is less than the total number of cores M and you choose 4 cores per task, then the number of tasks is ceil(N/4) + 1, where ceil() stands for the ceiling function and the extra "1" is dedicated to the master task; if the number of excitations N is more than the total number of cores M and you choose 4 cores per task, then the number of tasks is ceil(M/4). For example, if you have a design with 64 excitations and you have 32 cores available, you could define a possible setup having 8 tasks with 4 cores per task.