Método de cálculo de precio de opción en commodities usando plataforma de computación de alto desempeño
Texto completo
(2)
(3) Resumen En este trabajo se propone un método de cálculo de valor de precio de opciones commodities utilizando la plataforma de computación paralela CUDA, donde se muestra la ganancia en tiempo computacional con respeto a implementaciones convencionales en CPU. Este modelo es aplicado en el problema de análisis de riesgo de variables hidroenergéticas, caso Cuenca del Río Chili, donde se emplean metodologías de calculo de opciones de precio mediante árboles trinomiales para calcular los precios de las variables commodities y poder tomar la decisión óptima del uso del recurso hídrico bajo incertidumbre. La implementación de estas metodologías en ambiente GPU es considerablemente más eficiente en la medida en que aumente la complejidad del análisis de datos agregando una mayor aceleración.. Palabras Clave Computación Paralela, Arboles Trinomiales, Opciones de Precio, Commodities, CUDA, Riesgo Hidroenergético.. iii.
(4)
(5) Abstract In this work it is proposed a method to calculate the price value of commodity options by using CUDA, a platform of parallel computing, where the profits in computing time are shown in relation to conventional implementations in CPU. This model is explained in the problem of risk analysis of hydro-energetic variables, Chili River Basin Case, where calculation methodologies of pricing options through trinomial trees are used both to calculate the prices of commodity variables and to be able to make the optimal decision of the use of the hydrological resource under uncertainty. The implementation of these methodologies in GPU environment is far more efficient by adding a higher acceleration while the complexity of the data analysis increases.. Key Words Parallel Computing Trees trinomial, Price Options, Commodities, CUDA, Hidroenergetic risk.. v.
(6) Agradecimientos En primer lugar quisiera agradecer a todos aquellos docentes y amigos que han contribuido con sus conocimientos y en especial a mi asesor Yván Túpac con quien se logro culminar este proyecto. También al CONCYTEC por el gran apoyo y soporte financiero, y por dejarme ser parte de ellos en calidad de becario del Doctorado en Ciencias de la Computación . A mi alma mater por quien logramos ser profesionales.. vi.
(7) Índice general 1. Planteamiento del problema 1.1. Identificación del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1 1. 1.2. Delimitación del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2. 1.3. Formulación del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2. 1.4. Justificación e Importancia del problema . . . . . . . . . . . . . . . . . . . . . . 1.5. Limitaciones de la Investigación . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2 2. 1.6. Objetivos de la investigación. . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3. 1.7. Hipótesis. 1.8. Organización de la tesis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3. 2. Computación en Paralelo 2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 5 7. 2.1.1. Generalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 7. 2.1.2. El paralelismo “omnipresente” . . . . . . . . . . . . . . . . . . . . . . . .. 7. 2.1.3. El futuro de los chips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.4. Modelo de máquina secuencial . . . . . . . . . . . . . . . . . . . . . . . .. 7 8. 2.1.5. Encontrando paralelismo. 8. 2.2. Modelos en Paralelo. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10. 2.2.1. Computación Paralela Anidada . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.2. Constructores de Programación . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.3. Exactitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.4. Eficiencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3. Taxonomía de Flynn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3.1. SISD (Single Instruction Single Data). . . . . . . . . . . . . . . . . . . . 19 2.3.2. SIMD (Single Instruction Multiple Data).. . . . . . . . . . . . . . . . . . 19. 2.3.3. MISD (Multiple Instruction Single Data).. . . . . . . . . . . . . . . . . . 20. 2.3.4. MIMD Multiple Instruction Multiple Data . . . . . . . . . . . . . . . . . 21 2.4. Graphics Processing Unit - GPU . . . . . . . . . . . . . . . . . . . . . . . . . . 26 vii.
(8) ÍNDICE GENERAL 2.4.1. General-Purpose Computing on Graphics Processing Units GP-GPU . . 28 2.4.2. Arquitectura paralela y modelo de programación de CUDA. . . . . . . . 29. 3. Cálculo de precio de opción en commodities 31 3.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2. Opciones de Precio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2.1. Definición Riesgo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2.2. Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2.3. Derivados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2.4. Derivados sobre la energía. . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2.5. Estimación y cuantificación del Riesgo . . . . . . . . . . . . . . . . . . . 40 3.2.6. El Análisis del Riesgo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.3. Simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.3.1. Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.3.2. Etapas del Proceso de Simulación 3.3.3. Métodos de Simulación 3.3.4. Simulaciones de Riesgo. . . . . . . . . . . . . . . . . . . . . . 41. . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 . . . . . . . . . . . . . . . . . . . . . . . . . . . 42. 3.3.5. Análisis probabilístico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.3.6. Fundamentos del VaR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.3.7. Otras metodólogas de cálculo de VaR: . . . . . . . . . . . . . . . . . . . 45 3.3.8. Opciones de Precios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.3.9. Soluciones con simulaciones . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.3.10. Solución Numérica – Least Square Monte Carlo . . . . . . . . . . . . . . 52 3.4. Procesos estocásticos para el modelamiento de precios. . . . . . . . . . . . . . . 53. 4. Algoritmo Trinomial y propuesta de implementación a paralelo 55 4.1. Representación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.1.1. Hardware para la implementacion de caso . . . . . . . . . . . . . . . . . 61 4.1.2. Modelo SIN usar arquitectura paralela . . . . . . . . . . . . . . . . . . . 62 4.1.3. Modelo CON usar arquitectura paralela . . . . . . . . . . . . . . . . . . 72 4.1.4. Análisis de la Complejidad del algoritmo trinomial . . . . . . . . . . . . 75 5. Estudio de casos. 80. 5.1. Modelado Distribuido de un Sistema Inteligente de Gestion del Recurso Hídrico Caso: Cuenca del Rio Chili, Arequipa. . . . . . . . . . . . . . . . . . . . . . . . 82. 5.1.1. Riesgo Hidroenergetico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.2. Análisis de Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.2.1. Experimento 1: Análisis hidroenergético . . . . . . . . . . . . . . . . . . 91. viii.
(9) ÍNDICE GENERAL 5.2.2. Experimento 2: Análisis Financiero . . . . . . . . . . . . . . . . . . . . . 99 5.3. Calculo de Métricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.3.1. Calculando el Speedup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.3.2. Eficiencia: % de tiempo invertido en el proceso actual . . . . . . . . . . . 107 5.3.3. Ley de Amdahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6. Conclusiones. 109. Referencias Bibliográficas. 112. Apéndices. 120. ix.
(10) Índice de figuras. x. 1.. Árbol binario perfecto para sumar n = 8 valores . . . . . . . . . . . . . . . . . .. 9. 2. 3.. Modelo PRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Ejemplo DAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12. 4.. Composición serial-paralelo. 5.. Suma en paralelo de un arreglo . . . . . . . . . . . . . . . . . . . . . . . . . . . 13. 6. 7.. multiplicación de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 DAG de un programa paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16. 8.. Modelo SISD (Single Instruction Single Data).. 9.. Modelo SIMD(Single Instruction Multiple Data). . . . . . . . . . . . . . . . . . 19. 10. 11.. MISD (Multiple instruction Single Data. . . . . . . . . . . . . . . . . . . . . . . 20 MIMD (Multiple Instruction Multiple Data). . . . . . . . . . . . . . . . . . . . . 21. 12.. Sistemas de Memoria Compartida. . . . . . . . . . . . . . . . . . . . . . . . . . 22. 13.. MIMD: Variaciones en memoria compartida . . . . . . . . . . . . . . . . . . . . 23. 14. 15.. Sistemas de Memoria Distribuida . . . . . . . . . . . . . . . . . . . . . . . . . . 24 MIMD: Multiple Instruction Muliple Data . . . . . . . . . . . . . . . . . . . . . 25. 16.. MIMD: Multiple Instruction Muliple Data . . . . . . . . . . . . . . . . . . . . . 25. 17.. Sistemas de Memoria Compartida Distribuida . . . . . . . . . . . . . . . . . . . 26. 18. 19.. Interacción CPU GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Arquitectura Paralela GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30. 20.. Value at Risk (VaR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43. 21. 22.. Opción de compra (Call option) . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 flujo de caja Call option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49. 23.. Estructura del dominio de solución para un árbol trinomial con cinco oportunidades de ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56. 24.. Diagrama de flujo del algoritmo trinomial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13. . . . . . . . . . . . . . . . . . . 19. . . . . . . . . . . . . . . . . . . . . . 56.
(11) ÍNDICE DE FIGURAS 25.. Alternativas de ramificación trinomial para un proceso con reversión a la media.. 26.. (a) Nodo sin límite, (b) nodo límite máximo y (c) nodo límite mínimo . . . . . . 57 Arquitectura de tarjeta de video utilizada . . . . . . . . . . . . . . . . . . . . . . 61. 27.. Arquitectura de ejecución Modelo nvidia CUDA . . . . . . . . . . . . . . . . . . 62. 28.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed. 29. 30.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed . . . . . . . . . . 63 Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 64. 31.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 64. 32.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 65. 33. 34.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 65 Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 66. 35.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 66. 36.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 67. 37. 38.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 68 Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 68. 39.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 69. 40.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 69. 41. 42.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 70 Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 70. 43.. Modelo Petri net SIN arquiectura paralela Utilizando WoPed (Continuación) . . 71. 44.. Modelo Petri net CON arquiectura paralela Utilizando WoPed (Continuación) . 72. 45. 46.. Modelo Petri net CON arquiectura paralela Utilizando WoPed (Continuación) . 72 Modelo Petri net CON arquiectura paralela Utilizando WoPed (Continuación) . 73. 47.. Modelo Petri net CON arquiectura paralela Utilizando WoPed (Continuación) . 73. 48.. Modelo Petri net CON arquiectura paralela Utilizando WoPed (Continuación) . 74. 49. 50.. Modelo Petri net CON arquiectura paralela Utilizando WoPed (Continuación) . 74 Modelo Petri net CON arquiectura paralela Utilizando WoPed (Continuación) . 75. 51.. Modelo Petri net CON arquiectura paralela Utilizando WoPed (Continuación) . 75. 52. 53.. Esquema de calculo de precio con la aplicación terminada . . . . . . . . . . . . . 81 Arquitectura del sub-sistema de optimizacion. . . . . . . . . . . . . . . . . . . . 84. 54.. Diagrama de clases (simplificado) del modelo de optimización. . . . . . . . . . . 84. 55.. Representacion de un Rio... 56. 57.. Representación de una Represa. . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Ejemplo de una representación de Red de uso. . . . . . . . . . . . . . . . . . . . 87. 58.. Componentes del ciclo hidrológico . . . . . . . . . . . . . . . . . . . . . . . . . . 89. 59.. Lista de Juntas de Regantes Chili Regulado . . . . . . . . . . . . . . . . . . . . 92. . . . . . . . . . . 63. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85. xi.
(12) ÍNDICE DE FIGURAS 60.. Modelo del sistema trabajando en el cálculo de opción del precio en la zona de. 61.. Tiabaya . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Diagrama de Cajas Promedio de precipitaciones mensuales . . . . . . . . . . . . 94. 62.. Promedio de precipitaciones Anuales . . . . . . . . . . . . . . . . . . . . . . . . 95. 63.. Coeficientes de variabilidad meses y acumulado anual . . . . . . . . . . . . . . . 95. 64. 65.. Valores iniciales para calcular el precio de opcion para esta transaccion PUT . . 97 Resultado esperado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97. 66.. Gráfico de resultados de calculo de opciones de precios con árboles trinomiales . 99. 67.. Nodo de toma de decisiones con cálculo de opción de precio de los commodities . 102. 68. 69.. Resultado con 20 pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Gráfico de resultados de calculo de opciones de precios con árboles trinomiales Maquina I7,1GEN, 8GB RAM GTM200 . . . . . . . . . . . . . . . . . . . . . . 106. 70.. xii. Modelo del sistema trabajando en el cálculo de opción del precio en la zona de Tiabaya . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.
(13) Índice de cuadros 1.. Taxonomía de Flynn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19. 2.. Variables y constantes del componente: Ro. . . . . . . . . . . . . . . . . . . . . . 85. 4.. Precios cupón cero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96. 5.. Resultados de calculo de opciones de precios con árboles trinomiales . . . . . . . 98. 6. 7.. Estructura Ratios Iniciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Estructura datos iniciales para el calculo de opciones . . . . . . . . . . . . . . . 101. 8.. Resultados utilizando 4 nodos o pasos . . . . . . . . . . . . . . . . . . . . . . . . 103. 9.. Modificando los valores iniciales a 20 pasos . . . . . . . . . . . . . . . . . . . . . 103. 10. 3.. Resultados de calculo de opciones de precios con árboles trinomiales . . . . . . . 105 Variables y constantes del componente: Represa. . . . . . . . . . . . . . . . . . . 108. xiii.
(14) Algoritmos 1.. Multiplicación de dos matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . .. 8. 2.. Quick Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 9. 3.. Suma de un vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13. 4. 5.. multiplicacion de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 MergeSort ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15. 6.. Procesamiento de cálculo de precio de opciones americanas . . . . . . . . . . . . 60. 7.. Cálculo de la complejidad del Algoritmo Secuencial . . . . . . . . . . . . . . . . 76. 8.. Cálculo de la complejidad del Algoritmo Paralelo . . . . . . . . . . . . . . . . . 78. xiv.
(15) Capítulo 1 Planteamiento del problema. 1.1.. Identificación del Problema. Una de las tendencias de los últimos años, dentro del desarrollo de todo tipo de sistemas computacionales es el acercamiento a arquitecturas que usan varios procesadores, en lugar de uno solo, para obtener un mejor rendimiento, dado que el costo computacional se ve reducido por el uso de estos procesadores y en especial por la arquitectura en paralelo de ellos. El paralelismo computacional es una forma de computación en la cual varios cálculos pueden realizarse al mismo tiempo(Flores and Ginés, 2010) , logrando que la potencia de los ordenadores aumente considerablemente. Los costos computacionales (tiempo de procesamiento) son altamente reducidos por las GPU (Unidades de Procesamiento Gráficas) con la utilización de la tecnología de procesadores paralelos como CUDA se pretende maximizar estos beneficios. Para la implementación de opciones Precios en especial en opciones de activos tangibles de Opciones en commodities la simulación es una de las partes del proceso de obtención de los mismos y ello tiene un costo computacionalmente más reducido y ello se pretende mejorar con la utilización de la tecnología CUDA . El uso de los commodities en especial el agua se convierte en un problema al no poder determinar el real costo de este frente a decisiones en las cuales involucra los proyectos y diferentes usos alternativos que le puede dar a este y se hace necesario conocer estos indicadores que nos servirán tomar decisiones a lo largo de la cuenca del río en estudio. Hay una creciente demanda del uso por parte de las compañías mineras pero como lo estudiaremos luego existe una prioridad para el uso en donde el consumo humano esta en primer lugar y el minero en el ultimo según las normas vigentes en nuestro país.. 1.
(16) 1. PLANTEAMIENTO DEL PROBLEMA Cada lugar geográficamente ubicado por donde recorre el río de la cuenca hidrográfica genera un punto de decisión que sumado a todos los anteriores nos lleva a procesar muchos escenarios de toma de decisiones y que demanda tiempo en calculo de procesamiento.. 1.2.. Delimitación del Problema. El presente trabajo tiene como propósito reducir los costos computacionales en tiempo generados por el proceso de identificación de precios de opciones reales en el análisis de riesgo hidroenergético bajo incertidumbre. Este trabajo pretende diseñar un método de análisis de calculo de precio de opción en la cuenca hidrográfica del río Chili ubicado en la ciudad de Arequipa- Perú.. 1.3.. Formulación del problema. En la presente investigación se plantea las siguientes preguntas: ¿De qué manera se logra reducir el costo computacional (tiempo de procesamiento) de las simulaciones para obtener el precio de opciones de tipo commodities?. 1.4.. Justificación e Importancia del problema. La identificación de los precios de Opciones nos llevan a realizar innumerables cálculos sobre todo en simulación y búsqueda de alternativas a través de árboles binarios, programación dual y árboles trinomiales lo cual podríamos reducirlo considerablemente a través de la utilización de una GPU en un sistema de co-procesamiento heterogéneo. La parte secuencial de la aplicación se ejecuta en la CPU y las partes de mayor carga computacional se aceleran en la GPU. Para el usuario, la aplicación simplemente se ejecuta más rápido porque utiliza la gran capacidad de la GPU para multiplicar el rendimiento. 1.5.. Limitaciones de la Investigación. La principal limitación parte del proceso de la adecuación de los algoritmos de identificación de Precios de Opciones commodities a la tecnología CUDA, además en la utilización parcial 2.
(17) 1.6 Objetivos de la investigación de modelos que requieren de datos que en ciertos tramos serán extrapolados a través de un método de pronósticos que se trabajan bajo incertidumbre y que las conclusiones y los resultados obtenidos solo se pueden aplicar a la cuenca hidrográfica en ciertos puntos específicos de análisis que se incluya como parte del conjunto de soluciones.. 1.6.. Objetivos de la investigación. Objetivo General El presente trabajo tiene como objetivo general: utilizar plataforma de alto desempeño para proponer un método de calculo de precio de opcion en commodities.. Objetivos específicos Describir el alcance de la computación en paralelo y su utilización en la solución de problemas de alto consumo de recursos de procesamiento. Describir el cálculo opciones Americanas en Commodities en ambiente de computación en paralelo Analizar el calculo de opciones utilizando arboles trinomiales. Evaluar el método de calculo de precio de opción utilizando arboles trinomiales en el estudio de casos. Realizar las conclusiones y recomendaciones luego del análisis.. 1.7.. Hipótesis. Es posible reducir notablemente el tiempo de procesamiento computacional para el cálculo de precio de opción en commodities usando plataforma de computación de alto desempeño.. 1.8.. Organización de la tesis. Esta tesis está organizada de la siguiente manera: 3.
(18) 1. PLANTEAMIENTO DEL PROBLEMA En el capítulo 2 se realiza una evaluación de los principales conceptos teóricos referidos a los diferentes modelos en paralelo así como la taxonomía de Flyn que brinda pautas sobre la computación en paralelo también se presenta una revisión sobre los modelos GP - GPU y su influencia en los modelos computarizados basados en paralelismo. En el Capitulo 3 se analiza la metodología del calculo de opción en commodities utilizando plataforma de alto desempeño donde mostramos los métodos de obtención del cálculo de opciones de precios Americanos, así como las definiciones de los métodos de simulación En el capitulo 4 se analiza y describe el algoritmo trinomial utilizando para ello el enfoque secuencial y el enfoque con técnicas paralelas para concluir con el análisis de complejidad del algoritmo analizado también con técnicas secuencias y programación en paralelo. En el capitulo 5 se realiza una evaluación de estudios de casos analizando un ejemplo financiero y en otra un caso de riesgo hidro-energetico en la región de Arequipa en la cuenca del Rio Chili Regulado. En el capitulo 6 se plantean conclusiones y recomendaciones del trabajo de investigación.. 4.
(19) 5.
(20) 2. COMPUTACIÓN EN PARALELO. Capítulo 2 Computación en Paralelo Resumen En este capitulo se detalla información teórica acerca de la computación en paralelo mostrando como el paralelismo es omnipresente hoy en día se muestra también como se encuentra y muestra la complejidad del paralelismo, que se vera con mayor detalle en el capitulo 4. También se detalla algunos modelos de algoritmos utilizados y que han sido paralelizados. Mostramos también como han evolucionado los modelos en paralelo como por ejemplo la computación paralela anidada. También hacemos referencia algunas de las características importantes del algoritmo en paralelo que busca la exactitud y la eficiencia. Realizamos una descripción de la taxonomía de flynn como parte importante de la arquitectura delos sistemas paralelos como son el Single Data - Single Instruction (SISD), Multple Instruction - Single Data (MISD), Single Data- Multiple Data (SIMD) y el Multiple Data - Multiple Instruction (MIMD). 6. Se realiza un análisis sobre las tecnologías Graphics Processing Unit (GPU) para llegar al modelo de arquitectura CUDA planteado en este trabajo..
(21) 2.1 Introducción. 2.1.. Introducción. 2.1.1.. Generalidades. A menudo “la eficiencia de una máquina, para resolver un problema dado, depende de la implementación del algoritmo de resolución. En particular, las máquinas paralelas ofrecen un poder de cálculo enorme, pero explotar todas sus potencialidades no es fácil. Por otro lado, los problemas tienen diferentes características factibles a explotar, cuando se desean desarrollar aplicaciones paralelas para resolverlos. La mejor implementación secuencial de resolución de un problema dado no conlleva obligatoriamente al mejor algoritmo paralelo, ya que para desarrollar un algo ritmo paralelo se deben explotar lo que denominaremos las fuentes de paralelismo del problema. Básicamente, existen dos modos de ver el paralelismo” (Moore et al., 1998) (Baker et al., 1996) (Gengler and Desprez, 1996) (Germain-Renaud and Sansonnet, 1991a).. 2.1.2.. El paralelismo “omnipresente”. Paralelismo se observa en diversos niveles de la computación, desde puertas lógicas hasta niveles de internet, pudiéndose encontrar en: Puertas lógicas: al implementar una instrucción de procesador, se hacen varias operaciones simultáneas en millones de puertas lógicas Pipelining: Un procesador ejecuta varias instrucciones a la vez para hacer eficiente el uso de todas las unidades funcionales (rutas de ejecución) Instrucciones Vectoriales (MMX): Algunos procesadores, construídos para procesamiento gráfico, son diseñados para hacer aritmética vectorial en paralelo. Hyperthreading: Ejecución de hilos múltiples en el mismo núcleo, para usar varias unidades funcionales y no mostrar retraso Multi-cores Sistemas de memoria compartida Clústers Internet. 2.1.3.. El futuro de los chips. Los procesadores ya están en el límite de su velocidad de reloj y, para incrementar su rendimiento se aumenta la cantidad de unidades procesadoras. Esta cantidad puede llegar a cientos exigiendo a los programas un alto grado de paralelismo. 7.
(22) 2. COMPUTACIÓN EN PARALELO Incluso reduciendo la velocidad de reloj y aumentando la cantidad de núcleos, se gana en rendimiento / consumo de energía lográndose chips de bajo consumo de energía con un gran rendimiento que son usados actualmente.. 2.1.4.. Modelo de máquina secuencial. Cuando se piensa en algoritmos secuenciales, normalmente usamos el modelo RAM. Modelo RAM Que asume que la máquina ejecuta una instrucción en un paso de tiempo y puede acceder cualquier posición de memoria durante ese paso de tiempo. Con este modelo se simplifica el análisis y diseño de algoritmos, aunque en la realidad los sistemas tienen retardos variados para el acceso a memoria (registros, caché, RAM, paginación virtual). 2.1.5.. Encontrando paralelismo. Veamos cómo dos algoritmos conocidos pueden paralelizarse 1 Multiplicación de dos matrices A,Bn×n (Blelloch et al., 2012)que secuencialmente sería: Algoritmo 1 Multiplicación de dos matrices 1 2. for i = 1 to n do do for j = 1 to n do do. 3 4. Cij = 0. 5. for k = 1 to n do do Cij = Cij + AikBkj. 6. end for. 7. end for. 8 9. end for. Fuente: Elaboración Propia cuya complejidad es O(n3 ) por los 3 bucles anidados. - Note que el algoritmo 1 los 2 bucles externos pueden paralelizarse para cualquier Cij , por ser totalmente independientes obteniendo hasta n2 lazos paralelos independientes, uno por cada Cij , 16 i, j,6 n. 8.
(23) 2.1 Introducción -Se tendría una complejidad de al menos O(n) para esta operación para cualquier cantidad de potencia en paralelo. Observar que Cij es un producto escalar de la fila Ai y la columna Bj y el bucle más interno es una implementación de esta operación. - Se puede aprovechar la idea de sumas asociativas para uns rápida implementación de este producto, en vez de implementar la suma de forma incremental: (((ai1 b1j + ai2 b2j ) + ai3 b3j ) + ... + ain bnj ) se puede hacer la suma recursiva de la Figura 1 con complejidad O(logn) si se tiene la suficiente potencia computacional. Figura 1: Árbol binario perfecto para sumar n = 8 valores. Fuente: Elaboración Propia. Así se alcanza un algoritmo aún más paralelizado, tal que multiplica dos matrices en tiempo logarítmico O(logn) Algoritmo Quick Sort: que es un típico algoritmo “divide y conquistarás” de ordenamiento por comparación, que hace O(nlogn) comparaciones con alta probabilidad1 y su seudocódigo es: Algoritmo 2 Quick Sort 1. QSort ( A ) =. 2. if | A | < 1 then return A. 3 4 5. else p = A [ rand (| A |) ]. 6. return QSort ({ x 2 A : x < p }) ++{ p }++ QSort ({ x 2 A : x > p }). 7. end if. Fuente: Elaboración Propia. 9.
(24) 2. COMPUTACIÓN EN PARALELO Las dos llamadas recursivas realizadas en al algoritmo 2 en cada nivel de recursión son independientes y se pueden hacer en paralelo. Si se asume que quick sort siempre divide el arreglo en mitades cada vez, se tendría un algoritmo paralelo que realiza O(n) pasos mediante la recursión T (n) = T (n/2) + n durante n pasos requeridos para partir elementos mayores que p en cada nivel de recursión. Con un análisis más cuidadoso, se puede mostrar que la versión quick sort aleatoria toma tiempo O(n) para completar con alta probabilidad. - Habiendo infinitos procesadores, se alcanzaría una aceleración de log n. - Es interesante paralelizar la rutina de particionamiento - Es posible paralelizar la construcción del arreglo {x ∈ A : x < p} logrando una ejecución en tiempo O(logn). - Se obtiene una versión paralela que se completa en O(log 2 n) pasos de tiempo con alta probabilidad.. 2.2.. Modelos en Paralelo. PRAM: Processor-based RAM PRAM (Parallel Random-Access Machine) (Blelloch et al., 2012) es un modelo muy usado para la mayoría de algoritmos en paralelo y generalización de muchas máquinas secuenciales consistentes en un procesador y memoria anexa de cualquier tamaño conteniendo instrucciones y considerando lectura y escritura aleatoria como unidades de tiempo sin importar la localización. Es un modelo que coloca múltiples procesadores a un único bloque de memoria (SIMD) se aprecia su estructura en la figura 2. Figura 2: Modelo PRAM. Fuente: Simhadri, 2013. Bajo este modelo muchas operaciones cambian su naturaleza. Para n procesadores se puede hacer n operaciones que sean independientes. 10.
(25) 2.2 Modelos en Paralelo Existe el problema de acceso recurrente a memoria que se manifiesta de las siguientes formas Lectura exclusiva: sólo un procesador puede leer en un paso de tiempo Lectura concurrente: sin restricciones en la lectura y es por lo general fácil de tratar. Escritura Exclusiva: Sólo 1 procesador puede escribir en un determinado paso de tiempo Escritura concurrente: sin restricciones en escritura, usualmente es inseguro y hay necesidad de resolver múltiples escrituras usando algunas estrategias: - Arbitrario: se escriben algunos valores sin mucha previsión - Garbage: Valores aleatorios con poca relevancia a la entrada de interés), se escriben en las posiciones, suele ser más potente que la escritura exclusiva - Prioridad: dar prioridades de escritura a los procesadores, el de más prioridad escribirá el resultado - Combinación: combinar valores mediante operaciones (add, logicas AND/OR) Gran parte de los algoritmos en paralelo se implementan en el modelo PRAM, y aunque no sea un modelo muy real (en computadoras reales existen diferentes tiempos de acceso a la memoria compartida), es una abstracción simple para desarrollar algoritmos paralelos que pueden ser colocados en una topología de red específica.. Ventajas: (simplicidad) - Abstracción independiente de la estructura de conexión, incluyendo las negociaciones y protocolos - La mayoría de sus ideas se pueden ver en otros modelos. Problemas: (programación) sin restricciones en la lectura y es por : - Modelo de memoria muy idealizado: los tiempos de acceso no son siempre constantes, no fácil de llevar a la práctica. - Sincronización: la naturaleza de bloqueo de acceso quita flexibilidad y restringe prácticas de programación - Cantidad fija de procesadores. DAG: Direct Acyclic Graph El modelo DAG Direct Acyclic Graph se usa para analizar el costo de un algoritmo. DAG se refiere a un grafo dirigido apuntando a las salidas de los ciclos. Esta abstracción también ayuda a ver las fallas de rendimiento del modelo PRAM y cualquier modelo basado en red. Para un modelo DAG se requiere: 11.
(26) 2. COMPUTACIÓN EN PARALELO -Representar pequeños segmentos de instrucciones secuenciales como nodos de un grafo donde el peso del nodo es el costo de tiempo de esas instrucciones -Las aristas son dependencias entre los nodos. Una arista de A → B significa que las ins-. trucciones A se debe ejecutar en B. Bajo este modelo se usan las siguientes métricas 1 Trabajo: suma de los pesos de nodos, es decir el total de pasos de procesador requeridos para la ejecución del cálculo 2 Profundidad: el peso del camino más pesado en el DAG (secuencia más pesada de ejecución de sus nodos). La profundidad es un límite inferior en el tiempo de ejecución del algoritmo. podemos revizar un ejemplo en la figura 3. Figura 3: Ejemplo DAG. Fuente:ElaboracionPropia Estas dos métricas son relevantes ya que nos dan una medida efectiva del rendimiento de algoritmos bajo el modelo PRAM. Estos dos modelos cuando juntos, nos permiten una buena aproximación del tiempo de ejecución para una cantidad fija de procesadores.. 2.2.1.. Computación Paralela Anidada. Cuando en su modelo DAG, un algoritmo se muestra serie-paralelo, existe una computación paralela anidada que podría verse como un DAG construído recursivamente con dos operaciones: composición serial y composición paralela como se muestra en la figura 4.. 12.
(27) 2.2 Modelos en Paralelo. Figura 4: Composición serial-paralelo. Fuente: Elaboración Propia. Sea la suma de un vector: Algoritmo 3 Suma de un vector 1. sum (A ,i , n ) =. 2. if ( n ==1) A [ i ]. 3 4. else sum (A ,i , n /2) + sum (A , i + n /2 ,n - n /2) ;. Fuente: Elaboración Propia. Asumiendo que no hay dependencia entre las llamadas recursivas a suma, éstas podrían llamarse en paralelo W (n) = 2W ( n2 ) + 1donde 1 es la constante del if, W (1) + O(1). Luego W (n) = O(n) D(n) = D n2 + O(1) = O(logn), donde 1 es la constante de la adición Figura 5: Suma en paralelo de un arreglo. Fuente: (Blelloch et al., 2012). 13.
(28) 2. COMPUTACIÓN EN PARALELO Sea la multiplicacion de matrices: Algoritmo 4 multiplicacion de matrices 1. for ( i ==0; i < n ; i ++) for ( j ==0; j < n ; j ++). 2. C [ i ][ j ] = sum ( k =1: n , A [ i ][ k ]* B [ k ][ j ]) ;. 3. Figura 6: multiplicación de matrices. Fuente: Elaboración Propia. 2.2.2.. Constructores de Programación. Considerando algoritmos y programas bajo el modelo de “Paralelismo anidado”, los siguientes constructores de programación abarcan este tipo de paralelismo: Bucle en Paralelo: acceso a los ítems de A for x in A { ... } Evaluación en Paralelo: sentencias s1 y s2 pueden ejecutarse en paralelo s1 || s2 Estos constructores conducen al modelo DAG serie-paralelo ya estudiado. Los siguientes lenguajes soportan estos constructores: 1 Nest (funcional) 2 Cilk++ (basado en C++) 3 X10 (IBM Java-type) 4 OpenMP. 14.
(29) 2.2 Modelos en Paralelo Algoritmo 5 MergeSort ejemplo 1. function msort ( A ) {. 2. if | A | <= 1 then A ;. 3. else {. 4. b = msort ( bot ( A ) ) || t = msort ( top ( A ) ) ;. 5. return merge (b , t ) ;. 6. }. 7. }. Asumiendo que merge tiene trabajo O(n) y profundidad O(log 2 n), las relaciones de recursión para trabajo y profundidad de msort puede ser: W (n) = 2W (n/2) + O(n) = O(nlogn)(1) D(n) = D(n/2) + Olog 2 n = Olog 2 n(2) Para calcular la profundidad, se debe tomar el máximo de las llamadas recursivas, pero cada llamada opera en el mismo tamaño de datos y tiene la misma complejidad, así, se suma el trabajo de una de las llamadas recursivas msort. También se puede sumar la profundidad del merge llegando a D(n) = O log3 n. 2.2.3.. Exactitud. La exactitud en un algoritmo paralelo es importante, si el algoritmo no funciona, no hay cómo optimizarlo, para esto son necesarias algunas definiciones: Operaciones Ordenadas: dos operaciones A y B son ordenadas si existe un camino en DAG de A → B (A≺ B) ó B → A (B≺ A) Ordenamiento secuencial: para un programa paralelo es una secuencia S que incluya todas las instrucciones del programa paralelo tal que contienen a A≺ B y es respetado como restricción. Operaciones concurrentes: Dos operaciones A y B son concurrentes si no existe un camino en el DAG tal que A≺B o B≺ A Sean las operaciones A y D de la figura 7. Existe un camino A → D, haciéndolas ordenadas;. pero B y C son concurentes puesto que no hay camino conteniendo B → C o C → B. 15.
(30) 2. COMPUTACIÓN EN PARALELO. Figura 7: DAG de un programa paralelo. Fuente: Elaboración Propia. Lectura Concurrente (CR): dos operaciones leen la misma posición de memoria Escritura Concurrente (CW): dos operaciones escriben en la misma posición de memoria Lectura-escritura concurrente: dos operaciones acceden la misma posición de memoria, una para leer y la otra para escribir Estas concurrencias nos definen condiciones de ejecución tales que el orden de ejecución de instrucciones en la máquina paralela afecta el resultado de los cálculos, principalmente cuando existe instrucciones concurrentes leyendo y escribiendo en la misma posición de memoria, surgiendo algunas observaciones sobre los programas en paralelo: Programa paralelo “libre de concurrencia” cuando no tienen CW ni CRW Programa paralelo con “concurrencia de escritura” si no tiene CRW Un programa libre de concurrencia sólo requiere ver el orden de ejecución para analizar la exactitud, ya que cualquier ejecucion válida llevará al mismo resultado Para un programa paralelo libre de concurrencia, la prueba de exactitud es la misma que en la versión secuencial. La cuestión es garantizar un algoritmo paralelo libre de concurrencia. Uso de lenguaje de programación funcional (Nesl, ML) que no ven efectos colaterales de la escritura Uso de un detector de concurrencia (Cilk++). 2.2.4.. Eficiencia. Para analizar la eficiencia se definen los siguientes términos: Eficiencia de trabajo: un algoritmo paralelo es eficiente en trabajo si W(n) asintóticamente es igual al mejor T(n) conocido de la versión secuencial para el mismo problema Paralelismo: 16. W D. es la medida de la cantidad de procesadores usados en el algoritmo.
(31) 2.2 Modelos en Paralelo Escalabilidad: Un programa paralelo es escalablemente paralelo si se cumple que: lim W (n) =∝. n→∝ D(n). Ejemplo: Quick-sort sin partición paralelizada W (n) = O(nlogn). D(n) = O(n) lim nlog(n) = lim log(n) =∝ n. n→∝. n→∝. que es escalable pero sin llegar a la rapidez del quick sort con partición paralelizada D(n) = O(log n) Al modelar un algoritmo paralelo se debe tratar de: Garantizar la máxima eficiencia en trabajo Minimizar la profundidad Observación: Si se usa un planificador greedy para P procesadores, se cumple que: W +D P W T ≥ max D, P T ≤. donde cabe notar que estos límites son relativamente estrechos. Como extremo máximo, cuando D = W/P, el ínfimo es un factor de 2 del supremo, aunque es más usual la razón entre estas fronteras sea menor que 2 (D < W/P). Cuando se considera eficiencia, es imortante primero obtener un algoritmo que sea eficiente en trabajo antes de minimizar la profundidad, este ejemplo muestra que esto es un error. ejemplo:. 17.
(32) 2. COMPUTACIÓN EN PARALELO '. Una empresa desarrolló un “simulador lógico”, útil en empresas como Intel c ,. $. que consistió en una máquina con 64000 procesadores. Cada procesador debe simular una puerta lógica procesando en cada paso de tiempo sus entradas y generando una salida. Cada salida debe ser desviada como entrada a los procesadores correspondientes Se determinó que este modelo fue 10x más lento que su versión secuencia en un único procesador y la empresa no supo explicar este efecto. La razón está en la eficiencia en trabajo. A pesar que las “operaciones lógicas” se ejecutan en paralelo, existe una operación secuencial implícita en cada puerta lógica al requerie que otras “puerta lógica” tengan sus salidas listas a ser usadas como entradas En cada paso de tiempo sólo un 2-3 % de puertas tenían sus salidas listas En un proceso puramente secuencial sólo se gasta tiempo de proceso en las “puertas lógicas” Aunque no fue eficiente, el simulador de 64000 procesadores pudo procesar cualquier lógica.. &. 2.3.. %. Taxonomía de Flynn. Michael Flynn (Flynn, 1972) “propuso un mecanismo de clasificación de las computadoras. La taxonomía de Flynn es la manera clásica de organizar las computadoras, y aunque no cubre todas las posibles arquitecturas, proporciona una importante penetración en varias arquitecturas de computadoras. El método de Flynn se basa en el número de instrucciones y de la secuencia de datos que la computadora utiliza para procesar información. Puede haber secuencias de instrucciones sencillas o múltiples y secuencias de datos sencillas o múltiples. Esto da lugar a 4 tipos de computadoras, de las cuales solamente dos son aplicables a las computadoras paralelas”.. 18.
(33) 2.3 Taxonomía de Flynn. Single Instruction. Multiple Instruction. Single Data. SISD. MISD. Multiple Data. SIMD. MIMD. Cuadro 1: Taxonomía de Flynn. 2.3.1.. SISD (Single Instruction Single Data).. Este es el modelo tradicional de computación secuencial donde una unidad de procesamiento recibe una sola secuencia de instrucciones que operan en una secuencia de datos.. Figura 8: Modelo SISD (Single Instruction Single Data). Ejemplo: Para procesar la suma de N números a1, a2, ... aN, el procesador necesita accesar a memoria N veces consecutivas (para recibir un número). También son ejecutadas en secuencia N-1 adiciones. Es decir los algoritmos para las computadoras SISD no contienen ningún paralelismo, éstas están constituidas de un procesador.. 2.3.2.. SIMD (Single Instruction Multiple Data).. “A diferencia de SISD, en este caso se tienen múltiples procesadores que sincronizadamente ejecutan la misma secuencia de instrucciones, pero en diferentes datos. El tipo de memoria que estos sistemas utilizan es distribuida.” Simhadri (2013) Figura 9: Modelo SIMD(Single Instruction Multiple Data).. Fuente: (Simhadri, 2013). 19.
(34) 2. COMPUTACIÓN EN PARALELO “Aquí hay N secuencias de datos, una por procesador, así que diferentes datos pueden ser utilizados en cada procesador. Los procesadores operan sincronizadamente y un reloj global se utiliza para asegurar esta operación. Es decir, en cada paso todos lo procesadores ejecutan la misma instrucción, cada uno en diferente dato. Máquinas con arreglos de procesadores tales como ICL DAP (Distributed Array Processor) y computadoras vectoriales canalizadas como CRAY 1 & 2 y CIBER 205 son de arquitectura SIMD. Ejemplo: Sumando dos matrices A + B = C. Siendo A y B de orden 2 y teniendo 4 procesadores:” Simhadri (2013) A11 + B11 = C11 A12 + B12 = C12 A21 + B21 = C21 A22 + B22 = C22 La misma instrucción es ejecutada en los 4 procesadores (sumando dos números) y los 4 ejecutan las instrucciones simultáneamente. Esto toma un paso en comparación con cuatro pasos en una máquina secuencial.. 2.3.3.. MISD (Multiple Instruction Single Data).. “En este modelo, secuencias de instrucciones pasan a través de múltiples procesadores. Diferentes operaciones son realizadas en diversos procesadores. N procesadores, cada uno con su propia unidad de control comparten una memoria común. “ Simhadri (2013) Figura 10: MISD (Multiple instruction Single Data.. Fuente: (Simhadri, 2013). “Aquí hay N secuencias de instrucciones (algoritmos/programas) y una secuencia de datos. El paralelismo es alcanzado dejando que los procesadores realicen diferentes cosas al mismo tiempo en el mismo dato. Las máquinas MISD son útiles en cómputos donde la misma entrada esta sujeta a diferentes operaciones.” (Simhadri, 2013) 20.
(35) 2.3 Taxonomía de Flynn. 2.3.4.. MIMD Multiple Instruction Multiple Data. “Aunque el paralelismo dentro de un procesador logra mejoras de desempeño, tiene el costo asociado de aumentar la complejidad del procesador, lo que también repercute en el consumo de energía de´este. Una alternativa para aumentar el rendimiento del computador es en vez de complejizar más el procesador, trabajar con múltiples procesadores simples, repartiendo el procesamiento de múltiples programas independientes entre´estos, lo que se conoce como un sistema multiprocesador .” (Simhadri, 2013) “Este tipo de computadora es paralela al igual que las SIMD, la diferencia con estos sistemas es que MIMD es asíncrono. No tiene un reloj central. Cada procesador en un sistema MIMD puede ejecutar su propia secuencia de instrucciones y tener sus propios datos. Esta característica es la más general y poderosa de esta clasificación. “ (Simhadri, 2013) Figura 11: MIMD (Multiple Instruction Multiple Data).. Fuente: (Simhadri, 2013). “Se tienen N procesadores, N secuencias de instrucciones y N secuencias de datos. Cada procesador opera bajo el control de una sencuencia de instrucciones, ejecutada por su propia unidad de control, es decir cada procesador es capaz de ejecutar su propio programa con diferentes datos. Esto significa que los procesadores operan asíncronamente, o en terminos simples, pueden estar haciendo diferentes cosas en diferentes datos al mismo tiempo. Los sistemas MIMD se clasifican en: Sistemas de Memoria Compartida. Sistemas de Memoria Distribuida. Sistemas de Memoria Compartida Distribuida.” (Simhadri, 2013). 21.
(36) 2. COMPUTACIÓN EN PARALELO. Sistemas de Memoria Compartida. “En este tipo de sistemas cada procesador tiene acceso a toda la memoria, es decir hay un espacio de direccionamiento compartido. Se tienen tiempos de acceso a memoria uniformes ya que todos los procesadores se encuentran igualmente comunicados con la memoria principal y las lecturas y escrituras de todos los procesadores tienen exactamente las mismas latencias; y además el acceso a memoria es por medio de un ducto común. En esta configuración, debe asegurarse que los procesadores no tengan acceso simultáneamente a regiones de memoria de una manera en la que pueda occurrir algún error. Desventajas: El acceso simultáneo a memoria es un problema. Poca escalabilidad de procesadores, debido a que se puede generar un cuello de botella al incrementar el numero de CPU’s. En computadoras vectoriales como Crays, etc. Todos los CPUs tienen un camino libre a la memoria. No hay interferencia entre CPUs. La razón principal por el alto precio de Cray es la memoria. Ventaja: La facilidad de la programación. Es mucho más fácil programar en estos sistemas que en sistemas de memoria distribuida.” (Simhadri, 2013). Figura 12: Sistemas de Memoria Compartida.. Fuente: (Simhadri, 2013). “Las computadoras MIMD con memoria compartida son sistemas conocidos como de multiprocesamiento simétrico (SMP) donde múltiples procesadores comparten un mismo sistema operativo y memoria. Otro término con que se le conoce es máquinas firmemente juntas o de multiprocesadores. Ejemplos son: SGI/Cray Power Challenge, SGI/Cray C90, SGI/Onyx, ENCORE, MULTIMAX, SEQUENT y BALANCE, entre otras. En la figura 13 se muestra los diferentes variaciones de memoria compartida.” (Simhadri, 2013) 22.
(37) 2.3 Taxonomía de Flynn. Figura 13: MIMD: Variaciones en memoria compartida. Fuente: Elaboración Propia. Uniform Memory Access (UMA) En sistemas con uniform memory access (acceso a memoria uniforme), cada procesador tiene acceso directo a una sola memoria compartida. Todas las ubicaciones de la memoria son equidistantes (en cuanto a tiempos de acceso) a cada procesador. La mayoría de los sistemas UMA incorpora caché para eliminar las disputas de la memoria pero este mecanismo no se ve desde las aplicaciones. Non uniform Memory Access (NUMA) Sistemas con nonuniform memory access (acceso a memoria no uniforme) tienen una memoria física compartida distribuida . Cada partición de esta memoria se ata directamente a un nodo pero se puede acceder a ella por procesadores en otro nodos via la red de interconexión. Así, los tiempos de acceso a la memoria difieren dependiendo de si la ubicación requerida es local al nodo o remota a este. Este nivel de complejidad agregado puede ser escondido del software de aplicación pero hacer esto lleva a un desempeño suboptimo. Para hacer mejor uso del hardware, el programador debe tomar la arquitectura en consideración. El cache se usa entre procesadores y memoria local asi como entre nodos. Máquinas con caché coherente a nivel del hardware se llaman ccNUMA. Cache-only Memory Architecture (COMA) Sistemas con cache only memory access (acceso a memoria solo en caches) no tiene memoria compartida física, pero el cache solo constituye la memoria de las máquinas. Se provee un solo espacio físico de direcciones pero los tiempos de acceso varían dependientemente si la ubicación de la memoria requerida está en el caché local o en uno remoto. El software de aplicación ignoraría la arquitectura del sistema ya que la máquina se comporta en forma muy parecida a una máquina UMA con caché. 23.
(38) 2. COMPUTACIÓN EN PARALELO. Sistemas de Memoria Distribuida. “Estos sistemas tienen su propia memoria local. Los procesadores pueden compartir información solamente enviando mensajes, es decir, si un procesador requiere los datos contenidos en la memoria de otro procesador, deberá enviar un mensaje solicitándolos. Esta comunicación se le conoce como Paso de Mensajes. Ventajas: La escalabilidad. Las computadoras con sistemas de memoria distribuida son fáciles de escalar, mientras que la demanda de los recursos crece, se puede agregar más memoria y procesadores. Desventajas: El acceso remoto a memoria es lento. La programación puede ser complicada. “ (Simhadri, 2013) Figura 14: Sistemas de Memoria Distribuida. Fuente: (Simhadri, 2013). Las computadoras MIMD de memoria distribuida son conocidas como sistemas de procesamiento en paralelo masivo (MPP) donde múltiples procesadores trabajan en diferentes partes de un programa, usando su propio sistema operativo y memoria. Además se les llama multicomputadoras, máquinas libremente juntas o cluster. Algunos ejemplos de este tipo de máquinas son IBM SP2 y SGI/Cray T3D/T3E.. 24.
(39) 2.3 Taxonomía de Flynn. Figura 15: MIMD: Multiple Instruction Muliple Data. Fuente: Elaboración Propia. Figura 16: MIMD: Multiple Instruction Muliple Data. Fuente: Elaboración Propia. Sistemas de Memoria Compartida Distribuida “Es un cluster o una partición de procesadores que tienen acceso a una memoria compartida común pero sin un canal compartido. Esto es, físicamente cada procesador posee su memoria local y se conecta con otros procesadores por medio de un dispositivo de alta velocidad, y todos ven las memorias de cada uno como un espacio de direcciones globales. El acceso a la memoria de diferentes clusters se realiza bajo el esquema de Acceso a Memoria No Uniforme (NUMA), la cual toma menos tiempo en acceder a la memoria local de un 25.
(40) 2. COMPUTACIÓN EN PARALELO procesador que acceder a memoria remota de otro procesador. Ventajas: Presenta escalabilidad como en los sistemas de memoria distribuida. Es fácil de programar como en los sistemas de memoria compartida. No existe el cuello de botella que se puede dar en máquinas de sólo memoria compartida. “ (Simhadri, 2013) Figura 17: Sistemas de Memoria Compartida Distribuida. Fuente: (Simhadri, 2013). Algunos ejemplos de este tipo de sistemas son HP/Convex SPP-2000 y SGI/Cray Origin2000.. 2.4.. Graphics Processing Unit - GPU. La evolución de los vídeo juegos ha ido unida de la mano de la evolución de las tarjetas gráficas, las GPUs (Graphic Processing Units). A lo largo de los años cada vez se han hecho posibles mayores cálculos gráficos, pasando de las primitivas tarjetas con apenas aceleración 2D a potentes tarjetas aceleradoras 3D que ofrecen multitud de posibilidades. A continuación se presenta a grandes rasgos esta evolución. Las GPUs modernas descienden de los primitivos chips gráficos de finales de los 70s y principios de los 80s. Estos chips estaban limitados, en el mejor de los casos a técnicas de blitting (BitBLT - copia directa de un punto de la memoria gráfica a otro) sobre ’sprites’ (dibujado de un imagen dependiendo de una máscara para simular transparencias) y no poseían ningún soporte para dibujado de formas básicas. Algunas de estas GPUs listar varias operaciones y utilizar DMA para reducir tiempos de carga en el procesador principal; un claro ejemplo era el co-procesador ANTIC utilizado en la videoconsola Atari 5200. A finales de los 80s y principios de los 90s aparecieron numerosos microprocesadores de propósito general que implementaban 26.
(41) 2.4 Graphics Processing Unit - GPU funciones propias de GPU mediante chips de procesado del señal para realizar rápidas funciones de dibujado pero resultaban muy caros. A medida que la tecnología mejoró, poco a poco se fue haciendo posible la integración de las funciones de blitting y de dibujado de formas en una misma tarjeta, y con el tiempo en un mismo chip, dando lugar a las primeras tarjetas VGA (Video Graphics Array - IBM, 1987). Estas primeras "aceleradoras 2D" no eran tan flexibles como las GPUs basadas en microprocesadores pero eran mucho más fáciles de fabricar y de vender. El sistema gráfico 8514 de IBM fue una de las primeras tarjetas gráficas en implementar dibujado de primitivas 2D directamente en hardware. A principios de los 90, la aparición de Microsoft Windows, despertó el interés en los gráficos 2D y en el mercado del PC, debido al dominio de Windows, se centro el desarrollo de los fabricantes en una única interfaz de programación, la GDI (Graphics Device Interface); uno de los subsistemas de Windows y un estándar para la representación de objetos gráficos. En 1991, S3 Graphics introducía la primera aceleradora 2D en un solo chip, la S3 86C911 y para 1995 la mayoría de los fabricantes de chips gráficos ya habían incluido aceleración 2D en sus propios chips. A lo largo de los 90s, la aceleración 2D continuó evolucionando juntamente como la capacidad de integración en chip y empezaron a aparecer las primeras APIs (Application Programming Interface) como la librería gráfica WinG de Microsoft para Windows 3.x y posteriormente la interface DirectDraw para aceleración 2D por hardware en Windows 95 y posteriores. A mediados de los 90s, las CPUs de ordenador ya eran suficientemente potentes como para gestionar gráficos 3D en tiempo real. Muchos fabricantes de hardware intentaron ser los primeros en ofrecer aceleración 3D pero la mayoría de ellos solo ofrecían aceleradoras 2D con algunas funcionalidades 3D. La primera tarjeta con posibilidades 3D que llego al mercado fue la 3Dfx con su serie de tarjetas Voodoo, que solo ofrecía funcionalidad 3D (y nada de aceleración 2D). Aunque de nuevo, según fue avanzando la tecnología, se llego a integrar en un solo chip tanto aceleración 2D, 3D y funciones de video. Según iban evolucionando las APIs gráficas como DirectX y OpenGL, las tarjetas fueron implementando cada vez más funciones aceleradoras, pasando de ser simples rasterizadores (mostrado en pantalla 2D de un universo 3D) a controlar importantes aspectos de la tubería de render de un mundo 3D, como las transformaciones y la iluminación (T&L - Transform & Lighting). La tarjeta nVidia GeForce 256 (NV10) fue la primera tarjeta del mercado con estas capacidades, sentando los precedentes para los futuros píxel y vertex shaders programables. Con la llegada de la API DirecX 8.0 y funcionalidades similares en OpenGL, las GPUs empezaron a añadir capacidades de shading por hardware. Cada píxel podía ser procesado por un pequeño programa antes de ser mostrado en pantalla, como también del mismo modo, se podía procesar cada vértice geométrico del universo 3D. nVidia también fue la primera compañía 27.
(42) 2. COMPUTACIÓN EN PARALELO en traer al mercado el primer chip con capacidades de shaders programables con su GeForce 3 (NV20), seguido por su competidora ATI. En principio, estas modernas GPUs utilizaban gran parte del potencial para cálculos relacionados con gráficos 3D. Se utilizaban para acelerar el costoso trabajo de mapeado de texturas, render de polígonos (proyección bidimensional del mundo 3D) y cálculos geométricos de translación de vértices entre diferentes sistemas de coordenadas. Con la llegada de los Shaders, nuevas funciones gráficas antes realizadas por la CPU pueden ser delegadas a la GPU como son funciones de sobremuestreo e interpolación para reducir aliasing. Muchos de estos nuevos cálculos matemáticos están basados en operaciones con matrices y vectores, por esta razón, ingenieros y científicos han estudiado el uso de la GPU para cálculos no exclusivamente gráficos, como son complejos sistemas de procesado de imagen, cálculos de IA e incluso cálculos de bolsa.Debido a esta nueva serie de aplicaciones que exceden el objetivo inicial de las GPUs, surge un nuevo término para describirlas, las GPGPU (General-Purpose Computing on GPU). Del mismo modo que han aparecido nuevas aceleradoras para PC, las nuevas generaciones de videoconsolas también se han adaptado a estas nuevas GPUs, aprovechando al máximo todas sus posibilidades e igualando la potencia entre los dos sistemas de videojuegos.. 2.4.1.. General-Purpose Computing on Graphics Processing Units GPGPU. GPU computing, o GPGPU, es el uso de la GPU (unidad de procesamiento gráfico) para realizar operaciones de cálculo científico o técnico de propósito general. El modelo empleado para esta tecnología se basa en el uso combinado de una CPU y una GPU en un sistema de coprocesamiento heterogéneo. La parte secuencial de la aplicación se ejecuta en la CPU y las partes de mayor carga computacional se aceleran en la GPU. Para el usuario, la aplicación simplemente se ejecuta más rápido porque utiliza la gran capacidad de la GPU para multiplicar el rendimiento. Así en la figura 18 podemos apreciar la relación entre la CP y la GPU.. 28.
(43) 2.4 Graphics Processing Unit - GPU. Figura 18: Interacción CPU GPU. Fuente: Nvidia. A lo largo de los años, la GPU ha evolucionado hasta alcanzar teraflops de rendimiento en las operaciones de cálculo en coma flotante. NVIDIA revolucionó la GPGPU y aceleró el mundo de la informática durante los años 2006-2007 con la introducción de su arquitectura de cálculo paralelo masivo “CUDA”. Esta arquitectura consta de cientos de núcleos de procesamiento que operan de forma conjunta para manejar los datos de la aplicación a mayor velocidad. El éxito de las GPUs en los últimos años reside en la facilidad del modelo de programación paralela CUDA asociado. En este modelo, el desarrollador de la aplicación modifica ésta para asignar a la GPU los kernels más complejos desde el punto de vista computacional. El resto de la aplicación permanece en la CPU. Asignar una función a la GPU implica reescribir ésta para aprovechar el paralelismo del procesador gráfico y agregar palabras clave de “C” para transferir los datos hacia y desde la GPU. El programador se encarga de lanzar decenas de miles de procesos (threads) de forma simultánea. El hardware de la GPU maneja estos procesos y programa su ejecución. La GPU Tesla Serie 20 se basa en la nueva arquitectura “Fermi”, que es la tercera generación de la arquitectura CUDA. Fermi está optimizada para acelerar las aplicaciones científicas en la GPU, con aspectos clave tales como un rendimiento de más de 500 gigaflops en operaciones de coma flotante de precisión doble según la norma IEEE, memoria caché L1 y L2, memoria con protección de errores ECC, cachés locales administradas por el usuario y formadas por memoria compartida distribuida por toda la GPU, acceso coalescente a la memoria, etc.. 2.4.2.. Arquitectura paralela y modelo de programación de CUDA. La arquitectura paralela del hardware de CUDA va acompañada de un modelo de programación compuesto por un conjunto de abstracciones que permiten implementar el paralelismo. 29.
(44) 2. COMPUTACIÓN EN PARALELO en el procesamiento de tareas y procesos con diferentes niveles de granularidad. El programador puede expresar ese paralelismo mediante diferentes lenguajes de alto nivel como C, C++ y Fortran, o mediante APIs como OpenCL™ y DirectX™-11 Compute. En la actualidad, NVIDIA proporciona soporte para programar la GPU con C, C++, Fortran, OpenCL y DirectCompute. Los desarrolladores disponen de una serie de herramientas de desarrollo de software , junto con diferentes librerías y componentes de middleware que se muestran en la figura anterior y a los que se puede acceder a través de este enlace . Estos recursos permiten programar la GPU utilizando C con una cantidad mínima de palabras clave o extensiones. El soporte para Fortran, OpenCL y otros lenguajes se introducirá en breve. El modelo de programación paralela de CUDA ayuda a los programadores a dividir el problema en múltiples subproblemas que pueden resolverse de forma independiente y concurrente. A estos subproblemas se les aplica un ulterior nivel de granularidad, de forma que cada uno de ellos puede resolverse de forma cooperativa mediante múltiples instrucciones ejecutadas también en paralelo. En estos momentos, la arquitectura CUDA de la GPU y su correspondiente modelo de cálculo paralelo se utilizan en más de 1000 aplicaciones y en cerca de 1000 artículos de investigación publicados. En la zona CUDA pueden verse muchos de estos documentos y aplicaciones. En la Figura 19 mostramos la arquitectura GPU vista desde la empresa Nvidia para su plataforma CUDA. Figura 19: Arquitectura Paralela GPU. Fuente: Nvidia. 30.
(45) 31.
(46) 3. CÁLCULO DE PRECIO DE OPCIÓN EN COMMODITIES. Capítulo 3 Cálculo de precio de opción en commodities Resumen En este capitulo realizamos un descripción de los principales avances sobre el calculo de precios de opción para los commodities en especial sobre los commodities como la energía hidroeléctrica que últimamente tiene mucha atención en el mundo dado su importancia y relevancia. Se hace una descripción sobre los conceptos básicos de opciones de precio así como de los “derivados” en general y sobre todo de los derivados de energía. Se hace referencia a conceptos de riesgo y como este impacta en el calculo de opciones de precio, utilizando para su minimización conceptos como la simulación y la probabilidad, también se compara la efectividad del VAR frente al análisis de opciones en especial a la opciones reales. También vemos la importancia de los procesos estocásticos para el modelamiento de los precios como parte de un método de solución del calculo de opciones de precios 32 por métodos finitos..
(47) 3.1 Antecedentes. 3.1.. Antecedentes. Guillermo P. Podestá (G. et al., 2005) realizó un generador estocástico que puede producir secuencias sintéticas de variables climáticas (temperaturas máxima y mínima, precipitación, radiación solar) a escala diaria. El esquema híbrido propuesto incluye una modelación paramétrica de la ocurrencia de precipitación, y un enfoque no paramétrico para la generación de las variables climáticas de interés. Deng, Johnson realizaron los primeros trabajos en modelar precios de la electricidad con saltos, el autor propone 3 modelos de salto-difusión con reversión a la media, con casos de volatilidad determinística y estocástica. Los saltos en el precio se modelan introduciendo largos saltos positivos a través de un proceso de Poisson junto con una reversión a la media muy fuerte o de gran velocidad, es decir, el precio retorna rápidamente a su estado normal. Sin embargo, el modelo falla en estimar las trayectorias de precio producidas, ya que son muy diferentes a las vistas en mercados eléctricos. Julio J. Lucia, and Eduardo S. Schwartz (Lucia and Schwartz, 2000)proponen dos modelos de precios eléctricos, cada uno con el análogo para el logaritmo del precio. El primer modelo caracteriza el precio spot a través de dos componentes, el primero se considera totalmente predecible y se representa como una función determinística conocida dependiente del tiempo f(t), dicho componente caracteriza la regularidad en la evolución de los precios como alguna tendencia determinística o comportamiento periódico. El segundo término es un proceso estocástico estacionario con reversión a la media del tipo Ornstein-Uhlenbeck Xt. Escribano, Álvaro, Pena (Escribano et al., 2002)proponen un modelo general que permite comparar los distintos comportamientos observados en mercados desregulados y cuantificar el impacto de las diferentes características de los precios eléctricos (estacionalidad, reversión a la media, volatilidad y saltos) en cada mercado de forma individual. Los autores cuantifican la interacción entre saltos, comportamiento GARCH (Generalized Autoregressive Conditional Heteroscedasticity, GARCH), de la volatilidad y reversión a la media a través de un modelo general con base en tiempo continuo, pero cuya aplicación es en tiempo discreto. Geman, H., Roncoroni (Geman and Roncoroni, 2006)en su artículo profundiza los trabajos anteriores desarrollando un sofisticado proceso que incluye una elaborada representación de los saltos en la estructura dinámica del modelo de precios spot de la electricidad. Los autores basan su análisis en la característica física de la electricidad, la cual produce saltos en los precios debido a la ineslaticidad de la demanda ante contingencias en el sistema eléctrico por fallas en el sistema de transmisión o salidas intempestivas de generadores. En este sentido, definen un salto en el precio spot como un cluster de shoks hacia arriba de relativo gran tamaño con respecto a las fluctuaciones normales del precio producido en un periodo de tiempo, seguido por un retorno agudo a un nivel normal del precio. Así, representan los saltos en términos del tiempo de ocurrencia, el tamaño y su dirección.. 33.
(48) 3. CÁLCULO DE PRECIO DE OPCIÓN EN COMMODITIES Carlos Eduardo Barría Quezada (Quezada and de Chile. Escuela de Ingeniería, 2008) Aplica la metodología en el mercado energético chileno, evaluándose diferentes tecnologías de generación eléctrica y realizando estáticas comparativas sobre los principales parámetros de precios. El análisis de los resultados permite demostrar que la flexibilidad en las decisiones agrega valor a las oportunidades de inversión bajo condiciones de incertidumbre. Finalmente, se demuestra que el análisis de opciones reales logra entregar una visión diferente que permite ser un apoyo en la toma de decisiones de inversión en generación eléctrica. Juan M. Díez-Hernández (Diez Hernández, 2006) determinaron que la demanda de agua superficial para fines productivos está aumentando progresivamente como respuesta a un crecimiento económico deseado, a la vez que la sociedad está reclamando una gestión de los ríos verdaderamente ambiental. Los Regímenes de Caudales Ecológicos constituyen una herramienta fundamental en los Planes de Ordenamiento de Cuencas, al posibilitar un manejo del agua racional que compagine sus distintos usos y preserve la funcionalidad del ecosistema fluvial. Este trabajo presenta los efectos ecológicos de la modificación de los caudales y los enfoques principales empleados para determinar caudales ecológicos. Se profundiza en la metodología IFIM (“Instream Flow Incremental Methodology”), cuyo empleo es preferencial en el ámbito mundial y está ampliamente aceptada científicamente. Esta revisión analiza el contexto legal de Colombia relativo a la regulación de caudales y plantea unas pautas básicas para la determinación de caudales ecológicos, coherentes con las características de los sistemas fluviales locales. Francisco J. López Lubián Director del Área de Finanzas en el Instituto de Empresa Sarrió Tisú, S.A. mostró Uno de los avances recientes más importantes en la teoría del análisis de inversiones, muy probablemente, la adaptación de la teoría de valoración de opciones financieras a la valoración de oportunidades de inversión con alta incertidumbre y flexibilidad. El tratamiento de oportunidades de inversión como «opciones reales» (opciones sobre activos reales) ha tenido un gran desarrollo en sectores como los recursos naturales, patentes y licencias farmacéuticas e incluso en la valoración de los pasivos de empresas. Esta adaptación no está exenta de problemas conceptuales y de aplicación. En este artículo se analiza cómo estimar el valor económico generado por decisiones empresariales sobre oportunidades futuras en contextos con elevada incertidumbre y flexibilidad operativa, señalando las limitaciones del modelo de valoración y proporcionando directrices prácticas para su empleo. Joaquín Andreu1, José Capilla2, Francisco Cabezas Departamento de Ingeniería Hidráulica y M.A., Universidad Politécnica de Valencia estudiaron la utilización racional del agua que implica una gestión eficiente, integral y sostenible del recurso. Los sistemas de recursos hídricos y las soluciones para aliviar sus problemas son cada vez más complejos. Por consiguiente, a efectos de analizar los sistemas de forma integrada y de abordar incertidumbres clásicas. 34.
Figure
Documento similar
Para recibir todos los números de referencia en un solo correo electrónico, es necesario que las solicitudes estén cumplimentadas y sean todos los datos válidos, incluido el
La determinación molecular es esencial para continuar optimizando el abordaje del cáncer de pulmón, por lo que es necesaria su inclusión en la cartera de servicios del Sistema
que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el
Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun
Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas
d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que
Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de
Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y