Este documento presenta un proyecto final sobre programación paralela para la Universidad Autónoma de Sinaloa. Explica brevemente conceptos de computación paralela y luego se enfoca en dos APIs para programación paralela: OpenMP y OpenMPI. Describe las características, historia, ejemplos y uso de OpenMP y OpenMPI para construir programas paralelos que aprovechen múltiples procesadores y núcleos.
Este documento describe los conceptos de modularización en lenguajes de interfaz, incluyendo procedimientos, macros y la división de programas en subrutinas. Explica cómo declarar y llamar a procedimientos, así como el paso de parámetros y el uso de la pila. También cubre temas como marcos de pila, parámetros de registro vs parámetros de pila, y el paso de argumentos por valor vs referencia.
El modelo incremental propone el desarrollo de sistemas de software mediante la entrega por partes o incrementos. Cada incremento agrega nueva funcionalidad o mejora la versión anterior, permitiendo entregar algo de valor a los usuarios con frecuencia. Esto involucra más a los usuarios y evita largos proyectos, aunque requiere gestores experimentados y puede aumentar los costos debido a pruebas de regresión.
Este documento presenta las ventajas y desventajas del modelo Moprosoft para el desarrollo y mantenimiento de software. Las ventajas incluyen que está basado en normas ISO, simplifica la relación entre el modelo de procesos y la organización, cuenta con nueve procesos y es específico para el desarrollo de software. Las desventajas son que define actividades de manera muy general y que el 33% de las prácticas como administración de configuración y medición y análisis no están cubiertas.
Este documento describe el modelo en V para el desarrollo de sistemas. El modelo en V muestra cómo las actividades de prueba se relacionan con el análisis y el diseño, con la codificación en el vértice de la V y el análisis y diseño a la izquierda y las pruebas y mantenimiento a la derecha. El modelo en V facilita la localización de fallos al relacionar las etapas de desarrollo con los distintos tipos de pruebas.
El documento describe la Metodología Microsoft Solution Framework (MSF), una metodología flexible para la gestión de proyectos tecnológicos. MSF se compone de varios modelos para planificar diferentes aspectos de un proyecto, como el modelo de proceso, equipo, arquitectura, gestión de riesgos y diseño. Los proyectos se dividen en cinco fases: visión y alcances, planificación, desarrollo, estabilización e implantación. Se proporciona un ejemplo de cómo aplicar MSF a un proyecto de migración
Este documento describe y compara dos metodologías de desarrollo de software: el modelo en cascada y el modelo incremental. El modelo en cascada sigue un enfoque lineal y secuencial dividido en distintas fases, mientras que el modelo incremental es iterativo y entrega versiones parciales pero funcionales del software en cada iteración hasta completarlo. El modelo incremental tiene ventajas como reducir los costos de adaptación a cambios de requerimientos y entregar valor al cliente más rápido.
El documento describe diferentes modos de direccionamiento de instrucciones en un procesador. Estos modos incluyen direccionamiento implícito, inmediato, directo por registro, directo, indirecto, relativo, por base y desplazamiento e indexado. Cada modo especifica cómo se interpreta la información en el campo de operando de una instrucción para localizar el operando en la memoria o en registros. Los modos de direccionamiento proporcionan flexibilidad para acceder a estructuras de datos complejas y optimizar el uso de la memoria y los registros.
El documento describe varios modelos de procesos de software, incluyendo tres modelos secuenciales (lineal secuencial, iterativo basado en prototipos, y de desarrollo rápido de aplicaciones), tres modelos evolutivos (espiral, de desarrollo concurrente e incremental) y tres modelos ágiles (Scrum, Crystal y Programación Extrema). Define cada modelo y resume brevemente sus características clave.
Este documento describe los conceptos de modularización en lenguajes de interfaz, incluyendo procedimientos, macros y la división de programas en subrutinas. Explica cómo declarar y llamar a procedimientos, así como el paso de parámetros y el uso de la pila. También cubre temas como marcos de pila, parámetros de registro vs parámetros de pila, y el paso de argumentos por valor vs referencia.
El modelo incremental propone el desarrollo de sistemas de software mediante la entrega por partes o incrementos. Cada incremento agrega nueva funcionalidad o mejora la versión anterior, permitiendo entregar algo de valor a los usuarios con frecuencia. Esto involucra más a los usuarios y evita largos proyectos, aunque requiere gestores experimentados y puede aumentar los costos debido a pruebas de regresión.
Este documento presenta las ventajas y desventajas del modelo Moprosoft para el desarrollo y mantenimiento de software. Las ventajas incluyen que está basado en normas ISO, simplifica la relación entre el modelo de procesos y la organización, cuenta con nueve procesos y es específico para el desarrollo de software. Las desventajas son que define actividades de manera muy general y que el 33% de las prácticas como administración de configuración y medición y análisis no están cubiertas.
Este documento describe el modelo en V para el desarrollo de sistemas. El modelo en V muestra cómo las actividades de prueba se relacionan con el análisis y el diseño, con la codificación en el vértice de la V y el análisis y diseño a la izquierda y las pruebas y mantenimiento a la derecha. El modelo en V facilita la localización de fallos al relacionar las etapas de desarrollo con los distintos tipos de pruebas.
El documento describe la Metodología Microsoft Solution Framework (MSF), una metodología flexible para la gestión de proyectos tecnológicos. MSF se compone de varios modelos para planificar diferentes aspectos de un proyecto, como el modelo de proceso, equipo, arquitectura, gestión de riesgos y diseño. Los proyectos se dividen en cinco fases: visión y alcances, planificación, desarrollo, estabilización e implantación. Se proporciona un ejemplo de cómo aplicar MSF a un proyecto de migración
Este documento describe y compara dos metodologías de desarrollo de software: el modelo en cascada y el modelo incremental. El modelo en cascada sigue un enfoque lineal y secuencial dividido en distintas fases, mientras que el modelo incremental es iterativo y entrega versiones parciales pero funcionales del software en cada iteración hasta completarlo. El modelo incremental tiene ventajas como reducir los costos de adaptación a cambios de requerimientos y entregar valor al cliente más rápido.
El documento describe diferentes modos de direccionamiento de instrucciones en un procesador. Estos modos incluyen direccionamiento implícito, inmediato, directo por registro, directo, indirecto, relativo, por base y desplazamiento e indexado. Cada modo especifica cómo se interpreta la información en el campo de operando de una instrucción para localizar el operando en la memoria o en registros. Los modos de direccionamiento proporcionan flexibilidad para acceder a estructuras de datos complejas y optimizar el uso de la memoria y los registros.
El documento describe varios modelos de procesos de software, incluyendo tres modelos secuenciales (lineal secuencial, iterativo basado en prototipos, y de desarrollo rápido de aplicaciones), tres modelos evolutivos (espiral, de desarrollo concurrente e incremental) y tres modelos ágiles (Scrum, Crystal y Programación Extrema). Define cada modelo y resume brevemente sus características clave.
Este documento describe varias técnicas para la obtención de requerimientos, incluyendo JAD (desarrollo conjunto de aplicaciones), el desarrollo de prototipos, ETHICS (enfoque en los aspectos humanos y técnicos), el uso de puntos de vista, escenarios, etnografía y estrategias como observación, cuestionarios y entrevistas. La mayoría de estas técnicas involucran la participación de los usuarios para asegurar que los requerimientos reflejen fielmente sus necesidades.
Este documento presenta las tareas fundamentales de la ingeniería de requisitos para el desarrollo de software. Estas incluyen iniciar el proyecto, obtener requisitos del cliente, elaborar un modelo de análisis, negociar requisitos, especificar requisitos de forma precisa, validar la especificación, y gestionar los requisitos a lo largo del proyecto mediante tablas de rastreabilidad. El objetivo principal es entender completamente las necesidades del cliente y desarrollar un sistema de software que las satisfaga.
El modelo incremental consiste en el desarrollo inicial de la arquitectura completa del sistema, seguido de sucesivos incrementos funcionales. Cada incremento tiene su propio ciclo de vida y se basa en el anterior, sin cambiar su funcionalidad ni sus interfaces. Una vez entregado un incremento, no se realizan cambios sobre el mismo, sino únicamente corrección de errores.
Este documento describe varios modelos de ingeniería de software, incluyendo el modelo en cascada y el modelo en espiral. El modelo en cascada se compone de fases secuenciales como el análisis de requisitos, diseño, codificación y pruebas. El modelo en espiral es un proceso evolutivo que consta de iteraciones donde se construye un modelo del sistema y se evalúan los riesgos. Dentro del modelo en espiral se encuentra la variante WinWin que busca satisfacer las necesidades de todos los interesados.
Este documento introduce brevemente varios temas clave de la ingeniería de software, incluyendo una definición de ingeniería de software, los costos asociados, los tipos de productos de software, la especificación de productos, y la ética en la ingeniería de software. También presenta preguntas frecuentes sobre la disciplina y resume los principios fundamentales que se aplican a todo tipo de desarrollo de sistemas de software.
Este documento explica los conceptos de macros internas y externas en lenguaje ensamblador. Una macro interna se define y llama dentro del mismo programa, mientras que una macro externa se almacena en un archivo separado que puede incluirse en un programa a través de la instrucción Include. Las macros son útiles para simplificar código repetitivo, reducir errores y mejorar la legibilidad de un programa en ensamblador.
Esta es una presentacion de la arquitectura 3 capas realizada con informacion recopilada de varios sitios web y de un trabajo elaborado por nosotras en la Universidad
El modelo de desarrollo concurrente es un modelo donde las personas trabajan simultáneamente en actividades técnicas, tareas y estados asociados. Este modelo está dirigido por las necesidades de los usuarios, las decisiones de gestión y los resultados de revisiones. Se caracteriza por describir múltiples actividades del software ocurriendo al mismo tiempo en dos dimensiones: sistemas y componentes.
Este documento presenta una comparación de varios métodos para el desarrollo de aplicaciones web, incluyendo HDM, WSDM, RMM, OOHDM y SOHDM. Estos métodos proponen diferentes actividades y notaciones para las fases de diseño, modelado conceptual, diseño de navegación e implementación. Algunos métodos como OOHDM y SOHDM se basan en objetos y utilizan UML, mientras que otros como HDM y WSDM proponen sus propias notaciones.
Un traductor divide su proceso en dos etapas: análisis y síntesis. La etapa de análisis analiza el lenguaje fuente, verifica su corrección sintáctica y semántica, y genera estructuras intermedias. La etapa de síntesis usa estas estructuras para generar código intermedio, código máquina, y optimizar el código final. Un traductor traduce código de un lenguaje fuente a un lenguaje objetivo, como de un lenguaje de programación a código de máquina.
Cuadro sipnotico tipos de computacion paralelaEduardo Suarez
Este documento describe los principales tipos de computación paralela según la taxonomía de Flynn, incluyendo SISD, MISD, SIMD y MIMD. También explica las dos organizaciones principales de memoria: la organización por palabras (2D) y la organización por bits (3D o 2 1/2D).
UML permite modelar sistemas de software a través de diferentes diagramas como diagramas de clases, estados, secuencias, colaboraciones y actividades. Cada diagrama se enfoca en un aspecto diferente como la estructura de clases, flujos de estados, interacciones entre objetos y secuencias de mensajes. Los diagramas UML son una herramienta útil para el análisis, diseño y documentación de sistemas de software.
Este documento describe los fundamentos de la arquitectura de software, incluyendo conceptos como el análisis de requisitos, lineamientos de calidad, estilos arquitectónicos como capas y flujo de datos, y métodos para el diseño arquitectónico como mapeo de flujos de datos. La arquitectura de software proporciona un marco coherente para guiar el desarrollo de software mediante el uso de patrones y abstracciones.
Este documento presenta los conceptos básicos de la arquitectura de software. Explica que la arquitectura de software establece la estructura y la interacción entre las partes de un sistema informático. Luego describe algunos estilos arquitectónicos comunes como las arquitecturas centradas en datos, de flujo de datos, orientadas a objetos y en capas. El objetivo es que los desarrolladores compartan una línea de trabajo común al construir software.
Este documento describe conceptos básicos sobre transacciones en bases de datos, incluyendo las propiedades ACID, los estados de una transacción, los niveles de aislamiento y los comandos commit y rollback. Explica que una transacción es un conjunto de operaciones atómicas que mantienen la consistencia de los datos y que deben cumplir las propiedades de atomicidad, consistencia, aislamiento y permanencia.
Este documento presenta una tabla comparativa de las ventajas y desventajas de diferentes algoritmos de planificación de procesos, incluyendo Round Robin (RR), Shortest Remaining Time First (SRTF), Shortest Job First (SJF) y First In First Out (FIFO). Describe brevemente las características clave de cada algoritmo, como la facilidad de manejo de RR, la eficiencia de SRTF, y la simplicidad de FIFO y SRTF. También identifica posibles desventajas como pospuestas indefinidas, complejidad algorítmica y
Este documento presenta un enfoque de ingeniería de requisitos para modelar sistemas de información conceptualmente. El enfoque se basa en herramientas para especificar requisitos y en un método gráfico orientado a objetos para modelado conceptual que permite generar código automáticamente. El proceso define cómo construir un modelo de requisitos funcionales y cómo representar esos requisitos en el modelo conceptual.
El documento introduce conceptos clave sobre métricas técnicas de software, incluyendo factores de calidad como los definidos por McCall, FURPS e ISO 9126. Explica la importancia de medir atributos internos del software como la modularidad y la independencia funcional para predecir la calidad. También describe métricas para medir modelos de análisis y diseño, como los puntos de función y la complejidad estructural, de datos y del sistema.
El documento habla sobre ingeniería de requerimientos. Explica que los requerimientos definen qué debe hacer el sistema para satisfacer las necesidades del cliente, mientras que el diseño define cómo se implementará la solución. También destaca la importancia de los requerimientos, señalando que errores en esta etapa son costosos de corregir y una causa frecuente del fracaso de proyectos de software.
El documento presenta una introducción a la computación paralela. Explica la necesidad de la computación paralela debido al incremento continuo de la demanda de poder computacional para aplicaciones como la predicción meteorológica y la astrofísica. Define la programación paralela como el uso de múltiples procesadores trabajando juntos para resolver una tarea común. Describe diferentes modelos de computadores paralelos como los de memoria compartida y distribuida, y diferentes topologías de interconexión entre los procesadores.
Este documento introduce el concepto de computación paralela de alto rendimiento y sus aplicaciones. Explica que la simulación por computadora se ha convertido en el tercer pilar de la ciencia junto con la teoría y el experimento. Detalla algunos problemas computacionalmente intensivos como la simulación del clima global y la dinámica de agujeros negros binarios. Finalmente, señala que las tendencias de miniaturización hacen que los microprocesadores sean cada vez más paralelos para aprovechar el aumento exponencial en el número de transistores.
Este documento describe varias técnicas para la obtención de requerimientos, incluyendo JAD (desarrollo conjunto de aplicaciones), el desarrollo de prototipos, ETHICS (enfoque en los aspectos humanos y técnicos), el uso de puntos de vista, escenarios, etnografía y estrategias como observación, cuestionarios y entrevistas. La mayoría de estas técnicas involucran la participación de los usuarios para asegurar que los requerimientos reflejen fielmente sus necesidades.
Este documento presenta las tareas fundamentales de la ingeniería de requisitos para el desarrollo de software. Estas incluyen iniciar el proyecto, obtener requisitos del cliente, elaborar un modelo de análisis, negociar requisitos, especificar requisitos de forma precisa, validar la especificación, y gestionar los requisitos a lo largo del proyecto mediante tablas de rastreabilidad. El objetivo principal es entender completamente las necesidades del cliente y desarrollar un sistema de software que las satisfaga.
El modelo incremental consiste en el desarrollo inicial de la arquitectura completa del sistema, seguido de sucesivos incrementos funcionales. Cada incremento tiene su propio ciclo de vida y se basa en el anterior, sin cambiar su funcionalidad ni sus interfaces. Una vez entregado un incremento, no se realizan cambios sobre el mismo, sino únicamente corrección de errores.
Este documento describe varios modelos de ingeniería de software, incluyendo el modelo en cascada y el modelo en espiral. El modelo en cascada se compone de fases secuenciales como el análisis de requisitos, diseño, codificación y pruebas. El modelo en espiral es un proceso evolutivo que consta de iteraciones donde se construye un modelo del sistema y se evalúan los riesgos. Dentro del modelo en espiral se encuentra la variante WinWin que busca satisfacer las necesidades de todos los interesados.
Este documento introduce brevemente varios temas clave de la ingeniería de software, incluyendo una definición de ingeniería de software, los costos asociados, los tipos de productos de software, la especificación de productos, y la ética en la ingeniería de software. También presenta preguntas frecuentes sobre la disciplina y resume los principios fundamentales que se aplican a todo tipo de desarrollo de sistemas de software.
Este documento explica los conceptos de macros internas y externas en lenguaje ensamblador. Una macro interna se define y llama dentro del mismo programa, mientras que una macro externa se almacena en un archivo separado que puede incluirse en un programa a través de la instrucción Include. Las macros son útiles para simplificar código repetitivo, reducir errores y mejorar la legibilidad de un programa en ensamblador.
Esta es una presentacion de la arquitectura 3 capas realizada con informacion recopilada de varios sitios web y de un trabajo elaborado por nosotras en la Universidad
El modelo de desarrollo concurrente es un modelo donde las personas trabajan simultáneamente en actividades técnicas, tareas y estados asociados. Este modelo está dirigido por las necesidades de los usuarios, las decisiones de gestión y los resultados de revisiones. Se caracteriza por describir múltiples actividades del software ocurriendo al mismo tiempo en dos dimensiones: sistemas y componentes.
Este documento presenta una comparación de varios métodos para el desarrollo de aplicaciones web, incluyendo HDM, WSDM, RMM, OOHDM y SOHDM. Estos métodos proponen diferentes actividades y notaciones para las fases de diseño, modelado conceptual, diseño de navegación e implementación. Algunos métodos como OOHDM y SOHDM se basan en objetos y utilizan UML, mientras que otros como HDM y WSDM proponen sus propias notaciones.
Un traductor divide su proceso en dos etapas: análisis y síntesis. La etapa de análisis analiza el lenguaje fuente, verifica su corrección sintáctica y semántica, y genera estructuras intermedias. La etapa de síntesis usa estas estructuras para generar código intermedio, código máquina, y optimizar el código final. Un traductor traduce código de un lenguaje fuente a un lenguaje objetivo, como de un lenguaje de programación a código de máquina.
Cuadro sipnotico tipos de computacion paralelaEduardo Suarez
Este documento describe los principales tipos de computación paralela según la taxonomía de Flynn, incluyendo SISD, MISD, SIMD y MIMD. También explica las dos organizaciones principales de memoria: la organización por palabras (2D) y la organización por bits (3D o 2 1/2D).
UML permite modelar sistemas de software a través de diferentes diagramas como diagramas de clases, estados, secuencias, colaboraciones y actividades. Cada diagrama se enfoca en un aspecto diferente como la estructura de clases, flujos de estados, interacciones entre objetos y secuencias de mensajes. Los diagramas UML son una herramienta útil para el análisis, diseño y documentación de sistemas de software.
Este documento describe los fundamentos de la arquitectura de software, incluyendo conceptos como el análisis de requisitos, lineamientos de calidad, estilos arquitectónicos como capas y flujo de datos, y métodos para el diseño arquitectónico como mapeo de flujos de datos. La arquitectura de software proporciona un marco coherente para guiar el desarrollo de software mediante el uso de patrones y abstracciones.
Este documento presenta los conceptos básicos de la arquitectura de software. Explica que la arquitectura de software establece la estructura y la interacción entre las partes de un sistema informático. Luego describe algunos estilos arquitectónicos comunes como las arquitecturas centradas en datos, de flujo de datos, orientadas a objetos y en capas. El objetivo es que los desarrolladores compartan una línea de trabajo común al construir software.
Este documento describe conceptos básicos sobre transacciones en bases de datos, incluyendo las propiedades ACID, los estados de una transacción, los niveles de aislamiento y los comandos commit y rollback. Explica que una transacción es un conjunto de operaciones atómicas que mantienen la consistencia de los datos y que deben cumplir las propiedades de atomicidad, consistencia, aislamiento y permanencia.
Este documento presenta una tabla comparativa de las ventajas y desventajas de diferentes algoritmos de planificación de procesos, incluyendo Round Robin (RR), Shortest Remaining Time First (SRTF), Shortest Job First (SJF) y First In First Out (FIFO). Describe brevemente las características clave de cada algoritmo, como la facilidad de manejo de RR, la eficiencia de SRTF, y la simplicidad de FIFO y SRTF. También identifica posibles desventajas como pospuestas indefinidas, complejidad algorítmica y
Este documento presenta un enfoque de ingeniería de requisitos para modelar sistemas de información conceptualmente. El enfoque se basa en herramientas para especificar requisitos y en un método gráfico orientado a objetos para modelado conceptual que permite generar código automáticamente. El proceso define cómo construir un modelo de requisitos funcionales y cómo representar esos requisitos en el modelo conceptual.
El documento introduce conceptos clave sobre métricas técnicas de software, incluyendo factores de calidad como los definidos por McCall, FURPS e ISO 9126. Explica la importancia de medir atributos internos del software como la modularidad y la independencia funcional para predecir la calidad. También describe métricas para medir modelos de análisis y diseño, como los puntos de función y la complejidad estructural, de datos y del sistema.
El documento habla sobre ingeniería de requerimientos. Explica que los requerimientos definen qué debe hacer el sistema para satisfacer las necesidades del cliente, mientras que el diseño define cómo se implementará la solución. También destaca la importancia de los requerimientos, señalando que errores en esta etapa son costosos de corregir y una causa frecuente del fracaso de proyectos de software.
El documento presenta una introducción a la computación paralela. Explica la necesidad de la computación paralela debido al incremento continuo de la demanda de poder computacional para aplicaciones como la predicción meteorológica y la astrofísica. Define la programación paralela como el uso de múltiples procesadores trabajando juntos para resolver una tarea común. Describe diferentes modelos de computadores paralelos como los de memoria compartida y distribuida, y diferentes topologías de interconexión entre los procesadores.
Este documento introduce el concepto de computación paralela de alto rendimiento y sus aplicaciones. Explica que la simulación por computadora se ha convertido en el tercer pilar de la ciencia junto con la teoría y el experimento. Detalla algunos problemas computacionalmente intensivos como la simulación del clima global y la dinámica de agujeros negros binarios. Finalmente, señala que las tendencias de miniaturización hacen que los microprocesadores sean cada vez más paralelos para aprovechar el aumento exponencial en el número de transistores.
El documento habla sobre la computación paralela y cómo permite mejorar la velocidad en la solución de problemas grandes mediante la división de estos problemas en partes más pequeñas que pueden resolverse simultáneamente. Explica los diferentes tipos de paralelismo como a nivel de bit, instrucción, datos y tareas, y las clases de computación paralela como multinúcleo, multiprocesamiento simétrico y computadoras paralelas especializadas. También cubre temas como memoria, comunicación y lenguajes de programación paralel
Este documento presenta información sobre computación paralela. Explica los diferentes tipos de paralelismo, incluyendo paralelismo a nivel de bit, instrucción, datos y tareas. También describe la clasificación de Flynn de sistemas de computación, incluyendo SISD, SIMD, MISD y MIMD. Finalmente, discute aspectos importantes del diseño de computadoras y algoritmos paralelos como escalabilidad, comunicaciones y evaluación de algoritmos paralelos.
Este documento describe un cluster Beowulf. Un cluster Beowulf es un tipo de cluster computacional que utiliza computadoras comunes conectadas en red para funcionar como un supercomputador. El documento explica que Beowulf usa hardware y software de código abierto como Linux y bibliotecas MPI. También describe los elementos clave de un cluster Beowulf como los nodos, almacenamiento, red y middleware para la programación paralela. Finalmente, el documento cubre la implementación de un cluster Beowulf incluyendo la configuración del hardware, software y redes.
Este documento describe las aplicaciones distribuidas y las arquitecturas de tres capas. Explica que las aplicaciones distribuidas se ejecutan en máquinas separadas físicamente y cooperan para alcanzar objetivos determinados. También describe las arquitecturas cliente-servidor de dos niveles y las arquitecturas de tres capas, que dividen la lógica en capas de interfaz de usuario, negocio y datos para mejorar el rendimiento, seguridad y escalabilidad. Además, explica tecnologías como servlets, páginas de
Este documento presenta un resumen de diferentes modelos de programación y computación paralela. Describe modelos de memoria compartida y distribuida, así como el uso de hilos para la programación paralela. También analiza problemas como las carreras de datos y el falso compartir de memoria al escalar arquitecturas de memoria compartida.
Mi clase del curso de Analisis y Diseño de Algoritmos en la Universidad Privada del Norte, donde se da el contexto de la computación paralela como una tendencia irreversible, con énfasis en lo visionado por Herb Sutter (Welcome to the Jungle) y las consideraciones que hay que tener para programar en esa modalidad.
El documento presenta dos ejemplos de diseño de filtros digitales utilizando programación en paralelo. En el primer ejemplo, se descompone un filtro en tres fracciones parciales G1(z), G2(z) y G3(z) y se unen sus diagramas de bloques para obtener la programación en paralelo total. En el segundo ejemplo, también se descompone un filtro en cuatro fracciones parciales G1(z), G2(z), G3(z) y G4(z), cuyos diagramas de bloques se unen para obtener
Este documento proporciona una introducción a la historia y evolución de la computación móvil. Comienza describiendo los primeros dispositivos móviles como los radios de mano y los beepers en las décadas de 1940 y 1980. Luego describe el desarrollo de las PDA y teléfonos inteligentes en los años 1990 y 2000, que integraron funciones de computación y comunicación en dispositivos portátiles. Finalmente, discute el rápido crecimiento de los smartphones y tabletas en la actualidad impulsado por sistemas operativos como Android
Una aplicación distribuida consta de componentes independientes que se ejecutan en diferentes entornos conectados a través de una red, como el correo electrónico y la navegación web. La distribución implica dividir el software en partes asignadas a responsabilidades específicas. Las aplicaciones distribuidas permiten el trabajo remoto, compartir información y proporcionar accesibilidad e independencia de ubicación, además de mejorar la seguridad al particionar bases de datos.
Este documento presenta 8 ejercicios resueltos en Prolog. Los ejercicios cubren temas como hechos y reglas, aritmética recursiva, listas y sus operaciones como imprimir, agregar elementos, invertir, ordenar y más. El autor concluye que Prolog es adecuado para la inteligencia artificial debido a su facilidad de programación y uso de listas para estructurar datos de manera recursiva.
Este documento describe los paquetes de software ofimático OpenOffice y Microsoft Office. Explica que OpenOffice es una suite ofimática de código abierto que incluye aplicaciones como procesador de texto, hoja de cálculo, presentaciones, dibujo y base de datos. También describe las aplicaciones incluidas en OpenOffice como Writer, Calc, Impress, Base y Draw. Luego, brevemente resume que Microsoft Office es el paquete de software ofimático propietario de Microsoft.
Este documento presenta los conceptos básicos para construir una aplicación Android simple que funcione como lector de feeds RSS. Explica la arquitectura general de Android y los componentes clave para desarrollar aplicaciones como activities, views y intents. Luego, detalla el diseño y código necesarios para mostrar los elementos de un feed en una lista, incluyendo la descarga, procesamiento y almacenamiento de los datos, así como la creación de un adaptador para vincular los datos con la interfaz gráfica.
Este documento presenta un curso sobre el desarrollo de aplicaciones móviles para Android. Incluye instrucciones para construir una aplicación lectora de feeds RSS/Atom simple utilizando los componentes básicos de Android como activities, views y permissions. El documento también explica conceptos clave de la arquitectura de Android como el kernel de Linux, la máquina virtual Dalvik y la estructura básica de una aplicación Android.
Este documento presenta una introducción a los conceptos básicos de la programación. Explica que un lenguaje de programación permite escribir instrucciones para que la computadora las ejecute. Describe los paradigmas imperativo y orientado a objetos, así como los lenguajes de alto y bajo nivel. Finalmente, introduce conceptos como compiladores, intérpretes y la estructura básica de un programa en C.
Este documento presenta información sobre conceptos básicos de computación e información sobre sistemas operativos. Explica lo que es una computadora, sus funciones principales y tipos de sistemas de computación. También describe lenguajes de programación como lenguaje de máquina, lenguajes orientados a procedimientos y objetos. Finalmente, brinda detalles sobre el sistema operativo MS-DOS, incluyendo sus objetivos y popularidad.
Contiene íconos que representan los comandos más utilizados de la aplicación
para acceder a ellos rápidamente sin necesidad de usar el menú.
Barra de estado: Muestra información sobre el estado de la aplicación y del documento que
tenemos abierto.
Área de trabajo: Es el espacio donde se muestra y se edita el contenido del archivo que
tenemos abierto.
Botones de la ventana:
- Minimizar: Reduce la ventana a icono en la barra de tareas.
- Maximizar: Amplía la ventana a toda la pantalla ocultando los bordes.
- Cerr
Este documento presenta información sobre conceptos básicos de computación e información sobre sistemas operativos. Explica lo que es una computadora, sus funciones principales y tipos de sistemas de computación. También describe lenguajes de programación como lenguaje de máquina, lenguajes orientados a procedimientos y objetos. Finalmente, brinda detalles sobre el sistema operativo MS-DOS, incluyendo sus objetivos y popularidad.
Este documento presenta información sobre conceptos básicos de computación e información sobre sistemas operativos. Explica lo que es una computadora, sus funciones principales y tipos de sistemas de computación. También describe lenguajes de programación como lenguaje de máquina, lenguajes orientados a procedimientos y objetos. Finalmente, brinda detalles sobre el sistema operativo MS-DOS, incluyendo sus objetivos y popularidad.
Este documento presenta información sobre conceptos básicos de computación e incluye una sección sobre el sistema operativo MS-DOS. Explica brevemente qué es una computadora, los diferentes tipos de sistemas de computación, las funciones básicas que puede realizar una computadora y los diferentes lenguajes de programación. También describe los objetivos del sistema operativo MS-DOS y las razones por las que ha sido el preferido por la mayoría de usuarios de PC desde 1990.
Contiene íconos que representan los comandos más utilizados de la aplicación
para realizar acciones rápidas.
Barra de estado: Muestra información sobre el estado de la aplicación y del documento
abierto.
Área de trabajo: Es el espacio donde se muestra y se edita el contenido del documento.
Botones de la ventana:
- Minimizar: Reduce la ventana a la barra de tareas.
- Maximizar: Amplía la ventana a toda la pantalla.
- Cerrar: Cierra la ventana de la aplicación.
8
Así que en resumen, las part
El documento proporciona información sobre conceptos básicos de computación e incluye una sección sobre el sistema operativo MS-DOS. Explica brevemente qué es una computadora, los diferentes tipos de sistemas de computación, las funciones básicas que puede realizar una computadora y los diferentes lenguajes de programación. También describe los objetivos del sistema operativo MS-DOS y las razones de su popularidad entre los usuarios de PC.
El documento describe los elementos básicos de una computadora y un sistema operativo. Explica conceptos como qué es una computadora, los diferentes tipos de sistemas de computación, las funciones básicas de una computadora y los lenguajes de programación
Este documento presenta un curso sobre el desarrollo de aplicaciones móviles para Android. Explica los componentes básicos de una aplicación Android como activities, intents, views, services y content providers. Luego, describe un ejemplo de aplicación para leer feeds RSS/Atom que incluye el diseño de la interfaz con views y la carga y visualización de datos usando un ListView.
Este documento resume la capa de aplicación en el modelo OSI y TCP/IP. La capa de aplicación es la capa superior que proporciona una interfaz entre las aplicaciones de usuario y la red subyacente. Algunas funciones clave de la capa de aplicación incluyen identificar la disponibilidad de socios de comunicación, establecer acuerdos sobre la recuperación de errores y controlar la integridad de los datos. El documento también explica varios protocolos y servicios populares de la capa de aplicación como HTTP, SMTP, FTP y DHCP.
Este documento presenta una investigación sobre el paquete ofimático OpenOffice. Inicialmente describe la evolución e historia de OpenOffice, luego detalla sus características y aplicaciones principales como Writer, Calc e Impress. Finalmente, realiza un análisis comparativo entre OpenOffice y Microsoft Office y concluye que OpenOffice ofrece múltiples beneficios para el usuario en la realización de tareas de manera gratuita.
Este documento presenta un curso sobre el desarrollo de aplicaciones móviles para Android. Explica la arquitectura básica de Android, incluyendo el kernel de Linux, librerías, ejecución y estructura de aplicaciones. Luego describe los componentes básicos para construir una aplicación Android como activities, intents, views, services y content providers. Finalmente, propone como proyecto inicial construir un lector simple de feeds RSS/Atom para practicar los conceptos básicos.
Este documento presenta un curso sobre el desarrollo de aplicaciones móviles para Android. Explica cómo construir un lector de feeds RSS/Atom simple utilizando las características básicas de Android como activities, views y adaptadores. Detalla los pasos para diseñar la interfaz, cargar datos de un feed externo usando un parser XML y mostrar la información en una lista mediante un adaptador.
Este documento presenta un curso sobre el desarrollo de aplicaciones móviles para Android. Explica cómo construir un lector de feeds RSS/Atom simple utilizando las características básicas de Android como activities, views y adaptadores. Detalla el diseño de la interfaz con LinearLayout y ListView, y cómo poblar este último con datos extraídos de un feed mediante la creación de un adaptador.
Este documento presenta un curso sobre el desarrollo de aplicaciones móviles para Android. Explica la arquitectura básica de Android, incluyendo el kernel de Linux, librerías, ejecución y estructura de aplicaciones. Luego describe los componentes básicos para construir una aplicación Android como activities, intents, views, services y content providers. Finalmente, propone como proyecto inicial construir una aplicación simple para leer feeds (RSS/Atom) del sitio Maestros del Web.
Este documento presenta un curso sobre el desarrollo de aplicaciones móviles para Android. Explica la arquitectura básica de Android, incluyendo el kernel de Linux, librerías, ejecución y estructura de aplicaciones. Luego describe los componentes básicos para construir una aplicación Android como activities, intents, views, services y content providers. Finalmente, introduce un ejemplo práctico para construir una aplicación simple de lector de feeds como primer proyecto del curso.
Similar a Computo en paralelo con OpenMP y OpenMPI (20)
Materia de Tecnologías emergentes para el aprendizaje en la Licenciatura en Médico General de la Facultad de Medicina de la Universidad Autónoma de Sinaloa.
Este documento describe la importancia del diseño de ingeniería de software y cómo afecta la calidad de una aplicación. Explica conceptos como patrones, modularidad y atributos de calidad. También incluye un análisis de requisitos, diagrama de casos de uso y diagrama de clases para un sistema de evaluación y retroalimentación estudiantil. Concluye que el diseño de software es fundamental para el éxito de un sistema al determinar sus atributos de calidad como funcionalidad, usabilidad y mantenibilidad.
Propuesta de una necesidad de aprendizaje que se resuelva a través de un curso montado en una plataforma educativa con la integración de diferentes herramientas de comunicación.
La plataforma Google Sites es bastante sencilla e intuitiva, cuenta con una gran cantidad de recursos, lo cual permite colgar recursos para los diferentes estilos de aprendizaje. Por último, en cursos anteriores ya se ha utilizado esta plataforma, lo que permite al alumno ahorrar tiempo en el aprendizaje operativo de la plataforma.
Este documento proporciona un manual para la elaboración del informe anual de gobierno municipal. Explica el proceso de integración del informe, incluyendo la planeación, calendario de actividades, estructura del informe y logística. El objetivo es guiar al personal designado para administrar el proceso de recopilación y presentación de la información requerida por ley sobre el estado de la administración municipal.
Este documento presenta la definición inicial de un proyecto de desarrollo de un sistema de digitalización de archivo municipal para el H. Ayuntamiento de Cosalá. Se describe el contexto de la institución, los objetivos y beneficios del proyecto, los requisitos, el alcance y las etapas planeadas. El resumen incluye la justificación, objetivos, alcance, presupuesto estimado y áreas clave con las que se interactuará para llevar a cabo el proyecto de manera exitosa.
El documento propone invertir en infraestructura tecnológica con fibra óptica para el municipio de Cosalá, Sinaloa, que actualmente tiene problemas de conectividad lentas e interrupciones. El objetivo es determinar la viabilidad de esta inversión en 20 días. Cosalá tiene una población pequeña con altos niveles de pobreza y emigración debido a falta de oportunidades. Mejorar el acceso a Internet podría impulsar el desarrollo económico local.
Propuesta de Sistematización de los Servicios de la Coordinación de Centro de Computo.
Maestría en Gestión de las Tecnologías de la Información y Comunicación.
El documento describe la implementación de un servidor proxy en la Facultad de Medicina para controlar el uso excesivo de ancho de banda por parte del personal y estudiantes y mejorar la velocidad de navegación. El servidor proxy permitiría filtrar sitios no relacionados con la educación y ahorrar recursos de red, con el objetivo de reducir la saturación en horas pico en un 30%. Tras implementar el proxy, el consumo de ancho de banda se redujo en un 15%, aunque algunos empleados se quejaron y el proxy tardaba a veces en responder
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaAMADO SALVADOR
Descubre el catálogo general de la gama de productos de refrigeración del fabricante de electrodomésticos Miele, presentado por Amado Salvador distribuidor oficial Miele en Valencia. Como distribuidor oficial de electrodomésticos Miele, Amado Salvador ofrece una amplia selección de refrigeradores, congeladores y soluciones de refrigeración de alta calidad, resistencia y diseño superior de esta marca.
La gama de productos de Miele se caracteriza por su innovación tecnológica y eficiencia energética, garantizando que cada electrodoméstico no solo cumpla con las expectativas, sino que las supere. Los refrigeradores Miele están diseñados para ofrecer un rendimiento óptimo y una conservación perfecta de los alimentos, con características avanzadas como la tecnología de enfriamiento Dynamic Cooling, sistemas de almacenamiento flexible y acabados premium.
En este catálogo, encontrarás detalles sobre los distintos modelos de refrigeradores y congeladores Miele, incluyendo sus especificaciones técnicas, características destacadas y beneficios para el usuario. Amado Salvador, como distribuidor oficial de electrodomésticos Miele, garantiza que todos los productos cumplen con los más altos estándares de calidad y durabilidad.
Explora el catálogo completo y encuentra el refrigerador Miele perfecto para tu hogar con Amado Salvador, el distribuidor oficial de electrodomésticos Miele.
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaAMADO SALVADOR
Descubra el catálogo completo de buzones BTV, una marca líder en la fabricación de buzones y cajas fuertes para los sectores de ferretería, bricolaje y seguridad. Como distribuidor oficial de BTV, Amado Salvador se enorgullece de presentar esta amplia selección de productos diseñados para satisfacer las necesidades de seguridad y funcionalidad en cualquier entorno.
Descubra una variedad de buzones residenciales, comerciales y corporativos, cada uno construido con los más altos estándares de calidad y durabilidad. Desde modelos clásicos hasta diseños modernos, los buzones BTV ofrecen una combinación perfecta de estilo y resistencia, garantizando la protección de su correspondencia en todo momento.
Amado Salvador, se compromete a ofrecer productos de primera clase respaldados por un servicio excepcional al cliente. Como distribuidor oficial de BTV, entendemos la importancia de la seguridad y la tranquilidad para nuestros clientes. Por eso, trabajamos en colaboración con BTV para brindarle acceso a los mejores productos del mercado.
Explore el catálogo de buzones ahora y encuentre la solución perfecta para sus necesidades de correo y seguridad. Confíe en Amado Salvador y BTV para proporcionarle buzones de calidad excepcional que cumplan y superen sus expectativas.
HPE presenta una competició destinada a estudiants, que busca fomentar habilitats tecnològiques i promoure la innovació en un entorn STEAM (Ciència, Tecnologia, Enginyeria, Arts i Matemàtiques). A través de diverses fases, els equips han de resoldre reptes mensuals basats en àrees com algorísmica, desenvolupament de programari, infraestructures tecnològiques, intel·ligència artificial i altres tecnologies. Els millors equips tenen l'oportunitat de desenvolupar un projecte més gran en una fase presencial final, on han de crear una solució concreta per a un conflicte real relacionat amb la sostenibilitat. Aquesta competició promou la inclusió, la sostenibilitat i l'accessibilitat tecnològica, alineant-se amb els Objectius de Desenvolupament Sostenible de l'ONU.
La inteligencia artificial sigue evolucionando rápidamente, prometiendo transformar múltiples aspectos de la sociedad mientras plantea importantes cuestiones que requieren una cuidadosa consideración y regulación.
KAWARU CONSULTING presenta el projecte amb l'objectiu de permetre als ciutadans realitzar tràmits administratius de manera telemàtica, des de qualsevol lloc i dispositiu, amb seguretat jurídica. Aquesta plataforma redueix els desplaçaments físics i el temps invertit en tràmits, ja que es pot fer tot en línia. A més, proporciona evidències de la correcta realització dels tràmits, garantint-ne la validesa davant d'un jutge si cal. Inicialment concebuda per al Ministeri de Justícia, la plataforma s'ha expandit per adaptar-se a diverses organitzacions i països, oferint una solució flexible i fàcil de desplegar.
Manual de soporte y mantenimiento de equipo de cómputo
Computo en paralelo con OpenMP y OpenMPI
1. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Facultad de Informática Culiacán
Programación Avanzada, 5 de diciembre de 2013
Grupo: 7-4
Carrera
Instructor
Licenciatura en Informática
M.C. Juan Ulises Gallardo
Alumno
Escalante Godinez Alfredo Humberto
Martínez Rubio Luis Carlos
1
Facultad de Informática Culiacán
2. Proyecto Final
Uni versidad Autónoma de Sinaloa
Contenido
2013
Página
Presentación........................................................................................................................3
Open MP .............................................................................................................................4
Introducción.....................................................................................................................4
Historia ............................................................................................................................4
Características..................................................................................................................5
Detalles generales ............................................................................................................6
Cláusula de datos .............................................................................................................6
Cláusula SHARED...........................................................................................................7
Cláusula PRIVATE ..........................................................................................................7
Cláusula DEFAULT .........................................................................................................8
La cláusula FIRSTPRIVATE ..............................................................................................9
Directivas de distribución de datos ..................................................................................10
La directiva !$OMP DO ................................................................................................10
La directiva !$OMP SECTIONS ......................................................................................11
La directiva !$OMP WORKSHARE .................................................................................12
Ejemplos 5 .....................................................................................................................13
Compilación y ejecución..................................................................................................14
Open MPI ..........................................................................................................................16
Introducción...................................................................................................................16
Historia ..........................................................................................................................16
Características................................................................................................................17
Ejemplos ........................................................................................................................18
Compilación y ejecución..................................................................................................18
Conclusión .........................................................................................................................19
Bibliografía.........................................................................................................................20
2
Facultad de Informática Culiacán
3. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Presentación
La computación Paralela, es muy importante actualmente, al permitir mejorar la velocidad
en la solución de grandes problemas, de modo que se mejora el rendimiento de computo.
La computación paralela es una forma de cómputo en la que muchas instrucciones se
ejecutan simultáneamente, operando sobre el principio de que problemas grandes, a
menudo se pueden dividir en unos más pequeños, que luego son resueltos
simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela:
paralelismo
a
nivel de
bit,
paralelismo
a
nivel de
instrucción, paralelismo
de
datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos años, sobre
todo en la computación de altas prestaciones, pero el interés en ella ha crecido
últimamente debido a las limitaciones físicas que impiden el aumento de la
frecuencia. Como el consumo de energía y por consiguiente la generación de calor de las
computadoras constituye una preocupación en los últimos años. la computación en
paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores,
principalmente en forma de procesadores multinúcleo. La computación paralela es una
forma
de
cómputo
en
la
que
muchas instrucciones se
ejecutan
1
simultáneamente, operando sobre el principio de que problemas grandes, a menudo se
pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en
paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit,
paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas. El
paralelismo se ha empleado durante muchos años, sobre todo en la computación de altas
prestaciones, pero el interés en ella ha crecido últimamente debido a las limitaciones
físicas que impiden el aumento de la frecuencia. Como el consumo de energía y por
consiguiente la generación de calor de las computadoras constituye una preocupación en
los últimos años. la computación en paralelo se ha convertido en el paradigma dominante
en la arquitectura de computadores, principalmente en forma de procesadores multinúcleo.
Los programas
informáticos
paralelos son
más
difíciles
de
escribir
que
los
secuenciales, porque la concurrencia introduce nuevos tipos de errores de software,
siendo
las condiciones
de
carrera los
más
comunes.
La
comunicación
y sincronización entre diferentes subtareas son algunos de los mayores obstáculos para
obtener un buen rendimiento del programa paralelo.
A continuación veremos dos API’s
con las cuales podremos construir programas en
paralelo: OpenMP y OpenMPI.
3
Facultad de Informática Culiacán
4. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Open MP
Introducción
OpenMP es un estándar que define construcciones y su semántica que ayudan a con struir
programas en paralelo en el modelo de memoria compartida. Fue creado para facilitar la
construcción de programas en este modelo, así como para permitir la portabilidad de estos
programas.1
OpenMP es
una interfaz
de
programación
de
aplicaciones (API)
para
la
programación multiproceso de memoria compartida en múltiples plataformas. Permite
añadir concurrencia a los programas escritos en C, C++ y Fortran sobre la base del
modelo de ejecución fork-join. Está disponible en muchas arquitecturas, incluidas las
plataformas de Unix y de Microsoft Windows. Se compone de un conjunto de directivas de
compilador, rutinas de biblioteca, y variables de entorno que influyen el comportamiento en
tiempo de ejecución.
Definido juntamente por un grupo de proveedores de hardware y de software mayores,
OpenMP es un modelo de programación portable y escalable que proporciona a los
programadores una interfaz simple y flexible para el desarrollo de aplicaciones paralelas
para
las
plataformas
que
van
desde
las
computadoras
de
escritorio
hasta
las supercomputadoras. Una aplicación construida con un modelo de programación
paralela híbrido se puede ejecutar en un clúster de computadoras utilizando ambos
OpenMP y MPI, o más transparentemente a través de las extensiones de OpenMP para
los sistemas de memoria distribuida.2
Historia
OpenMP es administrado por el consorcio sin fines de lucro Architecture Review Board
tecnología OpenMP, definido conjuntamente por un grupo de los principales proveedores
de hardware y software, incluyendo AMD, IBM, Intel, Cray, HP, Fujitsu, Nvidia, NEC,
Microsoft, Texas Instruments, Oracle Corporation , y más.
The Architecture Review Board OpenMP publicó sus especificaciones API primera,
OpenMP Fortran para la 1.0, en octubre de 1997 - octubre del año siguiente lanzaron el C
4
Facultad de Informática Culiacán
5. 2013
Proyecto Final
Uni versidad Autónoma de Sinaloa
+ + estándar de C /. 2000 vio la versión 2.0 de las especificaciones Fortran con la versión
2.0 de las especificaciones + C/C + ser liberado en 2002 - Versión 2.5 es una
especificación + +/Fortran combinada C/C que fue lanzado en 2005.
La versión 3.0 fue lanzado en mayo de 2008 - Incluido en las nuevas características en 3.0
es el concepto de las tareas y la construcción de tareas. Estas nuevas características se
resumen en el Anexo F de las especificaciones de OpenMP 3.0.
La versión 3.1 de la especificación OpenMP fue publicado el 9 de julio de 2011.
Características
El OpenMP se fundamenta en directivas y cláusulas:
Las directivas especifican que hacer.
Las cláusulas indican cómo hacerlo.
Se añaden como comentarios al código.
Tipos de directivas en OpenMP
Directivas de distribución de trabajo.
Directivas de sincronización de tareas.
Tipos de cláusulas en OpenMP
Cláusula de datos.
Cláusula de comportamiento.
Cláusula de sincronía.
Ventajas de OpenMP
Es sencillo ya que no requiere el envío de mensajes como en MPI.
La descomposición de datos es automática.
Admite la paralelización incremental del código.
Mismo código fuente para las versiones serial y paralela.
Permite implementar granularidad gruesa y fina.
Eleva la portabilidad.
Inconvenientes
Requiere un compilador que entienda OpenMP.
El estándar sólo contempla C y Fortran.
5
Facultad de Informática Culiacán
3
6. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Solo es eficiente en máquinas con memoria compartida
En general la eficiencia paralela es baja.
La escalabilidad está limitada por acceso a la memoria.
Aumentar la eficiencia requiere reestructurar el código.
Detalles generales
Directiva: instrucción de OpenMP que especifica la acción a realizar,
Cláusula: instrucción de OpenMP que impone condiciones a la directiva que le prece de.
Tarea: unidad de ejecución con memora y stack propios.
Región paralela: parte de un programa que es ejecuta por un equipo de tareas que
trabajan conjuntamente.
Región serial: parte de un programa que es ejecutada por una única tarea.
Tarea maestra: tarea que crea a las demás tareas al inicio de una región paralela y cuyo
número de tarea es siempre el 0.
Bloque estructurado: bloque de líneas de código con una única entrada lógica en su parte
superior y una única entrada lógica en su parte superior y una unida salida lógica en su
parte inferior.
Rutina thread-safe: una rutina es thread-safe cuando es capaz de ser utilizada de manera
simultánea e independiente por varias tareas ejecutadas en par alelo.
Race condition: situación no deseable en la que el resultado de un código depende del
orden en el que se ejecutan las tareas.
4
Cláusula de datos
Características generales de estas cláusulas:
Especifican propiedades “paralelas” de las variables.
Pueden aparecen tantas veces como sea necesario.
Pueden usarse con cualquier directiva OpenMP.
6
Facultad de Informática Culiacán
7. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Restricciones
Una variable no puede aparecer en más de una cláusula
Solo admiten variables que sean visibles desde la subrutina o función que incluya
la cláusula.
Cláusula SHARED
Especifica que una variable es compartida por las tareas:
!$OMP PARALLEL SHARED(c,d)
…
!$OMP END PARALLEL
Características de las variables compartidas:
Todas las tareas ven su contenido.
Todas las tareas pueden cambiar su contenido.
Todas las tareas ven los cambios realizados.
Peculiaridades de las variables compartidas:
Los cambios no son inmediatos (cache coherency).
Pueden requerir de sincronía entre tareas.
Existen algunas limitaciones en Fortran.
Cláusula PRIVATE
Especifica que una variable es privada a cada tarea:
!$OMP PARALLEL PRIVATE(a,b)
...
!$OMP END PARALLEL
7
Facultad de Informática Culiacán
8. Proyecto Final
Uni versidad Autónoma de Sinaloa
Características de las variables privadas:
Cada tarea tiene su propia versión de la variable.
Eso se consigue replicando la variable en memoria.
Las otras tareas no pueden ver su contenido.
Peculiaridades de las variables privadas:
Su valor inicial no está definido.
Tras la región paralela su valor tampoco está definido.
Existen algunas limitaciones.
Cláusula DEFAULT
Especifica el comportamiento por defecto:
integer :: a ,b ,c , d
!$OMP PARALLEL DEFAULT(PRIVATE) SHARED(a)
...
!$OMP END PARALLEL
8
Facultad de Informática Culiacán
2013
9. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Características de la cláusula:
Sólo puede aparecer una única vez en cada directiva.
Admite tres opciones: PRIVATE, SHARED y NONE.
Con NONE todas las variables deben ser definidas.
Sólo afecta a las variables directamente visibles:
!$OMP PARALLEL DEFAULT(SHARED)
a=1
b=2
call ejemplo (a ,b )
!$OMP END PARALLEL
Las variables definidas dentro de la subrutina ejemplo no se ven afectadas por la cláusula
DEFAULT.
La cláusula FIRSTPRIVATE
Es una extensión de la cláusula PRIVATE:
a=2
b=1
!$OMP PARALLEL PRIVATE(a) FIRSTPRIVATE(b)
...
!$OMP END PARALLEL
Características de las variables FIRSTPRIVATE:
Cada tarea tiene su propia versión de la variable
Eso se consigue replicando la variable en memoria
Las otras tareas no pueden ver su contenido
Su valor es inicializado con la variable original
9
Facultad de Informática Culiacán
10. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Peculiaridades de las variables FIRSTPRIVATE:
Tras la región paralela su valor no está definido
Existen algunas limitaciones
Cláusulas de datos vistas:
SHARED, PRIVATE, DEFAULT, FIRSTPRIVATE
Cláusulas de datos adicionales:
LASTPRIVATE, REDUCTION, COPYIN, COPYPRIVATE
Condiciones generales a tener en cuenta:
Una variable sólo puede aparecer en una cláusula, salvo en FIRSTPRIVATE y
LASTPRIVATE a la vez
El contador de un bucle siempre es privado
Cada cláusula tiene sus limitaciones
Directivas de distribución de datos
Características de estas directivas:
Distribuyen una carga de trabajo sobre varias tareas
No crean nuevas tareas, usan las ya existentes
Funcionan en regiones seriales y en regiones paralelas
Incluyen al final una sincronización implícita
Restricciones de estas directivas:
Deben ser encontradas por todas las tareas
Sólo pueden contener bloques estructurados de código
La directiva !$OMP DO
Características de la directiva:
Distribuye la carga de un bucle entre las tareas
La descomposición se hace en el espacio de iteraciones
La descomposición es modificable mediante clausulas
El contador es implícitamente declarado PRIVATE
!$OMP DO clause1 clause2 ...
do i = 1 , 1000
...
10
Facultad de Informática Culiacán
11. Proyecto Final
Uni versidad Autónoma de Sinaloa
enddo
!$OMP END DO end_clause
Ejemplo de distribución de carga de un bucle.
!$OMP PARALLEL NUM_T HREADS(10)
!$OMP DO
do i = 1 , 1000
…
enddo
!$OMP END DO
!$OMP END PARALLEL
Restricciones de la directiva !$OMP DO:
En C, el bucle debe ser de un tipo determinado
En Fortran, el bucle no puede ser del tipo do while
El contador debe ser el mismo para todas las tareas
Sólo admite bloques estructurados de código
Las variables SHARED sólo se actualizan al final
La directiva !$OMP SECTIONS
Características de la directiva:
Cada tarea ejecuta una de las secciones
Cada sección es ejecutada una ´única vez
Permite implementar el paralelismo tipo MIMD
!$OMP SECTIONS clause1 clause2 ...
!$OMP SECTION
...
!$OMP SECTION
...
...
!$OMP END SECTIONS end_clause
11
Facultad de Informática Culiacán
2013
12. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Ejemplo de asignación de tareas
!$OMP SECTIONS
!$OMP SECTION
write(*,*) “Hello”
!$OMP SECTION
write(*,*) “Hi”
!$OMP SECTION
write(*,*) “Bye”
!$OMP END SECTIONS
Restricciones de la directiva:
La manera de asignar secciones a tareas no está definida
Cada sección debe ser un bloque estructurado de código
No se crean nuevas tareas, se usan las existentes
Las variables SHARED sólo se actualizan al final
La directiva !$OMP WORKS HARE
Características de la directiva:
Es especifica para Fortran 95
Explota las capacidades paralelas de Fortran 95
Distribuye las instrucciones matriciales entre las tareas
Soporta las siguientes instrucciones matriciales:
matmul, dot product, sum, product, maxval, minval, count,any, all, spread, pack,
unpack, reshape, transpose, eoshift,cshift, minloc, maxloc, forall, where.
Las instrucciones deben comportarse como si estuvieran en una región serial.
!$OMP WORKSHARE
12
Facultad de Informática Culiacán
13. Proyecto Final
Uni versidad Autónoma de Sinaloa
...
!$OMP END WORKSHARE end_clause
Restricciones de la directiva:
La asignación del trabajo a las tareas no está definida
El compilador debe insertar sincronizaciones suficientes para que el
comportamiento sea el correcto
Sólo se pueden hacer llamadas a funciones que sean del tipo elemental
Existen restricciones al uso de variables PRIVATE
Peculiaridad de la directiva:
Las variables SHARED se actualizan constantemente
Ejemplos 5
Hola mundo
#include <omp.h>
int main()
{
int iam =0, np = 1;
#pragma omp parallel private(iam, np)
{
#if defined (_OPENMP)
np = omp_get_num_threads();
iam = omp_get_thread_num();
#endif
printf(“Hello from thread %d out of %d n”,iam,np);
}
}
Ciclo
#include <omp.h>
int main()
{
int iam =0, np = 1, i=0;
#pragma omp parallel private(iam, np,i)
{
#if defined (_OPENMP)
np = omp_get_num_threads();
iam = omp_get_thread_num();
#endif
printf("Hello from thread %d out of %dn",iam,np);
#pragma omp for
for(i=0;i<(np*2);i++)
13
Facultad de Informática Culiacán
2013
14. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
{
printf("Thread %d, contador %d n",iam,i);
}
}
}
Sección
#pragma omp parallel private(iam, np,i)
{
#pragma omp sections
{
#pragma omp section
printf("Soy el thread %d, en solitario en la seccion 1ª n",iam);
#pragma omp section
printf("Soy el thread %d, en solitario en la sección 2ª n",iam);
#pragma omp section
printf("Soy el thread %d, en solitario en la seccion 3ª n",iam);
}//sections
}//parallel
Compilación y ejecución
Para compilar y ejecutar programas con OpenMP use: gcc -fopenmp -0 <ejecutable>
<fuente> donde ejecutable es el nombre del archivo de salida y fuente es el archivo a
compilar o programa fuente con extension .c.
#include <omp.h>
#include <stdio.h>
int main (int argc, char *argv[]) {
int th_id, nthreads;
#pragma omp parallel private(th_id)
{
th_id = omp_get_thread_num();
printf("Hello World from thread %dn", th_id);
#pragma omp barrier
if ( th_id == 0 ) {
nthreads = omp_get_num_threads();
printf("There are %d threadsn",nthreads);
}
}
return 0;
}
Así para compilar este programa llamado hola_openmp.c seria.
[ah.escalante10@uas ~]$ gcc -fopenmp -o hola_openmp hola_openmp.c
14
Facultad de Informática Culiacán
15. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Si se requiere agregar funciones matemáticas agregue la librería con: mpicc -lm -fopenmp
-o <ejecutable> <fuente>.
Ejecución de trabajos con OpenMP. Ejecute el programa de forma normal como cualquier
otro programa hecho en C.
[ah.escalante10@uas ~]$ ./hola_openmp
Hello World from thread 1
Hello World from thread 0
There are 2 threads
Observe que no se está usando algún nodo del Clúster ya que esta autentificado en
gridmorelos.uaem.mx que es el front-end o nodo maestro, para usar los nodos del Clúster
se requiere lanzar los programas uno a uno ya que no es un programa MPI, si por ejemplo
se desea usar un nodo en especifico podría lanzarlo de la siguiente manera, primero
observando los nodos disponibles.
[ah.escalante10@uas ~]$ rocks list host
HOST
Uas
MEMBERSHIP CPUS RACK RANK RUNACT ION INSTALLATION
:
Frontend
2
0
0
os
install
compute-0-0: Compute
2
0
0
os
install
compute-0-1: Compute
2
0
1
os
install
...
Al seleccionar el nodo llamado compute-0-0 el comando seria:
[ah.escalante10@uas ~]$ ssh compute-0-0 ./hola_openmp
Hello World from thread 0
Hello World from thread 1
There are 2 threads
Si requiere lanzar los programas OpenMP a lo largo de todo el Cluster podría implementar
un Script que realice esta misma tarea por cada nodo disponible. 6
15
Facultad de Informática Culiacán
16. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Open MPI
Introducción
OpenMPI (Message Passing Interface) es un proyecto de librería que combin a tecnología y
recursos de otros proyectos (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI). Es utilizado por
muchas supercomputadoras. 7 Se trata de una API de código abierto desarrollada para
facilitar la programación paralela y/o distribuida que:
Implementa el estándar MPI.
Permite la distribución de procesos de forma dinámica.
Alto rendimiento.
Tolerancia a fallos: capacidad de recuperarse de forma transparente de los fallos
de los
componentes (errores en el envío o recepción de mensajes, fallo de un procesador
o
nodo).
Soporta redes hetereogéneas : permite la ejecución de programas en redes cuyos
ordenadores presenten distinto número de nodos y de procesadores.
Una única librería soporta todas las redes.
Portable: funciona en los sistemas operativos Linux, OS-X , Solaris y en un futuro
próximo en Windows.
Modificable por los instaladores y usuarios finales : presenta opciones de
configuración durante la instalación de la API, la compilación de programas y su
ejecución.
8
Historia
Al diseñarse MPI, se tomaron en cuenta las características más atractivas de los sistemas
existentes para el paso de mensajes, en vez de seleccionar uno solo de ellos y adoptarlo
como el estándar, resultando así, en una fuerte influencia para MPI los trabajos hechos por
IBM, INT EL, NX/, Express, nCUBE's Vernex, p4 y PARMACS. Otras contribuciones
importantes provienen de Zipcode, Chimp, PVM, Chameleon y PICL.
El esfuerzo para estandarizar MPI involucró a cerca de 60 personas de 40 organizaciones
diferentes principalmente de EE.UU. y Europa.
16
Facultad de Informática Culiacán
17. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
La mayoría de los vendedores de computadoras concurrentes estaban involucrados con
MPI, así como con investigadores de diferentes universidades, laboratorios del gobierno e
industrias.
El proceso de estandarización comenzó en el taller de estándares para el paso de
mensajes en un ambiente con memoria distribuida, patrocinado por el Centro de
Investigación en Computación Paralela en Williamsburg, Virginia, Estados Unidos (Abril
29-30 de 1992).
Se llegó a una propuesta preliminar conocida como MPI1, enfocada principalmente en
comunicaciones punto a punto sin incluir rutinas para comunicación colectiva y no
presentaba tareas seguras.
El estándar final por el MPI fue presentado en la conferencia de Supercómputo en
noviembre de 1993, constituyéndose así el foro para el MPI.
En un ambiente de comunicación con memoria distribuida en la cual las rutinas de paso de
mensajes de nivel bajo, los beneficios de la estandarización son muy notorios. La principal
ventaja al establecer un estándar para el paso de mensajes es la portabilidad y el ser fácil
de utilizar. MPI-1 apareció en 1994, el estándar MPI-2 fue lanzado en 1997.
Características
Cumple el standar MPI-2
Distribución de procesos de forma dinámica
Alto rendimiento en todas las plataformas
Administración de trabajos rápida y fiable
Tolerancia a fallos de red y procesos
Soporte de redes hetereogéneas
Una única librería soporta todas las redes
Herramientas de Run-time
Muchos planificadores de trabajos soportados
Portable y mantenible
Modificable por los instaladores y usuarios finales
Mensajes de error internacionalizados
PIs documentadas
Lista de correo activa 10
17
Facultad de Informática Culiacán
18. Proyecto Final
Uni versidad Autónoma de Sinaloa
Ejemplos
include <stdio.h>
#include <mpi.h>
int main(int argc, char **argv)
{
int size, rank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("SIZE = %d RANK = %dn",size,rank);
MPI_Finalize();
return(0);
}
Compilación y ejecución
Para compilar utilizamos la siguiente instrucción:
mpic++ your_code_file.c
Ejecución del recién programa compilado
mpirun -np <no. of Processors> ./a.out
18
Facultad de Informática Culiacán
2013
19. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Conclusión
Para empezar no sabíamos que existía la forma de poder desarrollar programas en
paralelo, es decir, que cada procesador se encarga de una tarea específica equivalente a
la que van a realizar los demás procesadores para aprovechar al máximo los recursos de
la computadora. Dicho esto, pareciera que nuestra programación es obsoleta. Sin
embargo, también se le puede considerar un área de oportunidad.
Las dos opciones de API’s aquí mostradas para el desarrollo de programas de computo en
paralelo las considero buenas y fáciles de aprender si se pone entusiasmo.
Aquí el problema mayor que veo más que aprender a utilizar bien estás herramientas es
aprender a desmenuzar las tareas de tal forma que sean equitativas para cada uno de los
procesadores que lo va a ejecutar.
19
Facultad de Informática Culiacán
20. Proyecto Final
Uni versidad Autónoma de Sinaloa
2013
Bibliografía
1. Instituto de Ingeniería – Universidad Autónoma de México
ftp://ftp.iingen.unam.mx/IINGEN/Taller-Super-Computo/jueves24mayo/openmp.pdf
2. Open MP – Wikipedia
http://es.wikipedia.org/wiki/OpenMP
3. Web Academia
http://centrodeartigos.com/articulos-informativos/article_69704.html
4. Universidad Politécnica de Madrid
http://webserver.dmt.upm.es/zope/DMT/Members/hermanns/docencia-ycursos/introduccion-programacion-paralela/Clase_2_Programacion_Paralela_OpenMP.pdf
5. Universidad de Murcia
http://dis.um.es/~domingo/apuntes/PPCAP/1011/PPCAP_1011_OpenMP.pdf
6. Universidad Autónoma del Estado de Morelos
http://www.gridmorelos.uaem.mx/?option=com_content&view=article&id=55&Itemid=71
7. Open MPI – Wikipedia
http://en.wikipedia.org/wiki/Open_MPI
8. Universidad de Murcia
http://dis.um.es/~domingo/apuntes/AlgProPar/0910/exposicion1/MunozPablo -OpenMPI.pdf
9. Computación en paralelo
http://es.wikipedia.org/wiki/Computaci%C3%B3n_paralela
10. MPI – Wikipedia
http://es.wikipedia.org/wiki/Interfaz_de_Paso_de_Mensajes
20
Facultad de Informática Culiacán