You are on page 1of 1

ROPEC 2011 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.

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

You might also like