10 likes | 229 Views
ROPEC 2012 INTERNACIONAL. APLICACIÓN DE PROCESAMIENTO EN PARALELO BASADO EN OPENMP EN EL MANEJO MATRICIAL USADO EN EL ANÁLISIS DE SISTEMAS ELÉCTRICOS Antonio Ramos Paz 1 , Eustaquio García Ramírez 1 , Laura Alejandrina Acosta Urzua 2
E N D
ROPEC 2012 INTERNACIONAL APLICACIÓN DE PROCESAMIENTO EN PARALELO BASADO EN OPENMP EN EL MANEJO MATRICIAL USADO EN EL ANÁLISIS DE SISTEMAS ELÉCTRICOS Antonio Ramos Paz1, Eustaquio García Ramírez1, Laura Alejandrina Acosta Urzua2 1Facultad de Ingeniería Eléctrica, 2Escuela Preparatoria Melchor Ocampo, UMSNH RESUMEN: El modelado y análisis de los sistemas eléctricos utiliza representaciones matriciales. Una vez representados matricialmente es necesario realizar operaciones sobre estas matrices con el objeto de simular el comportamiento del mismo, sujeto a diversos escenarios de operación, distintas configuraciones de conexión o diferentes valores de sus parámetros. Las representaciones más precisas de los sistemas implican el uso de modelos más rigurosos de los elementos que los conforman y por consecuencia el uso de matrices de mayores dimensiones, lo cual lleva a dos grandes retos computacionales: el almacenamiento eficiente de las matrices y el tiempo de cómputo asociado con las operaciones matriciales. En la actualidad han aparecido en el mercado computadoras con múltiples procesadores, los cuales pueden tener a su vez varios núcleos. Estas computadoras no pueden aprovechar sus potencialidades si son programadas utilizando los paradigmas tradicionales de programación, en particular una programación serie. En el año 1997 aparece la plataforma operativa de procesamiento en paralelo OpenMp. OpenMp permite realizar procesamiento en paralelo de grano fino, es decir, a niveles tales como estructuras de repetición. El presente trabajo presenta la aplicación de OpenMp en la realización de operaciones con matrices de muy grandes dimensiones asociadas con el análisis de los sistemas eléctricos. En este trabajo se muestra que el uso de computadoras con múltiples núcleos junto con la programación en OpenMp permite reducir en forma considerable el tiempo de cómputo de las operaciones matriciales usadas en el análisis de los sistemas eléctricos. Modelado Matemático de los Sistemas Eléctricos Introducción La simulación de circuitos eléctricos ha sido una de las tareas primordiales en el diseño y planeación de los sistemas eléctricos de potencia. Su principal aplicación es la determinación del comportamiento en el tiempo de los circuitos sujetos a condiciones de variación en su entorno y bajo condiciones de variación de sus parámetros. Una simulación eficiente de una red eléctrica, mediante la incorporación de modelos rigurosos de los diferentes elementos que forman parte de la misma, permite predecir sus condiciones de operación sujeta a diversos escenarios, tales como cambios en su topología por la incorporación de algún elemento o la remoción de alguna sección del sistema eléctrico de potencia (SEP) debido a alguna condición de falla en el mismo. Una de las formas más utilizadas en la representación de los sistemas es el uso de representaciones matriciales. Un modelo riguroso de un sistema está asociado a matrices de grandes dimensiones. Una vez que el sistema ha sido representado comienza entonces el proceso de simulación del mismo, generalmente asociado al uso de algún método numérico que involucra operaciones entre las matrices que representan el sistema, tales como sumas, multiplicaciones, inversas, etc. Tradicionalmente estas operaciones son programas en lenguajes de programación, tales como C o Fortran. Procesamiento en paralelo El procesamiento en paralelo puede ser definido como una forma de procesamiento de información en la cual dos o más procesadores juntos o con algún tipo de esquema de comunicación entre ellos, pueden cooperar para obtener la solución de un problema [Alvarado et al. 1992]. Figura 1. Sistema Eléctrico de Potencia Figura 3. Elementos del Procesamiento en Paralelo Figura 2. Proceso de modelado matemático de un Sistema Eléctrico El Modelo de OpenMP Plataformas para el Procesamiento en Paralelo OpenMP permite que el flujo principal de un programa, ejecutado por un hilo maestro, pueda dividirse en múltiples hilos esclavos los cuales se ejecutan de manera simultánea. Cada uno de estos hilos realiza una serie de instrucciones las cuales tienen como objetivo resolver un problema de grandes dimensiones. La Fig. 4. muestra el modelo fork-join utilizado en el procesamiento en paralelo basado en OpenMP. Una plataforma de computacional para el procesamiento en paralelo es un medio a través del cual se puede realizar la programación de un algoritmo sobre una arquitectura paralela. En la actualidad existen una gran cantidad de plataformas de procesamiento en paralelo. Entre las principales plataformas para el procesamiento en paralelo pueden mencionarse los threads [Kleiman et al. 1992], la interfaz de paso de mensajes (MPI) [Pacheco 1997], la máquina paralela virtual (PVM) [Geist et al. 1994], etc. Figura 4. Modelo fork-join Caso de estudio Propuesta de Aplicación de Procesamiento en Paralelo en el Análisis Matricial Una de las operaciones matriciales más ampliamente utilizada y que conlleva un gran tiempo de cómputo es la multiplicación matricial. En el proceso de multiplicación de dos matrices de orden mxn, se observa que la multiplicación matricial es un conjunto de productos puntos entre la fila i de la matriz que representa el primer factor y la columna j de la matriz que representa el segundo factor, para dar como resultado el elemento i,j de la matriz resultante. Con el objeto de reducir el tiempo de cómputo asociado a esta matriz, se propone la aplicación de procesamiento en paralelo basado en OpenMP en su realización.. Con el objeto de mostrar el efecto que tiene el uso del procesamiento en paralelo en la multiplicación matricial, se construyeron dos matrices de 1000x1000 elementos generados en forma aleatoria. A continuación se procedió a realizar la multiplicación de ambas matrices modificando el número de hilos usados en el proceso. Con el objeto de tener una medida del efecto del uso del procesamiento en paralelo, se utiliza el concepto del speed-up [Foster 1994], el cual se define como la relación del tiempo de ejecución con un hilo sobre el tiempo de ejecución con n hilos. La Tabla 1 muestra el efecto del uso de 1 a 8 hilos en la multiplicación matricial. De esta tabla puede observarse que con 8 hilos se obtiene un speed-up de 6.67, esto significa que el programa paralelo es 6.67 veces más rápido que su contraparte secuencial. Para la realización del caso de estudio se utilizó una computadora modelo Intel(R) Xeon(R) CPU E5405 con dos procesadores, cada uno de ellos con cuatro núcleos con una velocidad de 2.0 GHz. Tabla 1. Eficiencia obtenida usando de 1 a 8 hilos La Fig. 5 muestra la programación en lenguaje C de la multiplicación de dos matrices de dimensiones nxn Figura 5. Programación secuencial en lenguaje C Figura 7. Computadora multiprocesadores Dado que existe independencia en los productos puntos que están asociados con esta operación matricial, se propone que cada uno de ellos pueda ser calculado mediante el uso de un hilo. Para ello se puede hacer uso de los mecanismos que proporciona OpenMP para realizar ciclos en paralelo. En la Fig. 6 se muestra la programación propuesta de implementación de la multiplicación matricial usando lenguaje C y OpenMP. Conclusiones Este trabajo ha presentado una justificación para el uso de plataformas de procesamiento en paralelo, particularmente en computadoras multinúcleo. Se han descrito las principales características de las diversas arquitecturas computacionales para el procesamiento en paralelo, así como las principales plataformas para el uso del procesamiento en paralelo. Se han mostrado las principales características de OpenMP. Se ha aplicado OpenMP en la solución de operaciones matriciales, particularmente la multiplicación de matrices de muy altas dimensiones. Se observó que el uso de procesamiento en paralelo permite alcanzar un speed-up máximo cercano a 6.67 para el caso de estudio presentado en este trabajo. Se ha mostrado que a través del uso del procesamiento en paralelo se puede tener un mayor aprovechamiento de las computadoras multinúcleo. Figura 6. Programación paralela en lenguaje C usando OpenMP Colima, Colima, México, del 7al 9 de Noviembre del 2012