38 if (Parallelisation
is 'Hybrid_Socket' or Parallelisation
is 'Hybrid_Node'):
42 if (Parallelisation
is 'Modal'):
43 PROC_Z = [2, 4, 5, 8, 10, 20]
44 PROC_XY = [1, 1, 1, 1, 1, 1]
47 if (Parallelisation
is 'Elemental'):
48 PROC_Z = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
49 PROC_XY = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
68 for i
in range(0, len(PROC_Z)):
71 Communication_Count = 0.0
74 Simulation = Topology(PROC_Z[i], PROC_XY[i], Num_Core_Per_Socket, Num_Sock_Per_Node, Scheme)
77 (Num_Element_Msg, Num_Elements) =
Partition(Mesh_File, PROC_XY[i])
80 Simulation.Input_Communication(BW_Node_To_Node, LAT_Node_To_Node, BW_Socket_To_Socket, LAT_Socket_To_Socket, BW_Core_To_Core, LAT_Core_To_Core)
83 Simulation.Distribute_Modes(Num_Modes);
84 Simulation.Distribute_Elements(Num_Element_Msg, Num_Elements);
87 Simulation.CG_Iterations(Pressure, Velocity_1, Velocity_2, Velocity_3)
90 Simulation.Data_Size(P)
93 Simulation.Hardware_Constant(Num_Constants, Fit)
96 Pairwise.append(Simulation.Communication_Pairwise_Exchange())
97 Communication_Count += Pairwise[i]
100 Allreduce.append(Simulation.Communication_Allreduce())
101 Communication_Count += Allreduce[i]
104 Alltoall.append(Simulation.Communication_Alltoall())
105 Communication_Count += Alltoall[i]
108 Serial.append(Simulation.Serial_Compute())
111 Serial_Pairwise.append(Serial[i] + Pairwise[i])
112 Serial_Allreduce.append(Serial[i] + Allreduce[i])
113 Serial_Alltoall.append(Serial[i] + Alltoall[i])
116 Communication.append(Communication_Count)
119 Total.append(Communication[i] + Serial[i])
121 if (Parallelisation ==
'Hybrid'):
122 fig, ax = plt.subplots()
123 ax.plot(PROC_Z, Total, label =
'Model')
124 ax.set_xlabel(
'$ R_Z $')
125 ax.set_ylabel(
'Timestep (s)')
126 ax.set_title(
'Length of Single Timestep: Model')
128 fig.savefig(
"Output/Figures/Model_Hybrid.png")
130 if (Parallelisation ==
'Modal'):
131 fig, ax = plt.subplots()
132 ax.plot(PROC_Z, Total, label =
'Model')
133 ax.set_xlabel(
'$ R_Z $')
134 ax.set_ylabel(
'Timestep (s)')
135 ax.set_title(
'Length of Single Timestep: Model')
137 fig.savefig(
"Output/Figures/Model_Modal.png")
139 if (Parallelisation ==
'Elemental'):
140 fig, ax = plt.subplots()
141 ax.plot(PROC_XY, Total, label =
'Model')
142 ax.set_xlabel(
'$ R_{XY} $')
143 ax.set_ylabel(
'Timestep (s)')
144 ax.set_title(
'Length of Single Timestep: Model')
146 fig.savefig(
"Output/Figures/Model_Elemental.png")
148 return(PROC_Z, PROC_XY, Total)
def Find_Topologies(PROC_TOT, Num_Modes)
def Partition(Input_Filename, PROC_XY)