You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -637,3 +638,151 @@ On the above plot we can observe that the Scalability of the four Modes on the g
637
638
However, the outstanding performance of the OpenMP mode we think that is not going to continue to scale linearly by increasing the size of the dataset and the number of clusters. That is beacause there is a limit on how many cores and computational power a machine can have. At some point the computational power will saturate and the execution time of the OpenMP mode will rise exponentially.
638
639
639
640
**The only Modes that will continue Scale Linearly are the MPI and MPI+OpenMP nodes**. That is because you can always add more nodes to your cluster to increase performance. However that is a supposition since we couldn't actually run tests on much larger datasets and larger clusters of nodes on Amazon AWS because of the large costs and computational time needed for such feat. (for example to run the script on a 10M points dataset would have required approximately a week with the four on demand c3.xlarge nodes)
With the sections bellow we'll be comparing the results from the Flink and OpenMP-MPI projects in terms of processing time and scalability.
650
+
651
+
### 1) Relation between the number of centroids and ExecutionTime
652
+
653
+
Let's now again average the executions results on a 1M points Dataset and plot the relation between the number of centroids and the Execution times. The execution were made with a number of centroids between 1 and 10.
654
+
655
+
We'll compare the results for each mode of both projects:
656
+
-**Normal C**, **OpenMP**, **MPI**, **MPI + OpenMP** for the OpenMP/MPI Project;
plt.suptitle('Number of centroids - Execution time')
707
+
plt.xlabel('# of centroids')
708
+
plt.ylabel('Execution time [ms]')
709
+
plt.legend(loc='upper left')
710
+
plt.show()
711
+
```
712
+
713
+
714
+

715
+
716
+
717
+
### Resulting plot analisys - Processing Time
718
+
On the above plot we can observe that for Flink, the execution time does not change too much increasing the number of centroids. The overhead introduced by Flink is much bigger with respect to the increment of time needed to compute the position of more centroids and so we can not observe an increment of time when adding more centroids.
719
+
720
+
Things are different for the OpenMP/MP Project, where for all four modes we see an increase of execution time by increasing the number of centroids (altough not clearly visible for OpenMP Mode because of the scale).
721
+
722
+
That is because MPI is a protocol of a lower level compared to Flink, therefore is more efficient and has a smaller overhead. This too is the reason why the OpenMP/MPI Project's Modes have a smaller Execution Time compared to he Flink Project's Modes.
723
+
724
+
### 2) Relation between Dataset's number of points and ExecutionTime
On the above plot we can observe that the Scalability of both OpenMP/MPI's Project Modes and Flink's Project Modes are linear with respect to the linear increase of the dataset size. Moreover ***we can valuate the scalability of the performances of each Mode by the slope of it's curve on the plot***.
784
+
785
+
As we can see the Mode that performs best of all is the OpenMP Mode, but it cannot scale indefinitely as there is a limit on how many cores and computational power a node can have. And therefore we expect that at some point the computational power will saturate.
786
+
787
+
The only Modes that will continue Scale Linearly are the MPI and MPI+OpenMP nodes in the OpenMP/MPI Project and the Flink with parallelization in the Flink Project(altough Flink here is not executed on physically different nodes), because you can always add more nodes to your cluster to increase performance. Between these, ***the mode that scale better of all is the OpenMP+MPI Mode***, the reason being that it uses a low level management of a cluster of nodes(with MPI) and also exploits the paralelism within each node(with OpenMP).
0 commit comments