3 research outputs found

    Programming models to support data science workflows

    Get PDF
    Data Science workflows have become a must to progress in many scientific areas such as life, health, and earth sciences. In contrast to traditional HPC workflows, they are more heterogeneous; combining binary executions, MPI simulations, multi-threaded applications, custom analysis (possibly written in Java, Python, C/C++ or R), and real-time processing. Furthermore, in the past, field experts were capable of programming and running small simulations. However, nowadays, simulations requiring hundreds or thousands of cores are widely used and, to this point, efficiently programming them becomes a challenge even for computer sciences. Thus, programming languages and models make a considerable effort to ease the programmability while maintaining acceptable performance. This thesis contributes to the adaptation of High-Performance frameworks to support the needs and challenges of Data Science workflows by extending COMPSs, a mature, general-purpose, task-based, distributed programming model. First, we enhance our prototype to orchestrate different frameworks inside a single programming model so that non-expert users can build complex workflows where some steps require highly optimised state of the art frameworks. This extension includes the @binary, @OmpSs, @MPI, @COMPSs, and @MultiNode annotations for both Java and Python workflows. Second, we integrate container technologies to enable developers to easily port, distribute, and scale their applications to distributed computing platforms. This combination provides a straightforward methodology to parallelise applications from sequential codes along with efficient image management and application deployment that ease the packaging and distribution of applications. We distinguish between static, HPC, and dynamic container management and provide representative use cases for each scenario using Docker, Singularity, and Mesos. Third, we design, implement and integrate AutoParallel, a Python module to automatically find an appropriate task-based parallelisation of affine loop nests and execute them in parallel in a distributed computing infrastructure. It is based on sequential programming and requires one single annotation (the @parallel Python decorator) so that anyone with intermediate-level programming skills can scale up an application to hundreds of cores. Finally, we propose a way to extend task-based management systems to support continuous input and output data to enable the combination of task-based workflows and dataflows (Hybrid Workflows) using one single programming model. Hence, developers can build complex Data Science workflows with different approaches depending on the requirements without the effort of combining several frameworks at the same time. Also, to illustrate the capabilities of Hybrid Workflows, we have built a Distributed Stream Library that can be easily integrated with existing task-based frameworks to provide support for dataflows. The library provides a homogeneous, generic, and simple representation of object and file streams in both Java and Python; enabling complex workflows to handle any data type without dealing directly with the streaming back-end.Els fluxos de treball de Data Science s鈥檋an convertit en una necessitat per progressar en moltes 脿rees cient铆fiques com les ci猫ncies de la vida, la salut i la terra. A difer猫ncia dels fluxos de treball tradicionals per a la CAP, els fluxos de Data Science s贸n m茅s heterogenis; combinant l鈥檈xecuci贸 de binaris, simulacions MPI, aplicacions multiproc茅s, an脿lisi personalitzats (possiblement escrits en Java, Python, C / C ++ o R) i computacions en temps real. Mentre que en el passat els experts de cada camp eren capa莽os de programar i executar petites simulacions, avui dia, aquestes simulacions representen un repte fins i tot per als experts ja que requereixen centenars o milers de nuclis. Per aquesta ra贸, els llenguatges i models de programaci贸 actuals s鈥檈sforcen considerablement en incrementar la programabilitat mantenint un rendiment acceptable. Aquesta tesi contribueix a l鈥檃daptaci贸 de models de programaci贸 per a la CAP per afrontar les necessitats i reptes dels fluxos de Data Science estenent COMPSs, un model de programaci贸 distribu茂da madur, de prop貌sit general, i basat en tasques. En primer lloc, millorem el nostre prototip per orquestrar diferent programari per a que els usuaris no experts puguin crear fluxos complexos usant un 煤nic model on alguns passos requereixin tecnologies altament optimitzades. Aquesta extensi贸 inclou les anotacions de @binary, @OmpSs, @MPI, @COMPSs, i @MultiNode per a fluxos en Java i Python. En segon lloc, integrem tecnologies de contenidors per permetre als desenvolupadors portar, distribuir i escalar f脿cilment les seves aplicacions en plataformes distribu茂des. A m茅s d鈥檜na metodologia senzilla per a paral路lelitzar aplicacions a partir de codis seq眉encials, aquesta combinaci贸 proporciona una gesti贸 d鈥檌matges i una implementaci贸 d鈥檃plicacions eficients que faciliten l鈥檈mpaquetat i la distribuci贸 d鈥檃plicacions. Distingim entre la gesti贸 de contenidors est脿tica, CAP i din脿mica i proporcionem casos d鈥櫭簊 representatius per a cada escenari amb Docker, Singularity i Mesos. En tercer lloc, dissenyem, implementem i integrem AutoParallel, un m貌dul de Python per determinar autom脿ticament la paral路lelitzaci贸 basada en tasques de nius de bucles afins i executar-los en paral路lel en una infraestructura distribu茂da. AutoParallel est脿 basat en programaci贸 seq眉encial, requereix una sola anotaci贸 (el decorador @parallel) i permet a un usuari intermig escalar una aplicaci贸 a centenars de nuclis. Finalment, proposem una forma d鈥檈stendre els sistemes basats en tasques per admetre dades d鈥檈ntrada i sortida continus; permetent aix铆 la combinaci贸 de fluxos de treball i dades (Fluxos H铆brids) en un 煤nic model. Conseq眉entment, els desenvolupadors poden crear fluxos complexos seguint diferents patrons sense l鈥檈sfor莽 de combinar diversos models al mateix temps. A m茅s, per a il路lustrar les capacitats dels Fluxos H铆brids, hem creat una biblioteca (DistroStreamLib) que s鈥檌ntegra f脿cilment amb els models basats en tasques per suportar fluxos de dades. La biblioteca proporciona una representaci贸 homog猫nia, gen猫rica i simple de seq眉猫ncies cont铆nues d鈥檕bjectes i arxius en Java i Python; permetent gestionar qualsevol tipus de dades sense tractar directament amb el back-end de streaming.Los flujos de trabajo de Data Science se han convertido en una necesidad para progresar en muchas 谩reas cient铆ficas como las ciencias de la vida, la salud y la tierra. A diferencia de los flujos de trabajo tradicionales para la CAP, los flujos de Data Science son m谩s heterog茅neos; combinando la ejecuci贸n de binarios, simulaciones MPI, aplicaciones multiproceso, an谩lisis personalizados (posiblemente escritos en Java, Python, C/C++ o R) y computaciones en tiempo real. Mientras que en el pasado los expertos de cada campo eran capaces de programar y ejecutar peque帽as simulaciones, hoy en d铆a, estas simulaciones representan un desaf铆o incluso para los expertos ya que requieren cientos o miles de n煤cleos. Por esta raz贸n, los lenguajes y modelos de programaci贸n actuales se esfuerzan considerablemente en incrementar la programabilidad manteniendo un rendimiento aceptable. Esta tesis contribuye a la adaptaci贸n de modelos de programaci贸n para la CAP para afrontar las necesidades y desaf铆os de los flujos de Data Science extendiendo COMPSs, un modelo de programaci贸n distribuida maduro, de prop贸sito general, y basado en tareas. En primer lugar, mejoramos nuestro prototipo para orquestar diferentes software para que los usuarios no expertos puedan crear flujos complejos usando un 煤nico modelo donde algunos pasos requieran tecnolog铆as altamente optimizadas. Esta extensi贸n incluye las anotaciones de @binary, @OmpSs, @MPI, @COMPSs, y @MultiNode para flujos en Java y Python. En segundo lugar, integramos tecnolog铆as de contenedores para permitir a los desarrolladores portar, distribuir y escalar f谩cilmente sus aplicaciones en plataformas distribuidas. Adem谩s de una metodolog铆a sencilla para paralelizar aplicaciones a partir de c贸digos secuenciales, esta combinaci贸n proporciona una gesti贸n de im谩genes y una implementaci贸n de aplicaciones eficientes que facilitan el empaquetado y la distribuci贸n de aplicaciones. Distinguimos entre gesti贸n de contenedores est谩tica, CAP y din谩mica y proporcionamos casos de uso representativos para cada escenario con Docker, Singularity y Mesos. En tercer lugar, dise帽amos, implementamos e integramos AutoParallel, un m贸dulo de Python para determinar autom谩ticamente la paralelizaci贸n basada en tareas de nidos de bucles afines y ejecutarlos en paralelo en una infraestructura distribuida. AutoParallel est谩 basado en programaci贸n secuencial, requiere una sola anotaci贸n (el decorador @parallel) y permite a un usuario intermedio escalar una aplicaci贸n a cientos de n煤cleos. Finalmente, proponemos una forma de extender los sistemas basados en tareas para admitir datos de entrada y salida continuos; permitiendo as铆 la combinaci贸n de flujos de trabajo y datos (Flujos H铆bridos) en un 煤nico modelo. Consecuentemente, los desarrolladores pueden crear flujos complejos siguiendo diferentes patrones sin el esfuerzo de combinar varios modelos al mismo tiempo. Adem谩s, para ilustrar las capacidades de los Flujos H铆bridos, hemos creado una biblioteca (DistroStreamLib) que se integra f谩cilmente a los modelos basados en tareas para soportar flujos de datos. La biblioteca proporciona una representaci贸n homog茅nea, gen茅rica y simple de secuencias continuas de objetos y archivos en Java y Python; permitiendo manejar cualquier tipo de datos sin tratar directamente con el back-end de streaming.Postprint (published version

    Programming models to support data science workflows

    Get PDF
    Data Science workflows have become a must to progress in many scientific areas such as life, health, and earth sciences. In contrast to traditional HPC workflows, they are more heterogeneous; combining binary executions, MPI simulations, multi-threaded applications, custom analysis (possibly written in Java, Python, C/C++ or R), and real-time processing. Furthermore, in the past, field experts were capable of programming and running small simulations. However, nowadays, simulations requiring hundreds or thousands of cores are widely used and, to this point, efficiently programming them becomes a challenge even for computer sciences. Thus, programming languages and models make a considerable effort to ease the programmability while maintaining acceptable performance. This thesis contributes to the adaptation of High-Performance frameworks to support the needs and challenges of Data Science workflows by extending COMPSs, a mature, general-purpose, task-based, distributed programming model. First, we enhance our prototype to orchestrate different frameworks inside a single programming model so that non-expert users can build complex workflows where some steps require highly optimised state of the art frameworks. This extension includes the @binary, @OmpSs, @MPI, @COMPSs, and @MultiNode annotations for both Java and Python workflows. Second, we integrate container technologies to enable developers to easily port, distribute, and scale their applications to distributed computing platforms. This combination provides a straightforward methodology to parallelise applications from sequential codes along with efficient image management and application deployment that ease the packaging and distribution of applications. We distinguish between static, HPC, and dynamic container management and provide representative use cases for each scenario using Docker, Singularity, and Mesos. Third, we design, implement and integrate AutoParallel, a Python module to automatically find an appropriate task-based parallelisation of affine loop nests and execute them in parallel in a distributed computing infrastructure. It is based on sequential programming and requires one single annotation (the @parallel Python decorator) so that anyone with intermediate-level programming skills can scale up an application to hundreds of cores. Finally, we propose a way to extend task-based management systems to support continuous input and output data to enable the combination of task-based workflows and dataflows (Hybrid Workflows) using one single programming model. Hence, developers can build complex Data Science workflows with different approaches depending on the requirements without the effort of combining several frameworks at the same time. Also, to illustrate the capabilities of Hybrid Workflows, we have built a Distributed Stream Library that can be easily integrated with existing task-based frameworks to provide support for dataflows. The library provides a homogeneous, generic, and simple representation of object and file streams in both Java and Python; enabling complex workflows to handle any data type without dealing directly with the streaming back-end.Els fluxos de treball de Data Science s鈥檋an convertit en una necessitat per progressar en moltes 脿rees cient铆fiques com les ci猫ncies de la vida, la salut i la terra. A difer猫ncia dels fluxos de treball tradicionals per a la CAP, els fluxos de Data Science s贸n m茅s heterogenis; combinant l鈥檈xecuci贸 de binaris, simulacions MPI, aplicacions multiproc茅s, an脿lisi personalitzats (possiblement escrits en Java, Python, C / C ++ o R) i computacions en temps real. Mentre que en el passat els experts de cada camp eren capa莽os de programar i executar petites simulacions, avui dia, aquestes simulacions representen un repte fins i tot per als experts ja que requereixen centenars o milers de nuclis. Per aquesta ra贸, els llenguatges i models de programaci贸 actuals s鈥檈sforcen considerablement en incrementar la programabilitat mantenint un rendiment acceptable. Aquesta tesi contribueix a l鈥檃daptaci贸 de models de programaci贸 per a la CAP per afrontar les necessitats i reptes dels fluxos de Data Science estenent COMPSs, un model de programaci贸 distribu茂da madur, de prop貌sit general, i basat en tasques. En primer lloc, millorem el nostre prototip per orquestrar diferent programari per a que els usuaris no experts puguin crear fluxos complexos usant un 煤nic model on alguns passos requereixin tecnologies altament optimitzades. Aquesta extensi贸 inclou les anotacions de @binary, @OmpSs, @MPI, @COMPSs, i @MultiNode per a fluxos en Java i Python. En segon lloc, integrem tecnologies de contenidors per permetre als desenvolupadors portar, distribuir i escalar f脿cilment les seves aplicacions en plataformes distribu茂des. A m茅s d鈥檜na metodologia senzilla per a paral路lelitzar aplicacions a partir de codis seq眉encials, aquesta combinaci贸 proporciona una gesti贸 d鈥檌matges i una implementaci贸 d鈥檃plicacions eficients que faciliten l鈥檈mpaquetat i la distribuci贸 d鈥檃plicacions. Distingim entre la gesti贸 de contenidors est脿tica, CAP i din脿mica i proporcionem casos d鈥櫭簊 representatius per a cada escenari amb Docker, Singularity i Mesos. En tercer lloc, dissenyem, implementem i integrem AutoParallel, un m貌dul de Python per determinar autom脿ticament la paral路lelitzaci贸 basada en tasques de nius de bucles afins i executar-los en paral路lel en una infraestructura distribu茂da. AutoParallel est脿 basat en programaci贸 seq眉encial, requereix una sola anotaci贸 (el decorador @parallel) i permet a un usuari intermig escalar una aplicaci贸 a centenars de nuclis. Finalment, proposem una forma d鈥檈stendre els sistemes basats en tasques per admetre dades d鈥檈ntrada i sortida continus; permetent aix铆 la combinaci贸 de fluxos de treball i dades (Fluxos H铆brids) en un 煤nic model. Conseq眉entment, els desenvolupadors poden crear fluxos complexos seguint diferents patrons sense l鈥檈sfor莽 de combinar diversos models al mateix temps. A m茅s, per a il路lustrar les capacitats dels Fluxos H铆brids, hem creat una biblioteca (DistroStreamLib) que s鈥檌ntegra f脿cilment amb els models basats en tasques per suportar fluxos de dades. La biblioteca proporciona una representaci贸 homog猫nia, gen猫rica i simple de seq眉猫ncies cont铆nues d鈥檕bjectes i arxius en Java i Python; permetent gestionar qualsevol tipus de dades sense tractar directament amb el back-end de streaming.Los flujos de trabajo de Data Science se han convertido en una necesidad para progresar en muchas 谩reas cient铆ficas como las ciencias de la vida, la salud y la tierra. A diferencia de los flujos de trabajo tradicionales para la CAP, los flujos de Data Science son m谩s heterog茅neos; combinando la ejecuci贸n de binarios, simulaciones MPI, aplicaciones multiproceso, an谩lisis personalizados (posiblemente escritos en Java, Python, C/C++ o R) y computaciones en tiempo real. Mientras que en el pasado los expertos de cada campo eran capaces de programar y ejecutar peque帽as simulaciones, hoy en d铆a, estas simulaciones representan un desaf铆o incluso para los expertos ya que requieren cientos o miles de n煤cleos. Por esta raz贸n, los lenguajes y modelos de programaci贸n actuales se esfuerzan considerablemente en incrementar la programabilidad manteniendo un rendimiento aceptable. Esta tesis contribuye a la adaptaci贸n de modelos de programaci贸n para la CAP para afrontar las necesidades y desaf铆os de los flujos de Data Science extendiendo COMPSs, un modelo de programaci贸n distribuida maduro, de prop贸sito general, y basado en tareas. En primer lugar, mejoramos nuestro prototipo para orquestar diferentes software para que los usuarios no expertos puedan crear flujos complejos usando un 煤nico modelo donde algunos pasos requieran tecnolog铆as altamente optimizadas. Esta extensi贸n incluye las anotaciones de @binary, @OmpSs, @MPI, @COMPSs, y @MultiNode para flujos en Java y Python. En segundo lugar, integramos tecnolog铆as de contenedores para permitir a los desarrolladores portar, distribuir y escalar f谩cilmente sus aplicaciones en plataformas distribuidas. Adem谩s de una metodolog铆a sencilla para paralelizar aplicaciones a partir de c贸digos secuenciales, esta combinaci贸n proporciona una gesti贸n de im谩genes y una implementaci贸n de aplicaciones eficientes que facilitan el empaquetado y la distribuci贸n de aplicaciones. Distinguimos entre gesti贸n de contenedores est谩tica, CAP y din谩mica y proporcionamos casos de uso representativos para cada escenario con Docker, Singularity y Mesos. En tercer lugar, dise帽amos, implementamos e integramos AutoParallel, un m贸dulo de Python para determinar autom谩ticamente la paralelizaci贸n basada en tareas de nidos de bucles afines y ejecutarlos en paralelo en una infraestructura distribuida. AutoParallel est谩 basado en programaci贸n secuencial, requiere una sola anotaci贸n (el decorador @parallel) y permite a un usuario intermedio escalar una aplicaci贸n a cientos de n煤cleos. Finalmente, proponemos una forma de extender los sistemas basados en tareas para admitir datos de entrada y salida continuos; permitiendo as铆 la combinaci贸n de flujos de trabajo y datos (Flujos H铆bridos) en un 煤nico modelo. Consecuentemente, los desarrolladores pueden crear flujos complejos siguiendo diferentes patrones sin el esfuerzo de combinar varios modelos al mismo tiempo. Adem谩s, para ilustrar las capacidades de los Flujos H铆bridos, hemos creado una biblioteca (DistroStreamLib) que se integra f谩cilmente a los modelos basados en tareas para soportar flujos de datos. La biblioteca proporciona una representaci贸n homog茅nea, gen茅rica y simple de secuencias continuas de objetos y archivos en Java y Python; permitiendo manejar cualquier tipo de datos sin tratar directamente con el back-end de streaming

    Software for Exascale Computing - SPPEXA 2016-2019

    Get PDF
    This open access book summarizes the research done and results obtained in the second funding phase of the Priority Program 1648 "Software for Exascale Computing" (SPPEXA) of the German Research Foundation (DFG) presented at the SPPEXA Symposium in Dresden during October 21-23, 2019. In that respect, it both represents a continuation of Vol. 113 in Springer鈥檚 series Lecture Notes in Computational Science and Engineering, the corresponding report of SPPEXA鈥檚 first funding phase, and provides an overview of SPPEXA鈥檚 contributions towards exascale computing in today's sumpercomputer technology. The individual chapters address one or more of the research directions (1) computational algorithms, (2) system software, (3) application software, (4) data management and exploration, (5) programming, and (6) software tools. The book has an interdisciplinary appeal: scholars from computational sub-fields in computer science, mathematics, physics, or engineering will find it of particular interest
    corecore