# Parallel Improvements of the Jaya Optimization Algorithm
## 4 Results and Discussion  
In this section, we analyze the parallel Java algorithms, presented in Section 3. We analyze the parallel behavior and verify that the optimization performance of the Jaya algorithm slightly improves or remains unchanged with respect to the sequential algorithm. In order to perform the tests, we developed the reference algorithm, presented in [3], in C language to implement the parallel algorithms, and used the GCC v.4.8.5 compiler [34]. We choose MPI v2.2 [35] for the high-level parallel approach and OpenMP API v3.1 [36] for the shared memory parallel algorithm. The parallel platform used was composed of 10 HP Proiant SL390 G7 nodes, where each node was equipped with two Intel Xeon X5660 processors. Each X5660 included six processing cores at 2.8 GHz, and QDR Infiniband was used as the communication network. We will now analyze the parallel behavior of the parallel algorithm described in Algorithm 4, i.e., the shared memory parallel algorithm. Figure 2 shows results setting the \"Iterations\" parameter equal to 30,000 and using populations of 512 members. We observe that parallel efficiency being equal to, respectively, 100% and 94% when 2 and 11 processes are used, regardless of the value of \"Runs.\" We can conclude that, based on results presented in Figure 2, and applying the Rosenbrock function, for a population size equal to 512, the scalability is almost ideal. Figure 2: Shared memory parallel Java algorithm. Iterations = 30,000, Population = 512. (**a**) Speed-up with respect to the sequential execution. (**b**) Efficiency of the parallel algorithm. Figure 3 shows parallel behavior related to population size and number of iterations. Regarding both this figure and the rest of the experiments performed, the number of iterations does not affect parallel performance, while population size has been observed to be a critical parameter for obtaining good parallel performance. Results presented in Figure 3 indicate that, in order to obtain good parallel performance, population size must be greater than 64 members. In particular, in Figure 3, for population sizes greater than 128 members, the efficiency is always higher than 90%. Figure 4 shows parallel behavior related to the number of independent executions, i.e., the number of different solutions obtained. As expected, the number of independent executions does not affect the parallel behavior of the shared memory parallel algorithm. We can conclude that the shared memory parallel algorithm obtains good parallel results with a minimum population size, and the rest of the parameters does not affect, or does so very slightly, the parallel performance. The hybrid parallel algorithm developed combines the shared memory parallel algorithm analyzed and a high-level parallel algorithm based on the distribution, among nodes (multiprocessors), of the computing load associated with the independent executions that will be carried out. The latter, described in Algorithm 5, has been developed with MPI, the former with OpenMP. However, in order to efficiently use all processing units of the parallel platform we mapped, where possible, more than  
Figure 4: Efficiency of shared memory parallel Java algorithm. OpenMP processes = 6. Iterations = 30,000. Figure 3: Efficiency of shared memory parallel Java algorithm. OpenMP processes = 6. Runs = 30.  
one MPI process was employed into one computing node. Figure 5 shows the efficiency and speed-up for the hybrid parallel Java algorithm, executed in the heterogeneous memory platform previously described. It can be seen that the proposed hybrid parallel algorithm offers good scalability. It should be noted that we obtained a speed-up up to \(54.6x\) using \(60\) processors of the heterogeneous memory platform. It is worth noting that the hybrid parallel algorithm exploits two levels of parallelism, and at both levels it includes load balancing mechanisms. We must bear in mind that the execution of the Jaya algorithm is not a deterministic one, since Equation (1) depends on a random function.