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.
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.