Está en la página 1de 11

Algoritmo MPI paralelo para el clculo aproximado del valor de PI por el mtodo de Montecarlo

Jos Jess Soto Snchez1


CIDETEC IPN, U. P. Adolfo Lpez Mateos, Av. Juan de Dios Btiz s/n casi esq. Miguel Othn de Mendizbal, Edif. del CIDETEC, Col. Nva. Industrial Vallejo, Del. Gustavo A. Madero, 07700, Mxico, D. F. 1 jsotos0801@ipn.mx
1

Resumen. El presente trabajo describe el mtodo Monte Carlo para calcular el valor aproximado de PI. Muestra el programa implementado en Message Passing Interface (MPI), el cual fue compilado y puesto a prueba en el clster de tipo Beowulf del Centro de Innovacin y Desarrollo Tecnolgico en Cmputo del Instituto Politcnico Nacional de Mxico.

Palabras Clave: mtodo Monte Carlo, Message Passing Interface (MPI), clculo de PI.

Introduccin

El mtodo de Montecarlo (MC) es un procedimiento matemtico que nos permite simular un sistema, con la ayuda de ordenadores. En general se aplica a problemas cuyo comportamiento global se puede modelar mediante una distribucin de probabilidad [1]. Esta tcnica es aplicable en numerosos campos, no slo en el de las matemticas (evaluaciones de integrales) sino tambin en ingeniera ambiental (crecimiento de bosques y estudios de contaminacin), economa (anlisis de mercado y crecimiento de PIB), biologa molecular (interaccin de molculas de ADN), medicina (radiaciones) y muchas otras. El mtodo Monte Carlo es un mtodo numrico que permite resolver problemas fsicos, matemticos y estadsticos mediante la simulacin de variables aleatorias [2]. El Mtodo Monte Carlo es un mtodo no determinstico (entindase, un algoritmo que con la misma entrada ofrece muchos posibles resultados) o estadstico numrico usado para aproximar expresiones matemticas complejas y costosas de evaluar con exactitud.

La denominacin Monte Carlo fue popularizado por los cientficos Stanislaw Ulam, Enrico Fermi, John Von Neumann, and Nicholas Metropolis, entre otros, quienes ya trabajaban sobre muestreo estadstico. Hace referencia al Casino de Montecarlo en Mnaco por ser la capital del juego de azar, al ser la ruleta un generador simple de nmeros aleatorios. El nombre y el desarrollo sistemtico de los mtodos de Monte Carlo datan aproximadamente de 1944 y han mejorado enormemente al ser implementados en computadoras con tecnologas de vanguardia.

1.1 Para qu se utiliza el Mtodo Montecarlo? Es un mtodo que utiliza nmeros aleatorios para calcular numricamente expresiones matemticamente complejas y difciles de evaluar con exactitud, o que no pueden resolverse analticamente. Algunos ejemplos son: Aproximar el valor de PI. Clculo de integrales definidas. El mtodo de Monte Carlo proporciona soluciones aproximadas a una gran variedad de problemas matemticos, haciendo posible la realizacin de experimentos con muestreos de nmeros pseudoaleatorios en una computadora. El mtodo es aplicable a cualquier tipo de problema, ya sea estocstico o determinista.

Clculo de integrales definidas

Basicamente, una integral es una suma de infinitos sumandos, infinitamente pequeos. Dada una funcin f(x) de una variable real x y un intervalo [a,b] de la recta real, la integral

(1)

es igual al rea de la regin del plano xy limitada entre la grfica de f, el eje x, y las lneas verticales x=a y x=b, donde son negativas las reas por debajo del eje x.

Fig. 1. La integral definida de una funcin representa el rea limitada por la grfica de la funcin, con signo positivo cuando la funcin toma valores positivos y negativo cuando toma valores negativos.

Ahora bien, Si X es una variable aleatoria con densidad f y g : R valor esperado de la v. a. g(X) es R es una funcin, entonces el

E[g(X)] = gx f x dx

(2)

La ley Fuerte de los Grandes Nmeros, indica que: Si X1, X2, . . .es una sucesin de v. a. i. i. d., todas con media ; entonces

lim =

(3)

2.1 Integrales mltiples El mtodo de Monte Carlo para el clculo de integrales en una variable no es muy eficiente, comparado con otros mtodos numricos que convergen ms rpidamente al valor de la integral. Pero s cobra importancia en el caso del clculo numrico de integrales mltiples:

gx1, . . . , xl dx1 . . . dxl

(4)

Para calcular la cantidad

=
Utilizamos el hecho que

gx1, . . . , xl dx1 . . . dxl

(5)

= E[g(U1 Ul)]
con U1, . . . ,Ul independientes y uniformes en (0, 1). Si
1 1 1 2 2 ,, 1

(6)

,, . . .

(7)

1, ,

son n muestras independientes de estas l variables, podemos estimar

, , 1 ~

(8)

Clculo aproximado del valor de PI.

Una aplicacin a las integrales mltiples es el clculo aproximado del valor de PI Recordemos que el rea A, de un crculo de radio r es

=
y por lo tanto est dado por el valor de la integral

(9)

(10)

Si X e Y son v.a.i.i.d., uniformes en (-1, 1), ambas con densidad f (x) =1/2 en (-1, 1), entonces su densidad conjunta ser: f (x, y) = f (x)f (y) =1/4, en (0, 1) (0, 1). Si U1,U2 ~ U(0, 1), entonces X = 2U1 1 Y = 2U2 1 verifican X, Y ~ U(-1, 1).

3.1 Clculo de PI 1, = 0, Entonces: 4 + 1 . .

(11)

= + 1 =

(11)

3.2 Algoritmo (estructurado) para el clculo de PI Algoritmo 1. Para el clculo de PI.


PI 0; for i = 0 to n do Generar U,V ~ U(0, 1); X 2U - 1; Y 2V - 1; 2 2 if X + Y 1 then PI PI + 1 end end PI 4 * PI/n

Message Passing Interface MPI

MPI es una especificacin para una application programming interface (API) que permite a muchas computadoras comunicarse con alguna otra. Es usado en agrupaciones de computadoras llamadas clusters y supercomputadoras. MPI es un lenguaje independiente de protocolos de comunicacin, usado para programar computadoras en paralelo. Las metas de MPI son: alto performance, escalabilidad y portabilidad; es ampliamente aceptado por la Academia y la Industria [3]. La implementacin del lenguaje MPI es diferente de los lenguajes estructurados. Muchos desarrollos se combinan con C, C++ y lenguaje ensamblador. Se hace uso de MPI para llevar a cabo la paralelizacin del algoritmo para el clculo del valor de PI utilizando el mtodo Monte Carlo.

4.1 Programa (paralelizado) para el clculo de PI Programa 1. Para el clculo de PI.


/* Programa MPI que usa el metodo monte carlo para calcular el valor de PI */ #include <stdlib.h> #include <stdio.h> #include <math.h> #include <string.h> #include <mpi.h> #define USE_MPI double stream_id; int SEED; void genera(){ SEED=(rand() % 100000); srand(SEED); stream_id=(rand() % 100000000); stream_id=(stream_id / 100000000); } int main(int argc, char *argv[]) { int niter=0; double a,b; int i,j,count=0,mycount; /* # de puntos en el primer cuadrante de un circulo unitario */ double c; double pi; int myid,numprocs,proc; MPI_Status status; int master =0;

int tag = 123; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); if (argc <=1) { fprintf(stderr,"Utiliza: montecarlompi numero_iteraciones\n"); MPI_Finalize(); exit(-1); } sscanf(argv[1],"%d",&niter); /* primer argumento es el numero de iteraciones*/ mycount=0; for ( i=0; i<niter; i++) { genera(); a = (double)stream_id; genera(); b = (double)stream_id; c = a*a+b*b; if (c<=1){ mycount++; } } if (myid ==0) { /*proceso maestro, obtiene los resultados de otros*/ printf ("proceso maestro"); count = mycount; for (proc=1; proc<numprocs; proc++) { MPI_Recv(&mycount,1,MPI_REAL,proc,tag,MPI_COMM_WORLD,&status); count +=mycount; } pi=(double)count/(niter*numprocs)*4; printf("\n # de eventos= %d, el valor de pi es %2.12f\n",niter*numprocs,pi); } else { /* todos los proceso esclavos envian el resultado al maestro */ printf("Proceso %d enviando= %d al proceso maestro\n",myid,mycount); MPI_Send(&mycount,1,MPI_REAL,master,tag,MPI_COMM_WORLD); } MPI_Finalize(); /* termina el programa MPI */ return(0); }

Conclusiones

El programa paralelizado se codific y compil en el clster de tipo Beowulf del Centro de Innovacin y Desarrollo Tecnolgico en Cmputo (CIDETEC) del Instituto Politcnico Nacional como parte del aprendizaje en materia de Paralelizacin de Algoritmos en estudios de posgrado. En la figura 2 se aprecia el clculo aproximado del valor de PI, as como el tiempo que tarda en ejecutarse el programa con 10 nodos y 195 procesos.

Fig. 2. Clculo aproximado del valor de PI, para 10 nodos y 195 procesos.

Este tipo de aproximaciones no son del todo exactas, sin embargo verifica el hecho de paralelizar algoritmos.

Podemos apreciar en la figura 3, los valores que calcula el algoritmo para la variable c=a*a + b*b, para 1 nodo y 102 procesos enviados. Estos valores son resultado de elevar al cuadrado nmeros pseudoaleatorios que representan las muestras para el mtodo MonteCarlo.

Fig. 3. Clculo aproximado del valor de c=a*a + b*b

Los valores mayores que la unidad no son considerados por el mtodo para el clculo del valor de PI.

A continuacin se muestra la tabla 1, con diferentes pruebas realizadas, se aprecian los tiempos de procesamiento y se observan los resultados obtenidos en una grfica posteriormente.

Tabla 1. Tiempo de procesamiento para el clculo aproximado del valor de PI. Tiempo (seg) 0.519 0.520 0.524 0.519 0.598 0.675 0.696 0.724 0.888 Nmero de Nodos 1 1 1 5 5 10 10 10 10 Nmero de procesos 102 122 130 219 315 103 195 219 315 Valor aproximado 3.176470588235 3.245901639344 3.261538461538 3.141552511416 3.149206349206 3.184466019417 3.158974358974 3.141552511416 3.149206349206

En la grfica siguiente (figura 4) se aprecia que el tiempo no es muy distante para llevar a cabo el procesamiento con los diferentes valores de procesos (de la tabla anterior).

0.5 Tiempo (seg) 0 1 2 3 4 5 6 7 8 9 Tiempo (seg)

Fig. 4. Grfica que representa el tiempo consumido consumido para cada ejecucin del programa.

Se aprecia en la siguiente grfica (figura 5), que el clculo aproximado del valor de PI no varia considerablemente, considerablemente pero no es tan exacto como otros mtodos.

3.28 3.26 3.24 3.22 3.2 3.18 3.16 3.14 3.12 3.1 3.08 1 2 3 4 5 6 7 8 9

Valor aproximado

Fig. 5. Grfica que representa el clculo aproximado del valor de PI para cada ejecucin del programa.

Referencias
1. Salvad Artells, Maral: Facultat de Medicina i Cincies de la Salut Departament de Cincies Mdiques Bsiques. Desarrollo de un programa de simulacin basado en el mtodo de Montecarlo para el clculo de dosis con maniques divididos en voxels. Aplicaciones en tomografa computarizada. Tesis Doctoral, Reus 2004.
http://www.tesisenred.net/TESIS_URV/AVAILABLE/TDX-0307106-114909/Tesis_msalvado.pdf

2. Aguilera, Mara Eugenia: Universidad Santo Toms, Primer Claustro Universitario de Colombia. Estimacin de la tasa de favoritismo en la eleccin presidencial mediante el uso del estimador de Regresin Local Polinomial. Comunicaciones en Estadstica. Junio 2009, Vol. 2, No. 1. http://www.usta.edu.co/revista_estadistica/documents/vol2n1/2_Aguilera.pdf 3. Em Karniadakis, George and M. Kirby, Robert: Cambridge University. Parallel Scientific Computing in C++ and MPI. A seamless approach to parallel algorithms and their implementation. Cambridge University Press .