SISTEMAS DISTRIBUIDOS Y PARALELOS

Slides:



Advertisements
Presentaciones similares
ARQUITECTURA CUDA Integrantes: Jose D Apollo
Advertisements

Alejandro Samarín Lionel Aster Mena García Sergio Armas Pérez.
GPUs Rayco González Sicilia Microprocesadores para Comunicaciones 5º ETSIT.
Alejandro Samarín Lionel Aster Mena García Sergio Armas Pérez.
Vinculación de Instrucciones y Datos a Memoria Tiempo de compilación: si la dirección de memoria se conoce a priori, se puede generar código absoluto;
COMPUTACION PARALELA GLORIA PATRICIA FLOREZ ANGIE PAOLA ANCHICO.
Alexis Obregón Cogle Grado Asociado en Tecnología de Redes y Diseño de Aplicaciones.
PLATAFORMA DE VIDEO E IMÁGENES Sarah Lia Prieto Rodriguez.
EL MOVIMIENTO. LA MECÁNICA: Parte de la física que se encarga de estudiar el movimiento de los cuerpos y sus causas. EL MOVIMIENTO DEFINICIÓN.
ITESCO – Arquitectura Computadoras L. S. C. A. Raúl Monforte Chulin - MORCH Systems 1.1. Arquitectura básica y sus operaciones. Objetivo: El estudiante.
1 LENGUAJES DE PROGRAMACIÓN. Son aplicaciones específicas diseñadas para crear otras aplicaciones o programas. Son programas para crear programas. 2.
Subtema: Hardware y Software básico
MERCADEO ELECTRONICO ALOJAMIENTO WEB.
Universidad autónoma del estado de México
Introducción a la Programación Multimedial
Hardware de Computador
Quinta generación de computadoras
Seguimiento y Avance.
Rafael Asprilla Universidad de Panamá ,
SISTEMAS OPERATIVOS PARALELOS Y MULTIPROCESADORES RICHARD GIOVANI MEDINA ESTEBA.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Conceptos básicos de programación
Fundamentos de programación
Arreglos. en Lenguaje C n
PROGRAMACION ESTRUCTURADA.
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
Conectividad de Bases de Datos
En la siguiente presentación veremos algunos términos que debemos conocer para iniciar la educación virtual.
CAPÍTULO 2: PRINCIPIOS BÁSICOS DE MATLAB
Multitarea y Monotarea
Introducción a Visual Studio .NET
G87 Ciclo fijo de cajera rectangular - 1/6
MATLAB 6.5 Clase 3: Funciones básicas e Introducción a la Programación
Computación Curso 2017.
Tema 4 Elementos para el Desarrollo de Algoritmos
Unidad 1. Conceptos básicos
MENU SOFWARE Y HADWARE DISPOSITIVOS DE SALIDA DISPOSITIVOS DE ENTRADA
LENGUAJE DE PROGRAMACION III Estructuras Estáticas de Datos
SISTEMAS DE INFORMACION ACTIVIDAD NUMERO 2 FANOR MARTINEZ
Tendencias en los sistemas operativos
Es un programa Sistema de gestión de base de datos relacional creado y modificado por Microsoft para uso personal de pequeñas organizaciones. Es un componente.
Ingeniería en Sistemas computacionales Fundamentos de programación
Introducción Gabriel Montañés León.
Direccionamiento IP Y Subredes.
¡hola! mi nombre es: Marlenne Galicia Diaz
Almacenamiento El computador tiene 2 aspectos
Fundamentos de Programación
Conceptos básicos.
Java – programación orientada a objetos programación ii – iee
Plataformas cliente-servidor
Tecnologías de información
LENGUAJE C.
Tipos de Datos abstractos
CURSO PROGRAMACIÓN BÁSICA SEMANA 2
Fundamentos de la Programación I
Dispositivos de Entrada y Salida
Tipos de Datos abstractos
El lenguaje de programación PHP
INTRODUCCION Hasta ahora solo hemos tenido que trabajar con algunas variables en cada uno de los programas que hemos realizado. Sin embargo, en más de.
Estructuras de Datos Dinámicas
1 TEMA 2: Organización de computadores Procesadores Memorias Dispositivos de E/S.
Funciones: Manejar todas las operaciones de acceso, lectura y escritura a cada una de las posiciones de la memoria principal donde se almacenan las instrucciones.
UNIVERSIDAD TECNOLÓGICA DEL PERÚ Microsoft Corporation fue fundada por Paul Allen y Bill Gates, está dedicada al sector de software y hardware. Un producto.
Carlos Manuel Ortega Avila
AUTOR: SALGADO ESCOBAR STALIN SEBASTIAN DIRECTOR: ING. JOSE SANCHO
1 TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS Introducción Hardware Software Aspectos de diseño.
2. PRINCIPIOS BASICOS DE MICROSOFT ACCESS. -Sistema que tiene la capacidad de realizar tareas de distinta índole utilizando herramientas que interactúan.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS
Estructura de los Sistemas Operativos por: Omar Saravia Tasayco
ESTRUCTURA DE UNA PC.
Transcripción de la presentación:

SISTEMAS DISTRIBUIDOS Y PARALELOS OpenCL SISTEMAS DISTRIBUIDOS Y PARALELOS 20/09/2018

AGENDA Introducción Línea de Tiempo Definición Modelo de Plataforma Modelo de Ejecución Modelo de Memoria Ventajas Desventajas AGENDA 20/09/2018

En los últimos tiempos, las unidades de procesamiento grafico han evolucionado de forma sorprendente. Este avance ha encaminado necesariamente a la idea de aprovechar su potencial computacional para realizar cálculos no necesariamente gráficos. INTRODUCCIÓN 20/09/2018

GPGPU, o General-Purpose computation on Graphics Processing Units Consiste en utilizar la capacidad de las Unidades de Procesamiento Grafico para asignar tareas que normalmente son procesadas por la CPU. Las grandes empresas como Nvidia, AMD, ATI, y últimamente Microsoft (DirectCompute), han echo el esfuerzo de explotar esta capacidad INTRODUCCIÓN 20/09/2018

INTRODUCCIÓN 20/09/2018

LINEA DE TIEMPO 20/09/2018

Los sistemas actuales tienen una amplia variedad de dispositivos Los sistemas actuales tienen una amplia variedad de dispositivos. Cada uno tienen diferentes capacidades de procesamientos y niveles de paralelismo. Desarrollar softwares eficientes capaces de aprovechar estos recursos siempre ha sido un reto para los programadores. DEFINICIÓN 20/09/2018

DEFINICIÓN ¿Qué es OpenCL? Es una estructura multiplataforma libre y abierto mantenido por Khronos Group un consorcio sin fines de lucro. Ha tratado de solucionar el problema proporcionando una interfaz estándar de programación. DEFINICIÓN 20/09/2018

DEFINICIÓN 20/09/2018

Las unidades de procesamiento actuales vienen en varios núcleos, ya que la velocidad del reloj individual ha sentido el límite teórico. En especial las GPUs, que están diseñadas para realizar cálculos vectoriales de espacios dimensionales, tienen capacidades de procesamiento paralelo enorme para manejar estas operaciones de forma efectiva. DEFINICIÓN 20/09/2018

OpenCL aprovecha de estas capacidades de procesamiento en paralelo que ofrecen cada dispositivo, con un lenguaje de programación propia basado en C99 que permite realizar paralelismo de tareas o de datos, aumentando drásticamente la capacidad total de procesamiento, especialmente de las aplicaciones computacionalmente intensas. DEFINICIÓN 20/09/2018

El ambiente de ejecución o la plataforma sobre la cual corren los programas en OpenCL, como vemos en la figura, consta de varios dispositivos. Cada dispositivo, por ejemplo las CPUs o las GPUs, pueden tener varias unidades de computo o núcleos. Cada una de las unidades de procesamiento pueden tener varias unidades de computo que son ejecutadas como SIMD o SPMD. MODELO DE PLATAFORMA 20/09/2018

MODELO DE PLATAFORMA 20/09/2018

Los programas en OpenCL están formados por kernels, que son unidades básicas de código paralelamente ejecutable. Cuando se ejecuta un programa, el host va instanciando los kernels necesarios y los agrega en las colas de espera de distintos dispositivos. MODELO DE EJECUCIÓN 20/09/2018

- Work item: Unidad básica de trabajo en un dispositivo OpenCL. - Kernel: Código para un work item. Básicamente una función en C. - Programa: Colección de kernels y otras funciones (Análogo a una librería dinámica) - Contexto: El ambiente dentro del cual los work-items son ejecutados … incluye dispositivos y sus memorias y colas de comandos MODELO DE EJECUCIÓN 20/09/2018

MODELO DE MEMORIA Es explicita Memoria Privada Memoria Local Por work-item Memoria Local Compartida dentro de un grupo de trabajo Memoria Global/Constante Visible por todos los grupos de trabajo Memoria de Host En la CPU MODELO DE MEMORIA 20/09/2018

OpenCL, como los otros frameworks de GPGPU, permite aprovechar el enorme poder computacional paralelo, mejorando drásticamente el rendimiento de los programas computacionalmente intensas. Pero a diferencia del resto, es el primero en ser abierto y gratuito. Permite escribir códigos que pueden correr en múltiples plataformas despreocupándonos de muchos aspectos del hardware. La compilación se realiza en tiempo de ejecución mediante el API, permitiendo la oportunidad de optimizar para ciertos tipos de dispositivos. VENTAJAS 20/09/2018

DESVENTAJAS OpenCL tiene dos grandes desventajas. Primero, como trata de crear una interfaz uniforme para distintos dispositivos con sus respectivas ventajas y desventajas, inevitablemente es siempre menos eficiente que los frameworks diseñados específicamente para ciertos dispositivos. Segundo, es un framework joven. No tiene la maduración suficiente comparado con otros frameworks, que han estado ya un buen tiempo en el mercado. Necesita acumular experiencias, fuentes de información y una buena cantidad de ejemplos documentados, desarrollar buenas herramientas de desarrollo, y como todos los frameworks, una buena calidad y cantidad de librerías. DESVENTAJAS 20/09/2018

OpenCL Sesión practica 20/09/2018

LOS WORK-ITEMS Y LOS WORKGROUPS En OpenCL se puede definir un dominio computacional de 1, 2 o 3 dimensiones. Cada elemento del dominio se llama work-item, y representa a una unidad de procesamiento capaz de ejecutar un kernel a la vez. Dicho de otra forma, las dimensiones del dominio define la cantidad de work-tems que se va a ejecutar en paralelo. LOS WORK-ITEMS Y LOS WORKGROUPS 20/09/2018

LOS WORK-ITEMS Y LOS WORKGROUPS Por ejemplo, sea un programa que necesite sumar dos vectores a y b de tamaño n. La forma tradicional de programación escalar sería: LOS WORK-ITEMS Y LOS WORKGROUPS 20/09/2018

LOS WORK-ITEMS Y LOS WORKGROUPS void scalar_sum(int n, const float *a, const float *b, float *result) { int i; for (i = 0; i < n; i++) result[i] = a[i] + b[i]; } LOS WORK-ITEMS Y LOS WORKGROUPS 20/09/2018

LOS WORK-ITEMS Y LOS WORKGROUPS Pero utilizando OpenCL, se define un dominio de una sola dimensión de longitud n, que contiene n work-items. Luego se ejecuta el siguiente kernel en cada uno de los work-items en forma paralela. LOS WORK-ITEMS Y LOS WORKGROUPS 20/09/2018

LOS WORK-ITEMS Y LOS WORKGROUPS kernel void dp_sum(globalconst float *a, globalconst float *b, globalfloat *result) { int id = get_global_id(0); result[id] = a[id] + b[id]; } LOS WORK-ITEMS Y LOS WORKGROUPS 20/09/2018

LOS WORK-ITEMS Y LOS WORKGROUPS Los work-items se pueden agrupar para formar un workgroup. Todos los work-items que conforman un workgroup se ejecutan en un mismo dispositivo. Así pueden compartir la memoria local o realizar sincronizaciones entre los work-items. (o entre los kernels que se ejecutan en cada work-item) LOS WORK-ITEMS Y LOS WORKGROUPS 20/09/2018

LOS WORK-ITEMS Y LOS WORKGROUPS 20/09/2018

La ejecución del programa se organiza de la siguiente manera: Compilación de los kernels que los componen. Se compilan de diferente manera para cada dispositivo, Chequeo Creación de las estructuras de memorias Asignación de los parámetros a las instancias de los kernels Finalmente, cuando los kernels están listos para ser ejecutados, son enviados a las colas de espera de los dispositivos para su posterior ejecución. EJECUCÍON 20/09/2018

Es posible especificar la manera en que se va a atender las colas de los dispositivos. Los In-Order son como los CPU clásicos en donde otras instrucciones esperan hasta terminar por completo una instrucción. Los Out-Order en cambio, son cuando las instrucciones no se ejecutan en realidad en el orden real. EJECUCÍON 20/09/2018

Aparte de los tipos de variables escalares tradicionales y otras específicas de la GPU, OpenCL incorpora el tipo vector con sus variantes. Para determinar el tipo del vector primero se toma el tipo escalar del elemento, seguida de la longitud que es un número entre 2, 4, 8 y 16. Así, int8 es un vector de 8 enteros. OpenCLTM C Language 20/09/2018

OpenCLTM C Language int4 v = (int4) -7; int4 v = (int4) (0, 1, 2, 3); v.s5 v.s0147 v.odd (v1.s0147, v2.odd) OpenCLTM C Language 20/09/2018

Los vectores vienen también con operaciones especializadas muy eficientes gracias a la capacidad de procesamiento vectorial de las GPU. Abajo se muestra un ejemplo de la suma y el valor absoluto de un vector. vi0 += vi1; vi0 = abs(vi0); OpenCLTM C Language 20/09/2018

Los vectores no pueden realizar conversiones de tipos. Los casts o las conversiones de tipos siempre han tenido problemas en cuanto a las impresiciones de los decimales. OpenCL ofrece una forma más específica de hacer las conversiones. Necesita especificar además de los tipos, la saturación o redondeo hacia arriba, y el modo de redondeo. Aparte de los casts, están los reinterpret, que es tomar como válido un tipo de variable aunque en realidad es otro tipo de variable. Esto sí se puede utilizar con los vectores para, digamos, convertir los tipos de variables. OpenCLTM C Language 20/09/2018

Las variables a declarar en OpenCL pueden tener prefijos que especifican cual espacio de direcciones tomar. global constant: es como el global pero de solo lectura local private read only: solamente para imagenes write only: solamente para imagenes OpenCLTM C Language 20/09/2018

Al programar aplicaciones o algoritmos que se va a ejecutar en paralelo, surge la necesidad de realizar sincronizaciones. OpenCL trae consigo varias formas de sincronización. barrier() Es un método de sincronización tradicional en donde todos los work-items del mismo workgroup que lo implementan, al alcanzar esta función esperan a que lleguen los demás work-items para luego continuar con la ejecución. Es para sincronizar el flujo de control del programa. OpenCLTM C Language 20/09/2018

mem_fence(), read_mem_fence(), write_mem_fence() Controla la carga o almacenamiento en memoria dentro del work-item. Es un método de sincronización de acceso a datos. 20/09/2018