UNIVERSIDAD DE EXTREMADURA

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

Download "UNIVERSIDAD DE EXTREMADURA"

Transcripción

1 UNIVERSIDAD DE EXTREMADURA Escuela Politécnica MÁSTER UNIVERSITARIO EN COMPUTACIÓN GRID Y PARALELISMO Trabajo Fin de Máster Implementación en GPU del algoritmo K-Means para procesamiento paralelo de imágenes de satélite disponibles en la herramienta Google Maps Sergio Bernabé García Septiembre, 2010

2 Trabajo Fin de Máster -2- Sergio Bernabé García

3 UNIVERSIDAD DE EXTREMADURA Escuela Politécnica MÁSTER UNIVERSITARIO EN COMPUTACIÓN GRID Y PARALELISMO Trabajo Fin de Máster Implementación en GPU del algoritmo K-Means para procesamiento paralelo de imágenes de satélite disponibles en la herramienta Google Maps Autor: Sergio Bernabé García Fdo.: Director: Antonio Plaza Miguel Fdo.: CALIFICACIÓN: FECHA: Tribunal Calificador Presidente: Fdo.: Secretario: Fdo.: Vocal: Fdo.: Trabajo Fin de Máster -3- Sergio Bernabé García

4 Trabajo Fin de Máster -4- Sergio Bernabé García

5 Si supiese qué es lo que estoy haciendo, no le llamaría investigación, verdad? Albert Einstein. Trabajo Fin de Máster -5- Sergio Bernabé García

6 Trabajo Fin de Máster -6- Sergio Bernabé García

7 AGRADECIMIENTOS En estas líneas, quiero agradecer sinceramente todo el apoyo que me ha brindado, la gente que me ha acompañado durante este año. En primer lugar deseo expresar mi más sincero agradecimiento a mi director de TFM, Antonio Plaza Miguel, por haber confiado en mí para la realización de este trabajo de investigación y por todos sus consejos recibidos a lo largo del mismo. Asimismo agradecer a mis compañeros del grupo HYPERCOMP: Sergio y Gabri, por las ayudas y los consejos recibidos durante la realización del trabajo, también a mis compañeros de Máster: Josi, Kiwi, David y Álvaro por los buenos momentos pasados a lo largo de este año. También darle las gracias a mi familia por todo el apoyo recibido, a mis amigos y el más especial agradecimiento a mi novia Sheila, porque siempre ha creído en mí y que más ha comprendido, que ante todo en esta vida está el ser feliz y que a su lado he conseguido serlo. Sin ti las cosas no serían lo mismo, TE QUIERO!!. Trabajo Fin de Máster -7- Sergio Bernabé García

8 Resumen En el presente trabajo desarrollamos una nueva implementación en tarjetas gráficas programables (GPUs) del algoritmo de clustering no supervisado K-Means, evaluando las prestaciones de dicha implementación en la tarea de clasificar (de forma no supervisada) imágenes de satélite disponibles en la herramienta Google Maps. Dichas imágenes son obtenidas utilizando otra herramienta desarrollada por el doctorando autor del presente trabajo. Con vistas a validar el nuevo algoritmo desarrollado, se ha evaluado el consenso obtenido en la clasificación con respecto a los resultados proporcionados por la implementación del algoritmo K-Means en software comercial (Research Systems ENVI), obteniendo resultados muy similares a los proporcionados por dicha herramienta en diferentes casos de estudio basados en imágenes de satélite proporcionadas a partir de la herramienta Google Maps y obtenidas en diferentes zonas geográficas de la superficie terrestre. Dicha validación experimental revela que el algoritmo propuesto permite obtener resultados prácticamente idénticos a otras implementaciones disponibles de K-Means [1], pero en un tiempo mucho más rápido (en particular, la implementación paralela del algoritmo propuesto (desarrollada utilizando el lenguaje CUDA de NVidia) en una GPU de la gama NVidia Tesla C1060 obtiene un speedup por encima de 30 unidades con respecto a la correspondiente versión serie optimizada, lo cual suponen un importante aumento de las prestaciones computacionales del algoritmo que se preveen indispensables a la hora de procesar grandes cantidades de datos de satélite [2-4], tales como los disponibles en la herramienta Google Maps que se ha utilizado en el presente trabajo para validar el algoritmo paralelo desarrollado. Palabras clave: K-Means, imágenes de satélite, GPU, CUDA, ENVI. Trabajo Fin de Máster -8- Sergio Bernabé García

9 Abstract In this work, we develop a new parallel implementation of the K-Means unsupervised clustering algorithm for commodity graphic processing units (GPUs), and further evaluate the performance of this newly developed algorithm in the task of classifying (in unsupervised fashion) satellite imagery available from Google Maps engine. Those images are obtained using a companion tool developed by the author of this research work. With the ultimate goal of evaluating the classification precision of the newly developed algorithm, we have analyzed the consensus or agreement in the classification achieved by our implementation and an alternative implementation of the algorithm available in commercial software (Research Systems ENVI). Our experimental results, conducted using satellite images obtained from Google Maps engine over different locations around the Earth, indicate that the classification agreement between our parallel version and the ENVI implementation of the K-Means algorithm is very high. In addition, the parallel version (developed using the CUDA language available from NVidia) is much faster that the serial one (more than 30x speedup), thus indicating that our proposed implementation can significantly improve the computational performance of this clustering algorithm and thus allows for larger scale processing of high-dimensional image databases such as those available in the Google Maps engine used for validating the proposed GPU implementation. Keywords K-Means, satellite imagery, GPU, CUDA, ENVI. Trabajo Fin de Máster -9- Sergio Bernabé García

10 Índice de Contenido 1. MOTIVACIONES Y OBJETIVOS Motivaciones Objetivos INTRODUCCIÓN Concepto de imagen de satélite Sensores de adquisición de imágenes multiespectrales Técnicas de clasificación de datos multiespectrales y la necesidad de paralelismo TARJETAS GRÁFICAS PROGRAMABLES GPUS Las GPUs como un dispositivo de procesamiento de datos en paralelo CUDA: una nueva arquitectura para el cálculo en la GPU Procesamiento en la GPU Implementación hardware y modelo de ejecución PROCESAMIENTO EN IMÁGENES. TIPOS DE CLASIFICACIONES: CLUSTERING Algoritmos de clasificación no supervisados PROCESAMIENTO PARALELO EN GPU Implementación CUDA Primera etapa Segunda etapa Tercera etapa CUDA Occupancy Calculator RESULTADOS Ejemplo de uso 1: World Trade Center de New York Ejemplo de uso 2: El río Nilo africano Ejemplo de uso 3: Población de Guareña y sus alrededores CONCLUSIONES Y LÍNEAS FUTURAS ANEXO I: MANUAL DE CUDA Introducción Configuraciones necesarias Trabajo Fin de Máster -10- Sergio Bernabé García

11 8.3. Compilación programas CUDA Librerías CUDA Arquitectura y modelo de programación Técnicas de Optimización Herramientas desarrollo y depuración BIBLIOGRAFÍA PUBLICACIONES Índice de Figuras Figura 2.1. El espectro electromagnético Figura 2.2. Ejemplo ilustrativo de una imagen multi-dimensional de 4 bandas Figura 2.3. Configuración típica de un cluster Beowulf Figura 2.4. Distintos modelos de GPUs NVidia Figura 2.5. Ejemplo de la Virtex-6 FPGA Figura 3.1. Operaciones en coma flotante por segundo para CPU y GPU Figura 3.2. Ancho de banda CPU y GPU Figura 3.3. Pipeline clásico de procesamiento en una GPU Figura 3.4. La GPU proporciona más transistores para el procesamiento de datos Figura 3.5. Pipeline clásico frente a pipeline unificado Figura 3.6. Pila de software de CUDA Figura 3.7. Operaciones de memoria Gather (reunión) y Scatter (dispersión) Figura 3.8. Shared memory Figura 3.9. Grid, bloques e hilos Figura Acceso a diferentes espacios de memoria Figura Arquitectura de la GPU Tesla c1060 de NVidia Figura Conjunto de multiprocesadores SIMD con memoria compartida on-chip Figura 4.1. Ejemplo gráfico del algoritmo K-Means Figura 5.1. Ejemplo de reducción en tres pasos de una suma dado un cluster de 8 elementos Trabajo Fin de Máster -11- Sergio Bernabé García

12 Figura 5.2. Cuda occupancy calculator Figura 5.3: Cuda occupancy calculator: gráfica asociada al número de hilos por bloque Figura 5.4: Cuda occupancy calculator: gráfica asociada al número de registros por hilo Figura 5.5: Cuda occupancy calculator: gráfica asociada a la cantidad de memoria compartida usada por cada bloque Figura 6.1. Ejemplo de construcción de una matriz de confusión Figura 6.2. Ubicación del WTC de Nueva York, situado en las coordenadas: º, º Figura 6.3. Selección de una zona urbana perteneciente al WTC de Nueva York (Estados Unidos) Figura 6.4. Segmentación de la zona seleccionada del WTC, utilizando el algoritmo K-Means Figura 6.5. Segmentación de la zona seleccionada de WTC (Nueva York) utilizando el algoritmo K-Means con la herramienta ENVI Figura 6.6. Ubicación del río Nilo (África), situado en las coordenadas: 29.89º, 31.28º Figura 6.7. Selección de un tramo perteneciente al río Nilo (África) Figura 6.8. Segmentación de la zona seleccionada del río Nilo (África) utilizando el algoritmo K-Means Figura 6.9. Segmentación de la zona seleccionada del río Nilo utilizando el algoritmo K-Means con la herramienta ENVI Figura Ubicación del municipio de Guareña (Badajoz), situado en las coordenadas: 38.85º, º Figura Selección de una zona situada cerca de la población de Guareña de la que escogeremos las zonas con vegetación Figura Segmentación de la zona seleccionada situada cerca de la población de Guareña utilizando el algoritmo K-Means Figura Segmentación de la zona seleccionada situada cerca de la población de Guareña utilizando el algoritmo K-Means con la herramienta ENVI Figura 8.1. Arquitectura paralela Cuda Figura 8.2. Arquitectura heterogénea CPU + GPU Figura 8.3. Ejemplos de dimensiones e identificadores Trabajo Fin de Máster -12- Sergio Bernabé García

13 Figura 8.4. Ejemplo: traspuesta de una matriz utilizando memoria global Figura 8.5. Ejemplo: traspuesta de una matriz utilizando memoria compartida Índice de Tablas Tabla 3.1. Lecturas y escrituras en los diferentes tipos de memoria Tabla 3.2. Especificaciones técnicas de la GPU Tesla c1060 de NVidia Tabla 3.3. Recursos y limitaciones según la GPU que utilicemos para programar CUDA Tabla 3.4. Capacidad de cómputo y número de multiprocesadores de cada GPU de NVidia Tabla 4.1. Ventajas e inconvenientes de la utilización del algoritmo K-Means Tabla 5.1. Métricas utilizadas para calcular la similitud de características Tabla 5.2: Cuda occupancy calculator: parámetros introducidos Tabla 5.3: Cuda occupancy calculator: resultados calculados en función de los parámetros Tabla 6.1. Resultados estadísticos tras la ejecución paralela del algoritmo de clasificación no supervisado K-Means con la imagen del World Trade Center Tabla 6.2. Comparación de resultados CPU y GPU utilizando la imagen del World Trade Center ajustada según la dimensión Tabla 6.3. Resultados estadísticos tras la ejecución paralela del algoritmo de clasificación no supervisado K-Means con la imagen del río Nilo Tabla 6.4. Comparación de resultados CPU y GPU utilizando la imagen del río Nilo ajustada según la dimensión Tabla 6.5. Resultados estadísticos tras la ejecución paralela del algoritmo de clasificación no supervisado K-Means con la imagen de Guareña Tabla 6.6. Comparación de resultados GPU y GPU utilizando la imagen de Guareña ajustada según la dimensión Trabajo Fin de Máster -13- Sergio Bernabé García

14 1. Motivaciones y objetivos 1.1. Motivaciones El presente trabajo se ha desarrollado dentro de las líneas de investigación actuales del Grupo Hypercomp de la Universidad de Extremadura, y consiste en la implementación eficiente de un algoritmo de clasificación no supervisada en imágenes multiespectrales, haciendo uso de GPUs de NVidia, aprovechando el paralelismo intrínseco que ofrecen dichas tarjetas en operaciones de procesamiento de imágenes. En concreto el algoritmo implementado es: K-Means. Las aplicaciones potenciales de este algoritmo son múltiples, en donde destacamos su uso aplicado en sistemas CBIR [5-7] donde se podría aplicar dicho algoritmo en clasificaciones de imágenes obtenidas de grandes repositorios como es el caso de Google Maps. Hasta la fecha, las técnicas tradicionales en la literatura para abordar este tipo de problemas han optado por soluciones basadas en el uso de clusters y sistemas multiprocesador. La computación cluster, a pesar de su adaptabilidad al problema del tratamiento de datos multiespectrales (especialmente cuando tenemos imágenes con una gran cantidad de datos), presenta problemas en cuanto al procesamiento de los datos en tiempo real dado el alto coste y elevados requerimientos en cuanto a espacio, peso y consumo. Por otra parte, la instalación de un cluster suele llevar asociada la disponibilidad de un número elevado de ordenadores interconectados entre sí para que compartan el procesamiento de datos a través de sus procesadores, lo cual hace incrementar la velocidad de ejecución y procesamiento de las aplicaciones; sin embargo, cada nodo (u ordenador) lleva ligado un precio y una serie de requerimientos en cuanto a espacio y consumo. Para solucionar estos problemas relativos a coste, consumo y peso, y además ofrecer además mejoras sustanciales en cuanto al tiempo de procesamiento, en el presente TFM proponemos una alternativa basada en un nuevo modelo de tratamiento de imágenes multiespectrales basado en la utilización de GPUs. Conviene destacar que, con una sola GPU, pueden llegar a obtenerse mejoras notables a la hora de procesador cálculos de tipo científico, como es el caso de los Trabajo Fin de Máster -14- Sergio Bernabé García

15 algoritmos de tratamiento de imágenes multiespectrales, a un coste razonable (no más de 400 euros) y además ocupando un espacio mínimo. No obstante, no todas las tarjetas GPU disponibles en el mercado se ajustan a nuestros requerimientos. Por ello si aplicamos los algoritmos propuestos a través de tarjetas convencionales o de gama baja, veremos que los resultados no sufren ningún tipo de mejorías; es más, podemos llegar a obtener peores resultados. Finalmente, indicar que en este trabajo se ha intentado ir un poco más allá, y para trabajar de forma totalmente innovadora se ha utilizado la arquitectura CUDA incorporada en las tarjetas gráficas de NVidia de las series 8 (o superiores), Quadro y Tesla, siendo algunas de las tarjetas de la primera gama las que han sido objeto de estudio en este TFM. Para la realización de este trabajo se han utilizado las siguientes máquinas: 1) Procesador Intel Core i7 920 con una GPU NVidia Tesla c1060 y el sistema operativo Linux Ubuntu ) Procesador Intel Core 2 Duo P8700 a 2.53Ghz con una GPU NVidia GeForce 9400M y el sistema operativo Windows 7. Por otra parte, otra de las actividades desarrolladas en el presente trabajo consiste en la realización de un estudio cuantitativo y comparativo del algoritmo implementado tanto en C++ para su ejecución en la CPU como en CUDA para su ejecución en la distintas GPUs así como un análisis de precisión de los resultados obtenidos Objetivos Este trabajo pretende desarrollar sobre una GPU la implementación de un algoritmo de clasificación no supervisada en imágenes multiespectrales y establecer un estudio cualitativo y comparativo de los resultados obtenidos tras la ejecución. Concretamente el algoritmo es: K-Means. La consecución del objetivo general anteriormente mencionado se lleva a cabo en la presente memoria abordando una serie de objetivos específicos, los cuales se enumeran a continuación: Trabajo Fin de Máster -15- Sergio Bernabé García

16 1. Establecer un estudio sobre el funcionamiento del algoritmo K-Means para extraer el grado de paralelismo inherente que presenta y utilizarlo para su implementación. 2. Realizar un estudio sobre el lenguaje de programación CUDA para poder implementar cualquier tipo de algoritmos. 3. Implementar el algoritmo K-Means para ejecutarlo en la GPU y optimizar el tiempo de ejecución, para poderlo comparar con su tiempo en serie ya implantado en una herramienta que realiza clasificaciones no supervisadas y supervisadas en imágenes de satélite obtenidas desde Google Maps. 4. Implementar una serie de aplicaciones que nos permitan conocer la precisión que se ha logrado en la ejecución del algoritmo con su versión serie de la herramienta ya implementada. 5. Realizar un estudio comparativo sobre los resultados obtenidos. Teniendo presentes los anteriores objetivos concretos, procedemos a describir la organización del resto de esta memoria, estructurada en una serie de capítulos cuyos contenidos se describen a continuación: Introducción. En este capítulo introductorio se describen los conceptos fundamentales relacionados con las imágenes de satélite, sensores de adquisición de este tipo de imágenes y las técnicas de clasificación de datos multiespectrales, enfatizando la necesidad de técnicas de procesamiento paralelo en este campo y proponiendo la utilización de las GPUs como procesador paralelo para este tipo de técnicas. Tarjetas gráficas programables GPUs. Este capítulo está dedicado a la GPU, donde se hablará de cómo han ido evolucionando las GPUs programables, de los recursos que ofrecen y su capacidad de cómputo. Introduciremos una serie de conceptos para lograr entender cómo se lleva a cabo el procesamiento en una GPU mediante CUDA. Este capítulo también describirá el hardware de la tarjeta Tesla c1060 con la que se ha realizado el Trabajo Fin de Máster -16- Sergio Bernabé García

17 trabajo. Procesamiento en imágenes. Este capítulo describe y muestra la utilidad del algoritmo implementado para el análisis multiespectral así como su funcionamiento y filosofía. Procesamiento paralelo en GPU. En este capítulo se muestra como se lleva a cabo el procesamiento paralelo en la GPU para el caso que nos ocupa, centrándonos en cada una de las fases del algoritmo por separado. Resultados. En este capítulo se describen las imágenes que se han utilizado para probar el algoritmo, se muestran los resultados de la precisión obtenida con la versión paralela y finalmente se comparan estos resultados con los obtenidos por otras herramientas de referencia como es el caso de ENVI. Conclusiones y líneas futuras. Este capítulo está dedicado a resumir las principales aportaciones realizadas por la presente memoria y a mostrar las conclusiones derivadas. Además, el capítulo sugiere un conjunto de líneas de trabajo que podrán ser abordadas en futuros trabajos. ANEXOS. En este capítulo se expone una guía básica para poner en marcha una tarjeta gráfica programable, además de unas nociones básicas sobre las técnicas que podrán ser utilizadas en una programación con CUDA. También se comentarán una serie de técnicas de optimización y las herramientas de desarrollo y de depuración más utilizadas. La memoria concluye con una serie de referencias bibliográficas utilizadas en el estudio. Trabajo Fin de Máster -17- Sergio Bernabé García

18 2. Introducción El presente capítulo se organiza de la siguiente forma: en primer lugar, empezaremos por la descripción del concepto de imagen multiespectral, más concretamente de imágenes de satélite, detallando las particularidades y características propias de este tipo de imágenes. A continuación, describimos algunas características genéricas de los sensores de adquisición de este tipo de datos, destacando los utilizados por el servidor de mapas Google Maps. Seguidamente, se muestra una visión general de las técnicas de clasificación de imágenes, destacando la necesidad de paralelismo en este campo y mostrando el papel de las GPU para su tratamiento Concepto de imagen de satélite Una imagen de satélite 1 se puede definir como una representación visual de la información capturada por un sensor montado en un satélite artificial [8]. Estos sensores tienen como cometido recoger información reflejada por la superficie de la tierra que luego será enviada a la Tierra para que en un posterior procesado, se obtenga información sobre las características de la zona representada. Casi todas las imágenes procedentes de satélite se adquieren digitalmente. Dada su naturaleza digital, las imágenes satelitales se procesan, manipulan y realzan para extraer de ellas sutiles detalles e informaciones que otras fuentes no detectarían. La observación remota de un determinado objeto está basada en la captación, por parte de un instrumento de medida o sensor [9], de la radiación electromagnética proveniente de la interacción entre el objeto y la fuente de la radiación. La radiación electromagnética recibe varios nombres dependiendo de la longitud de onda que la caracteriza, como puede apreciarse en la figura 2.1. Para medir la radiación emitida o reflejada por una determinada superficie es preciso cuantificar la cantidad de flujo energético que procede de la misma. Para ello 1 Trabajo Fin de Máster -18- Sergio Bernabé García

19 se suele utilizar la medida de la radiancia, que dependerá de varios factores como son la percepción de brillo, reflectancia, ángulos de observación, entre otros. En la actualidad nos podemos encontrar con un amplio conjunto de instrumentos o sensores, cuya disponibilidad ha facilitado una redefinición del concepto de imagen digital a través de la extensión de la idea de píxel. 0.4 µm 0.7 µm Rayos X Visible Microondas Rayos γ Ultravioleta Infrarrojo Radar Longitud de onda (µm) Figura 2.1. El espectro electromagnético. Recordamos que el valor asociado a cada píxel viene definido por un valor numérico denominado nivel digital (ND). Se denomina de esta manera por tratarse de un valor numérico, no visual. Así, en un esquema puramente espacial, un píxel estará constituido por un único valor discreto, mientras que, en un esquema espectral, un píxel constará de un conjunto de valores. Estos valores dependiendo del tipo de imagen podrán ser entendidos como vectores N-dimensionales [10], siendo N el número de bandas espectrales en las que el sensor mide información (en nuestro caso utilizaremos 4 dimensiones). La ampliación del concepto de píxel ha dado lugar a lo que se conoce como imagen multidimensional, como aparece en la figura 2.2. Así dependiendo del orden Trabajo Fin de Máster -19- Sergio Bernabé García

20 de magnitud de N podremos realizar una distinción a la hora de hablar de imágenes multidimensionales. De esta manera, cuando el valor de N sea reducido, es decir, unas cuantas de bandas espectrales [11], estaremos hablando de imágenes multiespectrales. Figura 2.2. Ejemplo ilustrativo de una imagen multi-dimensional de 4 bandas Sensores de adquisición de imágenes multiespectrales En este apartado comentaremos brevemente algunos aspectos sobre los sensores de adquisición de imágenes multiespectrales. Dentro de las características más importantes de los sensores multiespectrales, destacamos la resolución del sensor, el proceso de adquisición de datos y la relación señal-ruido [8]. Dentro del concepto de resolución nos podemos encontrar con diferentes aspectos, entre los que se encuentran la resolución espacial, y las resoluciones espectral (número de canales espectrales en los que el sensor adquiere datos y la anchura de las bandas espectrales correspondientes a dichos canales) y radiométrica (relacionado con la sensibilidad del sensor). Otro aspecto importante en los sensores, es el procedimiento de adquisición de datos, entendiendo éste como el procedimiento empleado por estos instrumentos para recibir la radiación procedente de los objetos. Los sensores pueden ser clasificados Trabajo Fin de Máster -20- Sergio Bernabé García

21 según su funcionamiento y según el modo en que son transportados en el momento de la toma de datos. Por último, destacar el parámetro de relación señal/ruido o signal-to-noise ratio (SNR), que puede entenderse, en términos globales, como la relación entre la amplitud de la señal obtenida y la amplitud del ruido o, lo que es lo mismo, la cantidad de señal adquirida por unidad de ruido. Este parámetro nos definirá la calidad de un sensor multiespectral. En términos generales, las imágenes disponibles en la herramienta Google Maps suelen obtenerse a partir de la composición de imágenes obtenidas por diferentes sensores, predominando las composiciones basadas en datos de Landsat 2 (moderada resolución espacial) y Quickbird 3 (alta resolución espacial) en un contexto multiespectral limitado a 3 bandas (rojo, verde y azul) Técnicas de clasificación de datos multiespectrales y la necesidad de paralelismo La forma más simple de abordar el problema de la clasificación de píxeles en una imagen multiespectral es considerar que los píxeles de interés están compuestos por un solo material, utilizando las técnicas convencionales de clasificación de patrones pero con mayor precisión, debido al elevado número de bandas espectrales disponibles. Existe un conjunto de técnicas de clasificación de patrones que realizan la interpretación de una escena obtenida de forma remota en base a la asignación de una etiqueta o clasificación individual a cada uno de los píxeles de la misma. Estas técnicas ofrecen resultados interesantes dependiendo de la aplicación en donde se apliquen. Los algoritmos de clasificación de imágenes multiespectrales pueden dividirse en dos grandes categorías [12]: algoritmos supervisados y algoritmos no supervisados Trabajo Fin de Máster -21- Sergio Bernabé García

22 Las técnicas de clasificación de píxeles de forma no supervisada en imágenes multiespectrales se encuentran en plena fase de desarrollo. Entre las técnicas existentes, destaca el método K-Means [13], que supone la existencia de K clases (parámetro que debe ser determinado a priori) y realiza una agrupación de los píxeles de la imagen en dichas clases utilizando los vectores métodos puramente estadísticos basados en los valores RGBA promedio de dichas clases. Por otra parte, el método ISODATA [14,15] también requiere la inicialización de un parámetro K relativo al número de clases deseadas, de forma previa a la ejecución del algoritmo. Además, este método necesita información relativa al número mínimo de píxeles pertenecientes a una clase. Si el valor inicial de K es bajo, la dispersión entre clases diferentes puede ser muy alta. Por el contario, si el valor inicial de K es alto, la distancia entre clases puede ser muy pequeña, provocando el particionamiento de una misma clase en varias clases similares entre sí. En general, la literatura reciente no demuestra que los resultados obtenidos por estas dos técnicas hayan sido demasiado satisfactorios, salvo en aplicaciones muy concretas [16,17]. Dentro de las técnicas de clasificación supervisadas, destacamos varios clasificadores como son las técnicas nearest neighbour (vecino más cercano), minimum distance (distancia mínima), parallelepiped o maximum likelihood (ML, máxima probabilidad). Además también nos podría interesar la utilización de la técnica Support Vector Machine (SVM) la cual ha demostrado excelentes prestaciones a la hora de trabajar con datos altamente dimensionales. No obstante, si a las técnicas descritas anteriormente les añadimos un conjunto de datos bastante elevado, los resultados de utilizar algoritmos en serie serían altamente costosos desde el punto de vista computacional. Por lo tanto, a continuación mostraremos énfasis en la necesidad de técnicas paralelas para optimizar su rendimiento computacional. Necesidad de paralelismo Conviene destacar que las técnicas de clasificación en imágenes multiespectrales anteriormente descritas se basan en la realización de operaciones matriciales que resultan muy costosas desde el punto de vista computacional. Sin embargo, el Trabajo Fin de Máster -22- Sergio Bernabé García

23 carácter repetitivo de estas operaciones las hace altamente susceptibles de ser implementadas en diferentes tipos de arquitecturas paralelas, permitiendo así un incremento significativo de su rendimiento en términos computacionales y dotando a dichas técnicas de la capacidad de producir una respuesta rápida. Esta tarea es clave para la explotación de dichas técnicas en aplicaciones que requieren una respuesta en tiempo casi real. Las técnicas de computación paralela han sido ampliamente utilizadas para llevar a cabo tareas de procesamiento de imágenes de gran dimensionalidad, facilitando la obtención de tiempos de repuesta muy reducidos y pudiendo utilizar diferentes tipos de arquitecturas [18-20]. En la actualidad, es posible obtener arquitecturas paralelas de bajo coste mediante la utilización de GPUs de última generación que cuentan con múltiples procesadores. El papel de las GPUs Las técnicas de clasificación de imágenes multiespectrales, en nuestro caso, el algoritmo de clasificación no supervisado K-Means aplicado sobre imágenes de satélite extraídas desde Google Maps muestra desde un punto de vista computacional un patrón de acceso a los datos regular y por tanto un paralelismo inherente a muchos niveles, como por ejemplo, a nivel de vectores de píxeles. Como resultado se asocian con sistemas paralelos compuestos por CPUs (por ejemplo clusters Beowulf, ver figura 2.3). Desafortunadamente estos sistemas son caros y difíciles de adaptar a bordo de escenarios de procesamiento de sensación remota. Figura 2.3. Configuración típica de un cluster Beowulf. Trabajo Fin de Máster -23- Sergio Bernabé García

24 Un nuevo desarrollo en el campo de la computación surge con los procesadores gráficos programables (GPUs, ver figura 2.4). Guiadas por la creciente demanda de la industria de los videojuegos, las GPUs han evolucionado como sistemas programables altamente paralelos. Sin embargo la arquitectura de las GPUs no encaja necesariamente con todos los tipos de computación paralela. Figura 2.4. Distintos modelos de GPUs NVidia. En especial, el siempre creciente requerimiento computacional introducido por el estado actual de los algoritmos de imágenes multiespectrales pueden beneficiarse de este hardware y tomar ventaja de su poco peso y bajo coste de sus unidades, lo que lo hace llamativo para el procesamiento de datos a bordo por un coste mucho más bajo del que tienen otros dispositivos hardware como las FPGAs [21] (ver figura 2.5). Figura 2.5. Ejemplo de la Virtex-6 FPGA. Trabajo Fin de Máster -24- Sergio Bernabé García

25 3. Tarjetas gráficas programables GPUs En este capítulo hablamos de cómo han ido evolucionando las GPUs programables, de los recursos que ofrecen y de su gran capacidad de cómputo. Introduciremos una serie de conceptos para lograr entender cómo se lleva a cabo el procesamiento en una GPU mediante lenguaje CUDA. Describiremos el hardware de la tarjeta Tesla c1060 con la que se ha realizado el trabajo y finalmente trataremos el lenguaje CUDA en sí dando unas nociones básicas para llevar a cabo cualquier proyecto con este lenguaje Las GPUs como un dispositivo de procesamiento de datos en paralelo Desde un tiempo a esta parte, las GPUs programables han evolucionado como un elemento con una carga de trabajo, como podemos apreciar en las figuras 3.1 y 3.2, donde se muestra una comparativa de la evolución de la capacidad de cómputo y del ancho de banda de las CPUs y las GPUs. Con múltiples núcleos y con un gran ancho de banda de memoria, hoy por hoy las GPUs ofrecen prestaciones muy elevadas para el procesamiento gráfico y científico [22 25]. Figura 3.1. Operaciones en coma flotante por segundo para CPU y GPU. Trabajo Fin de Máster -25- Sergio Bernabé García

26 Figura 3.2. Ancho de banda CPU y GPU. Antes de continuar en más detalle con la arquitectura de una GPU Tesla c1060 de NVIDIA 4, consideramos relevante explicar cómo han funcionado las operaciones en un pipeline de una GPU clásica a lo largo de los años. No obstante, para entender este proceso, también debemos introducir los conceptos de vertex shaders y los píxel shaders. Vertex shaders y píxel shaders A través de los shaders nos podemos encargar del procesamiento de vértices (vertex shaders) y de píxeles (píxel shaders), cuya principal ventaja es que pueden ser programados por el desarrollador. Es una tecnología reciente y que ha experimentado una gran evolución destinada a proporcionar al programador una interacción con la GPU hasta ahora imposible. Con los shaders, se podrán conseguir muchos de los efectos que antes eran impensables por la cantidad de carga que conllevaba. Actualmente se utilizan para realizar transformaciones y crear efectos especiales, como por ejemplo iluminación, fuego o niebla. Para su programación los shaders utilizan lenguajes específicos de alto nivel que permiten la independencia del hardware. 4 Trabajo Fin de Máster -26- Sergio Bernabé García

27 Un vertex shader es una función que recibe como parámetro un vértice. Sólo trabaja con un vértice a la vez, y no puede eliminarlo, sólo transformarlo. Para ello, modifica propiedades del mismo para que repercutan en la geometría del objeto al que pertenece. Con esto se pueden lograr ciertos efectos específicos, como los que tienen que ver con la deformación en tiempo real de un elemento; por ejemplo, el movimiento de una ola. Donde toma una gran importancia es en el tratamiento de las superficies curvas. En cambio, un píxel shader básicamente especifica el color de un píxel. Este tratamiento individual de los píxeles permite que se realicen cálculos principalmente relacionados con la iluminación del elemento del cual forman parte en la escena, y en tiempo real. La incorporación de los píxel shaders y vertex shaders permite a los programadores una mayor libertad a la hora de diseñar gráficos en tres dimensiones, ya que puede tratarse a cada píxel y cada vértice por separado. De esta manera, los efectos especiales y de iluminación pueden crearse mucho más detalladamente, sucediendo lo mismo con la geometría de los objetos. Pipeline clásico de procesamiento en una GPU Cuando revisamos las arquitecturas hardware, el flujo de datos, y las operaciones pipeline, a menudo es bueno empezar por el nivel más alto, donde los datos llegan desde la CPU a la GPU, y el proceso se desarrolla hacia abajo a través de múltiples fases de procesamiento hasta que un píxel es dibujado definitivamente en la pantalla. Para situarnos, las GPUs han utilizado diseños pipeline tradicionales, como los que aparecen ilustrados en la figura 3.3. Después que la GPU recibe los datos vertex (vértices) desde el host (CPU), la fase vertex se ejecuta en primer lugar. La función de fijado transforma la imagen y el hardware de luminosidad operado en esta fase se lleva a cabo; entonces los píxeles shaders programables, y el control de flujo dinámico de los modelos shaders entran en juego. El siguiente paso en el pipeline clásico es la configuración, donde los vértices son ensamblados dentro de primitivas como triángulos, líneas o puntos. Las primitivas son convertidas por la fase de rasterización en fragmentos de píxeles (o Trabajo Fin de Máster -27- Sergio Bernabé García

28 simplemente fragmentos), pero no son considerados píxeles completos en esta fase. Los fragmentos están sometidos a muchas otras operaciones como sombreado, Z-testing, la posible mezcla en el buffer frame, y el antialiasing. Los fragmentos son finalmente considerados píxeles cuando han sido escritos en el buffer frame. Figura 3.3. Pipeline clásico de procesamiento en una GPU. A continuación, la siguiente fase es la de píxel shader, que debería ser denominada técnicamente como fase fragment shader, pero utilizamos la notación estándar en la literatura [22 25] debido a su aceptación. En el pasado, los fragmentos sólo podían haber tenido valores de color aplicados de textura simple. Hoy en día, la capacidad de sombreado de un píxel programado de la GPU permite numerosos efectos de sombreado para ser aplicados mientras se trabaja de acuerdo con métodos complejos de multitextura. Específicamente, los fragmentos sombreados (con color y valores Z) desde esta fase píxel son enviados al ROP (Raster Operations). La fase ROP es donde se chequea el buffer Z para asegurar que sólo los fragmentos visibles son procesados rápidamente, y los fragmentos visibles, si son parcialmente transparentes, son mezclados con el buffer de frame existente, junto con los píxeles y aplicándoles antialiased. El píxel procesado final es enviado a la memoria buffer para ser escaneado y visualizado en el monitor [22]. Evolución del uso de GPUs en aplicaciones científicas La principal razón que justifica la gran popularidad de las arquitecturas GPU en Trabajo Fin de Máster -28- Sergio Bernabé García

29 aplicaciones científicas es el hecho de que la GPU está especializada para cómputo intensivo, computación paralela elevada (exactamente sobre lo que trata el renderizado de gráficos) y por tanto se designan más transistores dedicados al procesamiento de datos, que a la recolección de datos y control de flujo como se muestra en la figura 3.4. Figura 3.4. La GPU proporciona más transistores para el procesamiento de datos. Más específicamente, la GPU está especialmente pensada para direccionar problemas que pueden ser expresados como computaciones de datos paralelos (el mismo programa es ejecutado en muchos elementos de datos en paralelo) con gran intensidad aritmética (el ratio de operaciones aritméticas respecto a operaciones de memoria). Como el mismo programa es ejecutado para cada elemento de datos, hay menos requisitos para un flujo de control sofisticado; y como es ejecutado en muchos elementos de datos y tiene gran intensidad aritmética, la latencia de acceso a memoria puede ser ocultada con cálculos, en vez de datos muy grandes de caché [23]. El procesamiento de datos paralelos asocia los datos a elementos de proceso paralelos. Muchas aplicaciones que procesan grandes conjuntos de datos como arrays pueden usar un modelo de programación de datos paralelos para acelerar los cálculos. En renderizado 3D los conjuntos de píxeles y vértices se asignan a hilos paralelos. De la misma manera, aplicaciones de procesamiento de imágenes y multimedia como postprocesado de imágenes renderizadas, codificación y decodificación de vídeo, escalado de imágenes, visión estéreo, y patrones de reconocimiento pueden asociar bloques de la imagen y píxeles a hilos de Trabajo Fin de Máster -29- Sergio Bernabé García

30 procesamiento paralelo. De hecho, muchos algoritmos fuera del campo del renderizado como el procesamiento de señales, simulaciones físicas finanzas o biología, se aceleran con el procesamiento de datos en paralelo. Hasta la fecha, sin embargo, a pesar de acceder a todo el poder de computación contenido en la GPU y usarlo eficientemente para aplicaciones científicas, seguía siendo difícil obtener las siguientes pautas: La GPU solamente podía ser programada a través de la API (Application Programming Interface) gráfica; esto provocaba que la curva de aprendizaje para un desarrollador principiante fuese muy elevada, ya que tenía que trabajar con una API inadecuada, que no estaba adaptada a la aplicación científica. La DRAM de la GPU podía ser leída de manera general (los programas de GPU pueden obtener elementos de datos de cualquier parte de la DRAM) pero no se podía escribir de manera general (los programas de GPU no pueden esparcir la información a cualquier parte de la DRAM), eliminando mucha de la flexibilidad de programación ya disponible en la CPU. Algunas aplicaciones tenían en problema del cuello de botella, debido al ancho de banda de la memoria DRAM, utilizando escasamente el poder computacional de la GPU. En este sentido, una de las principales motivaciones del presente TFM es demostrar que dichas limitaciones en la actualidad pueden superarse mediante la utilización de la arquitectura CUDA para procesamiento de datos científicos en la GPU. Dicho aspecto será abordado en detalle en el siguiente subapartado del presente capítulo de la memoria. Trabajo Fin de Máster -30- Sergio Bernabé García

31 3.2. CUDA: una nueva arquitectura para el cálculo en la GPU CUDA viene del inglés Compute Unified Device Architecture y es una nueva arquitectura hardware y software, diseñada para dar y manejar procesamientos en la GPU como un elemento de computación de datos paralelos sin la necesidad de mapearlos a una API de gráficos. Está disponible para las versiones GeForce 8 Series, Quadro FX 5600/4600, Tesla y Fermi. El mecanismo de multitarea del sistema operativo es responsable de manejar el acceso a la GPU mediante CUDA, y las aplicaciones gráficas funcionan de forma simultánea. A continuación describimos el pipeline unificado del que disponen las actuales GPUs de NVIDIA y que puede ser explotado de forma eficiente mediante CUDA, así como la arquitectura completa de la Tesla C1060. El apartado finaliza describiendo los diferentes modelos de programación en CUDA. Pipeline unificado A partir del modelo de pipeline clásico, con sus flujos de datos empezando en lo más alto, donde los vértices con varios atributos, índices, comandos, y texturas son pasados a la GPU desde la CPU. Las fases de procesamiento mayores siguen una manera lineal segura incluyendo vertex shading, píxel shading, operaciones raster, (que son operaciones a través de las cuales un área espacial queda dividida en celdas regulares, en las que cada una de las cuales presentan unos atributos o valor, como pueden ser la altitud, reflectancia, etc.) y escritura de píxeles en el buffer frame. Con este pipeline unificado y la arquitectura shader, el diseño de la GPU Tesla c1060 reduce significativamente el número de fases del pipeline y cambia el flujo secuencial para estar más orientado a bucle. Las entradas son alimentadas en la parte alta del núcleo shader unificado, y las salidas son escritas en registros y entonces vuelven otra vez a la parte alta del núcleo shader para la próxima operación. Como resultado, en el diagrama GPU unificado generalizado que se muestra en la figura 3.5, los flujos de datos bajan secuencialmente por el pipeline a través de diferentes tipos shader. La figura de la derecha representa un núcleo shader unificado con uno o más procesadores shader unificados estandarizados. Trabajo Fin de Máster -31- Sergio Bernabé García

32 Figura 3.5. Pipeline clásico frente a pipeline unificado. Como puede apreciarse en la figura 3.5, los datos vienen de la parte superior izquierda del diseño unificado (como vértices), y son llevados al núcleo shader para su procesamiento, y los resultados son enviados de vuelta a la parte superior del núcleo shader, donde son llevados otra vez, procesados otra vez, mandados de vuelta a la parte superior, y así hasta que todas las operaciones shader son ejecutadas y el fragmento de píxel se pasa al subsistema ROP [22]. Modelo de programación CUDA Antes de profundizar en el modelo de programación empleado por CUDA, destacamos que la pila del software de CUDA se compone de varias capas, tal y como muestra la figura 3.6. En concreto, dichas capas son un controlador de hardware, una API y su runtime, y dos librerías matemáticas de alto nivel para uso común, CUFFT y CUBLAS. El hardware ha sido diseñado para soportar controladores ligeros y capas runtime, dando como resultado una ejecución óptima. En este sentido, la API de CUDA es una extensión del lenguaje de programación C, lo cual hace que tenga una curva de aprendizaje mínima. Trabajo Fin de Máster -32- Sergio Bernabé García

33 Figura 3.6. Pila de software de CUDA. Por otra parte, CUDA ofrece un direccionamiento de carácter general para la memoria DRAM como ilustra la figura 3.7. Este modelo de direccionamiento permite obtener mayor flexibilidad en la programación, en el sentido de que ofrece tanto la operación de reparto de datos como la de obtención de estos. Desde una perspectiva de programación, esto se traduce en la habilidad de leer y escribir datos en cualquier lugar de la DRAM, exactamente igual que en la CPU [23]. Figura 3.7. Operaciones de memoria Gather (reunión) y Scatter (dispersión). Trabajo Fin de Máster -33- Sergio Bernabé García

34 CUDA proporciona una memoria compartida on-chip a modo de caché de datos que permite accesos muy rápidos de lectura y de escritura. Mediante ésta los hilos pueden compartir datos. Como se muestra en la figura 3.8, las aplicaciones pueden beneficiarse de esta memoria minimizando los accesos a memoria DRAM lo que les hace menos dependientes del ancho de banda de la DRAM que es mucho menor que el de la shared memory. Figura 3.8. Shared memory Procesamiento en la GPU En la siguiente sección presenta a la GPU como un coprocesador multihilo para la CPU, seguidamente se exponen los diferentes mecanismos de los que se hace uso para llevar a cabo el procesamiento en la GPU, estos son los hilos de ejecución, los bloques en los que se organizan estos hilos y los llamados grid en los que se estructuran estos bloques. La sección finaliza con el modelo de memoria utilizado por CUDA. Un coprocesador multihilo Cuando se programa con CUDA, la GPU se ve como un dispositivo de cálculo (device) capaz de ejecutar un gran número de hilos en paralelo. Éste opera como un Trabajo Fin de Máster -34- Sergio Bernabé García

35 coprocesador de la CPU principal, o host. En otras palabras, los datos paralelos, cálculo intensivo de porciones de aplicaciones ejecutándose en el host son cargados en el device. De forma más precisa, una parte de una aplicación que se ejecuta muchas veces, pero con datos diferentes e independientes, puede ser aislada en una función que es ejecutada en el device como muchos hilos independientes. Como dicha función es compilada, la instrucción obtenida a partir del device (en nuestro caso, la GPU) y el programa resultante, llamado kernel, se descargan en el device. Tanto el host como el device mantienen su propia DRAM, referidas como memoria del host y memoria del device respectivamente. Una puede copiar datos de una memoria a la otra a través de llamadas a una API optimizada, que usa el Acceso Directo a Memoria (DMA) del device [23]. Hilos, Bloques y Grids El tratamiento por lotes de los hilos que ejecuta el kernel está organizado como un grid de bloques de hilos, ilustrado en la figura 3.9. Un bloque de hilos es un lote de hilos que pueden cooperar juntos compartiendo datos eficientemente a través de la memoria compartida y sincronizar sus ejecuciones para coordinar los accesos a memoria. De forma precisa, uno puede especificar puntos de sincronización en el kernel, donde los hilos en un bloque están suspendidos hasta que todos ellos alcancen el punto de sincronización. Cada hilo es identificado por su identificador de hilo (thread ID), que es el número de hilo dentro de un bloque [23]. Hay un número máximo de hilos que un bloque puede contener (512 hilos concretamente). Sin embargo, los bloques de misma dimensión y tamaño que ejecutan el mismo kernel pueden ser tratados por lotes de forma conjunta, en un grid de bloques, así que el número total de hilos puede ser lanzado en una única invocación del kernel es mucho más grande. Esto se debe al gasto de reducir la cooperación entre hilos, porque los hilos en diferentes bloques del mismo grid no pueden comunicarse ni sincronizarse con los de los demás. Este modelo permite a los kernels ejecutarse eficientemente sin recompilación en varios devices con diferentes capacidades paralelas: un device puede ejecutar todos los bloques de un grid secuencialmente si tiene poca capacidad, o en paralelo si tiene mucha, o Trabajo Fin de Máster -35- Sergio Bernabé García

36 normalmente una combinación de ambas [23]. La figura 3.9 muestra como cada kernel se ejecuta como un grid de bloques de hilos. Modelo de memoria Figura 3.9. Grid, bloques e hilos. Un hilo que se ejecute en el device tiene solo acceso a la DRAM del device y a la memoria on-chip a través de los siguientes espacios de memoria (ver tabla 3.1) [23], como se muestra en la figura Registro de hilo Memoria compartida de bloque Memoria local de hilo Memoria global de grid Memoria constante de grid Memoria de texturas de grid Lectura Escritura Tabla 3.1. Lecturas y escrituras en los diferentes tipos de memoria. Trabajo Fin de Máster -36- Sergio Bernabé García

37 Los espacios de memoria global, constante y de textura pueden ser leídos o escritos por el host y perduran durante las distintas ejecuciones del kernel en la misma aplicación. Estos espacios se optimizan para diferentes usos de la memoria. Además la memoria de texturas ofrece diferentes modos de direccionamiento, así como de filtrado de datos, para diferentes formatos de datos. Figura Acceso a diferentes espacios de memoria Implementación hardware y modelo de ejecución. En esta sección se presenta la arquitectura hardware de la GPU utilizada en el trabajo y se explica el modelo de ejecución que sigue CUDA. NVidia Tesla c1060 A lo largo de la presente memoria hemos cubierto muchos de los puntos básicos de la programación de GPUs de NVidia, así que ahora podemos echar un vistazo a los aspectos específicos de la arquitectura Tesla c1060 [22], la tarjeta que estamos Trabajo Fin de Máster -37- Sergio Bernabé García

38 usando para realizar este TFM. La figura 3.11 describe la arquitectura hardware de dicha tarjeta. El significado de las siglas que aparecen en el esquema es el siguiente: TPC (Texture/Processor Cluster), SM (Streaming Multiprocessor), SP (Streaming Processor), Tex (Texture), ROP (Raster Operation Processor). Figura Arquitectura de la GPU Tesla c1060 de NVidia. A continuación la tabla 3.2 muestra las características técnicas de la GPU: Form Factor Specification Description 10.5 x 4.376, Dual Slot # of Streaming Processor Cores 240 Frequency of Processor cores 1.3 GHz Single Precision floating point performance (peak) 933 Double Precision floating point performance (peak) 78 Floating Point Precision IEEE 754 single & double Total Dedicated Memory 4 GDDR3 Memory Speed 800 MHz Memory Interface 512-bit Memory Bandwidth 102 GB/sec Max Power Consumption W System Interface PCIe x16 Trabajo Fin de Máster -38- Sergio Bernabé García

39 Auxiliary Power Connectors Thermal Solution 6-pin & 8-pin Active fan sink Tabla 3.2. Especificaciones técnicas de la GPU Tesla c1060 de NVidia. Modelo de ejecución La GPU se implementa como un conjunto de multiprocesadores como se puede ver en la figura Cada multiprocesador tiene una arquitectura SIMD: en cada ciclo de reloj, cada procesador del multiprocesador ejecuta la misma instrucción, pero opera en datos distintos. Los espacios de memoria local y global son implementados como regiones de la memoria del device. Cada procesador tiene acceso a la memoria compartida del multiprocesador en el que está integrado. Cada multiprocesador accede a la cache de textura mediante una unidad de textura que implementa los diferentes modos de direccionamiento y filtros de datos [23]. Figura Conjunto de multiprocesadores SIMD con memoria compartida on-chip. Trabajo Fin de Máster -39- Sergio Bernabé García

40 Un grid de bloques de hilos se ejecuta en el device mediante la programación de los bloques en cada multiprocesador. Cada multiprocesador procesa los bloques por lotes, un lote tras otro. Un bloque solo se procesa en un multiprocesador, así el espacio de memoria compartida reside en la memoria on-chip compartida por lo que se puede beneficiar de la velocidad que proporciona dicha memoria. El número de bloques que cada multiprocesador puede procesar en un lote depende de cuantos registros necesita cada hilo y de cuanta memoria compartida necesita cada bloque en un kernel ya que estos recursos se deben compartir entre todos los hilos de los bloques del lote. Si no hay una cantidad suficiente de registros o de memoria compartida disponible en un multiprocesador para procesar al menos un bloque, el kernel fallará en su ejecución. Los bloques que se procesan en un multiprocesador en un lote se llaman activos. Cada bloque activo se divide en grupos de hilos SIMD llamados warps. Cada uno de estos warps contiene el mismo número de hilos, este número se llama warp size, y se ejecuta en un multiprocesador en modo SIMD. Los warps activos (los warps de los bloques activos) se dividen en el tiempo: un programador de hilos cambia de un warp a otro para maximizar el uso de recursos computacionales del multiprocesador. Se llama half warp a la primera o a la segunda mitad de un warp. La forma en la que un bloque se divide en warps es siempre la misma; cada warp contiene hilos consecutivos, incrementando sus identificadores de hilo (thread ID). El primer warp contiene al hilo 0. El orden de emisión de los warps de un bloque no está definido y no existe un mecanismo de sincronización entre bloques para coordinar los accesos a memoria global o compartida. El orden de emisión de los bloques en un grid de bloques de hilos tampoco está definido y no hay un mecanismo de sincronización entre bloques, así que los hilos de dos bloques diferentes pertenecientes al mismo grid no se pueden comunicar de una forma segura a través de la memoria global durante la ejecución de un grid. Si una instrucción no atómica ejecutada por un warp escribe en la misma Trabajo Fin de Máster -40- Sergio Bernabé García

41 posición ya sea de memoria global o compartida por más de un hilo de warp, el número de de escrituras serializadas que ocurran en esa posición así como el orden de las escrituras es indefinido, pero se garantiza que al menos una escritura tenga éxito. Si una instrucción atómica ejecutada por un warp lee, modifica o escribe en una posición de memoria ya sea global o compartida por más de un hilo del warp, cada lectura, modificación o escritura en la posición ocurre de forma serializada aunque el orden es indefinido. Especificaciones generales A continuación en la tabla 3.3 se listan una serie de especificaciones generales que se deben tener en cuenta a la hora de programar una GPU con CUDA para lograr una ejecución más eficiente en función de la capacidad de cómputo (Compute capability) de la GPU. Parámetro Valor según gener. CPU CUDA Compute Limitación Impacto 1.0 y y 1.3 Fermi Capabilities Multiprocesadores / GPU HW. Escalabilidad Procesadores / Multiprocesador HW. Escalabilidad Hilos / Warp SW. Throughput Bloques de hilos / Multiprocesador SW. Throughput Hilos / Bloque SW. Paralelismo Hilos / Multiprocesador SW. Paralelismo Registros de 32 bits / Multiproc HW. Working Set Memoria 16 K compartida / Multiproc. 48 K HW. Working Set Tabla 3.3. Recursos y limitaciones según la GPU que utilicemos para programar CUDA. A continuación en la tabla 3.4 se muestra la capacidad de cómputo y el número de multiprocesadores de cada GPU de NVidia. Trabajo Fin de Máster -41- Sergio Bernabé García

42 Número de Multiprocesadores (1 Multiprocesador = 8 Procesadores) Compute Capability GeForce GTX x GeForce GTX 285, GTX GeForce GTX GeForce 9800 GX2 2x GeForce GTS 250, GTS 150, 9800 GTX, 9800 GTX+, 8800 GTS GeForce 8800 Ultra, 8800 GTX GeForce 9800 GT, 8800 GT, GTX 280M, 9800M GTX GeForce GT 130, 9600 GSO, 8800 GS, 8800M GTX, GTX 260M, 9800M GT GeForce 8800 GTS GeForce 9600 GT, 8800M GTS, 9800M GTS GeForce 9700M GT GeForce GT 120, 9500 GT, 8600 GTS, 8600 GT, 9700M GT, 9650M GS, 9600M GT, 9600M GS, 9500M GS, 8700M GT, 8600M GT, 8600M GS GeForce G100, 8500 GT, 8400 GS, 8400M GT, 9500M G, 9300M G, 8400M GS, 9400 mgpu, 9300 mgpu, 8300 mgpu, 8200 mgpu, 8100 mgpu GeForce 9300M GS, 9200M GS, 9100M G, 8400M G Tesla s1070 4x Tesla c Tesla s870 4x Testa d870 2x Tesla c Quadro Plex 2200 D2 2x Quadro Plex 2100 D4 4x Quadro Plex 2100 Model S4 4x Quadro Plex 1000 Model IV 2x Quadro FX Quadro FX Quadro FX 4700 X2 2x Quadro FX 3700 M Quadro FX Quadro FX Quadro FX 3600M Quadro FX Quadro FX 2700 M Trabajo Fin de Máster -42- Sergio Bernabé García

43 Quadro FX 1700, FX 570, NVS 320M, FX 1700M, FX 1600M, FX 770M, FX 570M Quadro FX 370, NVS 290, NVS 140M, NVS 135M, FX 360M Número de Multiprocesadores (1 Multiprocesador = 8 Procesadores) Compute Capability Quadro FX 370M, NVS 130M Tabla 3.4. Capacidad de cómputo y número de multiprocesadores de cada GPU de NVidia. Trabajo Fin de Máster -43- Sergio Bernabé García

44 4. Procesamiento en Imágenes. Tipos de clasificaciones: clustering Es uno de los pasos más importantes una vez que disponemos del acceso al servicio web de Google Maps en nuestra aplicación, para ello será necesario desarrollar diferentes algoritmos de análisis de imágenes y reconocimiento de patrones orientados a caracterizar entre otras cosas, el color englobados en zonas geográficamente compactas seleccionadas por el usuario. Con la integración de técnicas de clasificación de imágenes, vamos a intentar conseguir asignar los distintos píxeles de una imagen a un grupo o clase que posea unas características similares. Este tipo de procedimiento es conocido como clustering [26-27], cuyo procedimiento consta de realizar agrupaciones de una serie de vectores de acuerdo a un criterio de cercanía. Para definir dicho criterio vamos a utilizar en esta ocasión la distancia euclídea, aunque existen otras funciones más robustas. Con todo esto, nos surgió la duda de qué algoritmo habría que utilizar o si habría que utilizar varios. Para ello tendremos dos opciones: Algoritmos no supervisados. También conocidos como algoritmos de clasificación sin aprendizaje, presuponen que no existe ningún tipo de conocimiento a priori sobre las clases existentes. El objetivo de estas técnicas es identificar, de forma automatizada, clases o agrupaciones de píxeles, utilizando para ello una métrica de similaridad (aquellos píxeles cuyos valores RGBA se encuentren más próximos se van agrupando formando clases). Algoritmos supervisados. También conocidos como algoritmos de clasificación con aprendizaje, parten de un cierto conocimiento sobre las clases existentes basados en la disponibilidad de áreas de entrenamiento donde a priori se puede conocer la clase a la que pertenece y que servirá para generar una firma espectral característica de cada una de las clases. Trabajo Fin de Máster -44- Sergio Bernabé García

45 En este trabajo afrontaremos la implementación de un algoritmo de clasificación no supervisada ampliamente conocido en el ámbito científico, dicho algoritmo es: K-Means. La implementación paralela de los algoritmos supervisados lo dejaremos como posibles líneas futuras de este trabajo Algoritmos de clasificación no supervisados Las técnicas de clasificación no supervisadas suponen un intento de automatizar el proceso de clasificación, reduciendo al máximo la necesidad de una supervisión del proceso. Entre las técnicas existentes [18], destaca el método K-Means, que supone la existencia de K clases (parámetro que deberá ser determinado a priori) y realiza una agrupación de los píxeles de la imagen en dichas clases utilizando los vectores métodos puramente estadísticos basados en los espectros promedio de dichas clases. El funcionamiento de dicho algoritmo es el siguiente: Paso 1/4 De una forma arbitraria se deben de elegir K centros de cluster m (0) 1, m (0) 2,, m (0) k (Por ejemplo, podría ser las k primero muestras del conjunto. Siendo Conjunto l=0). Paso 2/4 Asignar cada una de las muestras {x i, i = 1,, N} a uno de los grupos de acuerdo a la distancia entre la muestra y el centro de agrupación: x w j if D L (x, m (l) j ) = min {D L (x, m (l) i ), i = 1,, k} (4.1) donde w j denota el grupo i de muestras cuyo centro es m (l) j. Trabajo Fin de Máster -45- Sergio Bernabé García

46 Paso 3/4 Actualizar todos los centros de cluster para obtener m j ( l + 1) ( ) =, ( =1,, ) (4.2) Donde N j (l) es el número de muestras en la actualidad w j (l), y ( ) = (4.3) De este modo la suma de las distancias desde todos los puntos w j (l) al nuevo centro se reduce al mínimo, es decir, ( ), ( ). ( =1,, ) (4.4) Paso 4/4 Se terminaría si el algoritmo converge (es decir, el número de miembros de cada modelo no se cambia por el paso 2): ( ) = ( ) ( =1,, ) (4.5) o también si se ha llegado a un número máximo predeterminado de iteraciones. De lo contrario, se pasaría a la siguiente iteración y se volvería al paso dos. Cómo hemos podido comprobar, este método es simple, pero tiene algunos inconvenientes (ver tabla 4.1). La figura 4.1 muestra un ejemplo gráfico de funcionamiento del algoritmo en un espacio de dos dimensiones. Trabajo Fin de Máster -46- Sergio Bernabé García

47 VENTAJAS Sencillo y eficiente INCONVENIENTES Limitado por el orden de presentación de los patrones (el resultado depende de la configuración inicial de los agrupamientos). Un único parámetro Necesidad de conocer el número de clusters K: su comportamiento depende enormemente del valor elegido para el parámetro K. Tabla 4.1. Ventajas e inconvenientes de la utilización del algoritmo K-Means. Gráficamente y reducido a dos bandas sería de la siguiente forma: Figura 4.1. Ejemplo gráfico del algoritmo K-Means. Por otra parte, otro método bastante reconocido en el ámbito de clasificaciones no supervisadas, es el método ISODATA (Iterative Self-Organizing Data Analysis Techniques). Dado que esta técnica se basa en el anterior método comentado, lo dejaremos como futura línea de trabajo. Finalmente, tras la aplicación de cualquiera de las dos técnicas no supervisadas mencionadas anteriormente, y con carácter opcional, los datos resultantes de la clasificación pueden ser post-procesados (por ejemplo, utilizando técnicas espaciales) para mejorar la coherencia de los mismos. Trabajo Fin de Máster -47- Sergio Bernabé García

48 5. Procesamiento paralelo en GPU Una vez introducidas las ventajas que aportan las GPUs para el procesamiento paralelo pasemos a exponer como se llevo a cabo este procesamiento en el caso que nos ocupa, es decir en el algoritmo de clasificación no supervisada que ha sido descrito anteriormente. Como ya sabemos contamos con una GPU NVidia Tesla c1060 la cual cuenta con 30 multiprocesadores cada uno de los cuales dispone a su vez de 8 procesadores. Pongamos como caso de uso una imagen hipotética de dimensiones 512 x 512 x 4, esto es, 512 líneas, 512 columnas y 4 bandas (red R, green G, blue B, alpha A). Pues bien, cuando se necesita paralelizar un algoritmo, el diseñador debe ser consciente de las características de la arquitectura donde se va a ejecutar un algoritmo dado. Realizar una buena distribución del trabajo, es decir, repartir una serie de hilos proporcionalmente al número de elementos de procesamiento independientes, es una de las cuestiones que pueden favorecer al proceso de paralelización o perjudicarlo. Por ello, dependiendo de cómo asignemos la carga de trabajo a cada uno de los threads, nos vamos a poder encontrar con problemas de paralelización tales como el denominado cuello de botella. En nuestro caso, que ya conocemos como funciona el algoritmo que se desea paralelizar, sabremos que la parte más importante del algoritmo es la asignación de cada uno de los píxeles al cluster cuyo centro sea más cercano. Para ello necesitaremos calcular la distancia euclídea (ver tabla 5.1) para cada uno de los píxeles al centro de cluster más cercano. Para implementar este algoritmo en CUDA, podemos asignar el cálculo de la distancia de cada píxel de la imagen en un único subproceso. De tal manera que cada thread realice el cálculo de la distancia entre los valores de cada uno de los píxeles y el centro de cluster más cercano, además de la asignación a su cluster correspondiente. Cuando todos los threads hayan terminado, conoceremos la composición de cada uno de los cluster y por tanto la primera fase del algoritmo habrá terminado. En la práctica va a ser complicado que nos vayamos a encontrar que el número Trabajo Fin de Máster -48- Sergio Bernabé García

49 de elementos a procesar sean iguales al número de procesos (éste último en la práctica se encuentra limitado). En el algoritmo que se ha desarrollado los píxeles son distribuidos en una matriz de 1 dimensión (cuyas posiciones son los valores RGBA de cada uno de los píxeles). Tabla 5.1. Métricas utilizadas para calcular la similitud de características. Para la siguiente fase del algoritmo, donde se necesitan recalcular los centros de cada cluster y reasignar de nuevo los píxeles a cada uno de los clusters, aprovecharemos la idea del algoritmo serie utilizado. Se realizará de esta manera por dos razones: En este paso el algoritmo requiere un intenso intercambio de datos y podría crear una congestión en la memoria del subsistema. Aunque una forma de poder paralelizar esta parte, sería pedir a cada uno de los threads qué píxeles es miembro de un determinado cluster para poder añadir sus valores a una cierta estructura en memoria. Esta opción no sería muy buena ya que crearía demasiado tráfico. También se podría aplicar el proceso de reducción, es decir, teniendo una lista de valores RGBA correspondientes a los píxeles de cada uno de los clusters, se podrían sumar en log 2 (n), siendo n el número de elementos pertenecientes Trabajo Fin de Máster -49- Sergio Bernabé García

50 a un cluster determinado. Para ello en cada iteración produciríamos n/2 sumas, después n/4 sumas, n/8 sumas y así hasta llegar al proceso que quede una suma única. Gráficamente tendríamos lo siguiente (ver figura 5.1): Figura 5.1. Ejemplo de reducción en tres pasos de una suma dado un cluster de 8 elementos. Incluso utilizando un enfoque en serie, este paso del algoritmo no es un factor dominante en el tiempo total de la solución. Para el último paso del algoritmo, comprobar si converge, no vale la pena el esfuerzo de paralelizar este paso, ya que normalmente el número de clusters que se suele utilizar está comprendido entre 1 y 10, por tanto, optaremos a realizar este paso en serie ya que tampoco es un factor dominante en el tiempo total de la solución Implementación CUDA Para dicha implementación, hemos utilizado dos estructuras de dato: Trabajo Fin de Máster -50- Sergio Bernabé García

51 El algoritmo de aceleración para K-Means que se ha implementado consta de tres etapas de operación bien diferenciadas Primera etapa En esta primera etapa se inicializa el hardware CUDA, reservando las áreas de almacenamiento de memoria necesaria para el host y el device, las estimaciones iniciales del conjunto de cluster y el conjunto de datos en la memoria a bordo de la tarjeta gráfica. La utilización de las macros CUT_SAFE_CALL y CUDA_SAFE_CALL es únicamente para la comprobación de errores. Trabajo Fin de Máster -51- Sergio Bernabé García

52 A continuación mostraremos el código que lanzarán todos los threads en la parte del host. Los threads serán enviados automáticamente por el hardware. La llamada a la función kernel se quedará bloqueada en la parte host, hasta que todos los threads sean enviados y completados. Después en el código host se Trabajo Fin de Máster -52- Sergio Bernabé García

53 comprobará la correcta ejecución del kernel CUDA, copiando los resultados desde la memoria del dispositivo. Finalmente, el host liberará la memoria reservada y finalizará Segunda etapa La segunda parte, qué es la carga de trabajo más pesada del programa, es la ejecución del kernel en el dispositivo GPU. Cada thread procesará un único píxel, y calculará la distancia entre el píxel y el centro de cada cluster. Durante la ejecución del bucle se estará determinando la misma distancia entre el píxel y cada uno de los Trabajo Fin de Máster -53- Sergio Bernabé García

54 clusters y una vez que este bucle termine, los resultados serán almacenados en la memoria del dispositivo. Un aspecto importante de este código es el uso de la memoria constante para el almacenamiento de los datos relacionados con cada uno de los clusters. La memoria constante es una parte cacheable de la memoria del device. En el modelo c1060 de Tesla, tenemos 16 KB por cada bloque de threads. Su utilización proporciona un acceso rápido a determinadas variables, que en nuestro caso se trataba de acceder a la información de cada uno de los clusters, de modo que cada thread dentro del bucle pudiera acceder a la información de cada cluster. Nos dimos cuenta que su utilización fue tan importante que de no haberla utilizado (por tanto se habría utilizado la memoria global), los resultados hubieran sido de un orden menor a los obtenidos tras esta implementación Tercera etapa La tercera parte de esta implementación se trata de actualizar los centros una vez que cada uno de los píxeles se ha asignado al centro de cluster más cercano y de comprobar si se ha alcanzado la condición de convergencia o incluso si se ha llegado al máximo de iteraciones definidas por el usuario. Esta parte del código se decidió realizarla en serie en el host. Todos los pasos descritos en el algoritmo se van a realizar hasta que se llegue al máximo de iteraciones permitidas por el usuario o bien hasta que se alcance la Trabajo Fin de Máster -54- Sergio Bernabé García

55 condición de convergencia del bucle. A continuación mostraremos el código utilizado tanto para la actualización de los centros, como para comprobar la convergencia y la posterior asignación de los píxeles a su posible cluster más cercano CUDA Occupancy Calculator Es una herramienta que nos asesora en la elección de los parámetros de configuración de un kernel. Se trata de una hoja de cálculo que nos presenta diversas gráficas de la ocupación de un multiprocesador en función de la capacidad de cómputo, del número de hilos que utilicemos en cada bloque, del número de registros que utilicemos por hilo y de la cantidad de memoria compartida por bloque. El número de hilos por bloque es fácil de conocer ya que es un parámetro fijado por el desarrollador. Para conocer tanto el número de registros usados como la cantidad de Trabajo Fin de Máster -55- Sergio Bernabé García

56 memoria compartida necesitamos incluir como modificador en el compilador el flag ptxas-options= -v. Con esto a la hora de compilar podremos conocer esos valores. Con estos cuatros parámetros CUDA Occupancy Calculator nos mostrará entre otras cosas el número de hilos activos por multiprocesador, el número de warps activos por multiprocesador, el número de bloques de hilos activos por multiprocesador y la ocupación de cada multiprocesador. El principal objetivo de usar esta herramienta es conseguir un 100% de ocupación lo que significa que no hay ningún procesador ocioso en ningún multiprocesador. A continuación la figura 5.2 muestra el aspecto de esta herramienta: Figura 5.2. Cuda Occupancy Calculator. Seguidamente mostraremos los resultados de CUDA Occupancy Calculator para una de nuestras ejecuciones, concretamente para una de nuestras imágenes de satélite Trabajo Fin de Máster -56- Sergio Bernabé García

57 extraída de Google Maps y descrita en el siguiente capítulo. La tabla 5.2 muestra los parámetros introducidos en la herramienta: Tabla 5.2: Cuda occupancy calculator: parámetros introducidos. Una vez que hemos introducido los parámetros se calcula la ocupación de cada multiprocesador y se muestra el estado de estos en las gráficas. La tabla 5.3 muestra los resultados calculados en base a estos parámetros: Tabla 5.3: Cuda occupancy calculator: resultados calculados en función de los parámetros. La herramienta además proporciona tres gráficas, cada una de ellas asociada a un parámetro (nº de hilos por bloque, nº de registros por hilo y memoria compartida usada por cada bloque), en éstas se muestra la ocupación conseguida con la configuración actual y los posibles cambios en la ocupación si variamos el valor del parámetro asociado. La ocupación se calcula como: Ocupación = º º á Máximo = 24 warps (1.0 y 1.1), 32 warps (1.3) Trabajo Fin de Máster -57- Sergio Bernabé García

58 La figura 5.3 muestra la gráfica asociada al número de hilos por bloque. Figura 5.3: Cuda occupancy calculator: gráfica asociada al número de hilos por bloque. La ocupación calculada con la configuración actual viene representada por la posición del triángulo rojo, éste está a la misma altura en las tres gráficas. De esta gráfica podemos extraer que con 512 hilos por bloque conseguimos la máxima ocupación. Además si no variamos ninguno de los otros dos parámetros, salvo pocas configuraciones (128, 256,..), cualquier otra configuración en cuanto al número de hilos por bloque perjudicaría a la ocupación y por tanto al rendimiento conseguido. Por otra parte 512 hilos es el límite permitido para un tamaño de bloque de una dimensión. La figura 5.4 muestra la gráfica asociada al número de registros utilizado por cada hilo. En esta gráfica podemos observar que se ha alcanzado la ocupación máxima usando cada hilo un total de 6 registros. Como sabemos por los resultados de la tabla Trabajo Fin de Máster -58- Sergio Bernabé García

59 5.3 en cada multiprocesador tenemos 2 bloques activos por tanto los recursos hardware de ese multiprocesador se comparten entre los dos bloques, estos bloque podrán ejecutarse en paralelo siempre y cuando ninguno de los dos consuma más de la mitad de los recursos disponibles. Cada multiprocesador tiene un total de 16K registros de 32 bits, es decir registros. La mitad de estos es 8192, tenemos en un bloque 512 hilos que consumen 6 registros cada uno lo que hace un total de 3072 registros, cantidad que no supera la mitad. Como puede verse en la gráfica, en el supuesto de que cada hilo utilizase más de 16 registros, la ocupación se reduciría a la mitad, permitiendo solamente la ejecución de un bloque de hilos por multiprocesador. Figura 5.4: Cuda occupancy calculator: gráfica asociada al número de registros por hilo. Finalmente la figura 5.5 muestra la gráfica asociada a la cantidad de memoria compartida usada por cada bloque. Trabajo Fin de Máster -59- Sergio Bernabé García

60 Figura 5.5: Cuda occupancy calculator: gráfica asociada a la cantidad de memoria compartida usada por cada bloque. En esta gráfica también podemos ver que la ocupación de los multiprocesadores es máxima, como sabemos el número de bloques activos en un multiprocesador es 2 por tanto cada bloque no debe consumir más de la mitad de los recursos disponibles. Un total de 9 píxeles en memoria compartida almacenados por cada bloque hacen que se usen 8104 bytes que no alcanza por poco la mitad de la memoria compartida disponible que tiene un total de 16KB. Si mantenemos el número de hilos y el número de registros por hilo y aumentamos el uso de la memoria compartida a más de la mitad del total, la ocupación se reduciría a la mitad y afectaría al rendimiento gravemente (al 50%). En esta ocasión la cantidad de memoria compartida utilizada es muy pequeña ya que esta vez se ha utilizado la memoria de constantes, que es más rápida y además es una de las optimizaciones utilizada para reducir el tiempo de ejecución de dicho algoritmo. Trabajo Fin de Máster -60- Sergio Bernabé García

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

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

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

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

Análisis y cuantificación del Riesgo

Análisis y cuantificación del Riesgo Análisis y cuantificación del Riesgo 1 Qué es el análisis del Riesgo? 2. Métodos M de Análisis de riesgos 3. Método M de Montecarlo 4. Modelo de Análisis de Riesgos 5. Qué pasos de deben seguir para el

Más detalles

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Índice 1 Introducción... 5 1.1 Perfil de la aplicación... 5 1.2 Requisitos técnicos... 5 2 Manual de usuario... 7 2.1 Instalación del certificado...

Más detalles

CAPÍTULO 1 PRIMEROS PASOS

CAPÍTULO 1 PRIMEROS PASOS PRIMEROS PASOS INTRODUCCIÓN Seguro que alguna vez te has preguntado por qué los colores y la gama tonal de la imagen que estás viendo en el monitor no salen igual en las copias que te entrega el laboratorio.

Más detalles

ISO 17799: La gestión de la seguridad de la información

ISO 17799: La gestión de la seguridad de la información 1 ISO 17799: La gestión de la seguridad de la información En la actualidad las empresas son conscientes de la gran importancia que tiene para el desarrollo de sus actividades proteger de forma adecuada

Más detalles

Programa de Criminología UOC

Programa de Criminología UOC Programa de Criminología UOC Trabajo Final de Grado Presentación Descripción La asignatura en el conjunto del plan de estudios Campos profesionales en que se proyecta Conocimientos previos Objetivos y

Más detalles

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

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

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

www.fundibeq.org Es de aplicación a aquellos estudios o situaciones en que es necesario priorizar entre un conjunto de elementos.

www.fundibeq.org Es de aplicación a aquellos estudios o situaciones en que es necesario priorizar entre un conjunto de elementos. GRAÁFICOS DE GESTIÓON (LINEALES, BARRAS Y TARTAS) 1.- INTRODUCCIÓN Este documento introduce los Gráficos de Gestión de uso más común y de mayor utilidad: Gráficos Lineales, Gráficos de Barras y Gráficos

Más detalles

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04 Autorización Este documento entra en vigor a partir del 2 de agosto del 2005, a través de su autorización por parte del Dr. Francisco Javier Rojas Monroy, Coordinador de Operaciones, Calidad y Teclogía

Más detalles

PROBLEMAS Y SOLUCIONES EN EL DESARROLLO DE LA IDE EXTREMADURA

PROBLEMAS Y SOLUCIONES EN EL DESARROLLO DE LA IDE EXTREMADURA PROBLEMAS Y SOLUCIONES EN EL DESARROLLO DE LA IDE EXTREMADURA Alberto Aparicio Ríos Gobierno de Extremadura alberto.aparicio@juntaextremadura.net Resumen Se abordarán los problemas encontrados durante

Más detalles

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES Tema: Cartas de Servicios Primera versión: 2008 Datos de contacto: Evaluación y Calidad. Gobierno de Navarra. evaluacionycalidad@navarra.es

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

Capítulo 6: Conclusiones

Capítulo 6: Conclusiones Capítulo 6: Conclusiones 6.1 Conclusiones generales Sobre el presente trabajo se obtuvieron varias conclusiones sobre la administración del ancho de banda en una red inalámbrica, basadas en la investigación

Más detalles

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos. Apéndice C. Glosario A Actividades de coordinación entre grupos. Son dinámicas y canales de comunicación cuyo objetivo es facilitar el trabajo entre los distintos equipos del proyecto. Actividades integradas

Más detalles

MODELOS DE SIMULACIÓN

MODELOS DE SIMULACIÓN MODELOS DE SIMULACIÓN En general, se llama modelo a la imagen o representación de un sistema, generalmente simplificada e incompleta. Y se llama simulación a la experimentación con un modelo para extraer

Más detalles

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales. www.librosdigitales.

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales. www.librosdigitales. 1 Arquitectura de una Aplicación Android Para empezar con el desarrollo de aplicaciones en Android es importante conocer cómo está estructurado este sistema operativo. A esto le llamamos arquitectura y

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

Plan de estudios Maestría en Sistemas de Información y Tecnologías de Gestión de Datos

Plan de estudios Maestría en Sistemas de Información y Tecnologías de Gestión de Datos Plan de estudios Maestría en Sistemas de Información y Tecnologías de Gestión de Datos Antecedentes y Fundamentación Un Sistema de Información es un conjunto de componentes que interactúan entre sí, orientado

Más detalles

Sistemas de Calidad Empresarial

Sistemas de Calidad Empresarial Portal Empresarial Aljaraque Empresarial Sistemas de Calidad Empresarial 1 ÍNDICE 1. INTRODUCCIÓN. 2. CONCEPTO DE CALIDAD Y SU SISTEMA. 3. MÉTODO PARA IMPLANTAR UN SISTEMA DE GESTIÓN DE LA CALIDAD. 4.

Más detalles

Por qué es importante la planificación?

Por qué es importante la planificación? Por qué es importante la planificación? La planificación ayuda a los empresarios a mejorar las probabilidades de que la empresa logre sus objetivos. Así como también a identificar problemas claves, oportunidades

Más detalles

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases El UML está compuesto por diversos elementos gráficos que se combinan para conformar diagramas. Debido a que el UML es un lenguaje, cuenta con reglas para combinar tales elementos. La finalidad de los

Más detalles

Curso: Arquitectura Empresarial basado en TOGAF

Curso: Arquitectura Empresarial basado en TOGAF Metodología para desarrollo de Arquitecturas (ADM) El ADM TOGAF es el resultado de las contribuciones continuas de un gran número de practicantes de arquitectura. Este describe un método para el desarrollo

Más detalles

Aplicación de la metodología de las 5 S al diseño de tarjetas de

Aplicación de la metodología de las 5 S al diseño de tarjetas de Aplicación de la metodología de las 5 S al diseño de tarjetas de 1. Introducción El uso de tarjetas de identificación o identificadores es común en el ámbito profesional: para los trabajadores de una organización,

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

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

DIGITALIZACIÓN DE DOCUMENTOS: PROYECTO DIGISAN

DIGITALIZACIÓN DE DOCUMENTOS: PROYECTO DIGISAN DIGITALIZACIÓN DE DOCUMENTOS: PROYECTO DIGISAN Francisco Belmonte Díaz Diseño e implementación de Sistemas Informáticos. Coordinación de Tareas de Programación Servicio de Gestión Informática. Consejería

Más detalles

Figura 4.1 Clasificación de los lenguajes de bases de datos

Figura 4.1 Clasificación de los lenguajes de bases de datos 1 Colección de Tesis Digitales Universidad de las Américas Puebla Romero Martínez, Modesto Este capítulo describen los distintos lenguajes para bases de datos, la forma en que se puede escribir un lenguaje

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

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

Introducción a Computación

Introducción a Computación Curso: Modelización y simulación matemática de sistemas Metodología para su implementación computacional Introducción a Computación Esteban E. Mocskos (emocskos@dc.uba.ar) Facultades de Ciencias Exactas

Más detalles

MODELOS DE RECUPERACION

MODELOS DE RECUPERACION RECUPERACIÓN Y ORGANIZACIÓN DE LA INFORMACIÓN INGENIERÍA INFORMÁTICA RECUPERACIÓN Y ACCESO A LA INFORMACIÓN MODELOS DE RECUPERACION AUTOR: Rubén García Broncano NIA 100065530 grupo 81 1 INDICE 1- INTRODUCCIÓN

Más detalles

Itinerario Formativo en Innovación Docente

Itinerario Formativo en Innovación Docente Módulo I: Los Mapas Conceptuales Los Mapas Conceptuales Itinerario Formativo en Innovación Docente Los mapas conceptuales son una herramienta muy poderosa para organizar, analizar y sintetizar informació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

LINEAMIENTOS PARA LA ELABORACIÓN DEL PROGRAMA ANUAL DE TRABAJO

LINEAMIENTOS PARA LA ELABORACIÓN DEL PROGRAMA ANUAL DE TRABAJO LINEAMIENTOS PARA LA ELABORACIÓN DEL PROGRAMA ANUAL DE TRABAJO Junio 2012 INDICE 1. INTRODUCCIÓN 2. ANTECEDENTES 3. SITUACIÓN ACTUAL A) Daños a la Salud Principales características sociodemográficas Principales

Más detalles

Cálculo Simbólico también es posible con GeoGebra

Cálculo Simbólico también es posible con GeoGebra www.fisem.org/web/union ISSN: 1815-0640 Número 34. Junio de 2013 páginas 151-167 Coordinado por Agustín Carrillo de Albornoz Cálculo Simbólico también es posible con GeoGebra Antes de exponer las posibilidades

Más detalles

ISO14001:2015. - disponer de un certificado bajo la versión de 2008 en vigor - superar una auditoria bajo los requisitos de la nueva versión

ISO14001:2015. - disponer de un certificado bajo la versión de 2008 en vigor - superar una auditoria bajo los requisitos de la nueva versión ISO14001:2015 PLAN DE TRANSICIÓN Tras la publicación de la nueva versión de la norma ISO14001 el pasado mes de septiembre se inicia un periodo de convivencia entre las dos versiones de la norma. Este periodo

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

PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI

PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI Versión: 1.0 Fecha de la versión: Febrero del 2012 Creado por: PwC Costa Rica Aprobado

Más detalles

SELECCIÓN N Y DISEÑO DEL PRODUCTO Y SERVICIO

SELECCIÓN N Y DISEÑO DEL PRODUCTO Y SERVICIO SELECCIÓN N Y DISEÑO DEL PRODUCTO Y SERVICIO Administración n de Operaciones II 1 El desarrollo consistente y la introducción n de nuevos productos que valoren los clientes es muy importante para la prosperidad

Más detalles

FORMACIÓN DE EQUIPOS DE E-LEARNING 2.0 MÓDULO DE DISEÑO Y PRODUCCIÓN DE MATERIALES UNIDAD 6 B

FORMACIÓN DE EQUIPOS DE E-LEARNING 2.0 MÓDULO DE DISEÑO Y PRODUCCIÓN DE MATERIALES UNIDAD 6 B 141 1 FORMACIÓN DE EQUIPOS DE E-LEARNING 2.0 Unidad 6 B 142 2 Índice SEGUIMIENTO DE PERSONAS 1 INFORMES 2 143 3 SEGUIMIENTO DE PERSONAS E INFORMES EN MOODLE El seguimiento de los participantes en Moodle

Más detalles

Una vez que tengas tu navegador en pantalla, sólo has de introducir la dirección correspondiente a la plataforma. Ten en cuenta que:

Una vez que tengas tu navegador en pantalla, sólo has de introducir la dirección correspondiente a la plataforma. Ten en cuenta que: Guíía de lla pllataforma E-llearniing de CEFORPE Introducción La plataforma E-learning de CEFORPE es un portal de formación para profesionales de la sanidad, creado por CEFORPE, marca registrada por Asistencia

Más detalles

Revisión ISO 9001:2015 Preguntas frecuentes

Revisión ISO 9001:2015 Preguntas frecuentes Revisiones ISO Norma Final Revisión ISO 9001:2015 Preguntas frecuentes Introducción ISO 9001, la norma internacional de calidad líder en el mundo, ha ayudado a millones de organizaciones a mejorar su calidad

Más detalles

Unidad VI: Supervisión y Revisión del proyecto

Unidad VI: Supervisión y Revisión del proyecto Unidad VI: Supervisión y Revisión del proyecto 61. Administración de recursos La administración de recursos es el intento por determinar cuánto, dinero, esfuerzo, recursos y tiempo que tomará construir

Más detalles

Operación 8 Claves para la ISO 9001-2015

Operación 8 Claves para la ISO 9001-2015 Operación 8Claves para la ISO 9001-2015 BLOQUE 8: Operación A grandes rasgos, se puede decir que este bloque se corresponde con el capítulo 7 de la antigua norma ISO 9001:2008 de Realización del Producto,

Más detalles

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R MATEMÁTICAS PARA EDUCACIÓN INFANTIL N Enseñamos y aprendemos llos números:: Método Siingapur y Fernández Bravo,, Porr Clarra Garrcí ía,, Marrtta Gonzzál lezz y Crri isstti ina Lattorrrre.. Ú M E R O S

Más detalles

Módulo III. Aprendizaje permanente Tema 4: Aprendizaje de actividades laborales Entrevista. El papel de las familias como impulsoras del empleo

Módulo III. Aprendizaje permanente Tema 4: Aprendizaje de actividades laborales Entrevista. El papel de las familias como impulsoras del empleo Módulo III. Aprendizaje permanente Tema 4: Aprendizaje de actividades laborales Entrevista. El papel de las familias como impulsoras del empleo Carmen Ochoa Berrozpe Pedagoga Responsable del Programa de

Más detalles

Ejercicio Artículo 4.5. Bancos de imágenes y sonido en la Web

Ejercicio Artículo 4.5. Bancos de imágenes y sonido en la Web Maximiliano Díaz Molinaro Ejercicio Artículo 4.5. Bancos de imágenes y sonido en la Web Opción 2. Análisis comparativo de dos de los casos presentados en la unidad: CORBIS y AGE Fotostock. Indicar y argumentar

Más detalles

CONTESTACIÓN CONSULTA PÚBLICA SOBRE EL MODELO DE GESTIÓN DE LAS BANDAS DE FRECUENCIAS DE. 1452 a 1492 MHZ y 3,6 A 3,8 GHZ.

CONTESTACIÓN CONSULTA PÚBLICA SOBRE EL MODELO DE GESTIÓN DE LAS BANDAS DE FRECUENCIAS DE. 1452 a 1492 MHZ y 3,6 A 3,8 GHZ. CONTESTACIÓN CONSULTA PÚBLICA SOBRE EL MODELO DE GESTIÓN DE LAS BANDAS DE FRECUENCIAS DE 1452 a 1492 MHZ y 3,6 A 3,8 GHZ. Empresa: B 73.451.015 C/ Colmenarico, Nº 22, Bajo. 30.800 Lorca Murcia. Licencia

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

6. Gestión de proyectos

6. Gestión de proyectos 6. Gestión de proyectos Versión estudiante Introducción 1. El proceso de gestión de proyectos 2. Gestión del riesgo "La gestión de proyectos se basa en establecer objetivos claros, gestionar el tiempo,

Más detalles

CAPÍTULO III MARCO TEÓRICO. Cada día cambian las condiciones de los mercados debido a diferentes factores como: el

CAPÍTULO III MARCO TEÓRICO. Cada día cambian las condiciones de los mercados debido a diferentes factores como: el CAPÍTULO III MARCO TEÓRICO 3.1 Introducción Cada día cambian las condiciones de los mercados debido a diferentes factores como: el incremento de la competencia, la globalización, la dinámica de la economía,

Más detalles

RECOMENDACIONES DE INVESTIGACIÓN FUTURA.

RECOMENDACIONES DE INVESTIGACIÓN FUTURA. Capítulo 6 CONCLUSIONES Y RECOMENDACIONES DE INVESTIGACIÓN FUTURA. 212 METODOLOGÍA PARA LA DETECCIÓN DE REQUERIMIENTOS SUBJETIVOS EN EL DISEÑO DE PRODUCTO. CAPÍTULO 6. CONCLUSIONES, APORTACIONES Y RECOMENDACIONES.

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

Gestión de la Configuración

Gestión de la Configuración Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición de

Más detalles

INTRODUCCIÓN: Una Visión Global del Proceso de Creación de Empresas

INTRODUCCIÓN: Una Visión Global del Proceso de Creación de Empresas INTRODUCCIÓN: Una Visión Global del Proceso de Creación de Empresas 1 INTRODUCCIÓN. Una visión global del proceso de creación de empresas Cuando se analiza desde una perspectiva integral el proceso de

Más detalles

Modelo de aplicaciones CUDA

Modelo de aplicaciones CUDA Modelo de aplicaciones CUDA Utilización de GPGPUs: las placas gráficas se utilizan en el contexto de una CPU: host (CPU) + uno o varios device o GPUs Procesadores masivamente paralelos equipados con muchas

Más detalles

Fundamentos del arte del siglo XX

Fundamentos del arte del siglo XX ENSAYOS Fundamentos del arte del siglo XX M. Rosa García I. El origen de las vanguardias Para entender el arte que comprende desde el siglo XX hasta hoy debemos considerar dos cuestiones: el hombre que

Más detalles

Metodologías de diseño de hardware

Metodologías de diseño de hardware Capítulo 2 Metodologías de diseño de hardware Las metodologías de diseño de hardware denominadas Top-Down, basadas en la utilización de lenguajes de descripción de hardware, han posibilitado la reducción

Más detalles

2. LOS SISTEMAS DE COSTOS

2. LOS SISTEMAS DE COSTOS 2. LOS SISTEMAS DE COSTOS En el actual desarrollo de las técnicas y sistemas de costos se persiguen tres importantes objetivos: La medición de los costos, la más correcta y precisa asignación de costos

Más detalles

MANUAL TÉCNICO DE IMPLEMENTACIÓN PROYECTO SOCIAL COMPUESCUELA. Elaborado por: Julián A. Hernández M.

MANUAL TÉCNICO DE IMPLEMENTACIÓN PROYECTO SOCIAL COMPUESCUELA. Elaborado por: Julián A. Hernández M. MANUAL TÉCNICO DE IMPLEMENTACIÓN PROYECTO SOCIAL COMPUESCUELA Elaborado por: Julián A. Hernández M. PONTIFICIA UNIVERSIDAD JAVERIANA CALI SANTIAGO DE CALI 2011 CONTENIDO Pág. INTRODUCCIÓN...3 1. ANÁLISIS

Más detalles

LA METODOLOGÍA DEL BANCO PROVINCIA

LA METODOLOGÍA DEL BANCO PROVINCIA 20 LA METODOLOGÍA DEL BANCO PROVINCIA Cómo gestionar activos de información? En 2007, el Banco Central de la República Argentina (BCRA) planteó algunas exigencias financieras para el sistema financiero

Más detalles

TEMA 3: EN QUÉ CONSISTE?

TEMA 3: EN QUÉ CONSISTE? Módulo 7 Sesión 3 5/16 TEMA 3: EN QUÉ CONSISTE? La metodología seguida para aplicar correctamente la técnica de RGT se basa en cuatro fases (Figura 1). En la primera de ellas, se seleccionan los elementos

Más detalles

TEMA 6. ILUMINACIÓN. 6.2. Intensidad y difuminación. Prólogo y rectificación del curso

TEMA 6. ILUMINACIÓN. 6.2. Intensidad y difuminación. Prólogo y rectificación del curso 1 TEMA 6. ILUMINACIÓN. 6.2. Intensidad y difuminación Prólogo y rectificación del curso Según nuestra concepción de esta acción formativa gratuita que estamos realizando desde www.miguelturra.es el equipo

Más detalles

Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation.

Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation. WINDOWS Windows, Es un Sistema Operativo. Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation. Dentro de los tipos de Software es un tipo de software de Sistemas. Windows

Más detalles

LA PLANIFICACIÓN ESTRATÉGICA EN MATERIA TIC EN EL ÁMBITO DE LA AGE

LA PLANIFICACIÓN ESTRATÉGICA EN MATERIA TIC EN EL ÁMBITO DE LA AGE LA PLANIFICACIÓN ESTRATÉGICA EN MATERIA TIC EN EL ÁMBITO DE LA AGE Subdirector General de Planificación y Coordinación Informática Ministerio de Trabajo y Asuntos Sociales Palabras clave Planificación

Más detalles

LUIS GALINDO PÉREZ DE AZPILLAGA HÉCTOR JOSÉ GARCÍA FERNÁNDEZ. Instituto Cibernos. Master Sistemas de Información Geográfica de Sevilla

LUIS GALINDO PÉREZ DE AZPILLAGA HÉCTOR JOSÉ GARCÍA FERNÁNDEZ. Instituto Cibernos. Master Sistemas de Información Geográfica de Sevilla APLICABILIDAD DE UN SISTEMA DE INFORMACIÓN GEOGRÁFICA PARA EL ESTUDIO DE LA IMPLANTACIÓN DE NUEVAS INFRAESTRUCTURAS EN UN ESPACIO INTERIOR DE LA CIUDAD DE SEVILLA. LUIS GALINDO PÉREZ DE AZPILLAGA HÉCTOR

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

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

SECRETARÍA DE EDUCACIÓN PÚBLICA SUBSECRETARÍA DE EDUCACIÓN SUPERIOR COORDINACIÓN GENERAL DE UNIVERSIDADES TECNOLÓGICAS

SECRETARÍA DE EDUCACIÓN PÚBLICA SUBSECRETARÍA DE EDUCACIÓN SUPERIOR COORDINACIÓN GENERAL DE UNIVERSIDADES TECNOLÓGICAS SECRETARÍA DE EDUCACIÓN PÚBLICA SUBSECRETARÍA DE EDUCACIÓN SUPERIOR COORDINACIÓN GENERAL DE UNIVERSIDADES TECNOLÓGICAS CRITERIOS GENERALES PARA LA PLANEACIÓN, EL DESARROLLO Y LA EVALUACIÓN, EN LA IMPLANTACIÓN

Más detalles

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes: Descripción del ambiente de trabajo Entrar y salir de la aplicación Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes: A través del botón :

Más detalles

I. Disposiciones generales

I. Disposiciones generales 30852 I. Disposiciones generales Consejería de Presidencia, Justicia e Igualdad 5864 ORDEN de 21 de noviembre de 2013, por la que se aprueba el esquema de metadatos en el ámbito de la administración electrónica

Más detalles

Análisis y gestión de riesgo

Análisis y gestión de riesgo Marco Dueñes Intriago María Cabrales Jaquez Resumen capitulo 6 Ingeniería del software Análisis y gestión de riesgo Estrategias de riesgo proactivas vs reactivas Una estrategia considerablemente más inteligente

Más detalles

Capítulo 5: Pruebas y evaluación del sistema. A continuación se muestran una serie de pruebas propuestas para evaluar varias

Capítulo 5: Pruebas y evaluación del sistema. A continuación se muestran una serie de pruebas propuestas para evaluar varias Capítulo 5: Pruebas y evaluación del sistema 5.1 Definición de pruebas para la aplicación A continuación se muestran una serie de pruebas propuestas para evaluar varias características importantes del

Más detalles

REGLAMENTO PARA LA SUPERVISIÓN DE LA IDENTIDAD CORPORATIVA DE LA UNIVERSIDAD DE ALCALÁ (UAH)

REGLAMENTO PARA LA SUPERVISIÓN DE LA IDENTIDAD CORPORATIVA DE LA UNIVERSIDAD DE ALCALÁ (UAH) Aprobado en Consejo de Gobierno de 27 de junio de 2013 REGLAMENTO PARA LA SUPERVISIÓN DE LA IDENTIDAD CORPORATIVA DE LA UNIVERSIDAD DE ALCALÁ (UAH) PREÁMBULO La importancia de la comunicación y la imagen

Más detalles

ANALISIS MULTIVARIANTE

ANALISIS MULTIVARIANTE ANALISIS MULTIVARIANTE Es un conjunto de técnicas que se utilizan cuando se trabaja sobre colecciones de datos en las cuáles hay muchas variables implicadas. Los principales problemas, en este contexto,

Más detalles

Música. Tocar y cantar Autor: Carlos Guido

Música. Tocar y cantar Autor: Carlos Guido Música. Tocar y cantar Autor: Carlos Guido 1 Presentación del curso Curso de música en el que te damos información acerca del cantar y tocar un instrumento musical al mismo tiempo, y el mecanismo que implica

Más detalles

MÓDULO PROFESIONAL PROYECTO EMPRESARIAL DAVID ESPINOSA SALAS - I.E.S. GREGORIO PRIETO (VALDEPEÑAS) LA ORGANIZACIÓN Y DIRECCIÓN DE LA EMPRESA

MÓDULO PROFESIONAL PROYECTO EMPRESARIAL DAVID ESPINOSA SALAS - I.E.S. GREGORIO PRIETO (VALDEPEÑAS) LA ORGANIZACIÓN Y DIRECCIÓN DE LA EMPRESA La O. ÍNDICE. 1. ORGANIZACIÓN DE LA EMPRESA. 2. EL ORGANIGRAMA Y SUS CLASES. 3. MODELOS DE ESTRUCTURA ORGANIZATIVA: LINEAL, EN LÍNEA Y STAFF, EN COMITÉ, MATRICIAL Y FUNCIONAL. 3.1. La estructura organizativa

Más detalles

Para llegar a conseguir este objetivo hay una serie de líneas a seguir:

Para llegar a conseguir este objetivo hay una serie de líneas a seguir: INTRODUCCIÓN La Gestión de la Calidad Total se puede definir como la gestión integral de la empresa centrada en la calidad. Por lo tanto, el adjetivo total debería aplicarse a la gestión antes que a la

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

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS Clase 1. Introducción Profesor: Diego Sánchez Gómez Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases

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

GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS

GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS MAURO CANABÉ SERGIO NESMACHNOW Centro de Cálculo, Facultad de Ingeniería Universidad de la República, Uruguay GPU IMPLEMENTATIONS

Más detalles

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS 1 1 BASES DE DATOS DISTRIBUIDAS TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS 3.1 Metodología del procesamiento de consultas distribuidas 3.2 Estrategias de

Más detalles

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática Manejo básico de base de datos Unas de las capacidades de Excel es la de trabajar con listas o tablas de información: nombres, direcciones, teléfonos, etc. Excel puede trabajar con tablas de información

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

EDICIÓN Y FORMATO (II)

EDICIÓN Y FORMATO (II) EDICIÓN Y FORMATO (II) 1. INTRODUCCIÓN Writer dispone de una serie de barras de herramientas predeterminadas, en las que se encuentran botones de acceso directo a comandos específicos que se activan con

Más detalles

Línea Base Juan Carlos Bajo Albarracín Qué es una línea base Cómo implantar la Ley 29783: El concepto sistema de gestión en la Ley 29783

Línea Base Juan Carlos Bajo Albarracín Qué es una línea base Cómo implantar la Ley 29783: El concepto sistema de gestión en la Ley 29783 Línea Base Juan Carlos Bajo Albarracín Director de Seguridad y Salud PRYSMA INTERNACIONAL PERÚ Lo primero que debemos hacer antes de implantar o adecuar el sistema de seguridad y salud en el trabajo a

Más detalles

Programa de trabajo para Escuelas Asociadas

Programa de trabajo para Escuelas Asociadas Programa de trabajo para Escuelas Asociadas Qué es la CONAE? La Comisión Nacional de Actividades Espaciales es un organismo del Estado Nacional que se encarga de diseñar, ejecutar, controlar, gestionar

Más detalles

TALLER 2. MEJORA CONTINUA

TALLER 2. MEJORA CONTINUA III ENCUENTRO DE ESPACIOS NATURALES PROTEGIDOS PARTICIPANTES EN EL SISTEMA DE CALIDAD TURÍSTICO ESPAÑOL Segovia y Parque Natural de las Hoces del Río Duratón, 15 y 16 de junio de 2011 TALLER 2. MEJORA

Más detalles

CAPITULO VI ESTRATEGIAS DE OUTSOURCING

CAPITULO VI ESTRATEGIAS DE OUTSOURCING CAPITULO VI ESTRATEGIAS DE OUTSOURCING Cuando una compañía decide llevar a cabo un proceso de outsourcing debe definir una estrategia que guíe todo el proceso. Hay dos tipos genéricos de estrategia de

Más detalles

Bloque I: Conceptos básicos y fundamentos de la Dirección de Proyectos.

Bloque I: Conceptos básicos y fundamentos de la Dirección de Proyectos. 1.- Objeto. Presentar y fomentar la existencia de metodologías en Dirección de Proyectos o Project Management a través de experiencias, documentos, normas y estándares nacionales e internacionales. Ofrecer

Más detalles

Práctica Obligatoria de Ingeniería del Software

Práctica Obligatoria de Ingeniería del Software Práctica Obligatoria de Ingeniería del Software 3º I.T.I.S Curso 2008-09 15 de octubre de 2008 Dr. Francisco José García Peñalvo Miguel Ángel Conde González Sergio Bravo Martín Tabla de contenidos 1.

Más detalles

La evaluación del desempeño es un aspecto

La evaluación del desempeño es un aspecto EVALUACIÓN DEL DESEMPEÑO La evaluación del desempeño en las organizaciones de actividad física y deporte En la actualidad, la evaluación del desempeño está adquiriendo mucha importancia y relevancia, considerándose

Más detalles

BROKERMovil Online para SmartPhone Guía Rápida v1.0

BROKERMovil Online para SmartPhone Guía Rápida v1.0 BROKERMovil Online para SmartPhone Guía Rápida v1.0 Página 1 de 17 Índice 1 PUESTA EN MARCHA... 4 1.1 Requisitos... 4 1.2 Instalación de la aplicación... 4 1.2.1 Mediante descarga a través de Activa 24

Más detalles