EasyFJP: Providing Hybrid Parallelism as a Concern for Divide and Conquer Java Applications

Because of the increasing availability of multi-core machines, clus- ters, Grids, and combinations of these there is now plenty of computational power,but today's programmers are not fully prepared to exploit parallelism. In particular, Java has helped in handling the heterogeneity of such envi...

Descripción completa

Detalles Bibliográficos
Autores: Mateos Diaz, Cristian Maximiliano, Zunino Suarez, Alejandro Octavio, Hirsch Jofré, Matías Eberardo
Tipo de recurso: artículo
Estado:Versión publicada
Fecha de publicación:2013
País:Argentina
Institución:Consejo Nacional de Investigaciones Científicas y Técnicas
Repositorio:CONICET Digital (CONICET)
Idioma:inglés
OAI Identifier:oai:ri.conicet.gov.ar:11336/1119
Acceso en línea:http://hdl.handle.net/11336/1119
Access Level:acceso abierto
Palabra clave:PARALLEL COMPUTING
IMPLICIT PARALLELISM
EXPLICIT PARALLELISM
PARALLELISM AS A CONCERN (PAAC)
JAVA
FORK-JOIN SYNCHRONIZATION PATTERNS
POLICIES
https://purl.org/becyt/ford/1.2
https://purl.org/becyt/ford/1
Descripción
Sumario:Because of the increasing availability of multi-core machines, clus- ters, Grids, and combinations of these there is now plenty of computational power,but today's programmers are not fully prepared to exploit parallelism. In particular, Java has helped in handling the heterogeneity of such environments. However, there is a lot of ground to cover regarding facilities to easily and elegantly parallelizing applications. One path to this end seems to be the synthesis of semi- automatic parallelism and Parallelism as a Concern (PaaC). The former allows users to be mostly unaware of parallel exploitation problems and at the same time manually optimize parallelized applications whenever necessary, while the latter allows applications to be separated from parallel-related code. In this paper, we present EasyFJP, an approach that implicitly exploits parallelism in Java applications based on the concept of fork-join synchronization pattern, a simple but effective abstraction for creating and coordinating parallel tasks. In addition, EasyFJP lets users to explicitly optimize applications through policies, or user-provided rules to dynamically regulate task granularity. Finally, EasyFJP relies on PaaC by means of source code generation techniques to wire applications and parallel-specific code together. Experiments with real-world applications on an emulated Grid and a cluster evidence that EasyFJP delivers competitive performance compared to state-of-the-art Java parallel programming tools.