41 resultados para programación paralela

em Universidad Politécnica de Madrid


Relevância:

60.00% 60.00%

Publicador:

Resumo:

El desarrollo de algoritmos ensambladores de genes y la utilización de estos está viviendo un aumento muy espectacular en los últimos años. Debido a las mejoras ofrecidas en los dispositivos hardware de los numerosos supercomputadores que existen hoy en día se pueden realizar experimentos científicos de una manera más asequible que hace unos años. Este proyecto servirá como introducción en el complejo mundo de algoritmos científicos, más concretamente en algoritmos ensambladores de genomas. Veremos de primera mano cómo utilizar estas nuevas tecnologías, con ejemplos sencillos, pero con un desarrollo lo bastante importante para darnos una idea del funcionamiento de todas las fases de experimentación que engloban los algoritmos ensambladores y la utilización de la programación paralela en supercomputadores. Concretamente en este proyecto se van a analizar exhaustivamente una serie de algoritmos ensambladores que serán probados en uno de los supercomputadores más potentes de España, el Magerit 2. En estas pruebas vamos a proceder al ensamblado de genomas de tres tipos de organismos como bacterias (Staphylococcus Aureus, y Rhodobacter Sphaeroides) y una prueba gran escala con el genoma del Cromosoma 14 del Homo Sapiens Sapiens (Ser humano). Después procederemos a la comparación de todos los resultados obtenidos para poder comprobar que algoritmos realizan mejor su trabajo y ajustar dicha decisión a las necesidades que tenemos actualmente para buscar un algoritmo eficaz.

Relevância:

60.00% 60.00%

Publicador:

Resumo:

En el presente documento se hablará acerca del desarrollo de un proyecto para la mejora de un programa de análisis de señales; con ese fin, se hará uso de técnicas de optimización del software y de tecnologías de aceleración, mediante el aprovechamiento del paralelismo del programa. Además se hará un análisis de acerca del uso de dos tecnologías basadas en diferentes paradigmas de programación paralela; una mediante múltiples hilos con memoria compartida y la otra mediante el uso de GPUs como dispositivos de coprocesamiento. This paper will talk about the development of a Project to improve a program that does signals analysis; to that end, it will make use of software optimization techniques and acceleration technologies by exploiting parallelism in the program. In Addition will be done an analysis on the use of two technologies based on two different paradigms; one using multiple threads with shared memory and the other using GPU as co-processing devices.

Relevância:

60.00% 60.00%

Publicador:

Resumo:

A raíz de la aparición de los procesadores dotados de varios “cores”, la programación paralela, un concepto que, por otra parte no era nada nuevo y se conocía desde hace décadas, sufrió un nuevo impulso, pues se creía que se podía superar el techo tecnológico que había estado limitando el rendimiento de esta programación durante años. Este impulso se ha ido manteniendo hasta la actualidad, movido por la necesidad de sistemas cada vez más potentes y gracias al abaratamiento de los costes de fabricación. Esta tendencia ha motivado la aparición de nuevo software y lenguajes con componentes orientados precisamente al campo de la programación paralela. Este es el caso del lenguaje Go, desarrollado por Google y lanzado en 2009. Este lenguaje se basa en modelos de concurrencia que lo hacen muy adecuados para abordar desarrollos de naturaleza paralela. Sin embargo, la programación paralela es un campo complejo y heterogéneo, y los programadores son reticentes a utilizar herramientas nuevas, en beneficio de aquellas que ya conocen y les son familiares. Un buen ejemplo son aquellas implementaciones de lenguajes conocidos, pero orientadas a programación paralela, y que siguen las directrices de un estándar ampliamente reconocido y aceptado. Este es el caso del estándar OpenMP, un Interfaz de Programación de Aplicaciones (API) flexible, portable y escalable, orientado a la programación paralela multiproceso en arquitecturas multi-core o multinucleo. Dicho estándar posee actualmente implementaciones en los lenguajes C, C++ y Fortran. Este proyecto nace como un intento de aunar ambos conceptos: un lenguaje emergente con interesantes posibilidades en el campo de la programación paralela, y un estándar reputado y ampliamente extendido, con el que los programadores se encuentran familiarizados. El objetivo principal es el desarrollo de un conjunto de librerías del sistema (que engloben directivas de compilación o pragmas, librerías de ejecución y variables de entorno), soportadas por las características y los modelos de concurrencia propios de Go; y que añadan funcionalidades propias del estándar OpenMP. La idea es añadir funcionalidades que permitan programar en lenguaje Go utilizando la sintaxis que OpenMP proporciona para otros lenguajes, como Fortan y C/C++ (concretamente, similar a esta última), y, de esta forma, dotar al usuario de Go de herramientas para programar estructuras de procesamiento paralelo de forma sencilla y transparente, de la misma manera que lo haría utilizando C/C++.---ABSTRACT---As a result of the appearance of processors equipped with multiple "cores ", parallel programming, a concept which, moreover, it was not new and it was known for decades, suffered a new impulse, because it was believed they could overcome the technological ceiling had been limiting the performance of this program for years. This impulse has been maintained until today, driven by the need for ever more powerful systems and thanks to the decrease in manufacturing costs. This trend has led to the emergence of new software and languages with components guided specifically to the field of parallel programming. This is the case of Go language, developed by Google and released in 2009. This language is based on concurrency models that make it well suited to tackle developments in parallel nature. However, parallel programming is a complex and heterogeneous field, and developers are reluctant to use new tools to benefit those who already know and are familiar. A good example are those implementations from well-known languages, but parallel programming oriented, and witch follow the guidelines of a standard widely recognized and accepted. This is the case of the OpenMP standard, an application programming interface (API), flexible, portable and scalable, parallel programming oriented, and designed for multi-core architectures. This standard currently has implementations in C, C ++ and Fortran. This project was born as an attempt to combine two concepts: an emerging language, with interesting possibilities in the field of parallel programming, and a reputed and widespread standard, with which programmers are familiar with. The main objective is to develop a set of system libraries (which includes compiler directives or pragmas, runtime libraries and environment variables), supported by the characteristics and concurrency patterns of Go; and that add custom features from the OpenMP standard. The idea is to add features that allow programming in Go language using the syntax OpenMP provides for other languages, like Fortran and C / C ++ (specifically, similar to the latter ), and, in this way, provide Go users with tools for programming parallel structures easily and, in the same way they would using C / C ++.

Relevância:

20.00% 20.00%

Publicador:

Resumo:

En este trabajo se presenta una formulación que permite aplicar los métodos de programación lineal, y en particular el método simplex, al análisis de la estática de rotura de cualesquiera estructuras de barras o elementos lineales, que son considerados como bloques rígidos en las regiones no plastificadas. La formulación permite integrar criterios robustos de seguridad y permite abordar, entre otros, los problemas clásicos de rotura de arcos de fábrica, siendo capaz de determinar las alteraciones pésimas a las configuraciones de carga consideradas, basándose en dichos criterios. Como ejemplo se muestra cómo la formulación es capaz de detectar de forma automática que se producirán daños en arcos de fábrica si se procede a su descarga

Relevância:

20.00% 20.00%

Publicador:

Resumo:

Debido a las limitaciones de las técnicas de optimización convencionales, en el siguiente trabajo se presenta una metaheurística basada en un algoritmo genético (AG), para resolver problemas de programación de tipo flow shop, con el objetivo de minimizar el tiempo de finalización de todos los trabajos, más conocido como makespan. Este problema, considerado de difícil solución, es típico de la optimización combinatoria y se presenta en talleres con tecnología de maquinado, donde existen máquinas-herramientas convencionales y se fabrican diferentes tipos de piezas que tienen en común una misma ruta tecnológica (orden del proceso). La solución propuesta se probó con problemas clásicos publicados por otros autores, obteniéndose resultados satisfactorios en cuanto a la calidad de las soluciones encontradas y el tiempo de cómputo empleado.

Relevância:

20.00% 20.00%

Publicador:

Resumo:

En este trabajo se utiliza la metaheurística nombrada algoritmo genético, para dos variantes típicas de problemas de planificación presentes en un taller de maquinado de piezas: las variantes flujo general y flujo regular, y se ha seleccionado la minimización del tiempo de finalización de todos los trabajos o camino máximo, como objetivo a optimizar en un plan de trabajo. Este problema es considerado de difícil solución y es típico de la optimización combinatoria. Los resultados demuestran la calidad de las soluciones encontradas en correspondencia con el tiempo de cómputo empleado, al ser comparados con problemas clásicos reportados por otros autores. La representación propuesta de cada cromosoma genera el universo completo de soluciones factibles, donde es posible encontrar valores óptimos globales de solución y cumple con las restricciones del problema.

Relevância:

20.00% 20.00%

Publicador:

Resumo:

En este se estudia diseños y e implementaciones de paradigmas visuales para observar la ejecución de programas lógicos con restricciones, enfocados hacia la depuración, optimización y enseñanza. Nos centraremos en la representación de datos en ejecuciones CLP, donde perseguimos la representación de variables con restricciones y de las restricciones en sí mismas. Se han implementado dos herramientas, VIFID y TRIFID, que utilizan dichas representaciones y que se usan para mostrar la utilidad de las visualizaciones desarrolladas.

Relevância:

20.00% 20.00%

Publicador:

Resumo:

Dentro de los paradigmas de programación en el mundo de la informática tenemos la "Programación Lógica'', cuyo principal exponente es el lenguaje Prolog. Los programas Prolog se componen de un conjunto de predicados, cada uno de ellos definido en base a reglas que aportan un elevado nivel de abstracción y declaratividad al programador. Sin embargo, las formulación con reglas implica, frecuentemente, que un predicado se recompute varias veces para la misma consulta y además, Prolog utiliza un orden fijo para evaluar reglas y objetivos (evaluación SLD) que puede entrar en "bucles infinitos'' cuando ejecuta reglas recursivas declarativamente correctas. Estas limitaciones son atacadas de raiz por la tabulación, que se basa en "recordar'' en una tabla las llamadas realizadas y sus soluciones. Así, en caso de repetir una llamada tendríamos ya disponibles sus soluciones y evitamos la recomputación. También evita "bucles infinitos'' ya que las llamadas que los generan son suspendidas, quedando a la espera de que se computen soluciones para las mismas. La implementación de la tabulación no es sencilla. En particular, necesita de tres operaciones que no pueden ser ejecutadas en tiempo constante simultáneamente. Dichas operaciones son: suspensión de llamadas, relanzamiento de llamadas y {acceso a variables. La primera parte de la tesis compara tres implementaciones de tabulación sobre Ciao, cada una de las cuales penaliza una de estas operaciones. Por tanto, cada solución tiene sus ventajas y sus inconvenientes y se comportan mejor o peor dependiendo del programa ejecutado. La segunda parte de la tesis mejora la funcionalidad de la tabulación para combinarla con restricciones y también para evitar computaciones innecesarias. La programación con restricciones permite la resolución de ecuaciones como medio de programar, mecanismo altamente declarativo. Hemos desarrollado un framework para combinar la tabulación con las restricciones, priorizando objetivos como la flexibilidad, la eficiencia y la generalidad de nuestra solución, obteniendo una sinergia entre ambas técnicas que puede ser aplicada en numerosas aplicaciones. Por otra parte, un aspecto fundamental de la tabulación hace referencia al momento en que se retornan las soluciones de una llamada tabulada. Local evaluation devuelve soluciones cuando todas las soluciones de la llamada tabulada han sido computadas. Por contra, batched evaluation devuelve las soluciones una a una conforme van siendo computadas, por lo que se adapta mejor a problemas donde no nos interesa encontrar todas las soluciones. Sin embargo, su consumo de memoria es exponencialmente peor que el de local evaluation. La tesis presenta swapping evaluation, que devuelve soluciones tan pronto como son computadas pero con un consumo de memoria similar a la de local evaluation. Además, se implementan operadores de poda, once/1, para descartar la búsqueda de soluciones alternativas cuando encontramos la solución deseada. Por último, Prolog adopta con relativa facilidad soluciones para paralelismo gracias a su flexibilidad en el control de la ejecución y a que sus asignaciones son lógicas. La tercera parte de la tesis extiende el paralelismo conjuntivo de Ciao para trabajar con programas no deterministas, lo que presenta dos problemas principales: los objetivos atrapados y la recomputación de objetivos. Las soluciones clásicas para los objetivos atrapados rompían muchos invariantes de la ejecución Prolog, siendo soluciones difíciles de mantener y de extender, que la experiencia nos dice que han caído en desuso. Nosotros proponemos una solución modular (basada en la implementación de swapping evaluation), localizada y que no rompe los invariantes de la ejecución Prolog, pero que mantiene un alto rendimiento de la ejecución paralela. En referencia a la recomputación de objetivos paralelos en presencia de no determinismo hemos adaptado ténicas derivadas de la tabulación para memorizar computaciones de estos objetivos y evitar su recomputación.

Relevância:

20.00% 20.00%

Publicador:

Resumo:

Los problemas de programación de tareas son muy importantes en el mundo actual. Se puede decir que se presentan en todos los fundamentos de la industria moderna, de ahí la importancia de que estos sean óptimos, de forma que se puedan ahorrar recursos que estén asociados al problema. La programación adecuada de trabajos en procesos de manufactura, constituye un importante problema que se plantea dentro de la producción en muchas empresas. El orden en que estos son procesados, no resulta indiferente, sino que determinará algún parámetro de interés, cuyos valores convendrá optimizar en la medida de lo posible. Así podrá verse afectado el coste total de ejecución de los trabajos, el tiempo necesario para concluirlos o el stock de productos en curso que será generado. Esto conduce de forma directa al problema de determinar cuál será el orden más adecuado para llevar a cabo los trabajos con vista a optimizar algunos de los anteriores parámetros u otros similares. Debido a las limitaciones de las técnicas de optimización convencionales, en la presente tesis se presenta una metaheurística basada en un Algoritmo Genético Simple (Simple Genetic Algorithm, SGA), para resolver problemas de programación de tipo flujo general (Job Shop Scheduling, JSS) y flujo regular (Flow Shop Scheduling, FSS), que están presentes en un taller con tecnología de mecanizado con el objetivo de optimizar varias medidas de desempeño en un plan de trabajo. La aportación principal de esta tesis, es un modelo matemático para medir el consumo de energía, como criterio para la optimización, de las máquinas que intervienen en la ejecución de un plan de trabajo. Se propone además, un método para mejorar el rendimiento en la búsqueda de las soluciones encontradas, por parte del Algoritmo Genético Simple, basado en el aprovechamiento del tiempo ocioso. ABSTRACT The scheduling problems are very important in today's world. It can be said to be present in all the basics of modern industry, hence the importance that these are optimal, so that they can save resources that are associated with the problem. The appropriate programming jobs in manufacturing processes is an important problem that arises in production in many companies. The order in which they are processed, it is immaterial, but shall determine a parameter of interest, whose values agree optimize the possible. This may be affected the total cost of execution of work, the time needed to complete them or the stock of work in progress that will be generated. This leads directly to the problem of determining what the most appropriate order to carry out the work in order to maximize some of the above parameters or other similar. Due to the limitations of conventional optimization techniques, in this work present a metaheuristic based on a Simple Genetic Algorithm (Simple Genetic Algorithm, SGA) to solve programming problems overall flow rate (Job Shop Scheduling, JSS) and regular flow (Flow Shop Scheduling, FSS), which are present in a workshop with machining technology in order to optimize various performance measures in a plan. The main contribution of this thesis is a mathematical model to measure the energy consumption as a criterion for the optimization of the machines involved in the implementation of a work plan. It also proposes a method to improve performance in finding the solutions, by the simple genetic algorithm, based on the use of idle time.

Relevância:

20.00% 20.00%

Publicador:

Resumo:

Material elaborado por D. F. Sáez Vacas profesor de la asignatura de Ordenadores Electrónicos

Relevância:

20.00% 20.00%

Publicador:

Resumo:

En años recientes, se han realizado algunos esfuerzos para equipar a robots submarinos con impulsores vectorizados. Este sistema de propulsión permite el uso de una menor cantidad de impulsores, esto a su vez tiene consecuencias favorables en el volumen y costo del robot a medida que una mayor potencia de propulsión es requerida. El propósito de esta tesis es realizar un estudio sobre el modelado, control y diseño de robots submarinos de estructura paralela con impulsores vectorizados. De esta manera exponer los aspectos más importantes relativos a estos puntos, y proponer soluciones a los problemas que plantea la arquitectura de estos robots. En esta tesis se tomo como objeto de estudio el robot Remo 2, cuya estructura paralela representa una gran parte del volumen del robot y esto hace que su análisis sea el más complejo que se pueda tener en los robots de esta categoría. El diseño de este robot es un concepto radicalmente diferente al de los robots submarinos convencionales. Sus características son prometedoras, pero para poder sacar provecho de estas potencialidades es necesario un entendimiento de la dinámica del robot. En este trabajo se presenta el desarrollo y análisis de modelos analíticos, y el desarrollo de herramientas de simulación para este robot. El propósito de estas herramientas es identificar las oportunidades y restricciones impuestas por la estructura y la dinámica del vehículo. Se presenta el planteamiento (y solución) de los problemas cinemático y dinámico inverso para un robot submarino de estructura paralela. Por otro lado, se demostró por primera vez el funcionamiento del concepto del robot submarino a través de una herramienta de simulación. Haciendo uso de esta herramienta se exploro el desempeño del robot bajo diversos esquemas de control, se encontró que el robot es capaz de ejecutar con éxito diversas maniobras empleando controladores clásicos. Se presento un controlador basado en el modelo del robot y se demostró sus ventajas. Posteriormente se presento un apartado cuyo propósito es exponer aspectos importantes sobre el diseño de este tipo de robots, sobre todo aquellos que influyen en su desempeño cinetostático. Se plantea el problema del diseño óptimo de un robot tipo Remo 2, y se proponen un par de índices de desempeño globales. Otra contribución fue, en condición de coautoría, el diseño y análisis de una nueva estructura paralela la cual no ha sido considerada anteriormente en la literatura.

Relevância:

20.00% 20.00%

Publicador:

Resumo:

Dentro de los estudios de Ingeniería, las asignaturas que se ocupan de la capacidad de desarrollar programas de ordenador presentan algunas particularidades que las hacen especialmente interesantes a la hora de aplicar instrumentos de evaluación no tradicionales. Estas características son: (a) el resultado del aprendizaje es estrictamente una competencia, (b) el ejercicio profesional de esta competencia se realiza usualmente en equipo y (c) el proceso de evaluación puede ser más objetivo que en otras materias. Como consecuencia de la aplicación del EEES se están aplicando nuevas metodologías docentes y de estrategias de evaluación a estas asignaturas y resulta relevante conocer qué diferencias, si existen, introducen en el proceso de aprendizaje de este tipo de materias. El presente trabajo contrasta la aplicación de dos metodologías docentes y dos instrumentos de evaluación en dos grupos de la misma asignatura. Uno de los grupos ha seguido una metodología docente a distancia apoyada en una plataforma de e-learning, con contenidos docentes en formato electrónico, tutorías virtuales, un foro de comunicaciones, ejercicios de autoevaluación,trabajos individuales y trabajos en grupo. El otro grupo comparte los mismos contenidos docentes pero sigue una metodología que se basa en la impartición de clases presenciales de tipo magistral y clases prácticas de resolución de problemas y en la que se realiza un proyecto en equipo que se entrega en tres hitos. En ambos casos se ha utilizado una rúbrica por parte del profesor para evaluar los trabajos y otra por parte del alumno para valorar la actividad y competencia trabajo en equipo. Además se ha realizado un examen tradicional aunque sin efecto en la calificación final del alumno como referencia de comparación. En este sentido se muestra la experiencia en el empleo de la rúbrica en el contexto de la docencia en Ingeniería, y, en este caso, respecto de un instrumento tradicional como es una prueba de evaluación escrita.

Relevância:

20.00% 20.00%

Publicador:

Resumo:

Este trabajo campara la aplicación de dos metodologías docentes y dos instrumentos de evaluación en dos grupos de la misma asignatura. Uno de los grupos ha seguido una metodología docente a distancia apoyada en una plataforma de e-learning, con contenidos docentes en formato electrónico, tutorías virtuales, un foro de comunicaciones, ejercicios de auto-evaluación, trabajos individuales y trabajos en grupo. El otro grupo comparte los mismos contenidos docentes pero sigue una metodología que se basa en la impartición de clases presenciales de tipo magistral y clases prácticas de resolución de problemas y en la que se realiza un proyecto en equipo que se entrega en tres hitos. En ambos casos se ha utilizado una rúbrica por parte del profesor para evaluar los trabajos y otra por parte del alumno para valorar la actividad y competencia trabajo en equipo. Además se ha realizado un examen tradicional aunque sin efecto en la calificación final del alumno como referencia de comparación. En este sentido se muestra la experiencia en el empleo de la rúbrica en el contexto de la docencia en Ingeniería, y, en este caso, respecto de un instrumento tradicional como es una prueba de evaluación escrita.

Relevância:

20.00% 20.00%

Publicador:

Resumo:

Se presenta un marco dinámico y contextual para la programacion estructurada, válido para otras técnicas de informática. Si se quiere hacer sintesis el marco hay que considerarlo en su sentido "top-down" 1 * pero si es de análisis de lo que se trata y es de lo que se trata en esta ponencia - el sentido es "bottom-up"

Relevância:

20.00% 20.00%

Publicador:

Resumo:

En este proyecto se realiza un estudio sobre herramientas que facilitan la creación y distribución de aplicaciones en distintas plataformas móviles, con el fin de poder seleccionar la herramienta más apropiada en función del proyecto a desarrollar. Previo al estudio de las herramientas para el desarrollo en plataformas múltiples se realiza un estudio de las herramientas y metodologías que facilitan los propietarios de los entornos IOS y Android. Este estudio previo permitirá al lector conocer en más detalle las particularidades de cada uno de estos dos entornos, así como las pautas y buenas prácticas a seguir en el desarrollo de aplicaciones para dispositivos móviles. Una vez finalizado el estudio, el lector sabrá escoger una herramienta de desarrollo adaptada a cada proyecto en función de su objeto, los recursos disponibles y las habilidades de los miembros del equipo de desarrollo. Adicionalmente al estudio, y como ejemplo de aplicación, en el proyecto se realiza un caso práctico de selección de herramienta y aplicación de la herramienta seleccionada a un proyecto de desarrollo concreto. El caso práctico consiste en la creación de un entorno que permite generar aplicaciones para la visualización de apuntes. Las aplicaciones permitirán ver contenidos de tipo multimedia como ficheros de texto, sonidos, imágenes, vídeos y enlaces a contenidos externos. Además estas aplicaciones se generarán sin que el autor de las mismas tenga que modificar alguna de las líneas del código. Para ello, se han definido una serie de ficheros de configuración en los que el autor de la aplicación deberá indicar los contenidos a mostrar y su ubicación. Se han seleccionado recursos de tipo “código abierto” para el desarrollo del caso práctico, con el fin de evitar los costes asociados a las posibles licencias. El equipo de desarrollo del caso práctico estará formado únicamente por el autor de este proyecto de fin de grado, lo que hace del caso de estudio un desarrollo sencillo, de manera que su futuro mantenimiento y escalabilidad no deberían verse afectados por la necesidad de contar con equipos de desarrolladores con conocimientos específicos o complejos. ABSTRACT. This document contains a study of tools that ease the creation and the distribution of the applications through different mobile platforms. The objective o this document is to allow the selection of the most appropriate tool, depending on the development objectives. Previous to this study about the tools for developing on multiple platforms, a study of IOS and Android tools and their methodologies is included on this document. This previous analysis will allow the reader to know in more detail the peculiarities of each of these environments, together with theirs requirements and the best practices of the applications development for mobile devices. By the end of this document the reader would be able to choose the adequate development tool for a project depending of its objective, its available resources and the developers team’s capabilities. Beside this study and as example of case study this final project includes a practical case of tool selection and its application to a specific development. The case study consists in the creation of an environment that allows generating applications to visualise notes. These applications will allow seeing contents of multimedia type such as: text files, sounds, images, videos, and links to external content. Furthermore these applications will be generated without their author having to modify any line of code, because a group of configuration files will be defined for such purpose. The author of the application only has to update this configuration with the content to show by the application and its location. The selected resources for the case study were of the type “open source” in order to avoid the cost associated to the potential licenses. The developers’ team for this case study has only one member, the author of this final project document and practical case developer. As a result the case study is a very simple development in a way that the future potential maintenance and scalability should not depend on the necessity of a highly qualified developers’ teams with a very specific knowledge on mobile platforms development.