Radioss is supporting multi-threading and multi-processor options to speed up the simulations. More precisely both SMP (-nt) and SPMD (-np) options are available.
See Altair Radioss Parallel Computing Methods
Latest ©Intel CPU generations are equipped with both Performance and Efficient cores (P-cores and E-cores) like for instance 12th Generation (Alder Lake) and 13th generation (Raptor Lake) processors.
These new configurations of processors need to be managed differently than previous ones, for both SMD and SPMD options.
E-cores are significantly slower than P-cores; hence, solver jobs should be submitted on P-cores only and one should use affinity to stick MPI processes and threads on P-cores. P-cores have threads on contrary to E-cores and this how we are going to identify them.
In this discussion, we are going to show:
- First, how to identify CPU configuration and P-cores
Identifying and understanding the CPU information is mandatory step before adjusting your settings - Which environment variables should be set and to which values for SMP computations
- Which environment variables should be set and to which values for MPI computations
For such processors, we do not recommend mixing MPI & SMP jobs on the same machine (SMP Affinity flag is altering MPI jobs performances). Therefore, you must choose between running your jobs in SMP mode (-nt) or in SPMD mode (-np) and set the appropriate environment variables described below. Then, if you want to switch to the other mode, you will need to change again the environment variables.
1- Identification of CPU configuration and P-cores
Find information about the CPU unit
- Go to your Altair installation directory and find the cpuinfo.exe file
It is in <install_dir>\mpi\win64\intel-mpi\bin
Generally, installation directory is in C:\Program Files\Altair - Open then a Windows PowerShell (or Windows Command Prompt / cmd as in Figure 1)
Anywhere in the folder, press Shift + Right Click at the same time to open additional GUI and select “Open PowerShell window here” - Once PowerShell window is opened, launch from there .\cpuinfo.exe and click Enter
- Information about your CPU will be displayed in the PowerShell window.The data should be like the ones in Figure 1.
Figure 1: CPU unit information
Understanding the CPU information
- First, we can note that, in our example
- The processor is Intel 13th Generation i7-13850HX
- There are 20 cores
- There are 28 CPUs
- So, we can conclude that:
- There are 8 P-Cores with 2 threads each
- There are 12 E-Cores
- Checking out columns 2 and 3 (Thread Id and Core Id), we can see that
- Several processors (0 to 15 in the example) have same Core Id but 2 Thread Ids (0 and 1): these are the P-cores.
- Other processors (16 to 27) correspond to E-cores (only 1 Thread Id).
- From these P-cores, identify the ids of processors with Thread ID 0.In the example, processors 0 ,2 ,4 ,6 ,8 ,10 ,12 and 14 are the P-cores.
2A- Setting for SMP computation (-nt option)
For SMP computation, set KMP_AFFINITY environment variable to explicitly assign the previously identified cores for the jobs:
Set KMP_AFFINITY to granularity=fine,proclist=[0,2,4,6],explicit, for instance, if you want to use only four cores.
Or, KMP_AFFINITY to granularity=fine,proclist=[0,2,4,6,8,10,12,14],explicit, if you want to use all the P-cores.
Note that even with this setting, some laptops may experience poor performance. In such cases, we recommend setting this additional variable, which may help:
- OMP_WAIT_POLICY to ACTIVE
2B- Setting for SPMD computation (using MPI, -np option)
For SPMD computation, 2 environment variables must be set:
- I_MPI_PIN to 1
- I_MPI_PIN_PROCESSOR_LIST to 0,2,4,6,8,10,12,14 (if you want to use all the P-cores)
Appendix: Environmental Variables on Windows
Figure 2: Open Environmental Variables on Windows