Common FDS MPI_PROCESS errors
ERROR: FDS MPI_PROCESS
In the past we highlight how you can set your FDS analysis correctly to reach a good scalability. Often this involves using the MPI_PROCESS parameter to correctly split the workload among different processors.
When doing that it may happen that you rin into the following error:
ERROR: MPI_PROCESS must be continuous and monotonically increasing
The reason for this is a condition on the MPI_PROCESS to be used. FDS requires this parameter to start from 0 and increase monotonically. This means that every MESH must have an MPI_PROCESS value greater or equals to any MPI_PROCESS value of precursor MESHes.
&MESH IJK=47,32,43, XB=-1.0,7.25,-1.0,4.578947,0.0,7.57/
&MESH IJK=18,32,43, XB=7.25,10.41,-1.0,4.578947,0.0,7.57/
&MESH IJK=20,32,43, XB=10.41,13.92,-1.0,4.578947,0.0,7.5/
&MESH IJK=50,32,43, XB=13.92,22.7,-1.0,4.578947,0.0,7.57/
&MESH IJK=47,44,43, XB=-1.0,7.25,4.578947,12.25,0.0,7.57/
&MESH IJK=18,44,43, XB=7.25,10.41,4.578947,12.25,0.0,7.57/
&MESH IJK=20,44,43, XB=10.41,13.92,4.578947,12.25,0.0,7.57/
&MESH IJK=50,44,43, XB=13.92,22.7,4.578947,12.25,0.0,7.57/
In order to improbe the balance of the above MESH scheme we can add the following MPI_PROCESS values.
&MESH IJK=47,32,43, XB=-1.0,7.25,-1.0,4.578947,0.0,7.57/
&MESH IJK=18,32,43, XB=7.25,10.41,-1.0,4.578947,0.0,7.57/
&MESH IJK=20,32,43, XB=10.41,13.92,-1.0,4.578947,0.0,7.5/
&MESH IJK=50,32,43, XB=13.92,22.7,-1.0,4.578947,0.0,7.57/
&MESH IJK=47,44,43, XB=-1.0,7.25,4.578947,12.25,0.0,7.57/
&MESH IJK=18,44,43, XB=7.25,10.41,4.578947,12.25,0.0,7.57/
&MESH IJK=20,44,43, XB=10.41,13.92,4.578947,12.25,0.0,7.57/
&MESH IJK=50,44,43, XB=13.92,22.7,4.578947,12.25,0.0,7.57/
MPI_PROCESS=0 //Line 1
MPI_PROCESS=3 //Line 2
MPI_PROCESS=0 //Line 3
MPI_PROCESS=3 //Line 4
MPI_PROCESS=1 //Line 5
MPI_PROCESS=2 //Line 6
MPI_PROCESS=2 //Line 7
MPI_PROCESS=4 //Line 8
This assignment is not monotonic as required by FDS because in line 3 we are assigning MPI_PROCESS=0 while on line two we had assigned MPI_PROCESS=3. Satisfying the FDS condition is actually quite simple: we only have to swap some of the lines and the final result is the following one.
&MESH IJK=47,32,43, XB=-1.0,7.25,-1.0,4.578947,0.0,7.57,MPI_PROCESS=0 //Line 1
&MESH IJK=20,32,43, XB=10.41,13.92,-1.0,4.578947,0.0,7.5,MPI_PROCESS=0 //Line 3
&MESH IJK=47,44,43, XB=-1.0,7.25,4.578947,12.25,0.0,7.57,MPI_PROCESS=1 //Line 5
&MESH IJK=18,44,43, XB=7.25,10.41,4.578947,12.25,0.0,7.57,MPI_PROCESS=2 //Line 6
&MESH IJK=20,44,43, XB=10.41,13.92,4.578947,12.25,0.0,7.57,MPI_PROCESS=2 //Line 7
&MESH IJK=18,32,43, XB=7.25,10.41,-1.0,4.578947,0.0,7.57,MPI_PROCESS=3 //Line 2
&MESH IJK=50,32,43, XB=13.92,22.7,-1.0,4.578947,0.0,7.57,MPI_PROCESS=3 //Line 4
&MESH IJK=50,44,43, XB=13.92,22.7,4.578947,12.25,0.0,7.57,MPI_PROCESS=4 //Line 8
ERROR: Number of meshes exceeds number of MPI processes
This is another common error that requires the use of FDS MPI_PROCESS to be fixed. Usually it happens when we are executing a simulation on the cloudHPC and we have a lot of meshes in our FDS input file. The system attempts to use as many hardware resources as possible (so all the physical cores and threads available) but it may happen the total number of MESHes in the input file exceeds the cores available. For example if you select 4 vCPU and in the file you have 8 MESH lines well, the system doesn’t have enough hardware resources to assign one vCPU to every MESH.
Again, using the MPI_PROCESS can be helpful because it tells the solver how to split the MESH among the vCPU. It is important that MPI_PROCESS starts from 0 and finisches with the highest value equivalent to vCPU – 1 (the number of vCPU we select decreased by one).
CloudHPC is a HPC provider to run engineering simulations on the cloud. CloudHPC provides from 1 to 224 vCPUs for each process in several configuration of HPC infrastructure - both multi-thread and multi-core. Current software ranges includes several CAE, CFD, FEA, FEM software among which OpenFOAM, FDS, Blender and several others.
New users benefit of a FREE trial of 300 vCPU/Hours to be used on the platform in order to test the platform, all each features and verify if it is suitable for their needs
0 Comments