8 research outputs found

    Automatische Codegenerierung f眉r Massiv Parallele Applikationen in der Numerischen Str枚mungsmechanik

    Get PDF
    Solving partial differential equations (PDEs) is a fundamental challenge in many application domains in industry and academia alike. With increasingly large problems, efficient and highly scalable implementations become more and more crucial. Today, facing this challenge is more difficult than ever due to the increasingly heterogeneous hardware landscape. One promising approach is developing domain鈥恠pecific languages (DSLs) for a set of applications. Using code generation techniques then allows targeting a range of hardware platforms while concurrently applying domain鈥恠pecific optimizations in an automated fashion. The present work aims to further the state of the art in this field. As domain, we choose PDE solvers and, in particular, those from the group of geometric multigrid methods. To avoid having a focus too broad, we restrict ourselves to methods working on structured and patch鈥恠tructured grids. We face the challenge of handling a domain as complex as ours, while providing different abstractions for diverse user groups, by splitting our external DSL ExaSlang into multiple layers, each specifying different aspects of the final application. Layer 1 is designed to resemble LaTeX and allows inputting continuous equations and functions. Their discretization is expressed on layer 2. It is complemented by algorithmic components which can be implemented in a Matlab鈥恖ike syntax on layer 3. All information provided to this point is summarized on layer 4, enriched with particulars about data structures and the employed parallelization. Additionally, we support automated progression between the different layers. All ExaSlang input is processed by our jointly developed Scala code generation framework to ultimately emit C++ code. We particularly focus on how to generate applications parallelized with, e.g., MPI and OpenMP that are able to run on workstations and large鈥恠cale cluster alike. We showcase the applicability of our approach by implementing simple test problems, like Poisson鈥檚 equation, as well as relevant applications from the field of computational fluid dynamics (CFD). In particular, we implement scalable solvers for the Stokes, Navier鈥怱tokes and shallow water equations (SWE) discretized using finite differences (FD) and finite volumes (FV). For the case of Navier鈥怱tokes, we also extend our implementation towards non鈥恥niform grids, thereby enabling static mesh refinement, and advanced effects such as the simulated fluid being non鈥怤ewtonian and non鈥恑sothermal

    System Designs for Diabetic Foot Ulcer Image Assessment

    Get PDF
    For individuals with type 2 diabetes, diabetic foot ulcers represent a significant health issue and the wound care cost is quite high. Currently, clinicians and nurses mainly base their wound assessment on visual examination of wound size and the status of the wound tissue. This method is potentially inaccurate for wound assessment and requires extra clinical workload. In view of the prevalence of smartphones with high resolution digital camera, assessing wound healing by analyzing of real-time images using the significant computational power of today芒鈧劉s mobile devices is an attractive approach for managing foot ulcers. Alternatively, the smartphone may be used just for image capture and wireless transfer to a PC or laptop for image processing. To achieve accurate foot ulcer image assessment, we have developed and tested a novel automatic wound image analysis system which accomplishes the following conditions: 1) design of an easy-to-use image capture system which makes the image capture process comfortable for the patient and provides well-controlled image capture conditions; 2) synthesis of efficient and accurate algorithms for real-time wound boundary determination to measure the wound area size; 3) development of a quantitative method to assess the wound healing status based on a foot ulcer image sequence for a given patient and 4) design of a wound image assessment and management system that can be used both in the patient芒鈧劉s home and clinical environment in a tele-medicine fashion. In our work, the wound image is captured by the camera on the smartphone while the patient芒鈧劉s foot is held in place by an image capture box, which is specially design to aid patients in photographing ulcers occurring on the sole of their feet. The experimental results prove that our image capture system guarantees consistent illumination and a fixed distance between the foot and camera. These properties greatly reduce the complexity of the subsequent wound recognition and assessment. The most significant contribution of our work is the development of five different wound boundary determination approaches based on different computer vision algorithms. The first approach employs the level set algorithm to determine the wound boundary directly based on a manually set initial curve. The second and third approaches are the mean-shift segmentation based methods augmented by foot outline detection and analysis. These two approaches have been shown to be efficient to implement (especially on smartphones), prior-knowledge independent and able to provide reasonably accurate wound segmentation results given a set of well-tuned parameters. However, this method suffers from the lack of self-adaptivity due to the fact that it is not based on machine learning. Consequently, a two-stage Support Vector Machine (SVM) binary classifier based wound recognition approach is developed and implemented. This approach consists of three major steps 1) unsupervised super-pixel segmentation, 2) feature descriptor extraction for each super-pixel and 3) supervised classifier based wound boundary determination. The experimental results show that this approach provides promising performance (sensitivity: 73.3%, specificity: 95.6%) when dealing with foot ulcer images captured with our image capture box. In the third approach, we further relax the image capture constraints and generalize the application of our wound recognition system by applying the conditional random field (CRF) based model to solve the wound boundary determination. The key modules in this approach are the TextonBoost based potential learning at different scales and efficient CRF model inference to find the optimal labeling. Finally, the standard K-means clustering algorithm is applied to the determined wound area for color based wound tissue classification. To train the models used in the last two approaches, as well as to evaluate all three methods, we have collected about 100 wound images at the wound clinic in UMass Medical School by tracking 15 patients for a 2-year period, following an IRB approved protocol. The wound recognition results were compared with the ground truth generated by combining clinical labeling from three experienced clinicians. Specificity and sensitivity based measures indicate that the CRF based approach is the most reliable method despite its implementation complexity and computational demands. In addition, sample images of Moulage wound simulations are also used to increase the evaluation flexibility. The advantages and disadvantages of three approaches are described. Another important contribution of this work has been development of a healing score based mechanism for quantitative wound healing status assessment. The wound size and color composition measurements were converted to a score number ranging from 0-10, which indicates the healing trend based on comparisons of subsequent images to an initial foot ulcer image. By comparing the result of the healing score algorithm to the healing scores determined by experienced clinicians, we assess the clinical validity of our healing score algorithm. The level of agreement of our healing score with the three assessing clinicians was quantified by using the Kripendorff芒鈧劉s Alpha Coefficient (KAC). Finally, a collaborative wound image management system between the PC and smartphone was designed and successfully applied in the wound clinic for patients芒鈧劉 wound tracking purpose. This system is proven to be applicable in clinical environment and capable of providing interactive foot ulcer care in a telemedicine fashion

    Consideraciones acerca de la viabilidad de un sensor plen贸ptico en dispositivos de consumo

    Get PDF
    Doctorado en Ingenier铆a IndustrialPassive distance measurement of the objects in an image gives place to interesting applications that have the potential to revolutionize the field of photography. In this thesis a prototype of plenoptic camera for mobile devices was created and studied. This technique has two main disadvantages: the need for modifying the camera module and the loss of resolution. Because of this, the prototype was discarded in order to utilize another technique: depth from focus. In this technique the capture method consists in taking several images while varying the focus distance. The set of images is called focal-stack. Different focus operators are studied, which give a measure of defocus per pixel and plane of the focal-stack. The curvelet based focus operator is chosen as the most adequate. It is computationally more intensive than other operators but it is capable of decomposing natural images using few coefficients. In order to make viable its usage in mobile devices a new curvelet transform based on the discrete Radon transform is built. The discrete Radon transform has logarithmic complexity, does not use the Fourier transform and uses only integer sums. Lastly, different versions of the Radon transform are analyzed with the goal of achieving an even faster transform. These transforms are implemented to be executed on mobile devices. Additionally, an application of the Radon transform is presented. It consists in the detection of bar-codes that have any orientation in an image.La medida pasiva de distancia a los objetos en una imagen da lugar a interesantes aplicaciones con capacidad para revolucionar la fotograf铆a. En esta tesis se cre贸 y estudi贸 un prototipo de c谩mara plen贸ptica para dispositivos m贸viles. Esta t茅cnica presenta dos inconvenientes: la necesidad de modificar el m贸dulo de c谩mara y la p茅rdida de resoluci贸n. Por ello, el prototipo fue descartado para utilizar otra t茅cnica: la profundidad a partir del desenfoque. En esta t茅cnica el m茅todo de captura consiste en tomar varias imagenes variando la distancia de enfoque. El conjunto de im谩genes se denomina focal-stack. Se estudian distintos operadores de desenfoque, que dan una medida de desenfoque por pixel y por plano del focal-stack. Siendo elegido como 贸ptimo el operador de desenfoque curvelet, que es computacionalmente m谩s intensivo que otros operadores pero es capaz de descomponer imagenes naturales utilizando muy pocos coeficientes. Para hacer posible su uso en dispositivos m贸viles se construye una nueva transformada curvelet basada en la transformada discreta de Radon. La transformada discreta de Radon tiene complejidad linear铆tmica, no utiliza la transformada de Fourier y usa s贸lo sumas de enteros. Por 煤ltimo, se analizan distintas versiones de la transformada de Radon con el objetivo de conseguir una transformada a煤n m谩s r谩pida y se implementan para ser ejecutadas en dispositivos m贸viles. Adem谩s se presenta una aplicaci贸n de la transformada de Radon consistente en la detecci贸n de c贸digos de barras con cualquier orientaci贸n en una imagen

    Optimizaci贸n del rendimiento y la eficiencia energ茅tica en sistemas masivamente paralelos

    Get PDF
    RESUMEN Los sistemas heterog茅neos son cada vez m谩s relevantes, debido a sus capacidades de rendimiento y eficiencia energ茅tica, estando presentes en todo tipo de plataformas de c贸mputo, desde dispositivos embebidos y servidores, hasta nodos HPC de grandes centros de datos. Su complejidad hace que sean habitualmente usados bajo el paradigma de tareas y el modelo de programaci贸n host-device. Esto penaliza fuertemente el aprovechamiento de los aceleradores y el consumo energ茅tico del sistema, adem谩s de dificultar la adaptaci贸n de las aplicaciones. La co-ejecuci贸n permite que todos los dispositivos cooperen para computar el mismo problema, consumiendo menos tiempo y energ铆a. No obstante, los programadores deben encargarse de toda la gesti贸n de los dispositivos, la distribuci贸n de la carga y la portabilidad del c贸digo entre sistemas, complicando notablemente su programaci贸n. Esta tesis ofrece contribuciones para mejorar el rendimiento y la eficiencia energ茅tica en estos sistemas masivamente paralelos. Se realizan propuestas que abordan objetivos generalmente contrapuestos: se mejora la usabilidad y la programabilidad, a la vez que se garantiza una mayor abstracci贸n y extensibilidad del sistema, y al mismo tiempo se aumenta el rendimiento, la escalabilidad y la eficiencia energ茅tica. Para ello, se proponen dos motores de ejecuci贸n con enfoques completamente distintos. EngineCL, centrado en OpenCL y con una API de alto nivel, favorece la m谩xima compatibilidad entre todo tipo de dispositivos y proporciona un sistema modular extensible. Su versatilidad permite adaptarlo a entornos para los que no fue concebido, como aplicaciones con ejecuciones restringidas por tiempo o simuladores HPC de din谩mica molecular, como el utilizado en un centro de investigaci贸n internacional. Considerando las tendencias industriales y enfatizando la aplicabilidad profesional, CoexecutorRuntime proporciona un sistema flexible centrado en C++/SYCL que dota de soporte a la co-ejecuci贸n a la tecnolog铆a oneAPI. Este runtime acerca a los programadores al dominio del problema, posibilitando la explotaci贸n de estrategias din谩micas adaptativas que mejoran la eficiencia en todo tipo de aplicaciones.ABSTRACT Heterogeneous systems are becoming increasingly relevant, due to their performance and energy efficiency capabilities, being present in all types of computing platforms, from embedded devices and servers to HPC nodes in large data centers. Their complexity implies that they are usually used under the task paradigm and the host-device programming model. This strongly penalizes accelerator utilization and system energy consumption, as well as making it difficult to adapt applications. Co-execution allows all devices to simultaneously compute the same problem, cooperating to consume less time and energy. However, programmers must handle all device management, workload distribution and code portability between systems, significantly complicating their programming. This thesis offers contributions to improve performance and energy efficiency in these massively parallel systems. The proposals address the following generally conflicting objectives: usability and programmability are improved, while ensuring enhanced system abstraction and extensibility, and at the same time performance, scalability and energy efficiency are increased. To achieve this, two runtime systems with completely different approaches are proposed. EngineCL, focused on OpenCL and with a high-level API, provides an extensible modular system and favors maximum compatibility between all types of devices. Its versatility allows it to be adapted to environments for which it was not originally designed, including applications with time-constrained executions or molecular dynamics HPC simulators, such as the one used in an international research center. Considering industrial trends and emphasizing professional applicability, CoexecutorRuntime provides a flexible C++/SYCL-based system that provides co-execution support for oneAPI technology. This runtime brings programmers closer to the problem domain, enabling the exploitation of dynamic adaptive strategies that improve efficiency in all types of applications.Funding: This PhD has been supported by the Spanish Ministry of Education (FPU16/03299 grant), the Spanish Science and Technology Commission under contracts TIN2016-76635-C2-2-R and PID2019-105660RB-C22. This work has also been partially supported by the Mont-Blanc 3: European Scalable and Power Efficient HPC Platform based on Low-Power Embedded Technology project (G.A. No. 671697) from the European Union鈥檚 Horizon 2020 Research and Innovation Programme (H2020 Programme). Some activities have also been funded by the Spanish Science and Technology Commission under contract TIN2016-81840-REDT (CAPAP-H6 network). The Integration II: Hybrid programming models of Chapter 4 has been partially performed under the Project HPC-EUROPA3 (INFRAIA-2016-1-730897), with the support of the EC Research Innovation Action under the H2020 Programme. In particular, the author gratefully acknowledges the support of the SPMT Department of the High Performance Computing Center Stuttgart (HLRS)

    Programming models for mobile environments

    Get PDF
    Premi extraordinari doctorat UPC curs 2017-2018. 脌mbit d鈥橢nginyeria de les TICFor the last decade, mobile devices have grown in popularity and became the best-selling computing devices. Despite their high capabilities for user interactions and network connectivity, the computing power of mobile devices is low and the lifetime of the application running on them limited by the battery. Mobile Cloud Computing (MCC) is a technology that tackles the limitations of mobile devices by bringing together their mobility with the vast computing power of the Cloud. Programming applications for Mobile Cloud Computing (MCC) environments is not as straightforward as coding monolithic applications. Developers have to deal with the issues related to parallel programming for distributed infrastructures while considering the battery lifetime and the variability of the network produced by the high mobility of this kind of devices. As with any other distributed environment, developers turn to programming models to improve their productivity by avoiding the complexity of manually dealing with these issues and delegate on the corresponding model all the management of these concerns. This thesis contributes to the current state of the art with an adaptation of the COMPSs programming model for MCC environments. COMPSs allows application programmers to code their applications in a sequential, infrastructure-agnostic fashion without calls to any COMPSs-specific API using the native language for the target platform as if they were to run on the mobile device. At execution time, a runtime system automatically partitions the application into tasks and orchestrates their execution on top of the available resources. This thesis contributes with an extension to the programming model to allow task polymorphism and let the runtime exploit computational resources other than the CPU of the resources. Besides, the runtime architecture has been redesigned with the characteristics of MCC in mind, and it runs as a common service which all the applications running simultaneously on the mobile device contact for submitting the execution of their tasks. For collaboratively exploiting both, local and remote resources, the runtime clusters the computational devices into Computing Platforms according to the mechanisms required to provide the processing elements with the necessary input values, launch the task execution avoiding resource oversubscription and fetching the results back from them. The CPU Platform run tasks on the cores of the CPU. The GPU Platform leverages on OpenCL to run tasks as kernels on GPUs or other accelerators embedded in the mobile device. Finally, the Cloud Platform offloads the execution of tasks onto remote resources. To holistically decide whether is worth running a task on embedded or on remote resources, the runtime considers the the costs -- time, energy and money -- of running the computation on each of the platforms and picks the best. Each platform manages internally its resources and orchestrates the execution of tasks on them using different scheduling policies. Using local and remote computing devices forces the runtime to share data values among the nodes of the infrastructure. This data is potentially privacy-sensitive, and the runtime exposes it to possible attackers when transferring it through the network. To protect the application user from data leaks, the runtime has to provide communications with secrecy, integrity and authenticity. In the extreme case of a network breakdown that isolates the mobile device from the remote nodes, the runtime has to ensure that the execution continues to provide the application user with the expected result even if the connection never re-establishes. The mobile device has to respond using only the resources embedded in it, what could incur in the re-execution of computations already ran on the remote resources. Remote workers have to continue with the execution so that, in case of reconnection, both parts synchronize its progress to reduce the impact of the disruption.Els 煤ltims anys, els dispositius m貌bils han guanyat en popularitat i s'han convertit en els dispositius m茅s venuts. Tot i la connectivitat i la bona interacci贸 amb l'usuari que ofereixen, la seva capacitat de c脿lcul is baixa i limitada per la vida de la bateria. El Mobile Cloud Computing (MCC) 茅s una tecnologia que soluciona les limitacions d'aquests dispositius ajuntant la seva mobilitat amb la gran capacitat de c貌mput del Cloud. Programar aplicacions per entorns MCC no 茅s tan directe com fer aplicacions monol铆tiques. Els desenvolupadors han de tractar amb els problemes relacionats amb la programaci贸 paral路lela mentre tenen en compte la duraci贸 de la bateria i la variabilitat de la xarxa degut a la mobilitat inherent a aquest tipus de dispositius. Com per qualsevol altre entorn distribu茂t, els desenvolupadors recorren a models de programaci贸 que millorin la seva productivitat i els evitin tractar manualment amb aquests problemes delegant la seva gesti贸 en el model. Aquesta tesis contribueix a l'estat de l'art actual amb una adaptaci贸 del model de programaci贸 COMPSs als entorns MCC. COMPSs permet als desenvolupadors programar les aplicacions de forma agn貌stica a la infraestructura i seq眉encial sense necessitat d'invocar cap API espec铆fica utilitzant el llenguatge natiu de la platforma com si l'aplicaci贸 s'execut茅s directament en el m貌bil. En temps d'execuci贸, una eina (runtime) autom脿ticament divideix l'aplicaci贸 en tasques i n'orquestra la seva execuci贸 sobre els recursos disponibles. Aquesta tesis est猫n el model de programaci贸 per tal de permetre polimorfisme a nivell de tasca i deixar al runtime explotar els recursos computacionals dels que disposa el m貌bil a part de la CPU. A m茅s a m茅s, l'arquitectura del runtime s'ha redissenyat tenint en compte les caracter铆stiques pr貌pies del MCC, i aquest s'executa com un servei com煤 al que totes les aplicacions del m貌bil contacten per tal d'executar les seves tasques. Per explotar col路laborativament tots els recursos, locals i remots, el runtime agrupa els recursos en Computing Platforms en funci贸 dels mecanismes necessaris per proveir el recurs amb les dades d'entrada necess脿ries, llan莽ar l'execuci贸 i recuperar-ne els resultats. La CPU Platform executa tasques en els nuclis de la CPU. La GPU Platform utilitza OpenCL per executar tasques en forma de kernels a la GPU o altres acceleradors integrats en el m貌bil. Finalment, la Cloud Platform desc脿rrega l'execuci贸 de tasques en recursos remots. Per decidir holisticament si 茅s millor executar una tasca en un recurs local o en un remot, el runtime considera els costs (temporal, energ猫tic econ貌mic) d'executar la tasca en cada una de les plataformes i n'escull la millor. Cada plataforma gestiona internament els seus recursos i orquestra l'execuci贸 de les tasques en ells seguint diferents pol铆tiques de planificaci贸. L'煤s de recursos locals i remots for莽a la compartici贸 de dades entre els nodes de la infraestructura. Aquestes dades s贸n potencialment sensibles i de car脿cter privat i el runtime les exposa a possibles atacs que les transfereix per la xarxa. Per tal de protegir l'usuari de possibles fuites de dades, el runtime ha de dotar les comunicacions amb confidencialitat, integritat i autenticitat. En el cas extrem en que un error de xarxa a茂lli el dispositiu m貌bil dels nodes remots, el runtime ha d'assegurar que l'execuci贸 continua i que eventualment l'usuari rebr脿 el resultat esperat fins i tot en cas de que la connexi贸 no 茅s restableixi mai. El m貌bil ha de ser capa莽 d'executar l'aplicaci贸 utilitzant 煤nicament les dades i recursos disponibles en aquell moment, la qual cosa pot for莽ar la re-execuci贸 d'algunes tasques ja calculades en els recursos remots. Els recursos remots han de continuar l'execuci贸 per tal que en cas de reconnexi贸, ambdues parts sincronitzin el seu progr茅s i es minimitzi l'impacte de la desconnexi贸.Award-winningPostprint (published version

    Programming models for mobile environments

    Get PDF
    For the last decade, mobile devices have grown in popularity and became the best-selling computing devices. Despite their high capabilities for user interactions and network connectivity, the computing power of mobile devices is low and the lifetime of the application running on them limited by the battery. Mobile Cloud Computing (MCC) is a technology that tackles the limitations of mobile devices by bringing together their mobility with the vast computing power of the Cloud. Programming applications for Mobile Cloud Computing (MCC) environments is not as straightforward as coding monolithic applications. Developers have to deal with the issues related to parallel programming for distributed infrastructures while considering the battery lifetime and the variability of the network produced by the high mobility of this kind of devices. As with any other distributed environment, developers turn to programming models to improve their productivity by avoiding the complexity of manually dealing with these issues and delegate on the corresponding model all the management of these concerns. This thesis contributes to the current state of the art with an adaptation of the COMPSs programming model for MCC environments. COMPSs allows application programmers to code their applications in a sequential, infrastructure-agnostic fashion without calls to any COMPSs-specific API using the native language for the target platform as if they were to run on the mobile device. At execution time, a runtime system automatically partitions the application into tasks and orchestrates their execution on top of the available resources. This thesis contributes with an extension to the programming model to allow task polymorphism and let the runtime exploit computational resources other than the CPU of the resources. Besides, the runtime architecture has been redesigned with the characteristics of MCC in mind, and it runs as a common service which all the applications running simultaneously on the mobile device contact for submitting the execution of their tasks. For collaboratively exploiting both, local and remote resources, the runtime clusters the computational devices into Computing Platforms according to the mechanisms required to provide the processing elements with the necessary input values, launch the task execution avoiding resource oversubscription and fetching the results back from them. The CPU Platform run tasks on the cores of the CPU. The GPU Platform leverages on OpenCL to run tasks as kernels on GPUs or other accelerators embedded in the mobile device. Finally, the Cloud Platform offloads the execution of tasks onto remote resources. To holistically decide whether is worth running a task on embedded or on remote resources, the runtime considers the the costs -- time, energy and money -- of running the computation on each of the platforms and picks the best. Each platform manages internally its resources and orchestrates the execution of tasks on them using different scheduling policies. Using local and remote computing devices forces the runtime to share data values among the nodes of the infrastructure. This data is potentially privacy-sensitive, and the runtime exposes it to possible attackers when transferring it through the network. To protect the application user from data leaks, the runtime has to provide communications with secrecy, integrity and authenticity. In the extreme case of a network breakdown that isolates the mobile device from the remote nodes, the runtime has to ensure that the execution continues to provide the application user with the expected result even if the connection never re-establishes. The mobile device has to respond using only the resources embedded in it, what could incur in the re-execution of computations already ran on the remote resources. Remote workers have to continue with the execution so that, in case of reconnection, both parts synchronize its progress to reduce the impact of the disruption.Els 煤ltims anys, els dispositius m貌bils han guanyat en popularitat i s'han convertit en els dispositius m茅s venuts. Tot i la connectivitat i la bona interacci贸 amb l'usuari que ofereixen, la seva capacitat de c脿lcul is baixa i limitada per la vida de la bateria. El Mobile Cloud Computing (MCC) 茅s una tecnologia que soluciona les limitacions d'aquests dispositius ajuntant la seva mobilitat amb la gran capacitat de c貌mput del Cloud. Programar aplicacions per entorns MCC no 茅s tan directe com fer aplicacions monol铆tiques. Els desenvolupadors han de tractar amb els problemes relacionats amb la programaci贸 paral路lela mentre tenen en compte la duraci贸 de la bateria i la variabilitat de la xarxa degut a la mobilitat inherent a aquest tipus de dispositius. Com per qualsevol altre entorn distribu茂t, els desenvolupadors recorren a models de programaci贸 que millorin la seva productivitat i els evitin tractar manualment amb aquests problemes delegant la seva gesti贸 en el model. Aquesta tesis contribueix a l'estat de l'art actual amb una adaptaci贸 del model de programaci贸 COMPSs als entorns MCC. COMPSs permet als desenvolupadors programar les aplicacions de forma agn貌stica a la infraestructura i seq眉encial sense necessitat d'invocar cap API espec铆fica utilitzant el llenguatge natiu de la platforma com si l'aplicaci贸 s'execut茅s directament en el m貌bil. En temps d'execuci贸, una eina (runtime) autom脿ticament divideix l'aplicaci贸 en tasques i n'orquestra la seva execuci贸 sobre els recursos disponibles. Aquesta tesis est猫n el model de programaci贸 per tal de permetre polimorfisme a nivell de tasca i deixar al runtime explotar els recursos computacionals dels que disposa el m貌bil a part de la CPU. A m茅s a m茅s, l'arquitectura del runtime s'ha redissenyat tenint en compte les caracter铆stiques pr貌pies del MCC, i aquest s'executa com un servei com煤 al que totes les aplicacions del m貌bil contacten per tal d'executar les seves tasques. Per explotar col路laborativament tots els recursos, locals i remots, el runtime agrupa els recursos en Computing Platforms en funci贸 dels mecanismes necessaris per proveir el recurs amb les dades d'entrada necess脿ries, llan莽ar l'execuci贸 i recuperar-ne els resultats. La CPU Platform executa tasques en els nuclis de la CPU. La GPU Platform utilitza OpenCL per executar tasques en forma de kernels a la GPU o altres acceleradors integrats en el m貌bil. Finalment, la Cloud Platform desc脿rrega l'execuci贸 de tasques en recursos remots. Per decidir holisticament si 茅s millor executar una tasca en un recurs local o en un remot, el runtime considera els costs (temporal, energ猫tic econ貌mic) d'executar la tasca en cada una de les plataformes i n'escull la millor. Cada plataforma gestiona internament els seus recursos i orquestra l'execuci贸 de les tasques en ells seguint diferents pol铆tiques de planificaci贸. L'煤s de recursos locals i remots for莽a la compartici贸 de dades entre els nodes de la infraestructura. Aquestes dades s贸n potencialment sensibles i de car脿cter privat i el runtime les exposa a possibles atacs que les transfereix per la xarxa. Per tal de protegir l'usuari de possibles fuites de dades, el runtime ha de dotar les comunicacions amb confidencialitat, integritat i autenticitat. En el cas extrem en que un error de xarxa a茂lli el dispositiu m貌bil dels nodes remots, el runtime ha d'assegurar que l'execuci贸 continua i que eventualment l'usuari rebr脿 el resultat esperat fins i tot en cas de que la connexi贸 no 茅s restableixi mai. El m貌bil ha de ser capa莽 d'executar l'aplicaci贸 utilitzant 煤nicament les dades i recursos disponibles en aquell moment, la qual cosa pot for莽ar la re-execuci贸 d'algunes tasques ja calculades en els recursos remots. Els recursos remots han de continuar l'execuci贸 per tal que en cas de reconnexi贸, ambdues parts sincronitzin el seu progr茅s i es minimitzi l'impacte de la desconnexi贸
    corecore