% Aleem, Muhammad % Encoding: utf-8 @Article{Prodan2019JavaSymphony, author = {Aleem, Muhammad and Prodan, Radu Aurel and Arshad Islam, Muhammad and Azhar Iqbal, Muhammad}, journal = {International Journal of Ad Hoc and Ubiquitous Computing}, title = {{On the Parallel Programmability of JavaSymphony for Multi-cores and Clusters}}, year = {2019}, month = {März}, number = {4}, pages = {247--264}, volume = {30}, abstract = {This paper explains the programming aspects of a promising Java-based programming and execution framework called JavaSymphony. JavaSymphony provides unified high-level programming constructs for applications related to shared, distributed, hybrid memory parallel computers, and co-processors accelerators. JavaSymphony applications can be executed on a variety of multi-/many-core conventional and data-parallel architectures. JavaSymphony is based on the concept of dynamic virtual architectures, which allows programmers to define a hierarchical structure of the underlying computing resources and to control load-balancing and task-locality. In addition to GPU support, JavaSymphony provides a multi-core aware scheduling mechanism capable of mapping parallel applications on large multi-core machines and heterogeneous clusters. Several real applications and benchmarks (on modern multi-core computers, heterogeneous clusters, and machines consisting of a combination of different multi-core CPU and GPU devices) have been used to evaluate the performance. The results demonstrate that the JavaSymphony outperforms the Java implementations, as well as other modern alternative solutions.}, doi = {10.1504/IJAHUC.2019.098861}, url = {https://www.inderscience.com/info/inarticle.php?artid=98861} } @Article{Prodan2019IndersciencePublishers, author = {Aleem, Muhammad and Prodan, Radu Aurel and Arshad Islam, Muhammad and Azhar Iqbal, Muhammad}, journal = {International Journal of Ad Hoc and Ubiquitous Computing}, title = {{On the paralell programmability of JavaSymphony for multi-cores and clusters}}, year = {2019}, month = {März}, number = {4}, pages = {247--264}, volume = {30}, abstract = {This paper explains the programming aspects of a promising Java-based programming and execution framework called JavaSymphony. JavaSymphony provides unified high-level programming constructs for applications related to shared, distributed, hybrid memory parallel computers, and co-processors accelerators. JavaSymphony applications can be executed on multi-/many-core conventional and data-parallel architectures. JavaSymphony is based on the concept of dynamic virtual architectures, which allows programmers to define a hierarchical structure of the underlying computing resources and to control load-balancing and task-locality. In addition to GPU support, JavaSymphony provides a multi-core aware scheduling mechanism capable of mapping parallel applications on large multi-core machines and heterogeneous clusters. Several real applications and benchmarks (on modern multi-core computers, heterogeneous clusters, and machines consisting of a combination of different multi-core CPU and GPU devices) have been used to evaluate the performance. The results demonstrate that the JavaSymphony outperforms the Java implementations, as well as other modern alternative solutions.}, doi = {10.1504/IJAHUC.2019.098861}, url = {https://www.inderscience.com/info/inarticle.php?artid=98861} } @Article{Khalid2018, author = {Khalid, Yasir Noman and Aleem, Muhammad and Prodan, Radu and Muhammad, Azhar Iqbal and Islam, Muhammad Arshad}, title = {E-OSched: a load balancing scheduler for heterogeneous multicores}, journal = {Journal of Supercomputing}, year = {2018}, month = {Mai}, abstract = {The contemporary multicore era has adhered to the heterogeneous computing devices as one of the proficient platforms to execute compute-intensive applications. These heterogeneous devices are based on CPUs and GPUs. OpenCL is deemed as one of the industry standards to program heterogeneous machines. The conventional application scheduling mechanisms allocate most of the applications to GPUs while leaving CPU device underutilized. This underutilization of slower devices (such as CPU) often originates the sub-optimal performance of data-parallel applications in terms of load balance, execution time, and throughput. Moreover, multiple scheduled applications on a heterogeneous system further aggravate the problem of performance inefficiency. This paper is an attempt to evade the aforementioned deficiencies via initiating a novel scheduling strategy named OSched. An enhancement to the OSched named E-OSched is also part of this study. The OSched performs the resource-aware assignment of jobs to both CPUs and GPUs while ensuring a balanced load. The load balancing is achieved via contemplation on computational requirements of jobs and computing potential of a device. The load-balanced execution is beneficiary in terms of lower execution time, higher throughput, and improved utilization. The E-OSched reduces the magnitude of the main memory contention during concurrent job execution phase. The mathematical model of the proposed algorithms is evaluated by comparison of simulation results with different state-of-the-art scheduling heuristics. The results revealed that the proposed E-OSched has performed significantly well than the state-of-the-art scheduling heuristics by obtaining up to 8.09% improved execution time and up to 7.07% better throughput.}, doi = {10.1007/s11227-018-2435-1}, url = {https://link.springer.com/article/10.1007%2Fs11227-018-2435-1#copyrightInformation} } @Article{Aleem2018, author = {Aleem, Muhammad and Prodan, Radu}, title = {{On the Parallel Programmability of JavaSymphony for Multi-cores and Clusters}}, journal = {International Journal of Ad Hoc and Ubiquitous Computing}, year = {2018}, abstract = {This paper explains the programming aspects of a promising Java-based programming and execution framework called JavaSymphony. JavaSymphony provides unified high-level programming constructs for applications related to shared, distributed, hybrid memory parallel computers, and co-processors accelerators. JavaSymphony applications can be executed on a variety of multi-/many-core conventional and data-parallel architectures. JavaSymphony is based on the concept of dynamic virtual architectures, which allows programmers to define a hierarchical structure of the underlying computing resources and to control load-balancing and task-locality. In addition to GPU support, JavaSymphony provides a multi-core aware scheduling mechanism capable of mapping parallel applications on large multi-core machines and heterogeneous clusters. Several real applications and benchmarks (on modern multi-core computers, heterogeneous clusters, and machines consisting of a combination of different multi-core CPU and GPU devices) have been used to evaluate the performance. The results demonstrate that the JavaSymphony outperforms the Java implementations, as well as other modern alternative solutions.}, doi = {10.1504/IJAHUC.2017.10006700}, url = {http://www.inderscience.com/info/ingeneral/forthcoming.php?jcode=IJAHUC} }