3 resultados para Application level
em Universidad Politécnica de Madrid
Resumo:
This report addresses speculative parallelism (the assignment of spare processing resources to tasks which are not known to be strictly required for the successful completion of a computation) at the user and application level. At this level, the execution of a program is seen as a (dynamic) tree —a graph, in general. A solution for a problem is a traversal of this graph from the initial state to a node known to be the answer. Speculative parallelism then represents the assignment of resources to múltiple branches of this graph even if they are not positively known to be on the path to a solution. In highly non-deterministic programs the branching factor can be very high and a naive assignment will very soon use up all the resources. This report presents work assignment strategies other than the usual depth-first and breadth-first. Instead, best-first strategies are used. Since their definition is application-dependent, the application language contains primitives that allow the user (or application programmer) to a) indícate when intelligent OR-parallelism should be used; b) provide the functions that define "best," and c) indícate when to use them. An abstract architecture enables those primitives to perform the search in a "speculative" way, using several processors, synchronizing them, killing the siblings of the path leading to the answer, etc. The user is freed from worrying about these interactions. Several search strategies are proposed and their implementation issues are addressed. "Armageddon," a global pruning method, is introduced, together with both a software and a hardware implementation for it. The concepts exposed are applicable to áreas of Artificial Intelligence such as extensive expert systems, planning, game playing, and in general to large search problems. The proposed strategies, although showing promise, have not been evaluated by simulation or experimentation.
Resumo:
En el proyecto se lleva a cabo un estudio práctico sobre dos escenarios donde intervienen dispositivos relacionados con el Internet de las cosas. También se puede situar como una solución de comunicación M2M. Comunicación máquina a máquina implica un sistema central que es capaz de conectarse con otros sistemas en varios lugares. La conexión permite que el sistema central recoja o envíe datos a cada lugar remoto para su procesamiento. El primer escenario consta de la configuración y montaje de un microcontrolador conocido como Waspmote que se encarga de recoger variables atmosféricas gracias a un conjunto de sensores y enviar los datos a un router multiprotocolo Meshlium mediante tecnología Zigbee, un tipo de red orientada a redes de sensores. Este montaje tiene como fin instalar una estación meteorológica en el campus de la universidad y poder almacenar y administrar sus datos. La segunda parte dos dispositivos de hardware libre como son un Arduino con capacidad GPRS y una RaspberryPi conectada a la red cableada enviaran datos por ejemplo de temperatura y luminosidad a una red social de sensores conocida como Xively, gestionaremos nuestros dispositivos sobre esta plataforma gratuita, que nos permite dar de alta dispositivos, almacenar y representar los datos en tiempo real y consultarlos vía Web o mediante una aplicación móvil realizada para este caso por medio de funciones ofrecidas por Xively. He diseñado una aplicación Android que permite la consulta de datos y administración de sensores por un usuario, intenta abstraer al usuario de la complejidad técnica y acercar los objetos conectados, en este caso sensores. Se han detallado las configuraciones y el proceso de instalación de todos los dispositivos. Se explican conceptos para entender las tecnologías de comunicación, Zigbee y Http, este protocolo participara a nivel de aplicación realizando peticiones o enviando datos, administrando la capacidad y por tanto ahorro. ABSTRACT. The project takes a practical study on two scenarios which involved related to the Internet of Things devices. It can also be placed as a M2M communication solution. Machine to machine communication involves a central system that is able to connect with other systems in several places. The connection allows the central system to collect or send data to each remote location for processing. The first stage consists of the configuration and setup of a microcontroller known as Waspmote which is responsible to collect atmospheric variables by a set of sensors and send the data to a multiprotocol router Meshlium by Zigbee technology, a type of sensor networks oriented network. This assembly aims to set up a weather station on the campus of the university and to store and manage their data. The second part two devices free hardware like Arduino with GPRS capacity and RaspberryPi connected to the wired network send data, temperature and luminosity to a social network of sensors known as Xively, manage our devices on this free platform, which allows us to register devices, store and display data in real time and consult the web or through a mobile application on this case by means of functions offered by Xively. I have designed an Android application that allows data consultation and management of sensors by a user, the user tries to abstract the technical complexity and bring the connected objects, in this case sensors. Were detailed settings and the installation of all devices. Concepts are explained to understand communication technologies, Zigbee and Http, this protocol participate performing application-level requests or sending data, managing capacity and therefore savings.
Resumo:
Resource analysis aims at inferring the cost of executing programs for any possible input, in terms of a given resource, such as the traditional execution steps, time ormemory, and, more recently energy consumption or user defined resources (e.g., number of bits sent over a socket, number of database accesses, number of calls to particular procedures, etc.). This is performed statically, i.e., without actually running the programs. Resource usage information is useful for a variety of optimization and verification applications, as well as for guiding software design. For example, programmers can use such information to choose different algorithmic solutions to a problem; program transformation systems can use cost information to choose between alternative transformations; parallelizing compilers can use cost estimates for granularity control, which tries to balance the overheads of task creation and manipulation against the benefits of parallelization. In this thesis we have significatively improved an existing prototype implementation for resource usage analysis based on abstract interpretation, addressing a number of relevant challenges and overcoming many limitations it presented. The goal of that prototype was to show the viability of casting the resource analysis as an abstract domain, and howit could overcome important limitations of the state-of-the-art resource usage analysis tools. For this purpose, it was implemented as an abstract domain in the abstract interpretation framework of the CiaoPP system, PLAI.We have improved both the design and implementation of the prototype, for eventually allowing an evolution of the tool to the industrial application level. The abstract operations of such tool heavily depend on the setting up and finding closed-form solutions of recurrence relations representing the resource usage behavior of program components and the whole program as well. While there exist many tools, such as Computer Algebra Systems (CAS) and libraries able to find closed-form solutions for some types of recurrences, none of them alone is able to handle all the types of recurrences arising during program analysis. In addition, there are some types of recurrences that cannot be solved by any existing tool. This clearly constitutes a bottleneck for this kind of resource usage analysis. Thus, one of the major challenges we have addressed in this thesis is the design and development of a novel modular framework for solving recurrence relations, able to combine and take advantage of the results of existing solvers. Additionally, we have developed and integrated into our novel solver a technique for finding upper-bound closed-form solutions of a special class of recurrence relations that arise during the analysis of programs with accumulating parameters. Finally, we have integrated the improved resource analysis into the CiaoPP general framework for resource usage verification, and specialized the framework for verifying energy consumption specifications of embedded imperative programs in a real application, showing the usefulness and practicality of the resulting tool.---ABSTRACT---El Análisis de recursos tiene como objetivo inferir el coste de la ejecución de programas para cualquier entrada posible, en términos de algún recurso determinado, como pasos de ejecución, tiempo o memoria, y, más recientemente, el consumo de energía o recursos definidos por el usuario (por ejemplo, número de bits enviados a través de un socket, el número de accesos a una base de datos, cantidad de llamadas a determinados procedimientos, etc.). Ello se realiza estáticamente, es decir, sin necesidad de ejecutar los programas. La información sobre el uso de recursos resulta muy útil para una gran variedad de aplicaciones de optimización y verificación de programas, así como para asistir en el diseño de los mismos. Por ejemplo, los programadores pueden utilizar dicha información para elegir diferentes soluciones algorítmicas a un problema; los sistemas de transformación de programas pueden utilizar la información de coste para elegir entre transformaciones alternativas; los compiladores paralelizantes pueden utilizar las estimaciones de coste para realizar control de granularidad, el cual trata de equilibrar el coste debido a la creación y gestión de tareas, con los beneficios de la paralelización. En esta tesis hemos mejorado de manera significativa la implementación de un prototipo existente para el análisis del uso de recursos basado en interpretación abstracta, abordando diversos desafíos relevantes y superando numerosas limitaciones que éste presentaba. El objetivo de dicho prototipo era mostrar la viabilidad de definir el análisis de recursos como un dominio abstracto, y cómo se podían superar las limitaciones de otras herramientas similares que constituyen el estado del arte. Para ello, se implementó como un dominio abstracto en el marco de interpretación abstracta presente en el sistema CiaoPP, PLAI. Hemos mejorado tanto el diseño como la implementación del mencionado prototipo para posibilitar su evolución hacia una herramienta utilizable en el ámbito industrial. Las operaciones abstractas de dicha herramienta dependen en gran medida de la generación, y posterior búsqueda de soluciones en forma cerrada, de relaciones recurrentes, las cuales modelizan el comportamiento, respecto al consumo de recursos, de los componentes del programa y del programa completo. Si bien existen actualmente muchas herramientas capaces de encontrar soluciones en forma cerrada para ciertos tipos de recurrencias, tales como Sistemas de Computación Algebraicos (CAS) y librerías de programación, ninguna de dichas herramientas es capaz de tratar, por sí sola, todos los tipos de recurrencias que surgen durante el análisis de recursos. Existen incluso recurrencias que no las puede resolver ninguna herramienta actual. Esto constituye claramente un cuello de botella para este tipo de análisis del uso de recursos. Por lo tanto, uno de los principales desafíos que hemos abordado en esta tesis es el diseño y desarrollo de un novedoso marco modular para la resolución de relaciones recurrentes, combinando y aprovechando los resultados de resolutores existentes. Además de ello, hemos desarrollado e integrado en nuestro nuevo resolutor una técnica para la obtención de cotas superiores en forma cerrada de una clase característica de relaciones recurrentes que surgen durante el análisis de programas lógicos con parámetros de acumulación. Finalmente, hemos integrado el nuevo análisis de recursos con el marco general para verificación de recursos de CiaoPP, y hemos instanciado dicho marco para la verificación de especificaciones sobre el consumo de energía de programas imperativas embarcados, mostrando la viabilidad y utilidad de la herramienta resultante en una aplicación real.