Source: http://docplayer.es/2359674-Hpc-en-simulacion-y-control-a-gran-escala.html
Timestamp: 2016-10-28 08:40:31+00:00

Document:
⭐HPC en simulación y control a gran escala
Download "HPC en simulación y control a gran escala"
Agustín Segura Mora
1 HPC en simulación y control a gran escala Peter Benner 1*, Pablo Ezzatti 2**, Hermann Mena 3***, Enrique S. Quintana-Ortí 4****, Alfredo Remón 4***** 1 Max Planck Institute for Dynamics of Complex Technical Systems, Alemania 2 Centro de Cálculo-Instituto de Computación, Universidad de la República, Uruguay 3 Departamento de Matemática, Escuela Politécnica Nacional, Ecuador 4 Departamento de Ingeniería y Ciencia de Computadores, Universidad Jaime I, España Resumen La simulación y control de fenómenos que aparecen en microelectrónica, micro-mecánica, electromagnetismo, dinámica de fluidos y en general en muchos procesos industriales, constituye un problema difícil de resolver, debido principalmente al elevado costo computacional de los algoritmos para este propósito. Gran parte de los modelos matemáticos que describen estos fenómenos poseen dimensión muy grande; por ejemplo, la modelización de microprocesadores desemboca en un sistema dinámico a gran escala que no puede ser resuelto con métodos numéricos tradicionales. En su defecto, son necesarias e incluso obligatorias técnicas computacionales de alto desempeño (high performance computing, HPC) para enfrentar este tipo de problemas. En el presente artículo revisamos herramientas de HPC que permiten simular y controlar problemas a gran escala. Concretamente, nos centramos en técnicas para la reducción de modelos vía truncamiento balanceado y la resolución de problemas de control lineal cuadrático, que pueden ser implementadas eficientemente en plataformas multi-núcleo con memoria compartida que, además, utilizan uno o más procesadores gráficos (GPUs). Abstract The simulation and control of phenomena arising in microelectronics, micromechanics, electromagnetism, fluid dynamics and in general in many industrial processes, is a very challenging task; mainly because they require a high computational cost. Most of the mathematical models describing these phenomena have a large dimension, e.g., * Director del Max Planck Institute for Dynamics of Complex Technical Systems, Sandtorstr. 1, Magdeburg, Alemania. ** Profesor del Centro de Cálculo-Instituto de Computación, Universidad de la República, Montevideo, Uruguay. *** Profesor del Departamento de Matemática, Escuela Politécnica Nacional, EC1701 Quito, Ecuador. **** Catedrático del Departamento de Ingeniería y Ciencia de Computadores, Universidad Jaime I, Castellón, España. ***** Investigador del Departamento de Ingeniería y Ciencia de Computadores, Universidad Jaime I, Castellón, España.2 the simulation of microprocessors, leads to a large scale dynamical system which can not be solved using conventional methods. Instead, high performance computing HPC techniques have to be applied to deal with these problems. In this paper we review modern tools from HPC which allow us to solve large scale problems. Specifically, we focus on model reduction techniques via balanced truncation and the solution of linear quadratic control problems that can be efficiently implemented on multicore platforms equipped with one or more graphics processors (GPUs). Keywords: Large-scale Simulation, Model Reduction, Balanced Truncation, Linear Quadratic Control Problem, Lyapunov Equations, Riccati Equations Palabras clave: Simulación a gran escala, Reducción de modelos, Truncamiento balanceado, Problema de control lineal cuadrático, Ecuaciones de Lyapunov, Ecuaciones de Riccati 1. Introducción Simular y particularmente controlar un fenómeno físico tiene un elevado costo computacional, especialmente cuando el proceso inmerso está modelado mediante ecuaciones en derivadas parciales (ED- Ps). Los requerimientos de memoria y tiempo de ejecución están ligados estríctamente a la discretización del dominio, esto es, a los puntos en los cuales se aproxima la EDP. Esta discretización se puede realizar por diferentes métodos como elementos finitos o diferencias finitas. Por esta razón el costo computacional puede crecer, incluso exponencialmente, si se requiere una alta precisión para resolver el problema numéricamente. Por otro lado, en el proceso de producción de circuitos integrados de las últimas décadas, el tamaño de los dispositivos se ha reducido y la velocidad de los mismos se ha incrementado en una relación inversamente proporcional; así lo afirmó Gordon E. Moore, co-fundador de Intel, el 19 de abril de 1965 en su conocida Ley de Moore (esta ley empírica expresa que, aproximadamente, cada 18 meses se duplica el número de transistores en un circuito integrado). Es importante señalar que la simulación numérica ha cumplido, y lo sigue haciendo, un rol fundamental en3 el diseño de estos dispositivos, ya que permite determinar con alta precisión el comportamiento y desempeño del dispositivo. El sistema dinámico que describe el circuito presenta una gran escala y su resolución numérica es un reto para la comunidad científica, y constituye incluso un problema abierto si la dimensión es muy grande y/o si el problema es denso no estructurado. Por la amplia gama de aplicaciones, sistemas con características similares aparecen en general en problemas gobernados por ecuaciones diferenciales parciales, y las numerosas técnicas que han sido propuestas para tratar estos problemas persiguen reducir su elevado costo computacional [4,5,15,75]. Si el costo computacional está altamente relacionado a la dimensión del sistema, parece razonable y necesario reducir la dimensión del mismo para resolverlo en tiempo real. Los métodos que explotan esta idea son conocidos como reducción de modelos o reducción de orden. Estas técnicas han probado ser particularmente eficientes en la simulación de circuitos eléctricos [24,39,56,67,74]. En general estos métodos se clasifican en: Métodos de proyección, Métodos Moment Matching, Métodos de truncamiento balanceado. En el presente trabajo nos centraremos en métodos de truncamiento balanceado, particularmente en la resolución numérica de ecuaciones de Lyapunov que caracterizan esta técnica. También revisaremos brevemente las ecuaciones matriciales cuadráticas que aparecen en control óptimo y cuya resolución numérica requiere el tratamiento numérico de ecuaciones de Lyapunov y la aplicación de técnicas de computación de alto desempeño. Es importante señalar que existen muchas variantes del método de truncamiento balanceado que emplean ecuaciones algebraicas de Riccati [16]; estas últimas no se revisarán en este trabajo. El artículo está organizado de la siguiente manera: en la Sección 2 describimos el sistema dinámico relacionado con el modelo matemático; en la Sección 2.1, se introduce la reducción de modelos y la estructura de cierto tipo de ecuaciones matriciales asociadas a esta técnica. En la Sección 2.2 se describen las ecuaciones matriciales4 que aparecen en control lineal cuadrático. Los métodos de resolución para estas ecuaciones matriciales así como sus algoritmos se ilustran en la Sección 3, mientras que en la Sección 4 se describen técnicas de HPC para implementar eficientemente los algoritmos descritos en la sección anterior. Finalmente, en la Sección 5 se presentan algunos ejemplos numéricos, con el propósito de comprobar la precisión y factibilidad de las técnicas propuestas en el presente trabajo. Algunas conclusiones se aportan en la Sección Modelo matemático Tras linealizar un sistema no lineal o un sistema de mayor orden, se obtiene un sistema lineal no dependiente del tiempo de la forma: ẋ(t) = Ax(t) + Bu(t), t > 0, x(0) = x 0, y(t) = Cx(t) + Du(t), t > 0, (1) donde A R n n, B R n m, C R p n, y D R p n son matrices constantes. En el tipo de problemas que nos interesa la dimensión del sistema n, en general, varía entre , dependiendo de la aplicación específica que se considere. En cambio, el número de entradas o controles, representado por u(t), y el número de salidas del sistema, representado por y(t), a menudo es mucho menor que el orden del sistema, esto es, m, p n. Por ejemplo, si se aplica análisis nodal modificado para generar un sistema de ecuaciones para una red RLC multi-puerto, el sistema tiene la forma: Lẋ(t) = Gx(t) + Bu(t) (2) y(t) = Cx(t) donde L = [ ] [ ] E 0 G M, G = 0 L M T, x = 0 [ ] v. i Los vectores y y u representan las corrientes de los puertos y sus voltajes, respectivamente. Las matrices E, L, G son simétricas y denotan la capacitancia nodal, inductancia y conductividad, respectivamente. M representa la matriz de incidencia asociada con el inductor de corriente. N indica donde se encuentran las fuentes de5 voltaje, y la matriz C especifica en que punto se miden los puertos de corriente. La matriz L es no singular, esto es, existe su inversa, por lo cual podemos escribir el sistema (2) en la forma (1). Existen muchos métodos para resolver numéricamente sistemas a gran escala de la forma (1) [15,28]. En la siguiente sección se introducen los métodos de reducción de modelos basados en truncamiento balanceado, así como su relación con el problema de control lineal cuadrático Reducción de modelos El objetivo de la reducción de modelos (RM) es encontrar un sistema cuyo orden sea mucho menor que el sistema original, y al mismo tiempo este nuevo sistema sea una buena aproximación del sistema original. Concretamente, lo que se busca es que para la misma secuencia de entradas, u(t), la salida del sistema, y(t), represente de buena manera lo que ocurre en el sistema original; en otras palabras, se busca un sistema de la forma: x(t) = Ã x(t) + Bu(t), t > 0, x(0) = x 0, ỹ(t) = C x(t) + Du(t), t > 0, (3) cuyo orden, r, sea mucho menor que el orden del sistema original, r n, y adicionalmente ỹ sea una buena aproximación, de acuerdo a cierto criterio, de la salida del sistema original y. Entre los métodos de RM se destacan los de reducción/substracción- Guyan, Truncamiento modal, Aproximaciones de Padé, métodos de subespacio de Krylov, Truncamiento balanceado, etc. Una característica de muchos de estos métodos es que realizan proyecciones de tipo Galerkin o Petrov-Galerkin del espacio de estado en un subespacio de dimensión menor; para una introducción a reducción de modelos ver [4,5]. En este trabajo abordaremos los métodos de truncamiento balanceado. En ingeniería uno de los criterios más utilizados para medir la aproximación de ỹ a y es la denominada función de transferencia. Esto se debe a que, bajo ciertas suposiciones, se puede probar que: y ỹ L2 [0, ) G G u H2, (4)6 donde G := C(sI A) 1 B + D, G := C(sI Ã) 1 B + D, son las funciones de transferencia de los sistemas (1) y (3), respectivamente, y. H denota la norma en el espacio H. Debido a la relación (4) muchas técnicas de RM tratan de minimizar G G, pues con ello implícitamente están minimizando y ỹ L2 [0, ); este es precisamente el caso del truncamiento balanceado. Otros criterios de minimización consideran modelos de frecuencia pesados y reducción de controles [84]. El truncamiento balanceado se basa en separar el espacio de transformaciones de estado mediante una aplicación no singular de la forma: T : (A, B, C, D) (T AT 1, T B, T 1 C, D) ([ ] [ ] A11 A = 12 B1,, [ ) ] C A 21 A 1 C 2, D 22 donde las matrices del modelo reducido se definen como B 2 (Ã, B, C, D) = (A 11, B 1, C 1, D), la aplicación T balancea el Gramian de controlabilidad, W c, y el Gramian de observabilidad, W o, que corresponden a soluciones de ecuaciones matriciales de Lyapunov de la forma: AW c + W ca T + BB T = 0, AW o + W oa T + CC T = 0. (5) Antes de introducir algunos métodos para resolver (5), en lo cual se profundiza en las Secciones 3 y 4, es importante señalar que, como W c y W o son matrices semidefinidas positivas, se pueden factorizar de la forma W c = S T S, W o = R T R. Además, si se escogen los factores S, R R n n triangulares, estos corresponden a los factores de Cholesky de W c y W o, respectivamente. Esta propiedad permite definir el truncamiento balanceado usando el producto SR T en lugar del producto de los Gramians. Algunas implementaciones de algoritmos de reducción de modelos y truncamiento balanceado se describen en [15,84]. El costo computacional de la RM vía truncamiento balanceado depende principalmente de la resolución de las ecuaciones de Lyapunov7 asociadas a los Gramians de observabilidad y controlabilidad. En sistemas no estables, la aplicación del truncamiento balanceado conlleva la necesidad de resolver ecuaciones algebraicas de Riccati en lugar de ecuaciones de Lyapunov. Las ecuaciones de Riccati aparecen en muchas aplicaciones de ciencia e ingeniería, en especial en la teoría de control. En la siguiente sección se describe brevemente el problema de control lineal cuadrático linear-quadratic regulator (LQR) y su relación con las ecuaciones de Riccati Ecuaciones matriciales en control Los problemas de optimización gobernados por EDPs de tipo parabólico pueden formularse como problemas de Cauchy abstractos. Imponiendo un funcional de costo cuadrático, se obtiene un problema LQR para un sistema de dimensión infinita. El control óptimo para este problema está definido vía feedback en términos de la solución de la ecuación de Riccati para operadores, ya sea esta de tipo algebraico o diferencial, dependiendo de si el horizonte de integración que se considera es infinito o finito, respectivamente. Existen varios resultados de convergencia respecto al problema infinito-dimensional y las ecuaciones de Riccati asociadas, ver por ejemplo [65]. Estos resultados nos brindan el marco teórico necesario para resolver el problema numéricamente. Consideremos entonces el problema LQR semidiscretizado: 1 mín u L 2 (0,T f ;U) 2 T f 0 [x(t) T Qx(t) + u(t) T Ru(t)]dt + x(t f ) T Gx(T f ), (6) con respecto a (1). Por simplicidad tomemos D = 0, Q = I, y R = I. Luego el control óptimo está dado por u(t) = B T X x(t), donde X es la solución de la ecuación algebraica de Riccati 0 = R h (X) = C T C + A T X + XA XBB T X, (7) o la solución de la ecuación diferencial de Riccati Ẋ = R h (X) = C T C A T X XA + XBB T X, (8)8 si T f = y G = 0 o T f <, respectivamente. El orden de las ecuaciones matriciales (7) y (8) es cuadrático respecto al orden del sistema, esto es, su solución implica resolver un sistema de EDOs de orden n 2. Por esta razón, en problemas a gran escala, la aplicación de técnicas tradicionales no es factible. Si se tiene en cuenta que típicamente, los coeficientes de (7) y (8) tienen una estructura definida (p.e., dispersión, simetría o rango bajo) es posible definir métodos numéricos capaces de explotar eficientemente esta estructura. La relación entre estas ecuaciones y la ecuación de Lyapunov, así como los métodos numéricos utilizados se describen en la siguiente sección. Observación 1 En sistemas no estables, la aplicación de truncamiento balanceado de tipo linear-quadratic gaussian LQG conlleva la necesidad de resolver ecuaciones algebraicas de Riccati en lugar de ecuaciones de Lyapunov, puesto que en este caso particular se deben considerar Gramians de lazo cerrado en el compensador LQG. 3. Algoritmos Como se ha discutido en la Sección 2.1, la aplicación de RM vía truncamiento balanceado a sistemas lineales de gran escala implica resolver ecuaciones de Lyapunov o ecuaciones de Riccati, dependiendo de si el sistema es estable o no. Estas últimas ecuaciones aparecen también en control óptimo, y están estrictamente ligadas unas a otras, como veremos más adelante. La estructura de la ecuación (7) es compartida por la ecuación (5) excepto por el término no lineal XBB T X. Lo mismo ocurre con el lado derecho de la ecuación (8). Observemos que la derivada de Frechét (es una generalización de la derivada usual a espacios de Banach [61]) del operador R h en P viene dada por el operador de Lyapunov: R h P : Q (A BR 1 B T P ) T Q +Q(A BB T P ); aplicando el método de Newton se tiene que ( ) 1 N l := R h Pl Rh (P l ), X l+1 := X l + N l.9 y, por tanto, para una matriz inicial dada, este método puede implementarse como se recoge en el Algoritmo 3.1 Algorithm 3.1 Método de Newton para EAR Require: P 0, tal que A 0 es estable 1: A l A h B h B T h P l 2: Resolver la ecuación de Lyapunov A T l N l + N l A l = R h (P l ) 3: P l+1 P l + N l En las aplicaciones que consideramos, es posible usar el hecho que, para intervalos pequeños, la solución aproximada de X k X(t k ) en general es un valor estabilizado muy bueno para empezar la iteración; ver [29]. Por lo tanto, toda A l es estable y la iteración P l converge a la solución, P, en orden cuadrático. El método de Newton para ecuaciones algebraicas de Riccati (EAR) puede ser reformulado como una iteración de un solo paso si se reescribe de tal manera que la siguiente iteración es calculada directamente de la ecuación de Lyapunov que se resuelve en el paso 2 del Algoritmo 3.1, esto es, (A BR 1 B T P l ) T P l+1 + P l+1 (A BB T P l ) = C T QC Pl BR 1 B T P l =: W l W T l. De esta manera para resolver la EAR es necesario resolver una ecuación de Lyapunov en cada iteración, de la forma F T X + XF = W W T, (9) siendo F una matriz estable en cada iteración. Usualmente, el método de Newton converge muy rápido; por ejemplo, en el problema de transferencia de calor en dos dimensiones descrito en la Sección 5, la convergencia se alcanza de 3 a 5 iteraciones. Para resolver ecuaciones de Lyapunov dispersas a gran escala usaremos el método ADI (alternating direction implicit) que se puede formular como [86] (F T + p j I)Q (j 1)/2 = W W T Q j 1 (F p j I), (F T + p j I)Q T j = W W T Q (j 1)/2 (F p j I),10 donde p denota el conjugado de p C. Si los parámetros p j se escogen apropiadamente, entonces lím j Q j = Q converge en orden super-lineal. Sin embargo, en problemas a gran escala, no es posible aplicar directamente el método ADI; incluso no es posible almacenar en memoria las matrices que aparecen en cada paso, pues lo anterior excede fácilmente la capacidad de memoria de un computador. Por esta razón, es necesario utilizar técnicas de rango bajo para su resolución. Concretamente utilizaremos el método de rango bajo Newton-ADI presentado en [25,74]. Algorithm 3.2 Método de rango bajo ADI Require: F, W y el conjunto de par metros ADI {p 1,..., p k } Ensure: Z = Z imax C n,imaxnω tal que ZZ T X. 1: V 1 = p 2Re (p 1)(F T + p 1I) 1 W 2: Z 1 = V 1 3: for j = 2, p3,... do Re(pj ) p Re(pj 1 ) 4: V j = 5: Z j = [ Z j 1 V j ] 6: end for I (p j + p j 1 )(F T + p j I) 1 V j 1 En el Algoritmo 3.2, Z es una matriz de rango bajo que aproxima X, es decir, Z R n q con q n. La aproximación de la matriz Z es muy precisa, de hecho no se requiere un costo computacional adicional para conseguir resultados similares a los que se obtienen con métodos convencionales. Por otro lado, cabe señalar que todas las matrices V j tienen igual número de columnas que W R n nw, es decir, en cada iteración j, es necesario resolver w sistemas de ecuaciones lineales con los mismos coeficientes matriciales F T + p j I. En la implementación del algoritmo se explota esta propiedad. Si la convergencia del método de rango bajo ADI se alcanza con respecto a cierto criterio de parada después i máx pasos, entonces Z imáx = [ V 1,..., V imáx ] R n i máxn w, con V j R n nw. Cuando n es grande y n w pequeño se espera que r i := i máx n w n. En este caso se ha calculado una aproximación de rango bajo Z imáx del factor Z de la solución X, esto es Y = ZZ T Z imáx Zi T máx. Sin embargo, si n w i máx crece demasiado el11 método pierde eficiencia. Para controlar el crecimiento de n w i máx, pueden aplicarse técnicas de compresión de columnas que reducen el número de columnas en Z imáx, sin introducir un aumento del error significativo; ver [31,51]. Si combinamos el Algoritmo 3.2 con el método de Newton (Algoritmo 3.1), se puede definir un método de rango bajo para resolver ecuaciones algebraicas de Riccati denominado Newton-ADI. Por otro lado las ecuaciones diferenciales de Riccati aparecen en reducción de modelos cuando se consideran sistemas no estables dependientes del tiempo. La resolución numérica de estas ecuaciones constituye un reto mayor al de resolver ecuaciones de Lyapunov o ecuaciones algebraicas de Riccati. Más aún, se espera que las EDRs sean rígidas (stiff ), por lo que se deben utilizar métodos que puedan tratar este fenómeno eficientemente. También es necesario explotar la estructura de las matrices de coeficientes, y la estructura de la ecuación en sí, lo que implica aplicar métodos numéricos que preserven la estructura de la EDR. Entre las técnicas de un paso y paso múltiple para resolver sistemas de ecuaciones diferenciales ordinarias rígidos, los métodos BDF (backward differentiation formulae) y los métodos de tipo Rosenbrock son usados comúnmente. Versiones matriciales de estos algoritmos aplicables a EDRs a gran escala se han propuesto en [29,71]. La idea fundamental en estas técnicas es realizar una aproximación de rango bajo a la solución de la EDR y resolver la ecuación para los factores de la solución. Cabe señalar, que el control de paso y orden se realizan también directamente sobre los factores Caso no disperso Cuando las matrices son densas, utilizamos el método de la función de signo de la matriz (matrix sign function) para resolver las ecuaciones de Lyapunov que aparecen en los problemas de reducción de modelos y de control. En la literatura existen varios métodos iterativos para calcular la función de signo de una matriz. Entre ellos la iteración de Newton es una opción competitiva por su simplicidad, eficiencia, inherente paralelismo y convergencia asintóticamente cuadrática [53]. El Algoritmo 3.3 describe este método. El costo computacional es12 aproximadamente de 2n 3 operaciones aritméticas de punto flotante por iteración. Algorithm 3.3 Función de matriz signo para ecuaciones de Lyapunov Require: F R n n, W R j n Ensure: S such that ST S X and F T X + XF = W W T. T 1: F 0 := F, Ŝ0 := W 2: k := 0 3: repeat 4: F k+1 := 1 `Fk 2 /c k + c k F k 1. Compute the rank-revealing QR (RRQR) decomposition 5: h i 1 Sk 2ck, c k Sk (F 1 k )T 6: Sk+1 := U sπ s 7: k := qk + 1 8: until F k+1 +I n < τ F k = Q s» Us 0 Π s En el Algoritmo 3.3, S representa el factor de la solución aproximada, es decir, X S T S. Es importante tener en cuenta que la convergencia del método puede acelerarse mediante algunas técnicas [53]. En nuestra aproximación empleamos un escalado definido por el parámetro c k = F 1 k / F k. En la prueba de convergencia, τ es la tolerancia para la iteración, y se determina usualmente como función de la dimensión del problema y de la precisión de la computadora ɛ. En la siguiente sección, se describirá una implementación eficiente de este algoritmo sobre plataformas multinúcleo equipadas con varias GPUs. Esta implementación incorpora numerosas técnicas de HPC y alcanza un desempeño notable. 4. Computación de alto desempeño La alta exigencia computacional de los algoritmos mostrados en la sección anterior, precisan del uso de técnicas computación y hardware de alto desempeño (HPC).13 La utilización de este tipo de técnicas y hardware presenta como principal inconveniente los altos costos económicos asociados tanto por la adquisición de hardware y software, como por otros costos derivados, por ejemplo la administración y mantenimiento del equipamiento o la energía consumida. Sin embargo, en los últimos años, han irrumpido nuevas tecnologías de HPC de bajo costo, entre las que destacan los procesadores gráficos, o GPUs. La exigencia ejercida por la industria de los videojuegos sobre esta tecnología, provoca una constante evolución de la capacidad de cómputo de las GPUs a la vez que mantiene su costo en unos niveles moderados. Por todo ello, las GPUs se han posicionado como dispositivos de referencia en computación de alto desempeño Software de alto desempeño en problemas de álgebra lineal Como quedó explícito en la sección anterior, la resolución de los problemas afrontados en este artículo se encuentra estrechamente ligada a la resolución de problemas de álgebra lineal numérica (ALN). Existen numerosas bibliotecas de alto desempeño que incluyen en su funcionalidad operaciones de ALN. Entre ellas destaca la especificación BLAS (Basic Linear Algebra Subprograms), que da soporte a las operaciones básicas de ALN sobre vectores y matrices. Existen numerosas implementaciones de BLAS, la mayor parte de ellas específicas para una plataforma hardware. Es habitual que los propios fabricantes de hardware desarrollen versiones de BLAS específicas para cada uno de sus productos. Buscando replicar este caso se han desarrollado diversos esfuerzos similares, como por ejemplo LAPA- CK [40] y ScaLAPACK [32], para operaciones más complejas de ALN. La utilización de estas bibliotecas es fuertemente recomendable por la alta eficiencia que proporcionan sus rutinas, así como por la simplicidad y legibilidad del código o la portabilidad sin pérdida de desempeño.14 La especificación LAPACK (Linear Algebra PACKage), incluye soporte para matrices densas, simétricas, banda y triangulares para diferentes operaciones, como la resolución de sistemas de ecuaciones lineales, la aproximación de mínimos cuadrados y la búsqueda de valores propios y de valores singulares. Habitualmente, las implementaciones de LAPACK están basadas en el uso de rutinas de BLAS, facilitando su portabilidad y adaptación a diferentes arquitecturas sin afectar negativamente su desempeño. El aumento en la utilización de computadoras paralelas de bajo costo, y en especial, de aquellas con memoria distribuida, motivó la evolución de LAPACK a una nueva versión basada en técnicas de programación paralela distribuida; esta nueva biblioteca se denominó ScaLAPACK y la primera versión fue publicada en el año Una de las principales características de la biblioteca es que su diseño especifica distintos niveles de abstracción, buscando encapsular diferentes tareas en distintas componentes. Al igual que LAPACK, ScaLAPACK posee funciones para las operaciones más comunes en el campo del ALN, tales como la factorización LU y la factorización QR. Sin embargo, ScaLAPACK está diseñada para su ejecución en plataformas de memoria distribuida, en las que tanto los datos (matrices y vectores) como los cómputos se distribuyen entre las diferentes unidades de procesamiento. Al diseñar la biblioteca ScaLAPACK se decidió encapsular las operaciones sobre vectores que se debían realizar de forma distribuida, para lo cual se creó la especificación de la biblioteca PBLAS (Parallel BLAS) [37]. La especificación de PBLAS posee las mismas operaciones que dispone BLAS, pero en este caso las operaciones están diseñadas para ser ejecutadas en paralelo sobre plataformas de memoria distribuida mediante el paradigma de pasaje de mensajes (MPI, PVM, etc.) y la invocación a funciones de la biblioteca de comunicaciones BLACS. Existen múltiples bibliotecas de características similares a las presentadas, así como esfuerzos exitosos para desarrollar soluciones a problemas más específicos. En el repositorio NetLib [1] se encuentra un buen compendio del trabajo en el área, con una amplia gama de bibliotecas, algoritmos y artículos científicos en este ámbito.15 4.2. Aplicación de GPUs a computación de propósito general En los primeros años del desarrollo de GPUs para computación de propósito general, el crecimiento de la capacidad computacional del hardware no fue acompañado por un avance en el software de manejo de las GPUs. La programación de GPUs se realizaba mediante herramientas desarrolladas para el tratamiento de imágenes, como por ejemplo las APIs gráficas (OpenGL y DIRECTX). Esto implicaba para el desarrollador la necesidad de conocer profundamente los tópicos de computación gráfica, para poder, de esta forma, mapear el problema a resolver en conceptos de computación gráfica. Posteriormente, se empezaron a utilizar diferentes lenguajes de tipo ensamblador específicos de cada modelo de GPU, lo que implicaba la existencia de varios lenguajes de desarrollo y una baja portabilidad de las aplicaciones. Para tratar de paliar esta carencia, se presentaron varios lenguajes de alto nivel, que permitían generar códigos para diferentes modelos de GPUs. No obstante, cada herramienta seguía siendo muy dependiente de la arquitectura de la GPU, el modelo, etc. En el año 2007, con el propósito de dar respuesta a estas carencias NVIDIA presentó CUDA. Este salto importante en el software se di o en forma conjunta con un cambio radical en la arquitectura de las GPUs (de NVIDIA), ya que, junto con CUDA, NVIDIA presentó la arquitectura G80 que, como principal característica, presenta la arquitectura unificada sin distinción entre procesadores de píxeles y de vértices. CUDA se ha convertido en un estándar válido para todas las GPUs desarrolladas por NVIDIA. CUDA es una arquitectura de software para el cómputo de propósito general enfocada hacia el cálculo masivamente paralelo en tarjetas de NVIDIA. CUDA se compone de una pila de capas de software: un controlador de hardware, una interfaz de programación de aplicaciones y bibliotecas matemáticas de alto nivel, (inicialmente dos, CUFFT y CUBLAS, siendo esta última una implementación de BLAS en GPU). El driver CUDA se encarga de la transferencia de datos entre la GPU y la CPU. Conceptualmente, la arquitectura de CUDA se construye alrededor de una matriz escalable de multiprocesadores (SMs). Un multiprocesador en las GPU actua-16 les (arquitectura G80) consiste de ocho procesadores escalares (SP), así como de elementos adicionales como la unidad de instrucciones multihilo y un chip de memoria compartida. Los multiprocesadores crean, gestionan y ejecutan hilos concurrentemente sin apenas costo de planificación. Para lograr explotar de manera optimizada los recursos de la GPU, CUDA provee un nuevo conjunto de instrucciones accesibles a través de lenguajes de alto nivel como son Fortran y C. Esta arquitectura permite abstraer la GPU como un conjunto de multiprocesadores compuestos a su vez por un conjunto de procesadores orientados a la ejecución de hilos. La noción fundamental en el nuevo modelo de ejecución es que cada multiprocesador ejecutará en cada uno de sus procesadores el mismo conjunto de instrucciones, pero sobre distintos datos, es decir, paralelismo bajo el paradigma de programación SPMD. En particular, y debido a la gran cantidad de hilos que manejan, es común referirse al paralelismo ofrecido por las GPUs como SIMT (del inglés single instruction multiple threads). Los programas a ejecutar en la GPU se denominan kernels, y se organizan en un grid tridimensional de hilos de ejecución (coordenadas x, y y z). A su vez, los hilos se agrupan en bloques tridimensionales; estas coordenadas se utilizarán para identificar el conjunto de datos sobre el que se quiere que actúe cada hilo. Cada bloque será ejecutado en un multiprocesador en forma independiente (esto es, no puede haber comunicación de datos ni sincronización entre los bloques) y cada hilo en un procesador de hilo (entre estos hilos sí puede haber sincronización y comunicación). Al conjunto de hilos que se ejecutan en el mismo instante de tiempo en un mismo bloque se le denomina warp y su tamaño es 32. Organizar la ejecución de esta manera permite escalar sin necesidad de recompilar el programa. El acceso a memoria por parte de los hilos es un componente fundamental en el desempeño de un programa sobre CUDA. Se cuenta con una jerarquía de memoria en la cual los accesos deben ser definidos explícitamente (salvo a los registros y la memoria local). La memoria global es común a todos los bloques de hilos que se ejecutan dentro de una tarjeta gráfica; es la memoria de mayor capacidad y los datos almacenados pueden persistir durante la ejecución de múltiples kernels. Es la única memoria visible desde el host y permite la escritura desde GPU. La memoria compartida es una memoria a la cual sólo pueden acceder los hilos que corren dentro un mismo17 bloque. Su capacidad es menor a la memoria global y su ciclo de vida es de una ejecución de kernel. Los registros son privados de cada hilo y es la memoria más rápida pero su tamaño es muy limitado y su uso es determinado por el compilador. La memoria local es privada a cada hilo, tiene la misma velocidad que la memoria global y su ciclo de vida es de una ejecución de kernel. También se dispone de la memoria constante y la memoria de texturas. Utilización de GPUs para la resolución de problemas de propósito general La constante evolución de las GPUs, su precio reducido y su alto desempeño han propiciado que el uso de GPUs en HPC sea en la actualidad una importante área de investigación que cuenta ya con numerosos y relevantes avances. A continuación se detallan algunos trabajos relacionados con el tópico de este artículo, con interés particular en ALN. Como se mostró en la Sección 4.1, en ALN es habitual el uso de la especificación BLAS para desarrollar aplicaciones. En este sentido, gran parte del esfuerzo inicial para acelerar núcleos de ALN con GPU, hasta la presentación en 2007 de CUBLAS por parte de NVI- DIA, consistió en la implementación de operaciones incluidas en la especificación BLAS. En esta categoría destacan trabajos pioneros dedicados a la multiplicación de matrices de Hall et al. [52] y Larsen et al. [64]; el de Bajaj et al. [8] para resolver expresiones lineales; y el artículo de Krüger et al. [63], primer trabajo en delinear el desarrollo de núcleos al estilo BLAS; donde los vectores son almacenados en memoria de texturas 2D, organizando las matrices completas por diagonales. También afronta el caso en que las matrices son dispersas utilizando la misma idea para matrices de banda y empleando un formato comprimido para matrices dispersas no estructuradas. Implementan los métodos del GC y Gauss-Seidel. Posteriormente, en 2005, los mismos autores extienden el trabajo [62] utilizando DirectX 9.0 y cambian el formato de almacenamiento de las matrices dispersas no estructuradas por una estrategia comprimida a bloques. Otro autor que estudió de forma temprana el desarrollo de núcleos tipo BLAS sobre GPU es Moravánsky [72]. Tras la aparición de la primera versión de la biblioteca CUBLAS, muchos trabajos se centraron en presentar mejoras sobre las rutinas desarrolladas por NVIDIA, algunos de los cuales han sido incluidos en posteriores versiones de18 la biblioteca. En este sentido, destaca el trabajo de Barrachina et al. [10] donde los autores evalúan el desempeño de rutinas de CU- BLAS, y posteriormente muestran cómo conseguir mejoras en base a diferentes estrategias, inteligentes particionamientos, implementaciones híbridas de la multiplicación de matrices, modificaciones de la estructura del núcleo de resolución de sistemas lineales triangulares, y en especial la inclusión de estrategias de padding. También Volkov y Demmel [85] presentan estrategias para la aceleración de la multiplicación de matrices. Los autores validan sus desarrollos acelerando los métodos de factorización LU y QR; su rutina fue incluida en la versión 2.1 de CUBLAS. Basándose en el trabajo de Volkov y Demmel, L. Chien [36] mostró cómo alcanzar mejoras (entre un 10 % y un 15 %) sobre la arquitectura Tesla. Más cercano en el tiempo, Nath et al. [76] presentaron una versión optimizada de la multiplicación de matrices para la arquitectura Fermi; esta propuesta fue incluida en la versión 3.2 de CUBLAS. Otro trabajo interesante es el de Fatica [45], que extiende estas ideas para desarrollar una versión del benchmark LINPACK que permite incluir GPUs como elementos de cómputo. Gran parte del avance en lo que respecta a la implementación de BLAS sobre GPU se compendia en el Capítulo 4 del libro de Nath et al. [73]. Operaciones relacionadas con LAPACK, como la factorización LU, también han sido abordadas por diversos autores. En el trabajo de Galoppo et al. [48] se puede encontrar una implementación pionera de métodos para la resolución de sistemas lineales densos; en particular se presentan los métodos de Gauss-Jordan, factorización LU y factorización LU con pivotamiento parcial y completo. Los autores ofrecen un conjunto amplio de pruebas sobre los algoritmos y estudian la influencia de las características de las GPUs en el desempeño de los métodos. En el mismo año, Ino et al. [55] presentan una implementación de la factorización LU en GPU utilizando estrategias right looking. Posteriormente, Jung y O Leary [57,58] presentan una implementación de la factorización de Cholesky sobre una GPU. Los autores proponen almacenar las matrices (simétricas) en formato comprimido rectangular. Posterior a la presentación de CUBLAS destaca el trabajo de Ries et al. [78], donde se estudia la inversión de matrices triangulares sobre GPU. Esta operación es necesaria para computar la matriz inversa mediante la factorización LU. Im-19 plementaciones eficientes de la factorización LU y la factorización de Cholesky también fueron presentadas por Barrachina et al. [11,9]. En el estudio se incluye la evaluación de estrategias de cómputo mixto GPU+CPU, padding y precisión mixta con refinamiento iterativo. Ideas similares son estudiadas en los trabajos de Baboulin et al. [7,82], donde se propone acelerar la factorización LU modificando el pivotamiento por un método que implica menor costo computacional (aunque sufre de ciertos problemas de estabilidad). Finalmente, los autores extienden los trabajos para acelerar la factorización de Cholesky mediante el uso de planificación dinámica [68]. La inversión de matrices generales con GPUs es estudiada por Ezzatti et al. en [44], mientras que en [43] se extiende el trabajo para utilizar múltiples GPUs. Por otro lado, la inversión de matrices simétricas y definidas positivas es cubierto en el artículo de Benner et al. [23]. La arquitectura masivamente paralela de las GPUs es más adecuada para la resolución de operaciones de ALN con matrices densas; sin embargo, en diversos trabajos se alcanzan desempeños importantes sobre matrices dispersas. La mayor parte de las investigaciones en esta área se han centrado en la aceleración de métodos iterativos, ya que la resolución de estos métodos generalmente se basa en el producto matrix dispersa por vector (spmv) siendo esta operación más sencilla de implementar en GPU que las involucradas en los métodos directos. Además de los trabajos pioneros con implementaciones del método de Jacobi y de Gauss-Seidel de Bajaj et al. [8], y del método GC de Bolz et al. [34], Goodnight et al. [50], Hillesland et al. [54], y Krüger et al [62], conviene destacar los trabajos que se comentan a continuación. Buatois et al. [35] presentan implementaciones del método GC incluyendo el uso de un precondicionador de Jacobi. Para resolver el método GC implementan las operaciones spmv, dot y saxpy de BLAS. La implementación es para operaciones con matrices dispersas, para las que emplean una estrategia de almacenamiento CRS a bloques (BCRS). Además de los trabajos mencionados, cuyo objetivo era acelerar diferentes métodos iterativos, varios estudios han analizado directa o indirectamente la aceleración de la función spmv. Este es el caso del trabajo de Sengupta et al. [81] donde se presenta una implementación de scan segmentado sobre GPU. Las matrices dispersas se almacenan con el formato CSR pero también se estudian otras estrategias de almacenamiento.20 Más recientemente Bell y Garland [14] presentaron el estudio de la multiplicación de matriz dispersa por vector sobre CUDA. Evalúan diferentes formatos de almacenamiento para las matrices dispersas e implementan la operación para los diferentes formatos evaluados. Otros trabajos destacados son el de Gaikwad y Toke [46] que implementan el método BiCGTAB y CGS para diferentes formatos de almacenamiento y distintas implementaciones de spmv, la de NVI- DIA [14], IBM [13] y la presentada en [35]; y el de Anzt et al. [6] también sobre implementaciones de los métodos del CG y GMRES donde se estudian estrategias de precisión mixta, reordenamiento y el impacto en el consumo energético. Para el cómputo con matrices banda, en el caso de las matrices tridiagonales los trabajos se han centrado en implementaciones del método de reducción cíclica (RC) o sus variantes, en este campo destacamos los trabajos de Zhang et al [87], Maciol et al. [70], Göddeke et al. [49] y Alfaro et al. [3]. En cuanto a la implementación de métodos directos para matrices dispersas existen pocos trabajos en la literatura. El pionero dentro de tema es el desarrollo de Christen et al. [38], en el que los autores estudian distintas opciones para extender la biblioteca PARDISO [80] utilizando la GPU. La biblioteca utiliza el método multifrontal y evalúa la aplicación a nivel de operaciones básicas (mediante invocaciones a núcleos computacionales de BLAS) o a nivel de resolución de los frentes (mediante la invocación de núcleos de LAPACK). Más recientemente, Lucas et al. [69] extienden el trabajo estudiando implementaciones del método multifrontal en GPU Aplicación de técnicas de HPC a la reducción de modelos Uno de los esfuerzos pioneros en el desarrollo de herramientas que incluyan estrategias de HPC para la resolución de problemas de control, y en particular de reducción de modelos, es la biblioteca SLICOT (Subroutine Library in Control Theory) 1 [83], que fue desarrollada a finales de la década de los 90, en el marco del proyecto NICONET (Numerics in Control Network) [2]. La biblioteca está implementada en Fortran 77 y también es posible su utilización desde Matlab. Su diseño se basa en el uso de las especificaciones 1 Disponible en Mostrar más
REVISTA INVESTIGACIÓN OPERACIONAL VOL. 35, NO. 3, 201-214, 2014
REVISTA INVESTIGACIÓN OPERACIONAL VOL. 35, NO. 3, 201-214, 2014 W_ILU_ GMRES: UN DISEÑO EN PARALELO Yisleidy Linares Zaila, Marta L. Baguer Díaz Romañach, Ángela León Mecías y Universidad de La Habana, Más detalles Computación de altas prestaciones aplicada al cálculo de variaciones en genómica
UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INGENIERÍA INFORMÁTICA MÁSTER UNIVERSITARIO EN TECNOLOGÍAS INFORMÁTICAS AVANZADAS TRABAJO FIN DE MÁSTER Computación de altas prestaciones aplicada Más detalles Reconstrucción 3D a partir de Proyecciones en Entornos Multihebrados
TESIS Reconstrucción 3D a partir de Proyecciones en Entornos Multihebrados Directores: Dr. Javier Roca Piera Dr. José Jesús Fernández Rodríguez Autor: José Antonio Álvarez Bermejo III When you make the Más detalles Proyecto Fin de Carrera
Proyecto Fin de Carrera CÁLCULO COMPUTACIONAL DE PERFILES AERODINÁMICOS OS EN AEROTURBINA Víctor M. Martínez Fernández Director: Antonio Pascau Benito Departamento de Ciencia y Tecnología de Materiales Más detalles UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS
UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN PARALELIZACIÓN DE UN ALGORITMO PARA LA DETECCIÓN DE CÚMULOS DE GALAXIAS MEMORIA PARA OPTAR AL Más detalles Evaluación de la herramienta de código libre Apache Hadoop Universidad Carlos III de Madrid Escuela Politécnica Superior
Evaluación de la herramienta de código libre Apache Hadoop Universidad Carlos III de Madrid Escuela Politécnica Superior Proyecto Fin de Carrera INGENIERÍA TÉCNICA DE TELECOMUNICACIÓN: TELEMÁTICA Autora: Más detalles Modelos de Fiabilidad del Software
Universidad de Valladolid E. U. DE INFORMÁTICA (SEGOVIA) Ingeniería Técnica en Informática de Gestión Modelos de Fiabilidad del Software Alumno: Jesús Plaza Rubio Tutores: Pablo Fernández Blanco Pilar Más detalles CIS1330TK03. CUDAlicious. Daniel David Cárdenas Velasco
CIS1330TK03 CUDAlicious Daniel David Cárdenas Velasco PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERÍA CARRERA DE INGENIERÍA DE SISTEMAS BOGOTÁ, D.C. 2013 Pontificia Universidad Javeriana Memoria Más detalles Notas de CFD. Rev 0.2.2. Adrián Lozano Durán. adrian@torroja.dmt.upm.es
Notas de CFD Rev 0.2.2 Adrián Lozano Durán adrian@torroja.dmt.upm.es 24 de septiembre de 2013 Índice Índice 1 1 Computación Científica 4 1.1 El ordenador como herramienta para resolver problemas matemáticos Más detalles RESUMEN DEL CURSO DE METODOS NUMERICOS. impartido por. Virginia Muto Foresi
RESUMEN DEL CURSO DE METODOS NUMERICOS impartido por Virginia Muto Foresi Departamento de Matemática Aplicada y Estadística e Investigación Operativa Facultad de Ciencia y Tecnología Universidad del País Más detalles E.T.S.I. INFORMÁTICA UNIVERSIDAD DE MÁLAGA
E.T.S.I. INFORMÁTICA UNIVERSIDAD DE MÁLAGA Un Lenguaje de Coordinación para la Resolución de Problemas Basados en Descomposición de Dominios Tesis Doctoral Presentada por: D. Enrique Soler Castillo Dirigida Más detalles 2875: INTEGRACIÓN DE HADOOP CON PLANIFICADORES BATCH
2875: INTEGRACIÓN DE HADOOP CON PLANIFICADORES BATCH Memoria del Proyecto Fin de Carrera de Ingeniería en Informática realizado por José Fidel Díaz Cañizares y dirigido por Porfidio Hernández Budé Bellaterra, Más detalles Methodology for Software Development Estimation Optimization Based on Neural Networks
IEEE LATIN AMERICA TRANSACTIONS, VOL. 9, NO. 3, JUNE 2011 391 Methodology for Software Development Estimation Optimization Based on Neural Networks A. García, I. González, R. Colomo, J.L. López and B. Más detalles ESCUELA POLITÉCNICA NACIONAL
ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA OPTIMIZACIÓN DE CONTROLADORES DIGITALES PID EN SISTEMAS DINÁMICOS USANDO ALGORITMOS GENÉTICOS PROYECTO PREVIO A LA OBTENCIÓN Más detalles UNIVERSIDAD VERACRUZANA. Tesina. Licenciado en Sistemas Computacionales Administrativos
UNIVERSIDAD VERACRUZANA Facultad de Contaduría y Administración Propuesta de implementación de un clúster de altas prestaciones Tesina Para obtener el Título de: Licenciado en Sistemas Computacionales Más detalles Algoritmos Heurísticos en Optimización Combinatoria
Algoritmos Heurísticos en Optimización Combinatoria Rafael Martí Cunquero Departament d Estadística i Investigació Operativa Programa 1. Introducción 2. Calidad de los Algoritmos 3. El Problema del Viajante Más detalles TÉSIS DE MAESTRÍA. Emmanuel Barajas González
UNIVERSIDAD DE GUADALAJARA TECNOLOGÍAS DE INFORMACIÓN TÉSIS DE MAESTRÍA Defendida por Emmanuel Barajas González Diseño de una arquitectura para procesamiento paralelo y distribuido de conjuntos másivos Más detalles Diseño de una estrategia para la gestión energética de un vehículo híbrido enchufable
UNIVERSIDAD DE ALMERÍA ESCUELA POLITÉCNICA SUPERIOR Y FA. CC. EXPERIMENTALES Titulación de Ingeniería Técnica Industrial Mecánica Diseño de una estrategia para la gestión energética de un vehículo híbrido Más detalles INSTITUTO POLITÉCNICO NACIONAL T E S I S
INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS SECCIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN PATRONES ARQUITECTÓNICOS PARA PROGRAMACIÓN Más detalles Identificación y valoración de técnicas ágiles de gestión de proyectos software
UNIVERSIDAD DE OVIEDO DEPARTAMENTO DE EXPLOTACIÓN Y PROSPECCIÓN DE MINAS MASTER INTERUNIVERSITARIO EN DIRECCIÓN DE PROYECTOS TRABAJO FIN DE MASTER Identificación y valoración de técnicas ágiles de gestión Más detalles CALIDAD DE COMPONENTES SOFTWARE
Versión preliminar 10Capítulo 10 CALIDAD DE COMPONENTES SOFTWARE Juan Pablo Carvallo Xavier Franch Carmen Quer 10.1 INTRODUCCIÓN En los últimos años se constata una tendencia creciente por parte de las Más detalles INSTITUTO POLITÉCNICO NACIONAL
INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS SECCIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN ESTUDIO DEL DESEMPEÑO DE MODELOS Más detalles ANÁLISIS DE REDES SOCIALES A TRAVÉS DE MINERÍA DE REPOSITORIOS GIT
ESCUELA SUPERIOR DE INGENIERÍA DE TELECOMUNICACIÓN TRABAJO FIN DE MÁSTER: Curso académico 2013/2014 ANÁLISIS DE REDES SOCIALES A TRAVÉS DE MINERÍA DE REPOSITORIOS GIT Autor Cristian Coré Ramiro Carracedo Más detalles Componentes software para gestión de dispositivos físicos. Estudio comparativo de soluciones basadas en.net y JavaBeans
UNIVERSIDAD POLITÉCNICA DE CARTAGENA E. T. S. Ingeniería de Telecomunicaciones Componentes software para gestión de dispositivos físicos. Estudio comparativo de soluciones basadas en.net y JavaBeans Andrés Más detalles UNIVERSIDAD DE ALCALÁ
UNIVERSIDAD DE ALCALÁ DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN Contribución al Desarrollo de una Interfaz Gráfica de Usuario para el Diseño, Optimización y Análisis de Antenas mediante el Método de los Más detalles Implementación del algoritmo UEGO sobre el entorno Matlab como alternativa al toolbox de optimización
Implementación del algoritmo UEGO sobre el entorno Matlab como alternativa al toolbox de optimización Victoria Plaza Leiva Universidad de Almería Abstract Global optimization algorithms are widely used Más detalles Sistemas Informáticos Curso 2005-2006
Sistemas Informáticos Curso 2005-2006 ESTUDIO SOBRE LA RELEVANCIA DE LOS CONTADORES DE RENDIMIENTO EN SITUACIONES DE CONFLICTO Darío Tórtola Navarro Carlos Vives Lafuente Dirigido por: Francisco Javier Más detalles ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA MÓDULO EVALUACIÓN DE SOFTWARE Código del Curso: 301569 Francisco Nicolás Javier Solarte Solarte francisco.solarte@unad.edu.co solartefrancisco@gmail.com Más detalles SIMULACIÓN DEL FLUJO TURBULENTO EN UN CODO DE 90 DE TUBERIA DE SECCIÓN CIRCULAR MANUEL ALEJANDRO TABORDA CEBALLOS
SIMULACIÓN DEL FLUJO TURBULENTO EN UN CODO DE 90 DE TUBERIA DE SECCIÓN CIRCULAR MANUEL ALEJANDRO TABORDA CEBALLOS UNIVERSIDAD AUTONOMA DE OCCIDENTE FACULTAD DE INGENIERIA DEPARTAMENTO DE ENERGETICA Y MECANICA Más detalles Proyecto de Grado Informe Final
Departamento de Investigación Operativa Instituto de Computación Facultad de Ingeniería Universidad de la República Montevideo, Uruguay Proyecto de Grado Informe Final Minería de Datos aplicada a problemas Más detalles 2016 © DocPlayer.es Política de privacidad | Condiciones del servicio | Feedback

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 Resolución