[en] Hecuba is an interface and a set of tools written in Python and C++, developed by the Data-driven Scientific Computing team of the Barcelona Supercomputing Center. The objective is to provide programmers with an easy and efficient interaction with non-relational technologies, in this case, the distributed database Cassandra. Hecuba can also be integrated with PyCOMPSs, a framework that facilitates the development and execution of applications in parallel in distributed infrastructures. This integration benefits from the distribution of the data that Hecuba offers through Cassandra, for its subsequent distributed computing with PyCOMPSs. To facilitate this distributed processing, another utility of Hecuba and the most important for this project is the data partitioner. This divides an object (which can be associated, for example, with a table in the database) into smaller ones that contain subsets of the data. The term granularity in this project refers to the size of the created subobjects. After dividing the data, as many tasks as partitions will be created, which will be executed in a distributed way thanks to PyCOMPSs. When distributing an application, it is essential to choose the granularity of the tasks carefully. First of all, if the granularity is very small, the task creation and synchronization overhead can be very large. Second, if the granularity is too large, it may not be parallel enough. This is prior knowledge that programmers should not need with Hecuba. This project aims to implement a dynamic granularity manager integrated with Hecuba and PyCOMPSs, with which the programmers do not have to intervene in the distribution of the data, and even so, making the applications as efficient as possible.

[es] Hecuba es una interfaz y un conjunto de herramientas escrito en Python y C++, desarrollada por el equipo Data-driven Scientific Computing del Barcelona Supercomputing Center. El objetivo es facilitar a los programadores una interacción fácil y eficiente con tecnologías no relacionales, en este caso la base de datos distribuida Cassandra. Hecuba también se puede integrar con PyCOMPSs, un framework que facilita el desarrollo y ejecución de aplicaciones en paralelo en infraestructuras distribuidas. Esta integración se beneficia de la distribución de los datos que ofrece Hecuba mediante Cassandra, para su posterior computación distribuida con PyCOMPSs. Para facilitar este procesamiento distribuido, otro uso de Hecuba y el más importante para este proyecto es el particionador de datos. Este divide un objeto (que puede asociarse, por ejemplo, a una tabla de la base de datos) en otros más pequeños que contienen subconjuntos de los datos. El término granularidad en este proyecto se refiere al tamaño de los subobjetos creados. Después de dividir los datos se crearán tantas tareas como particiones, que se ejecutarán de forma distribuida gracias a PyCOMPSs. Cuando se distribuye una aplicación es esencial elegir la granularidad de las tareas cuidadosamente. En primer lugar, si la granularidad es muy pequeña, el overhead de creación de tareas y de sincronización puede ser muy grande. En segundo lugar, si la granularidad es demasiado grande, es posible que no se paralelice lo suficiente. Estos son conocimientos previos que con Hecuba los programadores no deberían necesitar. Este proyecto aspira a implementar un gestor de la granularidad dinámico integrado con Hecuba y PyCOMPSs, con el que los programadores no tengan que intervenir en la distribución de los datos, y aun así consiguiendo que las aplicaciones sean lo más eficientes posible.