




























































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
consiste en esquemas realizados en clases
Tipo: Esquemas y mapas conceptuales
1 / 111
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
Este documento est´a publicado seg´un la siguiente licencia:
Copyright ©c 2015 Adri´an Lozano Dur´an. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Inva- riant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.
La ´ultima revisi´on de este documento y sus fuentes se pueden descargar aqu´ı
ni redondeo) y utilizando s´ımbolos o variables. En muchos campos de investigaci´on es necesario procesar largas expresiones algebraicas lo que resulta un trabajo largo y tedioso. Por ello, siempre que sean perfecta- mente conocidos los pasos que hay que seguir para obtener el resultado, se puede aplicar la resoluci´on simb´olica por ordenador. A´un as´ı, no est´a exento de problemas por la inevitable existencia de bugs (errores) en los c´odigos y la dificultad de obtener resultados lo suficientemente simpli- ficados. Los inicios del software del ´algebra computacional comienza en 1964 con ALPAK, desarrollado por Bell Labs y seguido de FORMAC de IBM. Actualmente algunos de los software m´as comunes son Maple y Mathematica entre otros.
La siglas CFD son el acr´onimo de Din´amica de Fluidos Computacional (Computational Fluid Mechanics). La f´ısica de los fluidos puede ser expresa- da en t´erminos de ecuaciones diferenciales ordinarias o integro-diferenciales dif´ıciles de resolver anal´ıticamente excepto en casos muy concretos de poco inter´es pr´actico. Para obtener la soluci´on aproximada num´ericamente es ne- cesario discretizar las ecuaciones diferenciales en ecuaciones algebraicas que ser´an resueltas mediante los algoritmos apropiados ejecutados por lo general en ordenadores. Entre las grandes ventajas que ofrece el CFD se encuentra el bajo coste que presentan la simulaci´on de prototipos en comparaci´on con ensayos de modelos a escala real o reducida. Adem´as existe la libertad para imponer condiciones de contorno y obtenemos la informaci´on de todas las variables en gran cantidad de puntos del espacio, algo imposible en experi- mentos. Hay que tener en cuenta que muchas veces es complicado fijar los
Figura 1.1: Tabla con ejemplos de c´alculos realizados mediante c´alculo num´erico (columna de la izquierda) o simb´olico (columna de la derecha).
par´ametros adimensionales en los experimentos para que coincida con los del caso que se quiere analizar, especialmente cuando hay que imponer varios de ellos como por ejemplo el n´umero de Reynolds y n´umero de Froude. Por otro lado, el CFD tambi´en presenta limitaciones. Uno de los inconvenientes m´as importantes es lo costoso que resulta resolver todas las escalas de las ecuaciones de Navier-Stokes cuando el fluido se encuentra en r´egimen turbu- lento, lo que obligar a reducir el tama˜no de la simulaci´on usando modelos en las ecuaciones que pueden dar lugar a soluciones no solo cuantitativamente incorrectas sino tambi´en cualitativamente.
1.2 Representaci´on de n´umeros
Los computadores manejan datos representados como una secuencia discreta de bits. Cada bit puede estar en dos valores diferentes a los que simb´olicamen- te se asocian los estados 0 y 1, por ello, utilizan de forma natural el sistema en base 2. Los datos almacenados pueden ser num´ericos y no num´ericos. Los n´umeros se pueden representar en el sistema de numeraci´on binario y ´esta es la base para la representaci´on de n´umeros en los ordenadores. Puesto que cualquier entero dado s´olo tiene un n´umero finito de d´ıgitos, se pueden repre- sentar exactamente todos los n´umeros enteros por debajo de un cierto l´ımite. Los n´umeros reales no son numerables y son m´as complicados dado que se necesita una cantidad infinita de d´ıgitos para representar la mayor´ıa de ellos, sin importar qu´e sistema de numeraci´on utilicemos. En general, con n bits podemos representar 2n^ n´umeros. Lo n´umeros enteros se suelen almacenar como punto/coma fijo mientras que los reales se guardan con punto/coma flotante.
Figura 1.3: Representaci´on de n´umeros en punto flotante para simple preci- si´on en el est´andar IEEE 754.
ǫ + 1 6 = 1. (1.2)
Representa la exactitud relativa de la aritm´etica en punto flotante y es conse- cuencia del redondeo. Decimos que ocurre underflow cuando el resultado de una operaci´on es menor en magnitud que el n´umero m´as peque˜no que puede ser almacenado por el ordenador. Normalmente el resultado se redondea a ce- ro. Por el contrario, decimos que ocurre overflow cuando el resultado de una operaci´on es mayor en magnitud al mayor n´umero que puede representar el ordenador. Normalmente se redondea el resultado a ±Inf. N´otese que en la representaci´on de punto flotante el espaciado entre n´umeros es mayor cuanto mayor es la magnitud del n´umero. El ǫ de la m´aquina de la m´aquina puede ser entendido como un underflow en la mantisa, mientras que el underflow y overflow est´an relacionados con el exponente.
La representaci´on en el ordenador de n´umeros no enteros en punto flotante se hace con un n´umero fijo de bits. Esto significa que la mayor´´ ıa de los n´umeros no enteros no se pueden representar sin cometer un error que normalmente se conoce como roundoff error o error de redondeo. Existe, por lo tanto, un error simplemente por el hecho de almacenar un n´umero. Adem´as, la mayor´ıa de los c´alculos (sumas, restas, multiplicaciones, divisiones...) con n´umeros en punto flotante producir´an m´as errores de redondeo. En la mayor´ıa de las situaciones estos errores ser´an peque˜nos, pero en una larga cadena de c´alculos hay un alto riesgo de que los errores se acumulen y contaminen gravemente el resultado final. Es importante ser capaz de reconocer cu´ando un c´alculo dado va a ser propenso a este tipo de problemas y saber si el resultado es
fiable. Consideremos un n´umero a y una aproximaci´on ˜a. Vamos a definir dos formas de medir el error de dicha aproximaci´on.
r =
|a − ˜a| |a|
≈ 10 −m, (1.3)
con m un entero, entonces el n´umero de cifras que tienen en com´un a y ˜a es aproximadamente m y por lo tanto la precisi´on del sistema nos indica indirectamente el error relativo que se comete al almacenar un n´umero en punto flotante. Por otro lado, si intercambiamos los papeles y suponemos que a es una aproximaci´on de ˜a se cumple que
|a − ˜a| |˜a|
r 1 − r
Los errores en la aritm´etica de punto flotante son mucho m´as sutiles que los errores en aritm´etica de enteros. A diferencia de los n´umeros enteros, los n´umeros de punto flotante pueden estar ligeramente mal. Un resultado que parece ser razonable contiene errores y puede ser dif´ıcil juzgar cu´an grandes son. Tal y como se mencion´o en la secci´on anterior, en la mayor´ıa de los ordenadores los n´umeros se representan en punto flotante y la aritm´etica se realiza de acuerdo con la norma IEEE 754, cuidadosamente dise˜nada para proporcionar un buen control de errores de redondeo. Sin embargo, el uso de n´umeros en punto flotante conduce inevitablemente a errores en la mayor´ıa de los casos de inter´es pr´actico. En general, las operaciones de adici´on y sustracci´on producen mayores errores que el producto y la divisi´on. El esquema general del proceso de adici´on (o sustracci´on) es:
Figura 1.4: Arquitectura de von Neumann. Es el modelo que siguen a grandes rasgos casi todos los ordenadores actuales.
El desarrollo de los Lenguajes de programaci´on ha sido impresionante en los ´ultimos 60 a˜nos. Los primeros lenguajes de alto nivel aparecieron en la d´ecada de los 50 con FORTRAN (Formula Translating System, creado por John Backus), COBOL, LISP... Despu´es surgir´ıan otros como Algol, Basic, C, Pascal, C++... Para dar lugar a los m´as actuales y modernos como C#, Python, Java, PHP... Algunos de los lenguajes de programaci´on m´as usados actualmente en el c´alculo num´erico son: FORTRAN, C, (est´aticos), Octave, Matlab, Python (din´amicos). En otras ocasiones se utilizan programas ya compilados como OpenFoam. Muchas veces, en el dise˜no de un algoritmo se utilizan diagramas de flujo y pseudoc´odigos como lenguaje intermedio entre el lenguaje de programaci´on y el lenguaje natural.
1.4 Arquitectura del ordenador
La arquitectura del ordenador es un tema amplio y complicado en el que evidentemente no deseamos entrar en gran detalle. Sin embargo, los c´odigos CFD que usamos acaban ejecut´andose en un ordenador y es necesario tener un idea general de su funcionamiento. A continuaci´on resaltamos los aspectos m´as importantes relacionados con el uso de programas CFDs. Casi todos los ordenadores siguen a grandes rasgos el esquema propuesto en el modelo de von Neumann. Los ordenadores con esta arquitectura constan de cinco partes: La unidad aritm´etico-l´ogica (ALU) que junto con la unidad de control forman el procesador, la memoria, un dispositivo de entrada/salida y el bus de datos que proporciona un medio de transporte de los datos entre las distintas partes.
Intel I7 3930K 5Ghz 104 GFLOPS AMD Phenom II 1090t 4.2Ghz 80 GFLOPS Intel Core i5-2320 3.0Ghz 44 GFLOPS Intel Core 2 Duo E6550 2.3Ghz 6 GFLOPS Intel Atom N455 1.66 GHz 1 GFLOPS
Cuadro 1.1: FLOPS para diferentes procesadores.
El procesador o CPU es el encargado de ejecutar los programas. S´olo ejecuta instrucciones programadas en lenguaje de m´aquina, realizando operaciones aritm´eticas y l´ogicas simples, tales como sumas, restas, multiplicaciones, di- visiones, l´ogicas binarias y accesos a memoria. Un par´ametro importante del procesador son los FLOPS (FLoating-point Operations Per Second) que indica el n´umero de operaciones en punto flo- tante que el procesador es capaz de realizar por segundo. Los ordenadores de sobremesa actuales tienen del orden de Giga FLOPS. La tabla 1.1 recoge algunos procesadores y una estimaci´on sus respectivos FLOPS. En la pr´actica, se puede estimar cu´al ser´a la capacidad de c´alculo de los procesadores dentro de unos a˜nos usando la Ley de Moore: el n´umero de transistores en un procesador (´ıntimamente ligado a la capacidad de c´alculo) se duplica aproximadamente cada 18 meses. Se trata de una observaci´on, una ley emp´ırica formulada por Gordon E. Moore, en 1965, cuyo cumplimiento se ha mantenido hasta nuestros d´ıas. Un procesador con muchos FLOPS no es la soluci´on a todo problema y en general un buen algoritmo reduce en mayor medida el tiempo de c´alculo que disponer de procesadores muy r´apidos. Adem´as, en los ´ultimos a˜nos el sector inform´atico est´a dando mucha importancia a factores como el consumo de electricidad y el rendimiento por vatio. Los procesadores de ordenadores de sobremesa suelen consumir entre 60 y 100 Watios, mientras que los de los port´atiles consumen entre 20 y 40 Watios. Hay que tener en cuenta que en el c´alculo en paralelo (ver siguiente apartado) se pueden llegar a usar cientos de miles de procesadores a la vez y el consumo se convierte en un factor importante.
El correcto uso de la memoria es un tema fundamental para obtener bue- nos rendimientos de los c´odigos CFD. La figura 1.6 muestra las diferentes
Figura 1.6: Jerarqu´ıa de memorias en un ordenador. Los tama˜nos y veloci- dades dados son valores de referencia.
jerarqu´ıas de memorias en un ordenador: Disco duro, RAM y cach´e.
Es importante resaltar que cuanto m´as lejos nos movemos del procesador, el nivel de memoria se convierte en 10 veces m´as lento (de picosegundos a milisegundos) y 1000 veces m´as grande (de bytes a terabytes). Normalmente el programador puede controlar directamente el flujo entre la memoria RAM y el disco duro pero no entre la memoria RAM y la cach´e, aunque dicho control se puede hacer indirectamente siguiendo ciertas pautas de programaci´on.
Figura 1.7: Esquema de ejecuci´on de un programa en serie.
Existe una forma equivalente a la Ley de Moore para el almacenamiento en disco duro llamada Ley de Kryder: la cantidad de bits por unidad de volumen en un disco duro se duplica aproximadamente cada 13 meses. Se trata de una ley experimental enunciada por Mark Kryder (ingeniero de Seagate Technology). Una consecuencia de comparar la Ley de Moore con la Ley de Kryder es que la capacidad de almacenamiento crece m´as r´apidamente que la de procesamiento. Adem´as, los tiempos de acceso a memoria tambi´en se han reducido m´as lentamente lo que plantea problemas de cuello de botella en el flujo de datos entre el disco duro y el procesador.
En algunas ocasiones los c´odigos CFD no son ejecutados en un solo ordenador sino que es necesario el c´alculo en paralelo mediante el uso de un array de ordenadores conectados en red. En esos casos es, la red pasa a ser, junto con el procesador y la memoria, otro elemento fundamental a tener en cuenta.
1.5 Introducci´on al c´alculo en paralelo
Tradicionalmente, los programas se han desarrollado para el c´alculo en serie, es decir, est´an preparados para ejecutarse en un ordenador con un ´unico procesador. El problema es dividido en un conjunto de instrucciones que son ejecutadas secuencialmente. El c´alculo en paralelo consiste en usar m´ultiples recursos simult´aneamente para resolver un problema dado. El problema es dividido en partes inde- pendientes que son ejecutadas simult´aneamente en varios procesadores. Las figuras 1.7 y 1.8 muestran los esquemas de ejecuci´on en serie y paralelo. El c´alculo en paralelo se realiza en los llamados centros de supercomputaci´on. En ellos, arrays de nodos de c´alculo se conectan entre s´ı mediante una red r´apida. En la web http://www.top500.org se pueden encontrar estad´ısticas y datos interesantes sobre estos centros, como su uso por pa´ıses, las aplicacio- nes, sistemas operativos que usan... La figura 1.9 muestra la evoluci´on de los ordenadores m´as r´apidos del mundo.
Figura 1.9: Evoluci´on de los ordenadores m´as potentes del mundo. Fuente: http://www.top500.org.
Figura 1.10: Paradigmas de c´alculo en paralelo. Memoria compartida.
Figura 1.11: Paradigmas de c´alculo en paralelo. Memoria distribuida.