Rápidas y robustas, de las CPU´s a las GPU´s: Computación paralela y sus aplicaciones en problemas de datos paralelos utilizando arquitecturas GPU |
La computación paralela se ha convertido en un tema importante en el campo de la informática y ha demostrado ser crítica cuando se investigan soluciones de alto rendimiento.
Hubo un periodo de la historia en que los procesadores trabajaban de manera secuencial. En aquella época un procesador más poderoso significaba básicamente un aumento en las frecuencias de reloj y una mayor densidad de transistores, lo que en conjunto se traducía en mayor poder de cómputo. La ley de Moore dice que la densidad de transistores se duplica aproximadamente cada dos años. Hoy en día esta ley se sigue cumpliendo, sin embargo ya no es posible aumentar el rendimiento de los programas de manera automática como lo fue en algún momento de la historia, dado que las frecuencias de reloj alcanzaron su límite. A raíz de este problema nace lo que llamamos la computación paralela, la cual se ha transformado en una herramienta esencial para la ciencia y en una fuerte rama de investigación para las ciencias de la computación.
La evolución de arquitecturas computacionales (multi-core y many-core) hacia un mayor número de núcleos puede comprobar que el paralelismo es el método de elección para la aceleración de un algoritmo. Para algunos problemas computacionales, los algoritmos basados en la CPU no son suficientemente rápidos para dar una solución en un plazo razonable de tiempo. A veces, estos problemas pueden llegar a ser grandes, hasta el punto que ni los algoritmos basados en la CPU multi-núcleo (multi-core) son suficientemente rápidos. Problemas como éstos se pueden encontrar en la ciencia y la tecnología, las ciencias naturales (física, biología, química), tecnologías de la información (IT), los sistemas de información geoespacial (GIS), problemas de mecánica estructural e incluso problemas de matemática abstracta y ciencias de la computación (CS). En el artículo de Cristóbal Navarro, del Laboratorio de Física del CECs, se señala que utilizando la computación paralela, muchas de las soluciones a estos problemas pueden ser ahora computadas (calculadas) en un período de tiempo razonable. La arquitectura de la GPU es prácticamente el opuesto a la CPU (ver Figura 1), puesto que sacrifica flexibilidad para obtener más rendimiento informático. Figura 1. Diferencia entra la arquitectura CPU (izquierda) y GPU (derecha). La computación paralela es el acto de la solución de un problema de tamaño n dividiendo su zona en k ? 2 (with k ? N) partes y resolverlos con procesadores físicos P, de forma simultánea. Ser capaz de identificar el tipo de problema es esencial en la formulación de un algoritmo paralelo. Que P D sea un problema con la zona (dominio) D. Si P D puede ser paralelizado, entonces, D se puede descomponer en k sub-problemas: P D es un problema de datos paralelos si D se compone de datos y resolver el problema requiere la aplicación de una función del núcleo f (…) para todo el dominio: P D es un problema de tarea paralela si D se compone de funciones y la solución del problema requiere la aplicación de cada función a una corriente de datos común: El problema de n-cuerpo es un problema de interacción donde n cuerpos o partículas son afectados por la gravedad de otra n - 1 cuerpo en un espacio k-dimensional (por lo general K = 2 o k = 3). Lo interesante en este problema es que para un sistema de sólo tres partículas no se ha encontrado ninguna solución analítica todavía. Por esta razón, el n-cuerpo es uno de los problemas de datos paralelos emblemáticos hallados en la física computacional, y el objetivo es simular el sistema a través del tiempo en vez de resolverlo. El problema de n- cuerpo establece que para cada partícula su fuerza está dada por sus interacciones con las otras partículas: Una simulación clásica requiere un algoritmo O(n ^2 ) ya que es el tipo de problema all-with-all. Una solución GPU puede procesar partículas en paralelo, lo que resulta en un algoritmo O( n^2 / p ) donde p es la cantidad de procesadores. La investigación sobre simulaciones de n-cuerpos ha encontrado que los métodos más rápidos existen si sacrifican alguna precisión numérica. El argumento se basa en el hecho de que las contribuciones de los términos de suma disminuyen cuadráticamente con la distancia entre dos cuerpos. Como resultado, los cuerpos muy lejanos de un cierto cuerpo no hacen ninguna contribución significativa a su fuerza final, mientras que los cuerpos cercanos de ese mismo cuerpo hacen la mayor parte de la contribución a su fuerza final. Esta importancia de las contribuciones es la clave para el diseño de un algoritmo más rápido de n-cuerpo. El algoritmo de código arbóreo (dendroideo) Barnes-Hut es una solución conocida de partición espacial que logra O(nlog_k(n) ) tiempo promedio por paso de tiempo. Se utiliza un quad-tree para k = 2 o equivalentemente un oct-tree para k = 3. El árbol se utiliza para guardar las medidas de grupos de puntos lejanos del punto de referencia (Figura 2).
Figura 2. Un quad-tree aplicado sobre dos grupos de puntos.
Cuando la simulación se ejecuta en GPUs, ella puede hacer muchas partículas utilizar el árbol en paralelo. Esta mejora en el tiempo de cálculo permite estudiar sistemas mucho más grandes en el orden de millones de partículas. Muchos otros problemas físicos pueden ser tratados en paralelo utilizando GPUs. El único requisito inicial para el problema consiste en ofrecer lo suficiente de datos de paralelismo. Sin embargo, el rendimiento final dependerá también de los patrones de acceso de memoria y la comunicación entre elementos de datos. Patrones de acceso que mantienen localidad de elementos de datos incurren en alto rendimiento, mientras que los patrones de acceso dispersos presentan un desafío adicional de la reordenación de los datos de una manera diferente, o utilizar las caches manuales de la GPU.
--- Referencia: C. A. Navarro et al. (2014) A Survey on Parallel Computing and its Applications in Data-Parallel Problems Using GPU Architectures. Commun. Comput. Phys. doi: 10.4208/cicp.110113.010813a
|
El Centro de Estudios Científicos (CECs) es una corporación de derecho privado, sin fines de lucro, dedicada al desarrollo, fomento y difusión de la investigación científica. El CECs fue fundado en 1984 como el Centro de Estudios Científicos de Santiago donde funcionó en una casa arrendada hasta el año 2000, momento en el que se mudó a Valdivia donde evolucionó para llegar a ser lo que es hoy. Desde su fundación el CECs ha sido dirigido por el físico Claudio Bunster. Luego de treinta y seis años de existencia, el CECs ha decidido renovar su sitio web, el cual se encuentra actualmente en construcción. En el intertanto las consultas pueden ser dirigidas a info@cecs.cl. Lo que sigue es un extracto de un folleto que fue producido justo después de que el centro se trasladara a Valdivia. Sentimos que estas palabras aún reflejan su espíritu: |
||||||
“
Una pequeña banda de investigadores del Centro de Estudios Científicos (CECs) en Valdivia, Chile, comparte un sueño audaz, anticuado en esta era de la Gran Ciencia – la búsqueda irrestricta del conocimiento, en un pequeño instituto independiente de investigación de primera calidad. Sus miembros se han reunido durante un lapso de tiempo que abarca ya, más de un cuarto de siglo, para emprender una aventura intelectual que es riesgosa, estimulante y tremendamente productiva.
Ubicado entre los Andes y el Pacífico, en esta pequeña ciudad del sur, el CECs es uno de los pocos institutos en el mundo que trabajan en investigación de vanguardia en múltiples disciplinas, sin recibir recursos o estar afiliada a ninguna institución anfitriona. Sus investigadores son libres para desarrollar su mejor ciencia con independencia de las modas y sin restricciones burocráticas, en una atmósfera de colaboración y apoyo mutuo. El fruto de este esfuerzo se traduce en un flujo permanente de ideas innovadoras, con estudiantes altamente capacitados y resultados que son publicados en revistas especializadas. El Centro ha demostrado lo errado de los prejuicios y escepticismo relacionados con su pequeño tamaño, al ubicar a Chile, con la capacidad de sus integrantes y audaz estrategia, en el mapa mundial de la ciencia, revolucionando de paso el modelo tradicional de estructurar la ciencia en Chile y mostrando – con su ejemplo – cómo “lograr más con menos”. Sus investigadores hablan en tono de curiosidad, maravilla y ocasionalmente orgullo al describir su emocionante viaje por aguas inexploradas. La estrategia del CECs es sustentar un entorno científicamente rico donde la ciencia y los científicos son lo primordial – atrayendo a las mejores personas, apoyándolos adecuadamente y ofreciéndoles libertad para perseguir sus sueños. ” |
La actual tripulación del centro es la siguiente: |