Arquitecturas basadas en computación gráfica (GPU)

Save this PDF as:
 WORD  PNG  TXT  JPG

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Arquitecturas basadas en computación gráfica (GPU)"

Transcripción

1 Arquitecturas basadas en computación gráfica (GPU) Francesc Guim Ivan Rodero PID_

2 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Los textos e imágenes publicados en esta obra están sujetos excepto que se indique lo contrario a una licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España de Creative Commons. Podéis copiarlos, distribuirlos y transmitirlos públicamente siempre que citéis el autor y la fuente (FUOC. Fundación para la Universitat Oberta de Catalunya), no hagáis de ellos un uso comercial y ni obra derivada. La licencia completa se puede consultar en licenses/by-nc-nd/3.0/es/legalcode.es

3 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Índice Introducción... 5 Objetivos Introducción a la computación gráfica Pipeline básico Etapas programables del pipeline Interfaces de programación del pipeline gráfico Utilización del pipeline gráfico para computación general Arquitecturas orientadas al procesamiento gráfico Contexto y motivación Visión histórica Características básicas de los sistemas basados en GPU Arquitectura Nvidia GeForce Concepto de arquitectura unificada Arquitecturas orientadas a computación de propósito general sobre GPU (GPGPU) Arquitectura Nvidia Arquitectura AMD (ATI) Arquitectura AMD CU Arquitectura Intel Larrabee Modelos de programación para GPGPU CUDA Arquitectura compatible con CUDA Entorno de programación Modelo de memoria Definición de kernels Organización de flujos OpenCL Modelo de paralelismo a nivel de datos Arquitectura conceptual Modelo de memoria Gestión de kernels y dispositivos Resumen Actividades... 65

4 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Bibliografía... 68

5 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Introducción En este módulo didáctico, vamos a estudiar las arquitecturas basadas en computación gráfica (GPU), que es una de las tendencias en computación paralela con más crecimiento en los últimos años y que goza de gran popularidad, entre otras cuestiones, debido a la buena relación entre las prestaciones que ofrecen y su coste. Primero repasaremos los fundamentos de la computación gráfica para entender los orígenes y las características básicas de las arquitecturas basadas en computación gráfica. Estudiaremos el pipeline gráfico y su evolución desde arquitecturas con elementos especializados hasta los pipelines programables y la arquitectura unificada, que permite la programación de aplicaciones de propósito general con GPU. Veremos las diferencias principales entre CPU y GPU y algunas de las arquitecturas GPU más representativas, poniendo énfasis en cómo pueden ser programados ciertos elementos. Una vez presentadas las arquitecturas orientadas a computación gráfica, nos centraremos en las arquitecturas unificadas modernas que están focalizadas en la programación de aplicaciones de propósito general. Analizaremos las características de las principales arquitecturas relacionadas, como son las de Nvidia, AMD e Intel. Finalmente, estudiaremos CUDA y OpenCL, que son los principales modelos de programación para aplicaciones de propósito general sobre GPU.

6 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Objetivos Los materiales didácticos de este módulo contienen las herramientas necesarias para alcanzar los objetivos siguientes: 1. Conocer los fundamentos de la computación gráfica y las características básicas del pipeline gráfico. 2. Entender las diferencias y similitudes entre las arquitecturas CPU y GPU y conocer las características de las arquitecturas gráficas modernas. 3. Entender la creciente importancia de la programación masivamente paralela y las motivaciones de la computación de propósito general para GPU (GPGPU). 4. Entender las diferencias entre arquitecturas orientadas a gráficos y arquitecturas orientadas a la computación de propósito general. 5. Identificar la necesidad y fuente de paralelismo de datos de las aplicaciones para GPU. 6. Aprender los conceptos fundamentales para programar dispositivos GPU y los conceptos básicos de CUDA y OpenCL.

7 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) 1. Introducción a la computación gráfica En este apartado, vamos a estudiar los fundamentos más básicos de la computación gráfica como paso previo para estudiar las características de las arquitecturas orientadas al procesamiento gráfico Pipeline básico Tradicionalmente, los procesadores gráficos funcionan mediante un pipeline de procesamiento formado por etapas muy especializadas en las funciones que desarrollan y que se ejecutan en un orden preestablecido. Cada una de las etapas del pipeline recibe la salida de la etapa anterior y proporciona su salida a la etapa siguiente. Debido a la implementación mediante una estructura de pipeline, el procesador gráfico puede ejecutar varias operaciones en paralelo. Como este pipeline es específico para la gestión de gráficos, normalmente se denomina pipeline gráfico o pipeline de renderización. La operación de renderización consiste en proyectar una representación en tres dimensiones de una imagen en dos dimensiones (que es el objetivo de un procesador gráfico). La entrada del procesador gráfico es una secuencia de vértices agrupados en primitivas geométricas (polígonos, líneas y puntos), que son tratadas secuencialmente por medio de cuatro etapas básicas, tal como muestra el pipeline simplificado de la figura 1. Figura 1. Pipeline simplificado de un procesador gráfico La etapa de transformación de vértices consiste en la ejecución de una secuencia de operaciones matemáticas sobre los vértices de entrada basándose en la representación 3D proporcionada. Algunas de estas operaciones son la

8 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) actualización de la posición o la rotación de los objetos representados, la generación de coordenadas para poder aplicar texturas o la asignación de color a los vértices. La salida de esta fase es un conjunto de vértices actualizados, uno para cada vértice de entrada. En la etapa deacoplamientodeprimitivasyrasterización, los vértices transformados se agrupan en primitivas geométricas basándose en la información recibida junto con la secuencia inicial de vértices. Como resultado, se obtiene una secuencia de triángulos, líneas y puntos. Estos puntos son posteriormente procesados en una etapa llamada rasterización. La rasterización es un proceso que determina el conjunto de píxeles afectados por una primitiva determinada. Los resultados de la rasterización son conjuntos de localizaciones de píxeles y conjuntos de fragmentos. Un fragmento tiene asociada una localización y también información relativa a su color y brillo o bien a coordenadas de textura. Como norma general, podemos decir que, de un conjunto de tres o más vértices, se obtiene un fragmento. En la etapa de aplicacióndetexturasycoloreado, el conjunto de fragmentos es procesado mediante operaciones de interpolación (predecir valores a partir de la información conocida), operaciones matemáticas, de aplicación de texturas y de determinación del color final de cada fragmento. Como resultado de esta etapa, se obtiene un fragmento actualizado (coloreado) para cada fragmento de entrada. En las últimas etapas del pipeline, se ejecutan operaciones llamadas raster, que se encargan de analizar los fragmentos mediante un conjunto de tests relacionados con aspectos gráficos. Estos tests determinan los valores finales que tomarán los píxeles. Si alguno de estos tests falla, se descarta el píxel correspondiente y, si todos son correctos, finalmente el píxel se escribe en la memoria (framebuffer). La figura 2 muestra las diferentes funcionalidades del pipeline gráfico Figura 2. Resumen de las funcionalidades del pipeline gráfico

9 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) 1.2. Etapas programables del pipeline A pesar de que la tendencia es proporcionar un número más elevado de unidades programables en los procesadores gráficos, las fases que típicamente permiten la programación son las de transformación de vértices y transformación de fragmentos. Tal como muestra la figura 3, estas dos fases permiten programación mediante el procesador de vértices (vertex shader) y el procesador de fragmentos (pixel shader). Figura 3. Pipeline gráfico programable Las etapas de proceso de vértices y de fragmentos pueden ser programadas mediante los procesadores correspondientes. El funcionamiento de un procesador de vértices programable es, en esencia, muy similar al de un procesador de fragmentos. El primer paso consiste en la carga de los atributos asociados a los vértices por analizar. Estos se pueden cargar en registros internos del procesador de vértices mismo. Hay tres tipos de registros: Registros de atributos de vértices, solo de lectura, con información relativa a cada uno de los vértices. Registros temporales, de lectura/escritura, utilizados en cálculos provisionales. Registros de salida, donde se almacenan los nuevos atributos de los vértices transformados que, a continuación, pasarán al procesador de fragmentos. Una vez los atributos se han cargado, el procesador ejecuta de manera secuencial cada una de las instrucciones que componen el programa. Estas instrucciones se encuentran en zonas reservadas de la memoria de vídeo.

10 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Uno de los principales inconvenientes de estos tipos de procesadores programables es la limitación del conjunto de instrucciones que son capaces de ejecutar. Las operaciones que los procesadores de vértices tienen que poder hacer incluyen básicamente: Operaciones matemáticas en coma flotante sobre vectores (ADD, MULT, mínimo, máximo, entre otros). Operaciones con hardware para la negación de vectores y swizzling (indexación de valores cuando se cargan de memoria). Exponenciales, logarítmicas y trigonométricas. Los procesadores gráficos modernos soportan también operaciones de control de flujo que permiten la implementación de bucles y construcciones condicionales. Este tipo de procesadores gráficos dispone de procesadores de vértices totalmente programables que funcionan o bien en modalidad SIMD o bien en modalidad MIMD sobre los vértices de entrada. Los procesadores de fragmentos programables requieren muchas de las operaciones matemáticas que exigen los procesadores de vértices, pero añaden operaciones sobre texturas. Este tipo de operaciones facilita el acceso a imágenes (texturas) mediante el uso de un conjunto de coordenadas para devolver a continuación la muestra leída tras un proceso de filtrado. Este tipo de procesadores solo funciona en modalidad SIMD sobre los elementos de entrada. Otra característica de estos procesadores es que pueden acceder en modalidad de lectura a otras posiciones de la textura (que corresponderán a un flujo con datos de entrada diferentes). La figura 4 muestra el funcionamiento esquemático de uno de estos procesadores.

11 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Figura 4. Esquema del funcionamiento de un procesador de fragmentos 1.3. Interfaces de programación del pipeline gráfico Para programar el pipeline de un procesador gráfico de forma eficaz, los programadores necesitan bibliotecas gráficas que ofrezcan las funcionalidades básicas para especificar los objetos y las operaciones necesarias para producir aplicaciones interactivas con gráficos en tres dimensiones. OpenGL es una de las interfaces más populares. OpenGL está diseñada de manera completamente independiente al hardware para permitir implementaciones en varias plataformas. Esto hace que sea muy portátil, pero no incluye instrucciones para la gestión de ventanas o la gestión de acontecimien-

12 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) tos de usuario, entre otros. Las operaciones que se pueden llevar a cabo con OpenGL son principalmente las siguientes (y normalmente también en el orden siguiente): Modelar figuras a partir de primitivas básicas, que crean descripciones geométricas de los objetos (puntos, líneas, polígonos, fotografías y mapas de bits). Situar los objetos en el espacio tridimensional de la escena y seleccionar la perspectiva desde la que los queremos observar. Calcular el color de todos los objetos. El color se puede asignar explícitamente para cada píxel o bien se puede calcular a partir de las condiciones de iluminación o a partir de las texturas. Convertir la descripción matemática de los objetos y la información de color asociada a un conjunto de píxeles que se mostrarán por pantalla. Aparte de estas operaciones básicas, OpenGL también desarrolla otras operaciones más complejas como, por ejemplo, la eliminación de partes de objetos que quedan ocultas tras otros objetos de la escena. Dada la versatilidad de OpenGL, un programa en OpenGL puede llegar a ser bastante complejo. En términos generales, la estructura básica de un programa en OpenGL consta de las partes siguientes: Inicializar ciertos estados que controlan el proceso de renderización. Especificar qué objetos se tienen que visualizar mediante su geometría y sus propiedades externas. El código 1.1 muestra un programa muy sencillo en OpenGL. En concreto, el código del ejemplo genera un cuadro blanco sobre un fondo negro. Como se trabaja en dos dimensiones, no se utiliza ninguna operación para situar la perspectiva del observador en el espacio 3D. La primera función abre una ventana en la pantalla. Esta función no pertenece realmente a OpenGL y, por lo tanto, la implementación depende del gestor de ventanas concreto que se utilice. Las funciones glcleancolor establecen el color actual y glclear borra la pantalla con el color indicado previamente con glcleancolor. La función glcolor3f establece qué color se utilizará para dibujar objetos a partir de aquel momento. En el ejemplo, se trata del color blanco (1.0, 1.0, 1.0). A continuación, mediante glortho se especifica el sistema de coordenadas 3D que se quiere utilizar para dibujar la escena y cómo se hace el mapeo en pantalla. Después de las funciones glbegin y glend, se define la geometría del objeto. En el ejemplo, se definen dos objetos (que aparecerán en la escena)

13 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) mediante glvertex2f. En este caso, se utilizan coordenadas en dos dimensiones, puesto que la figura que se quiere representar es un plano. Finalmente, la función glflush asegura que las instrucciones anteriores se ejecuten. #include <GL/gl.h> #include <GL/glu.h> void main () { OpenMainWindow (); glclearcolor (0.0, 0.0, 0.0, 0.0); glclear (GL_COLOR_BUFFER_BIT); glcolor3f (1.0, 1.0, 1.0); glortho (-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); glbegin (GL_POLYGON); glvertice2f (-0.5, -0.5); glvertice2f (-0.5, 0.5); glvertice2f ( 0.5, 0.5); glvertice2f ( 0.5, -0.5); glend (); glflush (); } Código 1.1. Ejemplo de código en OpenGL La alternativa directa a OpenGL es Direct3D, que fue presentado en 1995 y finalmente se convirtió en el principal competidor de OpenGL. Direct3D ofrece un conjunto de servicios gráficos 3D en tiempo real que se encarga de toda la renderización basada en software-hardware de todo el pipeline gráfico (transformaciones, iluminación y rasterización) y del acceso transparente al dispositivo. Direct3D es completamente escalable y permite que todo o una parte del pipeline gráfico se pueda acelerar por hardware. Direct3D también expone las capacidades más complejas de las GPU como por ejemplo z-buffering, anti-aliasing, alfa blending, mipmapping, efectos atmosféricos y aplicación de texturas mediante corrección de perspectiva. La integración con otras tecnologías de DirectX permite a Direct3D tener otras características, como las relacionadas con el vídeo, y proporcionar capacidades de gráficos 2D y 3D en aplicaciones multimedia. Direct3D también tiene un nivel de complejidad bastante elevado. A modo de ejemplo, el código 1.2 muestra cómo podemos definir un cuadrado con Direct3D. Como Direct3D no dispone de ninguna primitiva para cuadrados, como en el caso de OpenGL, se tiene que definir con una secuencia de dos triángulos. Así pues, los tres primeros vértices forman un triángulo y después el resto de vértices añade otro triángulo formado por este vértice y los dos vértices anteriores. Por lo tanto, para dibujar un cuadrado, necesitamos definir cuatro vértices, que corresponden a dos triángulos.

14 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Vertice vertices_cuadrado[] ={ // x, y, z, rhw, color { 250.0f, 200.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255,255,0) }, { 250.0f, 50.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255,0,255) }, { 400.0f, 200.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0,255,255) }, { 400.0f, 50.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255,255,255) } }; Código 1.2. Ejemplo de código en Direct3D para dibujar un cuadrado Otras alternativas de interfaces de programación del pipeline gráfico son SDL (simple direct media layer), Allegro y Render Ware Utilización del pipeline gráfico para computación general Más adelante, veremos que podemos utilizar los procesadores gráficos para hacer computación general. A la hora de adaptar las funcionalidades de los procesadores gráficos a la computación general, parece que la mejor opción es utilizar los procesadores de fragmentos por los tres motivos siguientes: 1) En un procesador gráfico, normalmente hay más procesadores de fragmentos que procesadores de vértices. Este hecho ha sido cierto hasta la aparición de las arquitecturas unificadas, que fusionan los dos tipos de procesadores en un único modelo de procesador capaz de tratar tanto vértices como fragmentos. 2) Los procesadores de fragmentos soportan operaciones de lectura de datos procedentes de texturas (a pesar de que los últimos procesadores gráficos también tienen esta capacidad en la etapa de procesamiento sobre procesadores de vértices). Las texturas tienen un papel determinante a la hora de trabajar con conjuntos de datos (vectores y matrices) en procesadores gráficos. 3) Cuando se procesa un fragmento, el resultado se almacena directamente en la memoria y, por lo tanto, se puede reaprovechar directamente para ser procesado otra vez como un nuevo flujo de datos. En cambio, en el caso de los procesadores de vértices, el resultado obtenido de la computación tiene que pasar todavía por etapas de rasterización y procesamiento de fragmento antes de llegar a la memoria, cosa que hace más complicado utilizarlo para computación de propósito general. La única forma que tienen los procesadores de fragmentos de acceder a la memoria es mediante las texturas. La unidad de texturas que hay en cualquier procesador gráfico ejerce el papel de interfaz solo de lectura en memoria. Cuando el procesador gráfico genera una imagen, puede haber dos opciones: Escribir la imagen en memoria (framebuffer), de forma que la imagen se muestre por pantalla. Escribir la imagen en la memoria de textura. Esta técnica se denomina render-to-buffer y resulta imprescindible en computación general (tal como veremos más adelante), ya que es el único mecanismo para implementar de

15 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) forma sencilla una realimentación entre los datos de salida de un proceso con la entrada del proceso posterior sin pasar por la memoria principal del sistema (que implicaría una transferencia de los datos bastante costosa). A pesar de disponer de interfaces tanto de lectura como de escritura en memoria, hay que tener en cuenta que los procesadores de fragmentos pueden leer sobre memoria un número de veces ilimitado durante la ejecución de un programa, pero solo pueden hacer una única escritura al finalizar la ejecución. Por lo tanto, será muy difícil utilizar el pipeline tradicional programable para ejecutar programas de propósito general de manera eficiente.

16 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) 2. Arquitecturas orientadas al procesamiento gráfico En este apartado, vamos a estudiar las motivaciones y los factores de éxito del desarrollo de arquitecturas basadas en computación gráfica, las características básicas de estas arquitecturas y el caso particular de la arquitectura Nvidia orientada a gráficos como caso de uso. Finalmente, vamos a analizar las posibilidades y limitaciones para poder ser utilizadas para computación de propósito general Contexto y motivación Durante las últimas décadas, uno de los métodos más relevantes para mejorar el rendimiento de los computadores ha sido el aumento de la velocidad del reloj del procesador. Sin embargo, los fabricantes se vieron obligados a buscar alternativas a este método debido a varios factores como, por ejemplo: Limitaciones fundamentales en la fabricación de circuitos integrados como, por ejemplo, el límite físico de integración de transistores. Restricciones de energía y calor debidas, por ejemplo, a los límites de la tecnología CMOS y a la elevada densidad de potencia eléctrica. Limitaciones en el nivel de paralelismo a nivel de instrucción (instruction level parallelism). Esto implica que, haciendo el pipeline cada vez más grande, se puede acabar obteniendo peor rendimiento. La solución que la industria adoptó fue el desarrollo de procesadores con múltiples núcleos que se centran en el rendimiento de ejecución de aplicaciones paralelas en contra de programas secuenciales. Así pues, en los últimos años se ha producido un cambio muy significativo en el sector de la computación paralela. En la actualidad, casi todos los ordenadores de consumo incorporan procesadores multinúcleo. Desde la incorporación de los procesadores multinúcleo en dispositivos cotidianos, desde procesadores duales para dispositivos móviles hasta procesadores con más de una docena de núcleos para servidores y estaciones de trabajo, la computación paralela ha dejado de ser exclusiva de supercomputadores y sistemas de altas prestaciones. Así, estos dispositivos proporcionan funcionalidades más sofisticadas que sus predecesores mediante computación paralela. En paralelo, durante los últimos años, la demanda por parte de los usuarios de gran potencia de cálculo en el ámbito de la generación de gráficos tridimensionales ha provocado una rápida evolución del hardware dedicado a la computación gráfica o GPU (graphics processing unit).

17 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) 2.2. Visión histórica A finales de la década de 1980 y principios de la de 1990 hubo un aumento muy importante de la popularidad de los sistemas operativos con interfaces gráficas, como Microsoft Windows, que empezó a acaparar gran parte del mercado. A principios de la década de 1990, se empezaron a popularizar los dispositivos aceleradores para 2D orientados a computadoras personales. Estos aceleradores apoyaban al sistema operativo gráfico ejecutando operaciones sobre mapas de bits directamente con hardware. A la vez que se producía esta evolución en la informática de masas, en el mundo de la computación profesional la empresa Silicon Graphics dedicó muchos esfuerzos durante la década de 1980 a desarrollar soluciones orientadas a gráficos tridimensionales. Silicon Graphics popularizó el uso de tecnologías para 3D en diferentes sectores como el gubernamental, de defensa y la visualización científica y técnica, además de proporcionar herramientas para crear efectos cinematográficos nunca vistos hasta aquel momento. En 1992, Silicon Graphics abrió la interfaz de programación de su hardware por medio de la biblioteca OpenGL con el objetivo de que OpenGL se convirtiera en el estándar para escribir aplicaciones gráficas 3D independientemente de la plataforma utilizada. A mediados de la década de 1990, la demanda de gráficos 3D por parte de los usuarios aumentó vertiginosamente a partir de la aparición de juegos inmersivos en primera persona, como Doom, Duke Nukem 3D o Quake, que acercaban al sector de los videojuegos para ordenadores personales entornos 3D cada vez más realistas. Al mismo tiempo, empresas como Nvidia, ATI Technologies y 3dfx Interactive empezaron a comercializar aceleradores gráficos que eran suficientemente económicos para los mercados de gran consumo. Estos primeros desarrollos representaron el principio de una nueva era de gráficos 3D que ha llevado a una constante progresión en las prestaciones y capacidad computacional del procesamiento gráfico. La aparición de la Nvidia GeForce 256 representó un impulso importante para abrir todavía más el mercado del hardware gráfico. Por primera vez, un procesador gráfico era capaz de entablar operaciones de transformación e iluminación directamente en el procesador gráfico y mejoraba así las posibilidades de desarrollar aplicaciones mucho más interesantes desde un punto de vista visual. Como las transformaciones y la iluminación ya eran parte del pipeline de OpenGL, la GeForce 256 marcó el comienzo de una progresión natural hacia dispositivos capaces de implementar cada vez más etapas del pipeline gráfico directamente en el procesador gráfico. Desde el punto de vista de la computación paralela, la aparición de la GeForce 3 de Nvidia en el 2001 representó seguramente el cambio más significativo en la tecnología GPU hasta aquel momento. La serie GeForce 3 fue el primer chip del sector en implementar el que entonces era el nuevo estándar DirectX8.0. El

18 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) hardware compatible con este estándar disponía de etapas programables tanto para el procesamiento de vértices como para el procesamiento de fragmentos. Así pues, por primera vez, los desarrolladores tuvieron un cierto control sobre los cálculos que se podían desarrollar en las GPU. Desde el punto de vista arquitectural, las primeras generaciones de GPU tenían una cantidad de núcleos bastante reducida, pero rápidamente se incrementó hasta hoy en día, cuando hablamos de dispositivos de tipo many-core con centenares de núcleos en un único chip. Este aumento de la cantidad de núcleos hizo que en el 2003 hubiera un salto importante de la capacidad de cálculo en coma flotante de las GPU respecto a las CPU, tal como muestra la figura 5. Esta figura muestra la evolución del rendimiento en coma flotante (pico teórico) de la tecnología basada en CPU (Intel) y GPU (Nvidia) durante la última década. Se puede apreciar claramente que las GPU van mucho más por delante que las CPU respecto a la mejora de rendimiento, en especial a partir del 2009, cuando la relación era aproximadamente de 10 a 1. Figura 5. Comparativa de rendimiento (pico teórico) entre tecnologías CPU y GPU Las diferencias tan grandes entre el rendimiento de CPU y GPU multinúcleo se deben principalmente a una cuestión de filosofía de diseño. Mientras que las GPU están pensadas para explotar el paralelismo a nivel de datos con el paralelismo masivo y una lógica bastante simple, el diseño de una CPU está optimizado para la ejecución eficiente de código secuencial. Las CPU utilizan lógica de control sofisticada que permite un paralelismo a nivel de instrucción y fuera de orden y utilizan memorias caché bastante grandes para reducir el tiempo de acceso a los datos en memoria. También hay otras cuestiones, como el consumo eléctrico o el ancho de banda de acceso a la memoria. Las GPU actuales tienen anchos de banda a memoria en torno a diez veces superiores

19 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) a los de las CPU, entre otras cosas porque las CPU deben satisfacer requisitos heredados de los sistemas operativos, de las aplicaciones o dispositivos de entrada/salida. También ha habido una evolución muy rápida desde el punto de vista de la programación de las GPU que ha hecho cambiar el propósito de estos dispositivos. Las GPU de principios de la década del 2000 utilizaban unidades aritméticas programables (shaders) para devolver el color de cada píxel de la pantalla. Como las operaciones aritméticas que se aplicaban a los colores de entrada y texturas las podía controlar completamente el programador, los investigadores observaron que los colores de entrada podían ser cualquier tipo de dato. Así pues, si los datos de entrada eran datos numéricos que tenían algún significado más allá de un color, los programadores podían ejecutar cualquiera de los cálculos que necesitaran sobre esos datos mediante los shaders. A pesar de las limitaciones que tenían los programadores para desarrollar aplicaciones sobre GPU (por ejemplo, escribir resultados en cualquier dirección de memoria), el alto rendimiento con operaciones aritméticas hizo que se dedicaran muchos esfuerzos a desarrollar interfaces y entornos de programación de aplicaciones de propósito general para GPU. Algunas de estas interfaces de programación han tenido mucha aceptación en varios sectores, a pesar de que su uso todavía requiere de una cierta especialización Características básicas de los sistemas basados en GPU Tal como se ha indicado, la filosofía de diseño de las GPU está influida por la industria del videojuego, que ejerce una gran presión económica para mejorar la capacidad de realizar una gran cantidad de cálculos en coma flotante para procesamiento gráfico. Esta demanda hace que los fabricantes de GPU busquen formas de maximizar el área del chip y la cantidad de energía dedicada a los cálculos en coma flotante. Para optimizar el rendimiento de este tipo de cálculos, se ha optado por explotar un número masivo de flujos de ejecución. La estrategia consiste en explotar estos flujos de tal manera que, mientras que unos están en espera para el acceso a memoria, el resto pueda seguir ejecutando una tarea pendiente. Tal como se muestra en la figura 6, en este modelo se requiere menos lógica de control para cada flujo de ejecución. Al mismo tiempo, se dispone de una pequeña memoria caché que permite que flujos que comparten memoria tengan el ancho de banda suficiente para no tener que ir todos a la DRAM. En consecuencia, mucha más área del chip se dedica al procesamiento de datos en coma flotante.

20 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Figura 6. Comparativa de la superficie dedicada típicamente a computación, memoria y lógica de control para CPU y GPU Tal como veremos en detalle más adelante, además de disponer de muchos flujos de ejecución dispuestos en núcleos más sencillos que los de las CPU, otras características básicas de las arquitecturas GPU son las siguientes: Siguen el modelo SIMD (una instrucción con múltiples datos). Todos los núcleos ejecutan a la vez una misma instrucción; por lo tanto, solo se necesita descodificar la instrucción una única vez para todos los núcleos. La velocidad de ejecución se basa en la explotación de la localidad de los datos, tanto la localidad temporal (cuando accedemos a un dato, es probable que se vuelva a utilizar el mismo dato en un futuro cercano) como la localidad espacial (cuando accedemos a una fecha, es muy probable que se utilicen datos adyacentes a los ya utilizados en un futuro cercano y, por eso, se utilizan memorias caché que guardan varios datos en una línea del tamaño del bus). La memoria de una GPU se organiza en varios tipos de memoria (local, global, constante y textura), que tienen diferentes tamaños, tiempos de acceso y modos de acceso (por ejemplo, solo lectura o lectura/escritura). El ancho de banda de la memoria es mayor. En un sistema que dispone de una o de múltiples GPU, normalmente las GPU son vistas como dispositivos externos a la CPU (que puede ser multinúcleo o incluso un multiprocesador), que se encuentra en la placa base del computador, tal como muestra la figura 7. La comunicación entre CPU y GPU se lleva a cabo por medio de un puerto dedicado. En la actualidad, el PCI Express o PCIe (peripheral component interconnect express) es el estándar para ejecutar esta comunicación.

21 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Figura 7. Interconexión entre CPU y GPU mediante PCIe Otro puerto de comunicación muy extendido es el AGP (accelerated graphics port), que se desarrolló durante la última etapa de la pasada década en respuesta a la necesidad de velocidades de transferencia más elevadas entre CPU y GPU, debido a la mejora de las prestaciones de los procesadores gráficos. El AGP es un puerto paralelo de 32 bits con acceso directo al NorthBridge del sistema (que controla el funcionamiento del bus de interconexión de varios elementos cruciales como la CPU o la memoria) y, por lo tanto, permite utilizar parte de la memoria principal como memoria de vídeo. La velocidad de transferencia de datos varía entre los 264 MB/s y los 2 GB/s (para AGP 8x), en función de la generación de AGP. A pesar del aumento en la velocidad de transferencia de datos en las subsiguientes generaciones de AGP, estas no son suficientes para dispositivos gráficos de última generación. Por este motivo, en el 2004 se publicó el estándar PCIe. El PCIe es un desarrollo del puerto PCI que, a diferencia del AGP, utiliza una comunicación en serie en lugar de ser en paralelo. Con el PCIe, se puede llegar a velocidades de transferencia de datos mucho más elevadas, que llegan a estar en torno a algunos GB/s. Por ejemplo, en la versión 3.0 del PCIe, el máximo teórico es de 16 GB/s direccionales y 32 GB/s bidireccionales. Debido a la organización de las GPU respecto a la CPU, hay que tener en cuenta que una GPU no puede acceder directamente a la memoria principal y que una CPU no puede acceder directamente a la memoria de una GPU. Por lo tanto, habráquecopiarlosdatosentrecpuygpudemaneraexplícita (en ambos sentidos). Como consecuencia, por ejemplo, no se puede usar printf en el código que se ejecuta en una GPU y, en general, el proceso de depuración en GPU suele ser bastante pesado.

22 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) 2.4. Arquitectura Nvidia GeForce Comercialmente, Nvidia ofrece diferentes productos, divididos en las tres familias principales siguientes: GeForce: orientada al gran mercado de consumo multimedia (videojuegos, edición de vídeo, fotografía digital, entre otros). Cuadro: orientada a soluciones profesionales que requieren modelos 3D, como los sectores de la ingeniería o la arquitectura. Tesla: orientada a la computación de altas prestaciones, como el procesamiento de información sísmica, simulaciones de bioquímica, modelos meteorológicos y de cambio climático, computación financiera o análisis de datos. En este subapartado, vamos a utilizar la serie Nvidia GeForce 6 como caso de uso de GPU pensada para tratamiento de gráficos. A pesar de no ser la arquitectura más actual, nos servirá para estudiar mejor las diferencias con las arquitecturas orientadas a computación de propósito general y a entender mejor la evolución de las arquitecturas de GPU. También podemos encontrar arquitecturas parecidas de otros fabricantes, como la ATI (actualmente AMD). La figura 8 muestra de modo esquemático los bloques principales que forman la arquitectura GeForce6 de Nvidia.

23 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Figura 8. Esquema de la arquitectura de la GPU GeForce 6 de Nvidia La CPU (host en la figura) envía a la unidad gráfica tres tipos de datos: instrucciones, texturas y vértices. Los procesadores de vértices son los encargados de aplicar un programa específico que se dedica a ejecutar las transformaciones sobre cada uno de los vértices de entrada. La serie GeForce 6 fue la primera que permitía que un programa ejecutado en el procesador de vértices fuera capaz de consultar datos de textura. Todas las operaciones se llevan a cabo con una precisión de 32 bits en coma flotante (fp32). El número de procesadores de vértices disponibles es variable en función del modelo de procesador, a pesar de que suele estar entre dos y dieciséis. Como los procesadores de vértices son capaces de realizar lecturas de la memoria de texturas, cada uno tiene conexión a la memoria caché de texturas, tal como muestra la figura 9. Además, hay otra memoria caché (de vértices) que almacena datos relativos a vértices antes y después de haber sido procesados por el procesador de vértices.

24 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Los vértices se agrupan seguidamente en primitivas (puntos, líneas o triángulos). El bloque etiquetado en la figura como CULL/CLIP/SETUP ejecuta operaciones específicas para cada primitiva, que elimina, transforma o prepara para la etapa de rasterización. El bloque funcional dedicado a la rasterización calcula qué píxeles son afectados por cada primitiva y hace uso del bloque Z-CULL para descartar píxeles. Una vez ejecutadas estas operaciones, los fragmentos pueden ser vistos como candidatos a píxeles y pueden ser transformados por el procesador de fragmentos. Figura 9. Esquema del procesador de vértices de la serie GeForce 6 de Nvidia La figura 10 muestra la arquitectura de los procesadores de fragmentos típicos de la serie GeForce 6 de Nvidia. Los procesadores de fragmentos se dividen en dos partes: la unidad de textura, que está dedicada al trabajo con texturas, y la unidad de procesamiento de fragmentos, que opera, con ayuda de la unidad de texturas, sobre cada uno de los fragmentos de entrada. Las dos unidades operan de forma simultánea para aplicar un mismo programa (shader) a cada uno de los fragmentos de manera independiente.

25 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Figura 10. Esquema del procesador de fragmentos de la serie GeForce 6 de Nvidia De modo similar a lo que pasaría con los procesadores de vértices, los datos de textura se pueden almacenar en memorias caché en el chip mismo con el fin de reducir el ancho de banda en la memoria y aumentar así el rendimiento del sistema. El procesador de fragmentos utiliza la unidad de texturas para cargar datos desde la memoria (y, opcionalmente, filtrar los fragmentos antes de ser recibidos por el procesador de fragmentos mismo). La unidad de texturas soporta gran cantidad de formatos de datos y de tipos de filtrado, a pesar de que todos los datos son devueltos al procesador de fragmentos en formato fp32 o fp16. Los procesadores de fragmentos poseen dos unidades de procesamiento que operan con una precisión de 32 bits (unidades de shader en la figura). Los fragmentos circulan por las dos unidades de shader y por la unidad de saltos antes de ser encaminados de nuevo hacia las unidades de shader para seguir ejecutando las operaciones. Este reencaminamiento sucede una vez por cada ciclo de reloj. En general, es posible llevar a cabo un mínimo de ocho operaciones matemáticas en el procesador de fragmentos por ciclo de reloj o cuatro en el supuesto de que se produzca una lectura de datos de textura en la primera unidad de shader. Para reducir costes de fabricación, la memoria del sistema se divide en cuatro particiones independientes, cada una construida a partir de memorias dinámicas (DRAM). Todos los datos procesados por el pipeline gráfico se almacenan en memoria DRAM, mientras que las texturas y los datos de entrada (vértices) se pueden almacenar tanto en la memoria DRAM como en la memoria principal del sistema. Estas cuatro particiones de memoria proporcionan un subsistema de memoria de bastante anchura (256 bits) y flexible, que logra velocidades de transferencia cercanas a los 35 GB/s (para memorias DDR con velocidad de reloj de 550 Mhz, 256 bits por ciclo de reloj y dos transferencias por ciclo).

26 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Por lo tanto, comparando la implementación hecha por esta serie de procesadores (muy similar a otras series de la misma generación), es posible identificar qué unidades funcionales se corresponden con cada una de las etapas del pipeline gráfico. Este tipo de implementaciones han sido las más extendidas hasta la aparición de la última generación de GPU, que se basan en una arquitectura unificada y no establecen ninguna diferenciación entre las diferentes etapas del flujo de procesamiento a nivel de hardware Concepto de arquitectura unificada La arquitectura de la serie GeForce 6 estudiada con anterioridad se podría definir como una arquitectura dividida a nivel de shaders o procesadores programables. Esto quiere decir que dispone de un hardware especializado para ejecutar programas que operan sobre vértices y otro dedicado exclusivamente a la ejecución sobre fragmentos. A pesar de que el hardware dedicado se puede adaptar bastante bien a su función, hay ciertos inconvenientes que hacen que se haya optado por arquitecturas totalmente diferentes a la hora de desarrollar una nueva generación de procesadores gráficos, basados en una arquitectura unificada. Las arquitecturas anteriores (no unificadas) tenían problemas importantes cuando la carga de trabajo de procesamiento de vértices y de procesamiento de fragmentos de las aplicaciones gráficas que ejecutaban no estaba balanceada. Como normalmente las GPU tienen menos unidad de procesamiento de vértices que de fragmentos, el problema se agravaba cuando la cantidad de trabajo sobre vértices era predominante, puesto que en ese caso las unidades de vértices quedaban totalmente ocupadas, mientras que muchas unidades de fragmentos podían quedar desaprovechadas. Del mismo modo, cuando la carga es principalmente sobre fragmentos, también se puede producir un desperdicio de recursos. La figura 11 muestra la ejecución de dos aplicaciones no balanceadas y cómo la arquitectura unificada puede ofrecer una solución más eficiente.

27 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) Figura 11. Comparativa de la asignación de procesadores de una GPU en el procesamiento de vértices y de fragmentos en arquitecturas unificadas y no unificadas, para diferentes tipos de aplicaciones La arquitectura unificada permite ejecutar más computación simultánea y mejorar la utilización de los recursos. La solución que se desarrolló a partir de la serie G80 de Nvidia o la R600 de ATI (actualmente AMD) fue crear arquitecturas unificadas a nivel de shaders. En este tipo de arquitecturas, no existe la división a nivel de hardware entre procesadores de vértices y procesadores de fragmentos. Cualquier unidad de procesamiento que las forma (denominadas también stream processors) es capaz de trabajar tanto a nivel de vértice como a nivel de fragmento, sin estar especializada en un tipo en concreto. Este cambio en la arquitectura también comporta un cambio importante en el pipeline gráfico. Con arquitecturas unificadas, no hay partes específicas del chip asociadas a una etapa concreta del pipeline, sino que un único tipo de unidad es el encargado de ejecutar todas las operaciones, sea cual sea su naturaleza. Una de las ventajas de este tipo de arquitecturas es el balanceo implícito de la carga computacional. El conjunto de procesadores se puede asignar a una tarea o a otra, dependiendo de la carga que el programa exija a nivel de un determinado tipo de procesamiento. Así pues, la arquitectura unificada puede solucionar el problema de balanceo de la carga y asignación de unidades de procesamiento en cada etapa del pipeline gráfico pero, como contrapartida, los procesadores que forman la GPU son más complejos, puesto que son más genéricos. Este tipo de arquitecturas ofrece un potencial mucho mayor para hacer computación de propósito general. En el apartado siguiente, vamos a ver cómo podemos programar aplicaciones de propósito general en este tipo de dispositivos y también vamos a estudiar varias arquitecturas GPU orientadas a la computación de propósito general.

28 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) 3. Arquitecturas orientadas a computación de propósito general sobre GPU (GPGPU) En este apartado, vamos a estudiar cómo los procesadores gráficos pueden ser utilizados para ejecutar aplicaciones que tradicionalmente son ejecutadas en CPU, vamos a ver cuáles son los tipos de aplicaciones adecuados para computación gráfica y, finalmente, vamos a estudiar algunas de las principales arquitecturas GPU orientadas a computación de propósito general. Tal como ya hemos visto, la capacidad de cálculo de una GPU actual es más elevada que la de las CPU más avanzadas para ejecutar ciertas tareas. Esto ha hecho que este tipo de dispositivos se estén volviendo muy populares para el cómputo de algoritmos de propósito general y no solamente para la generación de gráficos. La computación de propósito general sobre GPU se conoce popularmente como GPGPU (general-purpose computing on graphics processing unit). Además del nivel de paralelismo masivo y del alto rendimiento que proporcionan las plataformas GPU, hay que destacar que estos dispositivos ofrecen una muy buena relación entre el precio y las prestaciones, factores esenciales para que los fabricantes hayan apostado fuertemente por esta tecnología. Aun así, las GPU proporcionan rendimientos muy elevados solo para ciertas aplicaciones debido a sus características arquitecturales y de funcionamiento. De modo general, podemos decir que las aplicaciones que pueden aprovechar mejor las capacidades de las GPU son aquellas que cumplen las dos condiciones siguientes: trabajan sobre vectores de datos grandes; tienen un paralelismo de grano fino tipo SIMD. Existen varios dominios en los que la introducción de la GPGPU ha proporcionado una gran mejora en términos de speedup de la ejecución de las aplicaciones asociadas. Entre las aplicaciones que se pueden adaptar eficientemente a la GPU, podemos destacar el álgebra lineal, el procesamiento de imágenes, algoritmos de ordenación y búsqueda, procesamiento de consultas sobre bases de datos, análisis de finanzas, mecánica de fluidos computacional o predicción meteorológica. Uno de los principales inconvenientes a la hora de trabajar con GPU es la dificultad para el programador a la hora de transformar programas diseñados para CPU tradicionales en programas que puedan ser ejecutados de manera eficiente en una GPU. Por este motivo, se han desarrollado modelos de progra-

29 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) mación, ya sean de propiedad (CUDA) o abiertos (OpenCL), que proporcionan al programador un nivel de abstracción más cercano a la programación para CPU, que le simplifican considerablemente su tarea. A pesar de que los programadores pueden ver reducida la complejidad de la programación de GPGPU mediante estas abstracciones, vamos a analizar los principales fundamentos de la programación GPGPU antes de ver las arquitecturas sobre las que se ejecutarán los programas desarrollados. El principal argumento del modelo GPGPU es la utilización del procesador de fragmentos (o pixel shader) como unidad de cómputo. También hay que tener en cuenta que la entrada/salida es limitada: se pueden hacer lecturas arbitrariamente, pero hay restricciones para las escrituras (por ejemplo, en las texturas). Para comprender cómo las aplicaciones de propósito general se pueden ejecutar en una GPU, podemos hacer una serie de analogías entre GPU y CPU. Entre estas, podemos destacar las que estudiaremos a continuación. Hay dos estructuras de datos fundamentales en las GPU para representar conjuntos de elementos del mismo tipo: las texturas y los vectores de vértices. Como los procesadores de fragmentos son los más utilizados, podemos establecer un símil entre los vectores de datos en CPU y las texturas en GPU. La memoria de texturas es la única memoria accesible de manera aleatoria desde programas de fragmentos o de vértices. Cualquier vértice, fragmento o flujo al que se tenga que acceder de forma aleatoria se tiene que transformar primero en textura. Las texturas pueden ser leídas o escritas tanto por la CPU como por la GPU. Podemos establecer un símil entre la lectura de memoria en CPU y la lectura de texturas en GPU. En el caso de la GPU, la escritura se hace mediante el proceso de renderización sobre una textura o bien copiando los datos del framebuffer a la memoria de textura. Desde el punto de vista de las estructuras de datos, las texturas son declaradas como conjuntos de datos organizados en una, dos o tres dimensiones, y se accede a cada uno de sus elementos mediante direcciones de una, dos o tres dimensiones, respectivamente. La manera más habitual de ejecutar la transformación entre vectores (o matrices) y texturas es mediante la creación de texturas bidimensionales. En la mayoría de aplicaciones, en especial en las científicas, el problema se suele dividir en diferentes etapas, cuyas entradas dependen de las salidas de etapas anteriores. Estas también se pueden ver como las diferentes iteraciones de los bucles. Si hablamos de flujos de datos que son tratados por una GPU, cada núcleo tiene que procesar un flujo completo antes de que el núcleo siguiente se pueda empezar a ejecutar con los datos resultantes de la ejecución anterior. La implementación de esta retroalimentación de datos entre etapas del programa es trivial en la CPU, ya que cualquier dirección de memoria puede ser leída o escrita en cualquier punto del programa. La técnica render-to-texture es la que permite el uso de procedimientos similares en GPU, al escribir resultados de la

30 CC-BY-NC-ND PID_ Arquitecturas basadas en computación gráfica (GPU) ejecución de un programa en la memoria para que puedan estar disponibles como entradas para etapas posteriores. Así pues, podemos establecer un símil entre la escritura en la memoria en CPU y el render-to-texture en GPU. En GPU, la computación se hace normalmente por medio de un flujo de procesador de fragmentos, que se tendrá que ejecutar en las unidades funcionales de la GPU correspondientes. Así pues, podemos establecer un símil entre el programa en CPU y la rasterización (o programa del shader) en GPU. Para empezar la computación, se crea un conjunto de vértices con los que podemos alimentar los procesadores de vértices. La etapa de rasterización determinará qué píxeles del flujo de datos se ven afectados por las primitivas generadas a partir de estos vértices, y se genera un fragmento para cada uno. Por ejemplo, imaginemos que tenemos como objetivo operar sobre cada uno de los elementos de una matriz de N filas y M columnas. En este caso, los procesadores de fragmentos tendrán que ejecutar una (la misma) operación sobre cada uno de los N M elementos que conforman la matriz. A continuación, utilizaremos la suma de matrices para ejemplificar las similitudes entre GPU y CPU a la hora de programar una aplicación de propósito general. En este ejemplo, se toman como operandos de entrada dos matrices de valores reales, A y B, para obtener una tercera matriz C. Los elementos de la matriz C serán la suma de los elementos correspondientes de las matrices de entrada. Una implementación en CPU crea tres matrices en la memoria al recurrir a cada uno de los elementos de las matrices de entrada, calcular para cada pareja la suma y poner el resultado en una tercera matriz, tal como muestra el código 3.1. float *A, B, C; int i, j; for (i=0; i<m; i++){ for (j=0; j<n; j++){ C[i][j] = A[i][j] + B[i][j]; } } Código 3.1. Implementación de la suma de matrices para CPU El procedimiento en GPU es algo más complejo. Primero, es necesario definir tres texturas en memoria de vídeo, que actuarán del mismo modo que las matrices definidas en la memoria principal en el caso de las CPU. Cada núcleo o programa para ejecutar en la GPU corresponde a aquellas operaciones que se ejecutan en el bucle más interno de la implementación para CPU. Sin embargo, hay que tener en cuenta algunas limitaciones adicionales de las GPU, como el hecho de que no podremos escribir el resultado de la operación de la suma directamente en la textura correspondiente a la matriz C. Así pues, será necesario devolver el resultado de la suma y crear un flujo adicional que recogerá este resultado y lo enviará a la textura de destino (mediante la técnica render-to-texture). Finalmente, los datos almacenados en la textura correspon-

El pipeline gráfico Figura 3.1

El pipeline gráfico Figura 3.1 El pipeline gráfico Para llevar a cabo una representación virtual de un ambiente tridimensional, se realiza un modelado del escenario. Dicho modelo incluye la representación geométrica de los objetos presentes,

Más detalles

Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala

Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala 1. Introducción Los procesadores con dos núcleos existen actualmente, y los procesadores de cuatro están insertándose en el mercado lentamente,

Más detalles

Arquitecturas GPU v. 2013

Arquitecturas GPU v. 2013 v. 2013 Stream Processing Similar al concepto de SIMD. Data stream procesado por kernel functions (pipelined) (no control) (local memory, no cache OJO). Data-centric model: adecuado para DSP o GPU (image,

Más detalles

CAPITULO I INTRODUCCION. Conforme la informática avanza, las imágenes se han convertido en un área muy

CAPITULO I INTRODUCCION. Conforme la informática avanza, las imágenes se han convertido en un área muy Introducción 4 CAPITULO I INTRODUCCION 1.1 Compresión de Imágenes. Conforme la informática avanza, las imágenes se han convertido en un área muy importante de esta. Hoy en día surgen más entornos gráficos

Más detalles

FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013

FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013 FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS CNCA Abril 2013 6. COMPUTACIÓN DE ALTO RENDIMIENTO Ricardo Román DEFINICIÓN High Performance Computing - Computación de Alto Rendimiento Técnicas, investigación

Más detalles

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los

Más detalles

Figura 1.4. Elementos que integran a la Tecnología de Información.

Figura 1.4. Elementos que integran a la Tecnología de Información. 1.5. Organización, estructura y arquitectura de computadoras La Gráfica siguiente muestra la descomposición de la tecnología de información en los elementos que la conforman: Figura 1.4. Elementos que

Más detalles

Conclusiones. Particionado Consciente de los Datos

Conclusiones. Particionado Consciente de los Datos Capítulo 6 Conclusiones Una de las principales conclusiones que se extraen de esta tesis es que para que un algoritmo de ordenación sea el más rápido para cualquier conjunto de datos a ordenar, debe ser

Más detalles

El proceso unificado en pocas palabras

El proceso unificado en pocas palabras El Proceso Unificado de Desarrollo de Software Ivar Jacobson Grady Booch James Rumbaugh Addison Wesley Resumen Capítulo 1. El proceso unificado: dirigido por casos de uso, centrado en la arquitectura,

Más detalles

Laboratorio de Herramientas Computacionales

Laboratorio de Herramientas Computacionales Laboratorio de Herramientas Computacionales Tema 1.1 Componentes físicos de la computadora UNIVERSIDAD MICHOACANA DE SAN NICOLÁS DE HIDALGO FACULTAD DE INGENIERIA ELECTRICA M.I. ROSALÍA MORA JUÁREZ Antecedentes

Más detalles

Capítulo 11. Conclusiones y trabajo futuro

Capítulo 11. Conclusiones y trabajo futuro Capítulo 11. Conclusiones y trabajo futuro En esta tesis ha realizado un entorno de desarrollo Web que proporciona herramientas para la mejora de la calidad del código de los desarrolladores. Para conseguir

Más detalles

1.- INTRODUCCIÓN AL PROCESADO DIGITAL DE IMÁGENES

1.- INTRODUCCIÓN AL PROCESADO DIGITAL DE IMÁGENES 1.- INTRODUCCIÓN AL PROCESADO DIGITAL DE Los campos del procesado digital de señales en dos dimensiones (2-D) y procesado digital de imágenes han tenido una tremenda vitalidad en las dos décadas pasadas

Más detalles

2. Conceptos básicos Abstracción La abstracción como un proceso mental natural La abstracción en el desarrollo de software

2. Conceptos básicos Abstracción La abstracción como un proceso mental natural La abstracción en el desarrollo de software 2. Conceptos básicos Hoy en día las aplicaciones son demasiado voluminosas y complejas para ser manejadas por una sola persona. Las aplicaciones de software son complejas porque modelan la complejidad

Más detalles

LA REVOLUCIÓN DE LOS SISTEMAS DE INFORMACIÓN (S.I.) Introducción PORQUÉ SISTEMAS DE INFORMACIÓN? El Competitivo Entorno de los Negocios

LA REVOLUCIÓN DE LOS SISTEMAS DE INFORMACIÓN (S.I.) Introducción PORQUÉ SISTEMAS DE INFORMACIÓN? El Competitivo Entorno de los Negocios LA REVOLUCIÓN DE LOS SISTEMAS DE INFORMACIÓN (S.I.) Introducción Tanto empresas grandes como pequeñas usan Sistemas de Información y Redes para realizar una mayor proporción de sus actividades electrónicamente,

Más detalles

Procesador Pentium II 450 MHz Procesador Pentium II 400 MHz Procesador Pentium II 350 MHz Procesador Pentium II 333 MHz Procesador Pentium II 300 MHz

Procesador Pentium II 450 MHz Procesador Pentium II 400 MHz Procesador Pentium II 350 MHz Procesador Pentium II 333 MHz Procesador Pentium II 300 MHz PENTIUM El procesador Pentium es un miembro de la familia Intel de procesadores de propósito general de 32 bits. Al igual que los miembros de esta familia, el 386 y el 486, su rango de direcciones es de

Más detalles

MineSight y la Tecnología Informática de última Generación

MineSight y la Tecnología Informática de última Generación MineSight y la Tecnología Informática de última Generación Así como se ha modificado la tecnología en el escritorio y en las estaciones de trabajo de los últimos años, del mismo modo ha ido variando el

Más detalles

Componentes de la placa base

Componentes de la placa base 28/9/2015 Componentes de la placa base Inharú Quesada y Tatiana Rosales 2ºBach A 1. Componentes externos de la placa base Puerto Paralelo Un puerto es una interfaz que se halla integrada a la placa madre

Más detalles

Aceleradores gráficos. Su impacto en el bus del sistema.

Aceleradores gráficos. Su impacto en el bus del sistema. Aceleradores gráficos. Su impacto en el bus del sistema. Conceptos básicos Controladora de video tradicional en modo gráfico Buffer de video en placas ISA se ubica en el rango de posiciones de memoria

Más detalles

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía. Examen Curso 2001-2002. Convocatoria de Febrero Página 1 Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía. Este ejercicio se divide en dos partes con el fin de que el alumno no intente

Más detalles

Introducción. Trabajo Práctico de TAI 2 - PCI Express Página 1

Introducción. Trabajo Práctico de TAI 2 - PCI Express Página 1 Introducción El Bus PCI ha sido utilizado ampliamente utilizado por mas de una década y aun se seguirá utilizando por lo menos un poco mas. Sin embargo, dado el gran avance tecnológico, tanto los procesadores

Más detalles

Capitulo V Administración de memoria

Capitulo V Administración de memoria Capitulo V Administración de memoria Introducción. Una de las tareas más importantes y complejas de un sistema operativo es la gestión de memoria. La gestión de memoria implica tratar la memoria principal

Más detalles

Unidad II: Administración de Procesos y del procesador

Unidad II: Administración de Procesos y del procesador Unidad II: Administración de Procesos y del procesador 2.1 Concepto de proceso Un proceso no es más que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros

Más detalles

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

CAPÍTULO I. Sistemas de Control Distribuido (SCD). 1.1 Sistemas de Control. Un sistema es un ente cuya función es la de recibir acciones externas llamadas variables de entrada que a su vez provocan una o varias reacciones como respuesta llamadas variables

Más detalles

TEMA VII: DISEÑO SECUENCIAL PROGRAMABLE

TEMA VII: DISEÑO SECUENCIAL PROGRAMABLE TEMA VII: ISEÑO SECUENCIAL PROGRAMABLE e igual forma que podíamos disponer de dispositivos combinacionales programables para poder implementar funciones combinacionales en un solo integrado, en el dominio

Más detalles

TECNOLOGÍAS DE LA INFORMACIÓN Y LA COMUNICACIÓN (4º ESO, 1º y 2º BACHILLERATO) INTRODUCCIÓN

TECNOLOGÍAS DE LA INFORMACIÓN Y LA COMUNICACIÓN (4º ESO, 1º y 2º BACHILLERATO) INTRODUCCIÓN TECNOLOGÍAS DE LA INFORMACIÓN Y LA COMUNICACIÓN (4º ESO, 1º y 2º BACHILLERATO) INTRODUCCIÓN Durante décadas ha existido la preocupación de formar a la sociedad en el uso de destrezas que permitieran desarrollar

Más detalles

Yeray Miranda Betancor Periféricos e interfaces

Yeray Miranda Betancor Periféricos e interfaces Yeray Miranda Betancor Periféricos e interfaces Conectores. Interfaz con la placa base. Componentes de un adaptador gráfico. Terminología de las tarjetas gráficas. Como funciona una tarjeta gráfica. Direct3D

Más detalles

PALESTRA PORTAL DE ASUNTOS PÚBLICOS DE LA PUCP

PALESTRA PORTAL DE ASUNTOS PÚBLICOS DE LA PUCP El software libre y el Estado Ing. Genghis Ríos Kruger Jefe de la Oficina de Infraestructura Informática Académica de la DIA-PUCP Abril, 2007 Síntesis: A pesar de que su implementación inicial puede resultar

Más detalles

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

El conjunto de conocimientos científicos y técnicos que hacen posible la resolución de forma automática de problemas por medio de las computadoras.

El conjunto de conocimientos científicos y técnicos que hacen posible la resolución de forma automática de problemas por medio de las computadoras. 1 Conceptos Generales 1.1 Definición de Informática Una posible definición de informática podría ser: El conjunto de conocimientos científicos y técnicos que hacen posible la resolución de forma automática

Más detalles

2.3 EXPLORADOR DE WINDOWS: CREAR BORRAR MOVER CORTAR ORDENAR CAMBIAR EL NOMBRE 2.5 CONFIGURAR LA PANTALLA

2.3 EXPLORADOR DE WINDOWS: CREAR BORRAR MOVER CORTAR ORDENAR CAMBIAR EL NOMBRE 2.5 CONFIGURAR LA PANTALLA 1. EL ORDENADOR. CONCEPTOS BÁSICOS 2. SISTEMA OPERATIVO. 2.1 ESCRITORIO 2.2 VENTANAS 2.3 EXPLORADOR DE WINDOWS: CREAR BORRAR MOVER CORTAR ORDENAR CAMBIAR EL NOMBRE CARPETAS O ARCHIVOS 2.4 BÚSQUEDA 2.5

Más detalles

I NTRODUCCIÓN 1. ORDENADOR E INFORMÁTICA

I NTRODUCCIÓN 1. ORDENADOR E INFORMÁTICA I. INTRODUCCIÓN 1. ORDENADOR E INFORMÁTICA 1.1. Informática Informática (Información Automática) es la ciencia y la técnica del tratamiento automatizado de la información mediante el uso de ordenadores.

Más detalles

Sumario. 1.- Proceso de activación en Vodafone Business Place. 2.- Alta y baja de usuarios. 3.- Posición. 4.- Histórico. 5.- Usuarios. 6.

Sumario. 1.- Proceso de activación en Vodafone Business Place. 2.- Alta y baja de usuarios. 3.- Posición. 4.- Histórico. 5.- Usuarios. 6. Versión 2.2 Mayo 2012 Sumario 1.- Proceso de activación en Vodafone Business Place 2.- Alta y baja de usuarios 3.- Posición 4.- Histórico 5.- Usuarios 6.- Ajustes 7.- Panel móvil 8.- Otras consideraciones

Más detalles

INSTRUCCIÓN DE SERVICIO NOCIONES BÁSICAS PARA DIAGRAMAS DE FLUJO. MICROSOFT VISIO

INSTRUCCIÓN DE SERVICIO NOCIONES BÁSICAS PARA DIAGRAMAS DE FLUJO. MICROSOFT VISIO INSTRUCCIÓN DE SERVICIO NOCIONES BÁSICAS PARA DIAGRAMAS DE FLUJO. MICROSOFT VISIO 2007 Fecha: 23/11/07 Autor: Aurora Estévez Ballester. TGRI Sección Normalización y Proceso Técnico Área de Bibliotecas

Más detalles

INGENIERÍA INFORMÁTICA

INGENIERÍA INFORMÁTICA INGENIERÍA INFORMÁTICA Y TECNOLOGÍAS VIRTUALES COMPETENCIAS BÁSICAS CB1 - Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación

Más detalles

Unidad III El lenguaje de programación C 1. 2. 3. 4. 5. 6. 7. 8.

Unidad III El lenguaje de programación C 1. 2. 3. 4. 5. 6. 7. 8. Unidad III 1. Introducción. 2. Breve historia del C. 3. Lenguajes de programación de alto nivel, bajo nivel y nivel medio. 4. Compiladores e intérpretes. 5. Compilación, enlace y generación de un programa

Más detalles

Estructura de clases. Estructura de Objetos. Arquitectura de módulos. Arquitectura de procesos

Estructura de clases. Estructura de Objetos. Arquitectura de módulos. Arquitectura de procesos 3.3 EL MÉTODO DE BOOCH. 3.3. Introducción. El método cuenta con una notación expresiva y bien definida que le permite al diseñador comunicar sus ideas y concentrarse en problemas más serios. Para la captura

Más detalles

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos). Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos). Memoria Típica. Los datos almacenados en memoria tienen que pasar, en un momento

Más detalles

GESTIÓN Y CONTROL DEL DESARROLLO E IMPLANTACIÓN DE APLICACIONES

GESTIÓN Y CONTROL DEL DESARROLLO E IMPLANTACIÓN DE APLICACIONES Ciclo Formativo: Módulo: Desarrollo de Aplicaciones Informáticas Análisis y Diseño Detallado de Aplicaciones Informáticas de Gestión Unidad de Trabajo 10: GESTIÓN Y CONTROL DEL DESARROLLO E IMPLANTACIÓN

Más detalles

4. Programación Paralela

4. Programación Paralela 4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios

Más detalles

Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción

Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción Tema 7 Procesadores Superescalares: Paralelismo Implícito a Nivel de Instrucción Se denomina arquitectura superescalar a aquella implementación capaz de ejecutar más de una instrucción por ciclo de reloj.

Más detalles

Gestión más simple y eficaz de las filiales Implementación de una estrategia de ERP de dos niveles con SAP Business ByDesign

Gestión más simple y eficaz de las filiales Implementación de una estrategia de ERP de dos niveles con SAP Business ByDesign SAP Business ByDesign Gestión más simple y eficaz de las filiales Implementación de una estrategia de ERP de dos niveles con SAP Business ByDesign Índice 3 Objetivos empresariales típicos para una red

Más detalles

IV. Implantación del sistema.

IV. Implantación del sistema. IV. Implantación del sistema. Para hablar sobre el proceso de desarrollo del sistema de Recuperación de Información Visual propuesto, empezaremos hablando del hardware utilizado, las herramientas de software

Más detalles

Construcción del modelo comercial para la nube: formas reales en que la nube privada podría beneficiar su organización

Construcción del modelo comercial para la nube: formas reales en que la nube privada podría beneficiar su organización Construcción del modelo comercial para la nube: formas reales en que la nube privada podría beneficiar su organización En esta nota Aprovechar la tecnología de la nube puede contribuir a disminuir los

Más detalles

Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT

Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT Proyecto de Fin de Carrera Universidad Politécnica de Valencia Escuela Técnica Superior de Informática Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT Realizado por: Dirigido

Más detalles

Kepler. 1. Presentación de la arquitectura. Índice de contenidos [25 diapositivas] Kepler, Johannes (1571-1630)

Kepler. 1. Presentación de la arquitectura. Índice de contenidos [25 diapositivas] Kepler, Johannes (1571-1630) Índice de contenidos [25 diapositivas] Manuel Ujaldón Nvidia CUDA Fellow Dpto. Arquitectura de Computadores Universidad de Málaga 1. Presentación de la arquitectura [3] 2. Los cores y su organización [7]

Más detalles

Señal de petición de Interrupción

Señal de petición de Interrupción Consideren una tarea que require tomar caracteres desde un teclado y mostrarlos en la pantalla de un monitor. La tasa de transferencia desde un teclado a un computador está limitado por la velocidad del

Más detalles

CAPITULO 2. Como se definió en el plan del presente proyecto, este será desarrollado bajo

CAPITULO 2. Como se definió en el plan del presente proyecto, este será desarrollado bajo 1 CAPITULO 2 ANÁLISIS DEL SISTEMA 1. Introducción Como se definió en el plan del presente proyecto, este será desarrollado bajo la metodología orientada a objetos. El objetivo del análisis será marcar

Más detalles

Unidad I: Sistemas Gestores de Bases de Datos. 1.1 Objetivo de las Bases de Datos

Unidad I: Sistemas Gestores de Bases de Datos. 1.1 Objetivo de las Bases de Datos Unidad I: Sistemas Gestores de Bases de Datos. 1.1 Objetivo de las Bases de Datos Redundancia e inconsistencia de datos: Puesto que los archivos que mantienen almacenada la información son creados por

Más detalles

TELECOMUNICACIONES Y REDES. Redes Computacionales II. Prof. Cristian Ahumada V.

TELECOMUNICACIONES Y REDES. Redes Computacionales II. Prof. Cristian Ahumada V. TELECOMUNICACIONES Y REDES Redes Computacionales II Prof. Cristian Ahumada V. Unidad I: Introducción al enrutamiento y envío de paquetes Contenido 1. Introducción 2. En el interior del router 3. Configuración

Más detalles

El proceso de edición digital en Artelope y CTCE

El proceso de edición digital en Artelope y CTCE El proceso de edición digital en Artelope y CTCE Carlos Muñoz Pons Universitat de València carlos.munoz-pons@uv.es Introducción Una de las cuestiones más importantes a la hora de trabajar en proyectos

Más detalles

Figura 87. Apariencia física de VIFIBIO

Figura 87. Apariencia física de VIFIBIO 117 9. RESULTADOS El resultado final de este trabajo de grado es un dispositivo llamado VIFIBIO, el cual permite graficar una señal que viene del fisiógrafo ya mencionado anteriormente. Pero detrás de

Más detalles

Fundamentos de la Visión Artificial. Prof. Dr. Francisco Gómez Rodríguez Prof. Manuel J. Domínguez Morales 1

Fundamentos de la Visión Artificial. Prof. Dr. Francisco Gómez Rodríguez Prof. Manuel J. Domínguez Morales 1 Fundamentos de la Visión Artificial Prof. Dr. Francisco Gómez Rodríguez Prof. Manuel J. Domínguez Morales 1 Índice 1. Introducción a lavisión Artificial 2. Adquisición y representación de imágenes 3. Filtrado

Más detalles

Capítulo 4 Implementación

Capítulo 4 Implementación Capítulo 4 Implementación Este capítulo describe los detalles de implementación del sistema. La sección 4.1 habla sobre las herramientas utilizadas y detalla la arquitectura para la implementación de ATEXEM.

Más detalles

... partes internas del computador!...

... partes internas del computador!... ... partes internas del computador!... LOS DISPOSITIVOS INTERNOS UNA PC EN SI, PUEDE "DAR SEÑALES DE VIDA" SIN EL TECLADO, SIN EL MONITOR, SIN EL RATÓN Y TODOS LOS DISPOSITIVOS EXTERNOS, AUNQUE NO TENDRÍA

Más detalles

Introducción al enrutamiento y envío de paquetes

Introducción al enrutamiento y envío de paquetes Introducción al enrutamiento y envío de paquetes Conceptos y protocolos de enrutamiento. Capítulo 1 Ing. Aníbal Coto 1 Objetivos Identificar un router como una computadora con SO y hardware diseñados para

Más detalles

Descubre gnulinex 1. Capítulo 20. Instalación de gnulinex

Descubre gnulinex 1. Capítulo 20. Instalación de gnulinex Descubre gnulinex 1 Capítulo 20 Instalación de gnulinex 2 Descubre gnulinex Sistemas operativos Generalmente, cuando adquirimos un ordenador, éste nos viene con un sistema operativo instalado. El problema

Más detalles

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES. 1.- a) Explica qué es un bit de información. Qué es el lenguaje binario? Bit es la abreviatura de Binary digit. (Dígito binario). Un bit es un dígito del lenguaje binario que es el lenguaje universal usado

Más detalles

La Capa de Red. Dr. Ivan Olmos 1

La Capa de Red. Dr. Ivan Olmos 1 La Capa de Red Dr. Ivan Olmos 1 La Capa de Red Orientada a llevar los paquetes desde el origen hasta el destino Aquí, se debe conocer perfectamente el esquema de la subred para escoger la mejor ruta Además,

Más detalles

Proyecto SIG Fases de realización I

Proyecto SIG Fases de realización I Imagen cortesía de la NAS Proyecto SIG Fases de realización I Esperanza Ayuga (2008) Proyecto SIG INTORUCCIÓN: La información geográfica Cuestiones previas El proyecto SIG FASES DE UN PROYECTO SIG: Captura

Más detalles

Resumen Ejecutivo. Sistemas de Gestión, Conversión y Difusión de Contenidos Audiovisuales 3D para Pantallas Autoestereoscópicas

Resumen Ejecutivo. Sistemas de Gestión, Conversión y Difusión de Contenidos Audiovisuales 3D para Pantallas Autoestereoscópicas Resumen Ejecutivo Se ha producido recientemente un fuerte incremento en la producción de contenidos audiovisuales 3D para cine y televisión, en forma de películas y grabación/retransmisión de eventos en

Más detalles

METÁFORA EN INTERACCIÓN HUMANO COMPUTADORA

METÁFORA EN INTERACCIÓN HUMANO COMPUTADORA METÁFORA EN INTERACCIÓN HUMANO COMPUTADORA METÁFORA Del origen griego Metaphora, traslación. Meta : después Pherien: llevar Consiste en expresar una idea valiéndose de otra, con la que mantienen analogía

Más detalles

Administrador de Contenidos. websoft factory

Administrador de Contenidos. websoft factory Administrador de Contenidos websoft factory Versión 1.1 Octubre de 2003 Tabla de Contenidos Tabla de Contenidos... 1 Introducción... 2 Módulo principal... 2 Módulo de administración de usuarios y grupos...

Más detalles

Fundamentos de los Sistemas Operativos (GII) Examen Final 15 de Junio de 2012 - SEGUNDA PARTE - SOLUCIONES

Fundamentos de los Sistemas Operativos (GII) Examen Final 15 de Junio de 2012 - SEGUNDA PARTE - SOLUCIONES Calificación 1 Fundamentos de los Sistemas Operativos (GII) Examen Final 15 de Junio de 2012 - SEGUNDA PARTE - 2 3 Nombre SOLUCIONES Grupo Dispone de una hora y media para completar el examen 1 (6.5 puntos)

Más detalles

MANUAL DE USUARIO DE LA HERRAMIENTA GENXML PARA LA GENERACIÓN DE FICHEROS XML DE PROYECTOS TÉCNICOS, PUESTAS EN SERVICIO Y CERTIFICACIONES ANUALES

MANUAL DE USUARIO DE LA HERRAMIENTA GENXML PARA LA GENERACIÓN DE FICHEROS XML DE PROYECTOS TÉCNICOS, PUESTAS EN SERVICIO Y CERTIFICACIONES ANUALES la generación de ficheros XML de proyectos técnicos, MANUAL DE USUARIO DE LA HERRAMIENTA GENXML PARA LA GENERACIÓN DE FICHEROS XML DE PROYECTOS TÉCNICOS, PUESTAS EN SERVICIO Y CERTIFICACIONES ANUALES Enero

Más detalles

CAPÍTULO 3. ALGORITMOS DE PREVISIÓN BASADOS EN LA EXTRAPOLACIÓN DE LOS DATOS MÁS RECIENTES

CAPÍTULO 3. ALGORITMOS DE PREVISIÓN BASADOS EN LA EXTRAPOLACIÓN DE LOS DATOS MÁS RECIENTES CAPÍTULO 3. ALGORITMOS DE PREVISIÓN BASADOS EN LA EXTRAPOLACIÓN DE LOS DATOS MÁS RECIENTES El objetivo de esta tesina es la introducción de mejoras en la previsión meteorológica a corto plazo. El punto

Más detalles

Es Visual Basic un buen lenguaje de programación para aprender a programar? Qué es VB? Versiones de Visual Basic. (CU00303A)

Es Visual Basic un buen lenguaje de programación para aprender a programar? Qué es VB? Versiones de Visual Basic. (CU00303A) aprenderaprogramar.com Es Visual Basic un buen lenguaje de programación para aprender a programar? Qué es VB? Versiones de Visual Basic. (CU00303A) Sección: Cursos Categoría: Curso Visual Basic Nivel I

Más detalles

Guía básica Acceso y generalidades

Guía básica Acceso y generalidades www.novosoft.es Guía básica Acceso y generalidades incaweb es una solución informática desarrollada con tecnología Web por Novosoft, que integra la automatización del workflow con la participación de las

Más detalles

GLOSARIO DE TÉRMINOS

GLOSARIO DE TÉRMINOS MINISTERIO DE EDUCACIÓN, CULTURA Y DEPORTE SECRETARÍA DE ESTADO DE EDUCACIÓN Y FORMACIÓN PROFESIONAL DIRECCIÓN GENERAL DE FORMACIÓN PROFESIONAL INSTITUTO NACIONAL DE LAS CUALIFICACIONES GLOSARIO DE TÉRMINOS

Más detalles

================================================================== ÍNDICE ==================================================================

================================================================== ÍNDICE ================================================================== Disney Epic Mickey 2: El Poder de Dos Archivo léeme ( Disney) Gracias por adquirir Disney Epic Mickey 2: El Poder de Dos. Este archivo léeme contiene información reciente no incluida en el manual, información

Más detalles

Network Client Guía de Resolución de problemas

Network Client Guía de Resolución de problemas Network Client Guía de Resolución de problemas La primera sección de esta guía responde a algunas preguntas frecuentes sobre el funcionamiento de Intellex y del software Network Client. También trata problemas

Más detalles

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 1.- INTRODUCCIÓN A LOS PROCESOS 1.1.- Concepto 1.2.- Composición y estructura 1.3.- Estados y transiciones 2.- COMUNICACIÓN ENTRE PROCESOS

Más detalles

Breve descripción del programa. Requerimientos mínimos. Instalación. Desinstalación

Breve descripción del programa. Requerimientos mínimos. Instalación. Desinstalación INTRODUCCIÓN "Actividades de lecto-escritura para motóricos " es un programa informático que surgió hace varios años a partir de la idea de algunas profesoras, de alumnos afectados a nivel motórico, interesadas

Más detalles

2.1.1.2 Explicación usuario y contraseña para entidades nuevas no inscritas a la CNG

2.1.1.2 Explicación usuario y contraseña para entidades nuevas no inscritas a la CNG Para la instalación y operación del CHIP-Local en una Entidad Reportante se tienen dos instrumentos básicos: La página Web www.chip.gov.co y la ayuda del CHIP-Local. En la guía para la Instalación y operación

Más detalles

Memoria proyecto 2: Aplicación Android

Memoria proyecto 2: Aplicación Android 2015/12/03 06:12 1/7 Memoria proyecto 2: Aplicación Android Memoria proyecto 2: Aplicación Android Componentes Grupo 08: Jorge Hernández Párraga Pablo Marzal Garrigós Jorge Garrigós Esteve Motivación del

Más detalles

Caso práctico de Cuadro de Mando con Tablas Dinámicas

Caso práctico de Cuadro de Mando con Tablas Dinámicas 1 Caso práctico de Cuadro de Mando con Tablas Dinámicas Luis Muñiz Socio Director de SisConGes & Estrategia Introducción Hay una frase célebre que nos permite decir que: Lo que no se mide no se puede controlar

Más detalles

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS Autores GROSSI, María Delia (mdgrossi@mara.fi.uba.ar) JIMÉNEZ REY, M. Elizabeth (ejimenez@mara.fi.uba.ar)

Más detalles

Nombre de la sesión: Fundamentos de software contable

Nombre de la sesión: Fundamentos de software contable Paquetería contable 1 Sesión No. 1 Nombre de la sesión: Fundamentos de software contable Contextualización: Estamos viviendo tiempos donde la información viaja por todo el mundo en algunos minutos o segundos,

Más detalles

EDITOR E INTÉRPRETE DE ALGORITMOS REPRESENTADOS EN DIAGRAMAS DE FLUJO 1 RESUMEN

EDITOR E INTÉRPRETE DE ALGORITMOS REPRESENTADOS EN DIAGRAMAS DE FLUJO 1 RESUMEN Informática Educativa Vol 11, No, 1, 1998 UNIANDES - LIDIE pp. 101-106 EDITOR E INTÉRPRETE DE ALGORITMOS REPRESENTADOS EN DIAGRAMAS DE FLUJO 1 Fabián CÁRDENAS VARELA Nelson CASTILLO IZQUIERDO Eduardo DAZA

Más detalles

Introducción a las tablas dinámicas

Introducción a las tablas dinámicas Introducción a las tablas dinámicas Cuando tenemos una gran cantidad de datos en una planilla de cálculo, puede resultar difícil analizar toda la información. En estos casos, usaremos las tablas dinámicas,

Más detalles

Sergio Peñalba Lopez NIA: 100021533

Sergio Peñalba Lopez NIA: 100021533 Autor: Sergio Peñalba Lopez NIA: 100021533 INTRODUCCIÓN CodeRuler es un juego en el que se simula un reino medieval en el que los jugadores deben competir manejando una serie de elementos programables,

Más detalles

TEMA 4: SISTEMAS MULTIPROCESADOR (MEMORIA COMPARTIDA) BLOQUE 2 Arquitecturas de computación paralela

TEMA 4: SISTEMAS MULTIPROCESADOR (MEMORIA COMPARTIDA) BLOQUE 2 Arquitecturas de computación paralela TEMA 4: SISTEMAS MULTIPROCESADOR (MEMORIA COMPARTIDA) BLOQUE 2 Arquitecturas de computación paralela 2 CONTENIDOS DE LA UNIDAD 4.4 Diseño de arquitecturas de memoria compartida y compartida-distribuida.

Más detalles

Diseño de Imagen y de Marcas Trabajo Práctico Nº1

Diseño de Imagen y de Marcas Trabajo Práctico Nº1 1985 1990 1995 1998 2000 2001 2007 2009 2012 Página 1 Microsoft Windows es el nombre de una familia de sistemas operativos desarrollados y vendidos por Microsoft, basado en Ventanas. Popularmente conocido

Más detalles

Qué es una máquina virtual?

Qué es una máquina virtual? Instalación de Windows XP en una máquina virtual utilizando Sun VirtualBox. Vamos a empezar este tutorial dando una pequeña explicación acerca de que es una máquina virtual y luego vamos a proceder a instalar

Más detalles

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl 1 Colección de Tesis Digitales Universidad de las Américas Puebla Morales Salcedo, Raúl En este último capitulo se hace un recuento de los logros alcanzados durante la elaboración de este proyecto de tesis,

Más detalles

UML, ejemplo sencillo sobre Modelado de un Proyecto

UML, ejemplo sencillo sobre Modelado de un Proyecto UML, ejemplo sencillo sobre Modelado de un Proyecto Normal &DOLILFDU 0L3DQRUDPD 626 (VFULEHSDUD1RVRWURV Por Armando Canchala Contenido Introducción Objetivo Requerimientos Casos de Uso Subcasos de Uso

Más detalles

Aportes para el Diseño de un Sistema de Evaluación y Monitoreo de la Ley de Empleo Juvenil Resumen Ejecutivo

Aportes para el Diseño de un Sistema de Evaluación y Monitoreo de la Ley de Empleo Juvenil Resumen Ejecutivo Aportes para el Diseño de un Sistema de Evaluación y Monitoreo de la Ley de Empleo Juvenil Resumen Ejecutivo Este trabajo espera constituir un aporte al proceso de elaboración del sistema de evaluación

Más detalles

TELEX. SISTEMA PARA EL CONTROL DE GASTOS TELEFÓNICOS Anyell Cano Ramos anyell@minrex.gov.cu Ministerio de Relaciones Exteriores Cuba RESUMEN

TELEX. SISTEMA PARA EL CONTROL DE GASTOS TELEFÓNICOS Anyell Cano Ramos anyell@minrex.gov.cu Ministerio de Relaciones Exteriores Cuba RESUMEN TELEX. SISTEMA PARA EL CONTROL DE GASTOS TELEFÓNICOS Anyell Cano Ramos anyell@minrex.gov.cu Ministerio de Relaciones Exteriores Cuba RESUMEN El Ministerio de Relaciones Exteriores de Cuba (MINREX) es el

Más detalles

BASES FÍSICAS DE LA ULTRASONOGRAFÍA DEL Dr. CABRERO

BASES FÍSICAS DE LA ULTRASONOGRAFÍA DEL Dr. CABRERO BASES FÍSICAS DE LA ULTRASONOGRAFÍA DEL Dr. CABRERO Con el título fundamentos de la ultrasonografía pretendemos resumir brevemente las bases físicas y fundamentos técnicos de la ecografía. Los ultrasonidos

Más detalles

Técnicas de búsqueda y almacenamiento de páginas Web de interés para Religión

Técnicas de búsqueda y almacenamiento de páginas Web de interés para Religión Técnicas de búsqueda y almacenamiento de páginas Web de interés para Religión 1. TÉCNICAS DE BÚSQUEDA 1.1. Funcionamiento básico de los motores de búsqueda 1.2. Restringir la búsqueda 1.3. Búsquedas con

Más detalles

WINDOWS 7 HOME PREMIUM

WINDOWS 7 HOME PREMIUM PRESENTACIÓN Curso para conocer y aprender a utilizar el sistema operativo Windows 7 Home Premium. El curso se divide en dos partes: en la primera se describe la forma de realizar las tareas más habituales

Más detalles

PRÁCTICAS DE GESTIÓN GANADERA:

PRÁCTICAS DE GESTIÓN GANADERA: PRÁCTICAS DE GESTIÓN GANADERA: MANEJO DE HOJA DE CÁCULO (EXCEL) 1. INTRODUCCIÓN AL MANEJO DE EXCEL La pantalla del programa consta de una barra de herramientas principal y de una amplia cuadrícula compuesta

Más detalles

Digital Preservation Made Easy.

Digital Preservation Made Easy. Digital Preservation Made Easy. LIBSAFE: DISEÑO Y EJECUCIÓN DE SU PLAN DE PRESERVACIÓN DIGITAL. La plataforma libsafe es la solución de libnova para preservación digital y está especialmente indicada para

Más detalles

Manual de ayuda para crear y gestionar Tareas, como actividad evaluable

Manual de ayuda para crear y gestionar Tareas, como actividad evaluable Manual de ayuda para crear y gestionar Tareas, como actividad evaluable Contenido TAREAS.... 3 CONFIGURACIÓN.... 3 GESTIÓN Y CALIFICACIÓN DE TAREAS.... 8 TAREAS. Mediante esta herramienta podemos establecer

Más detalles

U.D. 1. SOFTWARE Y HARDWARE

U.D. 1. SOFTWARE Y HARDWARE U.D. 1. SOFTWARE Y HARDWARE SOFTWARE Conjunto de componentes lógicos del ordenador. En esencia son los programas que utiliza el ordenador para tratar la información. Programas, sistema operativo, Archivo

Más detalles

CÓMO CREAR NUESTRO CATÁLOGO

CÓMO CREAR NUESTRO CATÁLOGO CÓMO CREAR NUESTRO CATÁLOGO Mediante la aplicación (http://www.prensasoft.com/programas/conline) podemos crear nuestros propios catálogos. Para crear un catálogo necesitamos: - Varios productos que mostrar,

Más detalles

Catedrático: Alumna:

Catedrático: Alumna: Catedrático: Lic. Jorge Roberto Nery Gonzales Materia: informática Alumna: Sulma milagros Mondragón Sánchez Semestre: 5 grupo: «C» intel sigue apostando por la arquitectura Sandy Bridge y ha añadido recientemente

Más detalles

SUPLEMENTO EUROPASS AL TÍTULO DE TÉCNICO SUPERIOR DE ARTES PLÁSTICAS Y DISEÑO

SUPLEMENTO EUROPASS AL TÍTULO DE TÉCNICO SUPERIOR DE ARTES PLÁSTICAS Y DISEÑO SUPLEMENTO EUROPASS AL TÍTULO DE TÉCNICO SUPERIOR DE ARTES PLÁSTICAS Y DISEÑO TÉCNICO SUPERIOR DE ARTES PLÁSTICAS Y DISEÑO EN GRÁFICA INTERACTIVA --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Más detalles

Sistemas virtualizados Quién no ha oído hablar de las máquinas virtuales y los terminales ligeros, pero qué es realmente?.

Sistemas virtualizados Quién no ha oído hablar de las máquinas virtuales y los terminales ligeros, pero qué es realmente?. En los últimos años se ha vivido un aumento en el número de tecnologías de virtualización y soluciones basadas en terminales que se conectan a grandes servidores, dejando de lado al tradicional ordenador

Más detalles

SITEMAS OPERATIVOS PROFESORA ELIZABETH ARIAS INFORMATICA SECCION F 3 SEMESTRE YORDAN ALEXANDER MARIN CUBIDES

SITEMAS OPERATIVOS PROFESORA ELIZABETH ARIAS INFORMATICA SECCION F 3 SEMESTRE YORDAN ALEXANDER MARIN CUBIDES REPUBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PORDER POPULAR PARA LA EDUCACION INSTITUTO UNIVERSITARIO POLITECNICO SANTIAGO MARIÑO EXTENSION MARACAIBO SITEMAS OPERATIVOS PROFESORA ELIZABETH ARIAS INFORMATICA

Más detalles