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.
Introducción Modelado Matemático de los Sistemas Procesamiento en paralelo
Eléctricos 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 El procesamiento en paralelo puede ser definido como una forma de potencia. Su principal aplicación es la determinación del procesamiento de información en la cual dos o más procesadores comportamiento en el tiempo de los circuitos sujetos a condiciones de juntos o con algún tipo de esquema de comunicación entre ellos, variación en su entorno y bajo condiciones de variación de sus pueden cooperar para obtener la solución de un problema [Alvarado et parámetros. Una simulación eficiente de una red eléctrica, mediante la al. 1992]. 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. Figura 1. Sistema Eléctrico de Potencia
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.
Figura 3. Elementos del Procesamiento en Paralelo
Figura 2. Proceso de modelado matemático de un Sistema Eléctrico
Plataformas para el Procesamiento en Paralelo El Modelo de OpenMP
Una plataforma de computacional para el procesamiento en paralelo es un medio a través del cual se OpenMP permite que el flujo principal de un programa, ejecutado por un hilo puede realizar la programación de un algoritmo sobre una arquitectura paralela. En la actualidad existen maestro, pueda dividirse en múltiples hilos esclavos los cuales se ejecutan de una gran cantidad de plataformas de procesamiento en paralelo. Entre las principales plataformas para manera simultánea. Cada uno de estos hilos realiza una serie de el procesamiento en paralelo pueden mencionarse los threads [Kleiman et al. 1992], la interfaz de paso instrucciones las cuales tienen como objetivo resolver un problema de Fork Join Fork Join de mensajes (MPI) [Pacheco 1997], la máquina paralela virtual (PVM) [Geist et al. 1994], etc. grandes dimensiones. La Fig. 4. muestra el modelo fork-join utilizado en el procesamiento en paralelo basado en OpenMP. Figura 4. Modelo fork-join
Propuesta de Aplicación de Procesamiento en Paralelo en el Caso de estudio
Análisis Matricial 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 Una de las operaciones matriciales más ampliamente utilizada y que conlleva un gran tiempo de usados en el proceso. Con el objeto de tener una medida del efecto del uso del procesamiento en cómputo es la multiplicación matricial. En el proceso de multiplicación de dos matrices de orden mxn, paralelo, se utiliza el concepto del speed-up [Foster 1994], el cual se define como la relación del tiempo se observa que la multiplicación matricial es un conjunto de productos puntos entre la fila i de la matriz de ejecución con un hilo sobre el tiempo de ejecución con n hilos. La Tabla 1 muestra el efecto del uso que representa el primer factor y la columna j de la matriz que representa el segundo factor, para dar de 1 a 8 hilos en la multiplicación matricial. De esta tabla puede observarse que con 8 hilos se obtiene como resultado el elemento i,j de la matriz resultante. Con el objeto de reducir el tiempo de cómputo un speed-up de 6.67, esto significa que el programa paralelo es 6.67 veces más rápido que su asociado a esta matriz, se propone la aplicación de procesamiento en paralelo basado en OpenMP en contraparte secuencial. Para la realización del caso de estudio se utilizó una computadora modelo su realización.. 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 Numero de Hilos speed-up 1 1.00 for (i=0; i<N; i++) { for (j=0; j<N; j++) { 2 2.04 suma = 0; for (k=0; k<N; k++) suma = suma + A[i][k]*B[k][j]; 3 2.94 } C[i][j] = suma; 4 3.81 } 5 4.84 Figura 5. Programación secuencial en lenguaje C 6 5.54 Figura 7. Computadora multiprocesadores 7 6.31 Dado que existe independencia en los productos puntos que están asociados con esta operación 8 6.67 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 Conclusiones Fig. 6 se muestra la programación propuesta de implementación de la multiplicación matricial usando lenguaje C y OpenMP. 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 #pragma omp parallel shared(A,B,C,N) #pragma omp for plataformas para el uso del procesamiento en paralelo. Se han mostrado las principales características for (i=0; i<N; i++) { de OpenMP. Se ha aplicado OpenMP en la solución de operaciones matriciales, particularmente la for (j=0; j<N; j++) { suma = 0; multiplicación de matrices de muy altas dimensiones. Se observó que el uso de procesamiento en for (k=0; k<N; k++) paralelo permite alcanzar un speed-up máximo cercano a 6.67 para el caso de estudio presentado en suma = suma + A[i][k]*B[k][j]; } este trabajo. Se ha mostrado que a través del uso del procesamiento en paralelo se puede tener un C[i][j] = suma; mayor aprovechamiento de las computadoras multinúcleo. }
Figura 6. Programación paralela en lenguaje C usando OpenMP
Morelia, Michoacán, México, del 9 al 11 de Noviembre del 2011