SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Programación y Computación
         paralela (4)
  Integración, Monte Carlo,
         Metropolis
         Glen D. Rodríguez R.
    Basado en material de J. Demmel




                                      1
Links
• Capítulo 4 del libro de Pacheco
• Ver http://www.old-
  npac.org/users/gcf/slitex/CPS615NI95/index.html
• Ver http://www.old-
  npac.org/projects/cps615spring00/presentations-
  html/cps615nic95/
• Ver http://www.old-
  npac.org/projects/cpsedu/summer98summary/examples/mpi-
  c/mpi-c.html




                                                           2
Integración
• Se puede integrar en n dimensiones, pero por ahora
  discutiremos sólo en una dimensión.
   • Para n mayor de 2, el método Monte Carlo y similares tiene
     muchas ventajas
• Se desea calcular la integral de la función f(x) de x=a
  hasta x=b
                      b
               I=
                  ∫a
                       f(x) dx

• Implícitamente se asume que f(x) es relativamente
  suave, se determina un conjunto de puntos de
  “interpolación” o de malla xi en la región a ≤ x ≤ b y se
  calcula la integral en término de los valores de f(x) y los
  puntos de la malla.
                                                                  3
Regla trapezoidal
            • Se asume que f)x= es “o constante o lineal” en un
              intervalo entre dos puntos
            • I = 0.5*(b-a)*(f(a)+f(b)), o si no (menos preciso)
            • I = (b-a)*f((a+b)/2)

    f(a)

                                      f(b)




0     X=a                         X=b                   x
                                                            4
Regla de Simpson
•   Se asume que f(x) es una función cuadrática
•   I = (b-a)*(f(a)+ 4f(xc)+f(b))/6




                                        f(Xc)


      f(a)                                          f(b)




             X=a           xc = (a+ b)/2          X=b      x5
Reglas iterativas
      • Hay ciertas reglas (Newton-Cotes y Gaussiana) que
        hacer aproximaciones de mayor orden de f(x)
          • Son difíciles de programar y no muy “robustas” (funcionan mal
            si f(x) varía muy rápido de forma no polinomial)
      • En la práctica se usa Simpson o Trapezoidal iterativo –
        Uar un número impar de puntos para aplicar simpson
        de forma iterativa

     ej.: Aplicar Simpson sobre cada uno de los 18 sub intervalos indiados por
     Las flechas abajo. Trapezoidal iterativo involucraría 36 integrales



x0        x4       x8       x12      x16      x20      x24      x28      x32         x36




                                                                                 6
Método Monte Carlo
    • El Monte Carlo más sencillo escoje puntos al azar
    • La Integral es la suma de los valores de la función f(xRandom-i) en
      los valores escogidos al azar xRandom-i multiplicados por el intervalo
      de integración (b-a) y dividido por el número depuntos generados.
    • Esta da un método robusto (y sin preferencias) que es fácil de
      usar en integrales de n-dimensiones o integrales de funciones
      problemáticas
    • Se puede adaptar en límites complicados
        • Se integra sobre regiones más grandes de lo necesario
        • Se define f(x) =0 fuera del intervalo [a b]




a                                                   b




                                                                          7
Hallar pi por integración con Monte Carlo
Otra forma de Monte Carlo: g(x,y) es un punto aleatorio en R2.
Ambas son equivalentes




                                                             8
x2 + y2 =1
     y                                            N= total de puntos
                                                  (cruces y equis)
                                                  n= puntos dentro
                                                  de la integral (cruces)
     1                                x           A= área de la simulación
                       x        x
         +         +                              (área amarilla) = 1
                                x x
               +        +
             + +                      x
                                +      x      Integral ≈ A(n / N)
                       +
             +
                   +                + +
              +             +
                                          1   x


Puntos al azar (x,y), donde x e y tienen distribución uniforme
                                                                      9
Errores
•   Para una integral con N puntos
•   Monte Carlo tiene un error del orden de 1/N0.5
•   Trapezoidal iterativo : 1/N2
•   Simpson iterativo: 1/N4
•   Pero en d dimensiones, todos menos el Monte Carlo
    deben usar una malla de N1/d puntos por lado; no
    funciona bien para N>3
     • Monte Carlo aún tiene error 1/N0.5
     • Error de Simpson es 1/N4/d
• Cuando usar Montecarlo? Cuando error de Montecarlo
  es menor que error de Simpson para los mismos N
  puntos? 1/N0.5 < 1/N4/d   0.5>4/d , o sea d>8



                                                        10
Trapezoidal Iterativo y Simpson iterativo
• Trapezoidal: Si tenemos N puntos N xi con

  I= (b-a) (f(x0)+2f(x1)+2f(x2)+ ……
  +2f(x(N-2))+f(x(N-1))/(2(N-1))

• O con Simpson:

  I= (b-a) (f(x0)+4f(x1)+2f(x2)+ ……
  +4f(x(N-2))+f(x(N-1))/(3(N-1))

• Se suman los f(xi) con diferentes pesos
• Note que ambos aproximan su cálculo en una región
  tamaño (b-a)/(N-1) (el doble de eso para Simpson) que
  tiende a cero si N es grande, así que la aprox. Es mejor
  si N se agranda.

                                                       11
Las funciones de peso
• Se suman varios wi f(xi) y las diferentes reglas sólo con
  diferentes wi
• Trapezoidal: para índices = 0, 1, 2, 3, ..., N-1
  Se usa el patrón
  wi ∝ 1, 2, 2, … 2, 2, 1
• Para los mismos índices, Simpson con N impar tieneel
  patrón
  wi ∝ 1, 2, 4, 2, 4, … 2, 4, 2, 4, 1




                                                        12
Computación paralela


                    0                        1                  2                      3



    x0            x4            x8         x12     x16        x20         x24         x28            x32
•    Diferentes procesadores calculan independientemente diferentes puntos en la
     integral y luego se suman los resultados de cada procesador
•    Lo más natural es el escenario de la figura de arriba, con cada procesador
     calculando una integral sobre una subregión
         •   x0 al x8 en proc. 0 … x24 to x32 en proc. 3 etc.
         •   La integral total es la suma de las sub-integrales calculadas en cada procesador
•    Pero podría asignarse PUNTOS y no REGIONES a los procesadores
         •   x0 x4 x8 .. x32 al proc. 0
         •   x3 x7 x11 .. x31 al proc. 3




                                                                                                13
Integración con reglas y Paralelismo

• Es un ejemplo clásico de “master worker” donde los
  procesadores individuales calculan arte de la integral.
• Se necesita usar “MPI rank” para determinar quien se
  encarga de cada rango de la integración
• Luego se suma la contribución de cada procesador
   • Suma global acumulativa (uno tras otro), por árbol o por
     reducción al “master”.




                                                                14
Ejemplo 2: Monte Carlo con dist.uniforme
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include "mpi.h"

int main(int argc, char *argv[])
{
  int nprocs, myproc;
  int i, n, acum, sum_acum;
  double pi_25= 3.141592653589793238462643;
  double pi, w, x, y, error;
  double t0, t1;

   /* MPI initialization */
 MPI_Init( &argc, &argv );
 MPI_Comm_size( MPI_COMM_WORLD, &nprocs );
 MPI_Comm_rank( MPI_COMM_WORLD, &myproc );

     /* Determine the number of divisions to use */
 if( argc == 2 ) {    /* Take n from the command line argument */
    sscanf( argv[1], "%d", &n );
 } else {

     if (myproc == 0)
     {
     printf("Enter the number of random points: (0 quits) ");fflush(stdout);
     scanf("%d",&n);
     }                                                                         15
 }
Sigue….
if( myproc == 0 ) printf("Calculating pi using %d pointsn", n);

    MPI_Bcast( &n, 1, MPI_INT, 0, MPI_COMM_WORLD); /* ??? Is this needed ??? */
       /* Start the timer after a barrier command */
    MPI_Barrier( MPI_COMM_WORLD );
    t0 = MPI_Wtime();

    pi = 0.0;
    sum_acum=0;
    acum=0;
    srand( (unsigned)time( NULL )+myproc );
    w = 1.0 / n;
    for( i=myproc; i<n; i+=nprocs ) {
      x = (double) rand()/RAND_MAX;
      y = (double) rand()/RAND_MAX;
      if (((x*x)+(y*y)) <= 1.0) {acum=acum+1;}
    }

    MPI_Allreduce( &acum, &sum_acum, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD );
    pi= ((double) sum_acum)/(double) n;
    pi = pi*4;
    error = fabs( pi - pi_25 );

    t1 = MPI_Wtime();
    if( myproc == 0 ) {
       printf("The calculated pi = %f (error = %f)n", pi, error);
       printf("The calculation took %f seconds on %d nodesn", t1-t0, nprocs);
    }
    MPI_Finalize();                                                               16
}
Cómo mejorar la precisión de Monte Carlo
• Error absoluto de regla rectangular (peor que
  trapezoidal), usando 10000 intervalos = 0.000199
• Error absoluto de regla trapezoidal usando 10000
  intervalos = 0.000001
• Error absoluto promedio de Monte Carlo usando 10000
  puntos y 10 simulaciones = 0.013521
• Como mejorar: no usar distribución uniforme. Se
  necesita una "guía" al muestreo aleatorio que enfatiza el
  muestreo donde la función es grande o varia
  rápidamente.
• Ver ejemplo
• En ese caso, el error absoluto promedio de Monte Carlo
  usando 10000 puntos y 10 simulaciones = 0.006479

                                                        17
x2 + y2 =1
       y                                                N= total de puntos
                                                        (cruces y equis)
                                                        n= puntos dentro
                                                        de la integral (cruces)
        1                                               A= área de la simulación
                              x
            +         +                                 (área amarilla)= 0.857
                                      x

                + +        +
                  +
                                          +     x       Integral ≈ ????
                          +
                +
                      +                       + +
                 +                +
                                                1   x


Puntos al azar (x,y), donde x, y no tienen dist. uniforme
                                                                           18
Muestreo por importancia
• Quiero integrar en 1-D



• Se mete la función peso w




• Que debe satisfacer




• Cambiando la variable, con dy = w(x) dx, y(0) = 0, and y(1) = 1.




                                                                     19
Muestreo por importancia
• Eso nos da




• La función w se escoge de tal forma que f/w sea cercana a una
  constante. El muestreo uniforme en y se modifica (vuelve no
  uniforme) al ser afectado por w. O dicho de otra forma, la integral
  anterior es equivalente a la inicial, pero transformada por el cambio
  de variable en una función con menos variaciones.




                                                                    20
Programa Ejemplo 3
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include "mpi.h"

int main(int argc, char *argv[])
{
  int nprocs, myproc;
  int i, n;
  double pi_25= 3.141592653589793238462643;
  double pi, w, x, y, error, acum, sum_acum;
  double t0, t1;

   /* MPI initialization */
 MPI_Init( &argc, &argv );
 MPI_Comm_size( MPI_COMM_WORLD, &nprocs );
 MPI_Comm_rank( MPI_COMM_WORLD, &myproc );

     /* Determine the number of divisions to use */
 if( argc == 2 ) {     /* Take n from the command line argument */
    sscanf( argv[1], "%d", &n );
 } else {
     if (myproc == 0)
     {
      printf("Enter the number of random points: (0 quits) ");fflush(stdout);
      scanf("%d",&n);
     }                                                                          21
 }
Sigue…
if( myproc == 0 ) printf("Calculating pi using %d pointsn", n);
     /* Broadcast the number of divisions to all nodes */

 MPI_Bcast( &n, 1, MPI_INT, 0, MPI_COMM_WORLD); /* ??? Is this

needed ??? */
     /* Start the timer after a barrier command */
  MPI_Barrier( MPI_COMM_WORLD );
  t0 = MPI_Wtime();

pi = 0.0;
 sum_acum=0.0;
 acum=0.0;
 srand( (unsigned)time( NULL )+myproc );
 w = 1.0 / n;
     /* Each processor starts at a different value and computes its
      * own contributions to pi. */




                                                                      22
Sigue…
for( i=myproc; i<n; i+=nprocs ) {
     x = (double) rand()/RAND_MAX;
     y = (double) rand()/RAND_MAX;
     if ((x>0.5) && (x<=0.8) && (y<=1.5-x) && (((x*x)+(y*y)) <= 1.0)) acum=acum+0.857;
     if ((x>0.5) && (x<=0.8) && (y>1.5-x)) i=i-nprocs;
     if ((x>0.8) && (y<=1.77-1.4*x) && (((x*x)+(y*y)) <= 1.0)) acum=acum+0.857;
     if ((x>0.8) && (y>1.77-1.4*x)) i=i-nprocs;
     if ( (x<=0.5) && (((x*x)+(y*y)) <= 1.0) ) acum=acum+0.857;
  }

 MPI_Allreduce( &acum, &sum_acum, 1, MPI_DOUBLE, MPI_SUM,

MPI_COMM_WORLD );

 pi= ((double) sum_acum)/(double) n;
 pi = pi*4;
 error = fabs( pi - pi_25 );

 t1 = MPI_Wtime();
 if( myproc == 0 ) {
    printf("The calculated pi = %f (error = %f)n", pi, error);
    printf("The calculation took %f seconds on %d nodesn", t1-t0,

nprocs);
  }
  MPI_Finalize();
}
                                                                                         23
Paradigmas de Monte Carlo paralelo
• Master-worker: se genera los números
  aleatorios en el nodo 0 y se pasan a los demás.
  Todos los nodos computan.




                                               24
Paradigmas de Monte Carlo paralelo
• Cliente-servidor: es un servidor de números
  aleatorios, no procesa, sólo crea y envía los
  randoms




                                                  25
Paradigmas de Monte Carlo paralelo
• Full workers: cada nodo genera sus propios
  números aleatorios. El nodo 0 sólo cuida que
  se siembren diferentes semillas o que se use la
  misma semilla pero diferentes rangos.




                                               26
Resolviendo Ec. de Poisson con Montecarlo
• Sea la ecuación de Poisson:



• Con fuente sinusoidal : -2π2 sen(π x) sen(π y)
• Y cero en todas las fronteras
• En diferencias finitas:




                                                   27
Solución con “random walks”
• De un punto (i,j) comenzar el “random walk”.La
  probabilidad de moverse a cualquiera de los 4
  puntos vecinos es ¼.
• Generar un número aleatorio para escoger el
  vecino.
• Añadir g(x,y) en la nueva posición
• Repetir hasta llegar a una frontera
• Esto fue solo UNA “random walk”
• Después de N “random walks” el estimado de
  u(i,j) es:


                                               28
Paralelización de esta solución
• Hacer el siguiente proceso para todos los puntos
• Comenzar en una frontera
   •   De afuera hacia adentro
   •   Fila por fila
   •   Actualizar (intercambiar) data en el límite entre procesadores
   •   Actualizar el walk dentro de los puntos de un procesador
   •   Si el walk sale de un procesador, informarle al otro procesador




                                                                   29
Metrópolis
•  Se usa para integrales con funciones de peso.
•  Genera un random walk pero guiado por una función
   de peso w(x). Ejemplo en 2-D comenzando de un
   punto (xi,yi):
1. Escoger δ, el step size
2. Generar dos aleatorios R1, R2 uniformes en el rango
   [-1,1]
3. El nuevo punto será
     1. xTi+1 = xi + δR1
     2. yTi+1 = yi + δR2
4. Evaluar el ratio de w en el punto actual vs. el punto
   anterior
     1. r= w(xTi+1 ,yTi+1) / w(xi,yi)

                                                           30
Metrópolis
5. Si r>1 aceptar el nuevo punto y regresar a (2)
   1. xi+1 = xTi+1 ; yi+1 = yTi+1
6. Si r<1 aceptar el nuevo punto con probabilidad r. O
   sea, generar un aleatorio uniforme η en [0, 1] y
   aceptar el punto solo si r>η (hacer lo mismo que en el
   paso 5)
7. Caso contrario, rechazar el nuevo punto y volver a (2)

El step size no debe ser ni muy chico ni muy grande.
Los puntos obtenidos se usan luego para integrar, como
    en MonteCarlo (Algo*n/N).
La paralelización es similar a la discutida para las otras
    integrales con Montecarlo
                                                         31

Mais conteúdo relacionado

Mais procurados

Análisis de complejidad introducción notación big o
Análisis de complejidad   introducción notación big oAnálisis de complejidad   introducción notación big o
Análisis de complejidad introducción notación big oUVM
 
4 la derivada por formulas
4 la derivada por formulas4 la derivada por formulas
4 la derivada por formulasJesus Gil
 
Tema 2 eficiencia_y_complejidad_grupo_21
Tema 2 eficiencia_y_complejidad_grupo_21Tema 2 eficiencia_y_complejidad_grupo_21
Tema 2 eficiencia_y_complejidad_grupo_21Carlos A. Iglesias
 
Metodos de integracion
Metodos de integracionMetodos de integracion
Metodos de integracionROAD TRACK
 
Convolucion Tiempo Discreto
Convolucion Tiempo DiscretoConvolucion Tiempo Discreto
Convolucion Tiempo Discretoguest1e528d
 
Ejercicios resueltos 2011
Ejercicios resueltos 2011Ejercicios resueltos 2011
Ejercicios resueltos 2011Deyvid Atens
 
Lab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECSLab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECSIng. Electrónica xD
 
Lab 02 - Análisis de señales - UNTECS
Lab 02 - Análisis de señales - UNTECSLab 02 - Análisis de señales - UNTECS
Lab 02 - Análisis de señales - UNTECSIng. Electrónica xD
 
Lab 07 - Analisis de señales - UNTECS
Lab 07 - Analisis de señales - UNTECSLab 07 - Analisis de señales - UNTECS
Lab 07 - Analisis de señales - UNTECSIng. Electrónica xD
 
Zoom de una imagen
Zoom de una imagenZoom de una imagen
Zoom de una imagenlmarchenac01
 
La Integral Definida
La Integral DefinidaLa Integral Definida
La Integral DefinidaERICK CONDE
 
Intro parte3
Intro parte3Intro parte3
Intro parte3UNEFA
 
Lab 03 - Análisis de Señales - UNTECS
Lab 03 - Análisis de Señales - UNTECSLab 03 - Análisis de Señales - UNTECS
Lab 03 - Análisis de Señales - UNTECSIng. Electrónica xD
 
Lab 04 - Analisis de Señales - UNTECS
Lab 04 - Analisis de Señales - UNTECSLab 04 - Analisis de Señales - UNTECS
Lab 04 - Analisis de Señales - UNTECSIng. Electrónica xD
 
Gráfica, curvas de nivel, límites
Gráfica, curvas de nivel, límitesGráfica, curvas de nivel, límites
Gráfica, curvas de nivel, límitesJIE MA ZHOU
 

Mais procurados (20)

Análisis de complejidad introducción notación big o
Análisis de complejidad   introducción notación big oAnálisis de complejidad   introducción notación big o
Análisis de complejidad introducción notación big o
 
Integrales inmediatas
Integrales inmediatasIntegrales inmediatas
Integrales inmediatas
 
4 la derivada por formulas
4 la derivada por formulas4 la derivada por formulas
4 la derivada por formulas
 
Tema 2 eficiencia_y_complejidad_grupo_21
Tema 2 eficiencia_y_complejidad_grupo_21Tema 2 eficiencia_y_complejidad_grupo_21
Tema 2 eficiencia_y_complejidad_grupo_21
 
Metodos de integracion
Metodos de integracionMetodos de integracion
Metodos de integracion
 
Convolucion Tiempo Discreto
Convolucion Tiempo DiscretoConvolucion Tiempo Discreto
Convolucion Tiempo Discreto
 
Ejercicios resueltos 2011
Ejercicios resueltos 2011Ejercicios resueltos 2011
Ejercicios resueltos 2011
 
Lab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECSLab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECS
 
Lab 02 - Análisis de señales - UNTECS
Lab 02 - Análisis de señales - UNTECSLab 02 - Análisis de señales - UNTECS
Lab 02 - Análisis de señales - UNTECS
 
Parte2
Parte2Parte2
Parte2
 
Lab 07 - Analisis de señales - UNTECS
Lab 07 - Analisis de señales - UNTECSLab 07 - Analisis de señales - UNTECS
Lab 07 - Analisis de señales - UNTECS
 
Control N5 Calculo I Iam2009 ..Pauta
Control N5 Calculo I Iam2009 ..PautaControl N5 Calculo I Iam2009 ..Pauta
Control N5 Calculo I Iam2009 ..Pauta
 
Zoom de una imagen
Zoom de una imagenZoom de una imagen
Zoom de una imagen
 
La Integral Definida
La Integral DefinidaLa Integral Definida
La Integral Definida
 
Intro parte3
Intro parte3Intro parte3
Intro parte3
 
Lab 03 - Análisis de Señales - UNTECS
Lab 03 - Análisis de Señales - UNTECSLab 03 - Análisis de Señales - UNTECS
Lab 03 - Análisis de Señales - UNTECS
 
Lab 04 - Analisis de Señales - UNTECS
Lab 04 - Analisis de Señales - UNTECSLab 04 - Analisis de Señales - UNTECS
Lab 04 - Analisis de Señales - UNTECS
 
Gráfica, curvas de nivel, límites
Gráfica, curvas de nivel, límitesGráfica, curvas de nivel, límites
Gráfica, curvas de nivel, límites
 
Series de fourier
Series de fourierSeries de fourier
Series de fourier
 
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICADERIVACIÓN E INTEGRACIÓN NUMÉRICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
 

Semelhante a Paralela4

Semelhante a Paralela4 (20)

Ca 3
Ca 3Ca 3
Ca 3
 
Segunda tarea sorpresa_seg_per_2012-13
Segunda tarea sorpresa_seg_per_2012-13Segunda tarea sorpresa_seg_per_2012-13
Segunda tarea sorpresa_seg_per_2012-13
 
clase modelo derivada de funciones reales RAUL BEJAR.pptx
clase modelo derivada de funciones reales RAUL BEJAR.pptxclase modelo derivada de funciones reales RAUL BEJAR.pptx
clase modelo derivada de funciones reales RAUL BEJAR.pptx
 
Mat 350 ejemplos integracion
Mat 350  ejemplos  integracionMat 350  ejemplos  integracion
Mat 350 ejemplos integracion
 
No lineal
No linealNo lineal
No lineal
 
Matlab2009b -clase2
Matlab2009b  -clase2Matlab2009b  -clase2
Matlab2009b -clase2
 
Cálculo Integral
Cálculo IntegralCálculo Integral
Cálculo Integral
 
Integracion
IntegracionIntegracion
Integracion
 
Suma de funciones
Suma de funcionesSuma de funciones
Suma de funciones
 
Metodos iterativos
Metodos iterativosMetodos iterativos
Metodos iterativos
 
Sistemas Difusos
Sistemas DifusosSistemas Difusos
Sistemas Difusos
 
Metodosbiseccionyfalsaposicion
MetodosbiseccionyfalsaposicionMetodosbiseccionyfalsaposicion
Metodosbiseccionyfalsaposicion
 
Montecarlo
MontecarloMontecarlo
Montecarlo
 
Guia 3 2_s_2015
Guia 3 2_s_2015Guia 3 2_s_2015
Guia 3 2_s_2015
 
Mat lab03
Mat lab03Mat lab03
Mat lab03
 
Alea 0506 resumen-----simulacion
Alea 0506 resumen-----simulacionAlea 0506 resumen-----simulacion
Alea 0506 resumen-----simulacion
 
Teoria funciones polinomicas
Teoria funciones polinomicasTeoria funciones polinomicas
Teoria funciones polinomicas
 
La Integral Indefinida
La  Integral IndefinidaLa  Integral Indefinida
La Integral Indefinida
 
Intsimpson
IntsimpsonIntsimpson
Intsimpson
 
Cap1
Cap1Cap1
Cap1
 

Mais de Abraham Zamudio (8)

Clase4_Python-CTIC
Clase4_Python-CTICClase4_Python-CTIC
Clase4_Python-CTIC
 
Clase5_Python-CTIC
Clase5_Python-CTICClase5_Python-CTIC
Clase5_Python-CTIC
 
Clase3_Python-CTIC
Clase3_Python-CTICClase3_Python-CTIC
Clase3_Python-CTIC
 
Clase2_Python-CTIC
Clase2_Python-CTICClase2_Python-CTIC
Clase2_Python-CTIC
 
Clase1_Python-CTIC
Clase1_Python-CTICClase1_Python-CTIC
Clase1_Python-CTIC
 
Paralela10
Paralela10Paralela10
Paralela10
 
Paralela9
Paralela9Paralela9
Paralela9
 
Paralela2
Paralela2Paralela2
Paralela2
 

Último

Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 

Último (20)

Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 

Paralela4

  • 1. Programación y Computación paralela (4) Integración, Monte Carlo, Metropolis Glen D. Rodríguez R. Basado en material de J. Demmel 1
  • 2. Links • Capítulo 4 del libro de Pacheco • Ver http://www.old- npac.org/users/gcf/slitex/CPS615NI95/index.html • Ver http://www.old- npac.org/projects/cps615spring00/presentations- html/cps615nic95/ • Ver http://www.old- npac.org/projects/cpsedu/summer98summary/examples/mpi- c/mpi-c.html 2
  • 3. Integración • Se puede integrar en n dimensiones, pero por ahora discutiremos sólo en una dimensión. • Para n mayor de 2, el método Monte Carlo y similares tiene muchas ventajas • Se desea calcular la integral de la función f(x) de x=a hasta x=b b I= ∫a f(x) dx • Implícitamente se asume que f(x) es relativamente suave, se determina un conjunto de puntos de “interpolación” o de malla xi en la región a ≤ x ≤ b y se calcula la integral en término de los valores de f(x) y los puntos de la malla. 3
  • 4. Regla trapezoidal • Se asume que f)x= es “o constante o lineal” en un intervalo entre dos puntos • I = 0.5*(b-a)*(f(a)+f(b)), o si no (menos preciso) • I = (b-a)*f((a+b)/2) f(a) f(b) 0 X=a X=b x 4
  • 5. Regla de Simpson • Se asume que f(x) es una función cuadrática • I = (b-a)*(f(a)+ 4f(xc)+f(b))/6 f(Xc) f(a) f(b) X=a xc = (a+ b)/2 X=b x5
  • 6. Reglas iterativas • Hay ciertas reglas (Newton-Cotes y Gaussiana) que hacer aproximaciones de mayor orden de f(x) • Son difíciles de programar y no muy “robustas” (funcionan mal si f(x) varía muy rápido de forma no polinomial) • En la práctica se usa Simpson o Trapezoidal iterativo – Uar un número impar de puntos para aplicar simpson de forma iterativa ej.: Aplicar Simpson sobre cada uno de los 18 sub intervalos indiados por Las flechas abajo. Trapezoidal iterativo involucraría 36 integrales x0 x4 x8 x12 x16 x20 x24 x28 x32 x36 6
  • 7. Método Monte Carlo • El Monte Carlo más sencillo escoje puntos al azar • La Integral es la suma de los valores de la función f(xRandom-i) en los valores escogidos al azar xRandom-i multiplicados por el intervalo de integración (b-a) y dividido por el número depuntos generados. • Esta da un método robusto (y sin preferencias) que es fácil de usar en integrales de n-dimensiones o integrales de funciones problemáticas • Se puede adaptar en límites complicados • Se integra sobre regiones más grandes de lo necesario • Se define f(x) =0 fuera del intervalo [a b] a b 7
  • 8. Hallar pi por integración con Monte Carlo Otra forma de Monte Carlo: g(x,y) es un punto aleatorio en R2. Ambas son equivalentes 8
  • 9. x2 + y2 =1 y N= total de puntos (cruces y equis) n= puntos dentro de la integral (cruces) 1 x A= área de la simulación x x + + (área amarilla) = 1 x x + + + + x + x Integral ≈ A(n / N) + + + + + + + 1 x Puntos al azar (x,y), donde x e y tienen distribución uniforme 9
  • 10. Errores • Para una integral con N puntos • Monte Carlo tiene un error del orden de 1/N0.5 • Trapezoidal iterativo : 1/N2 • Simpson iterativo: 1/N4 • Pero en d dimensiones, todos menos el Monte Carlo deben usar una malla de N1/d puntos por lado; no funciona bien para N>3 • Monte Carlo aún tiene error 1/N0.5 • Error de Simpson es 1/N4/d • Cuando usar Montecarlo? Cuando error de Montecarlo es menor que error de Simpson para los mismos N puntos? 1/N0.5 < 1/N4/d 0.5>4/d , o sea d>8 10
  • 11. Trapezoidal Iterativo y Simpson iterativo • Trapezoidal: Si tenemos N puntos N xi con I= (b-a) (f(x0)+2f(x1)+2f(x2)+ …… +2f(x(N-2))+f(x(N-1))/(2(N-1)) • O con Simpson: I= (b-a) (f(x0)+4f(x1)+2f(x2)+ …… +4f(x(N-2))+f(x(N-1))/(3(N-1)) • Se suman los f(xi) con diferentes pesos • Note que ambos aproximan su cálculo en una región tamaño (b-a)/(N-1) (el doble de eso para Simpson) que tiende a cero si N es grande, así que la aprox. Es mejor si N se agranda. 11
  • 12. Las funciones de peso • Se suman varios wi f(xi) y las diferentes reglas sólo con diferentes wi • Trapezoidal: para índices = 0, 1, 2, 3, ..., N-1 Se usa el patrón wi ∝ 1, 2, 2, … 2, 2, 1 • Para los mismos índices, Simpson con N impar tieneel patrón wi ∝ 1, 2, 4, 2, 4, … 2, 4, 2, 4, 1 12
  • 13. Computación paralela 0 1 2 3 x0 x4 x8 x12 x16 x20 x24 x28 x32 • Diferentes procesadores calculan independientemente diferentes puntos en la integral y luego se suman los resultados de cada procesador • Lo más natural es el escenario de la figura de arriba, con cada procesador calculando una integral sobre una subregión • x0 al x8 en proc. 0 … x24 to x32 en proc. 3 etc. • La integral total es la suma de las sub-integrales calculadas en cada procesador • Pero podría asignarse PUNTOS y no REGIONES a los procesadores • x0 x4 x8 .. x32 al proc. 0 • x3 x7 x11 .. x31 al proc. 3 13
  • 14. Integración con reglas y Paralelismo • Es un ejemplo clásico de “master worker” donde los procesadores individuales calculan arte de la integral. • Se necesita usar “MPI rank” para determinar quien se encarga de cada rango de la integración • Luego se suma la contribución de cada procesador • Suma global acumulativa (uno tras otro), por árbol o por reducción al “master”. 14
  • 15. Ejemplo 2: Monte Carlo con dist.uniforme #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #include "mpi.h" int main(int argc, char *argv[]) { int nprocs, myproc; int i, n, acum, sum_acum; double pi_25= 3.141592653589793238462643; double pi, w, x, y, error; double t0, t1; /* MPI initialization */ MPI_Init( &argc, &argv ); MPI_Comm_size( MPI_COMM_WORLD, &nprocs ); MPI_Comm_rank( MPI_COMM_WORLD, &myproc ); /* Determine the number of divisions to use */ if( argc == 2 ) { /* Take n from the command line argument */ sscanf( argv[1], "%d", &n ); } else { if (myproc == 0) { printf("Enter the number of random points: (0 quits) ");fflush(stdout); scanf("%d",&n); } 15 }
  • 16. Sigue…. if( myproc == 0 ) printf("Calculating pi using %d pointsn", n); MPI_Bcast( &n, 1, MPI_INT, 0, MPI_COMM_WORLD); /* ??? Is this needed ??? */ /* Start the timer after a barrier command */ MPI_Barrier( MPI_COMM_WORLD ); t0 = MPI_Wtime(); pi = 0.0; sum_acum=0; acum=0; srand( (unsigned)time( NULL )+myproc ); w = 1.0 / n; for( i=myproc; i<n; i+=nprocs ) { x = (double) rand()/RAND_MAX; y = (double) rand()/RAND_MAX; if (((x*x)+(y*y)) <= 1.0) {acum=acum+1;} } MPI_Allreduce( &acum, &sum_acum, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD ); pi= ((double) sum_acum)/(double) n; pi = pi*4; error = fabs( pi - pi_25 ); t1 = MPI_Wtime(); if( myproc == 0 ) { printf("The calculated pi = %f (error = %f)n", pi, error); printf("The calculation took %f seconds on %d nodesn", t1-t0, nprocs); } MPI_Finalize(); 16 }
  • 17. Cómo mejorar la precisión de Monte Carlo • Error absoluto de regla rectangular (peor que trapezoidal), usando 10000 intervalos = 0.000199 • Error absoluto de regla trapezoidal usando 10000 intervalos = 0.000001 • Error absoluto promedio de Monte Carlo usando 10000 puntos y 10 simulaciones = 0.013521 • Como mejorar: no usar distribución uniforme. Se necesita una "guía" al muestreo aleatorio que enfatiza el muestreo donde la función es grande o varia rápidamente. • Ver ejemplo • En ese caso, el error absoluto promedio de Monte Carlo usando 10000 puntos y 10 simulaciones = 0.006479 17
  • 18. x2 + y2 =1 y N= total de puntos (cruces y equis) n= puntos dentro de la integral (cruces) 1 A= área de la simulación x + + (área amarilla)= 0.857 x + + + + + x Integral ≈ ???? + + + + + + + 1 x Puntos al azar (x,y), donde x, y no tienen dist. uniforme 18
  • 19. Muestreo por importancia • Quiero integrar en 1-D • Se mete la función peso w • Que debe satisfacer • Cambiando la variable, con dy = w(x) dx, y(0) = 0, and y(1) = 1. 19
  • 20. Muestreo por importancia • Eso nos da • La función w se escoge de tal forma que f/w sea cercana a una constante. El muestreo uniforme en y se modifica (vuelve no uniforme) al ser afectado por w. O dicho de otra forma, la integral anterior es equivalente a la inicial, pero transformada por el cambio de variable en una función con menos variaciones. 20
  • 21. Programa Ejemplo 3 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #include "mpi.h" int main(int argc, char *argv[]) { int nprocs, myproc; int i, n; double pi_25= 3.141592653589793238462643; double pi, w, x, y, error, acum, sum_acum; double t0, t1; /* MPI initialization */ MPI_Init( &argc, &argv ); MPI_Comm_size( MPI_COMM_WORLD, &nprocs ); MPI_Comm_rank( MPI_COMM_WORLD, &myproc ); /* Determine the number of divisions to use */ if( argc == 2 ) { /* Take n from the command line argument */ sscanf( argv[1], "%d", &n ); } else { if (myproc == 0) { printf("Enter the number of random points: (0 quits) ");fflush(stdout); scanf("%d",&n); } 21 }
  • 22. Sigue… if( myproc == 0 ) printf("Calculating pi using %d pointsn", n); /* Broadcast the number of divisions to all nodes */ MPI_Bcast( &n, 1, MPI_INT, 0, MPI_COMM_WORLD); /* ??? Is this needed ??? */ /* Start the timer after a barrier command */ MPI_Barrier( MPI_COMM_WORLD ); t0 = MPI_Wtime(); pi = 0.0; sum_acum=0.0; acum=0.0; srand( (unsigned)time( NULL )+myproc ); w = 1.0 / n; /* Each processor starts at a different value and computes its * own contributions to pi. */ 22
  • 23. Sigue… for( i=myproc; i<n; i+=nprocs ) { x = (double) rand()/RAND_MAX; y = (double) rand()/RAND_MAX; if ((x>0.5) && (x<=0.8) && (y<=1.5-x) && (((x*x)+(y*y)) <= 1.0)) acum=acum+0.857; if ((x>0.5) && (x<=0.8) && (y>1.5-x)) i=i-nprocs; if ((x>0.8) && (y<=1.77-1.4*x) && (((x*x)+(y*y)) <= 1.0)) acum=acum+0.857; if ((x>0.8) && (y>1.77-1.4*x)) i=i-nprocs; if ( (x<=0.5) && (((x*x)+(y*y)) <= 1.0) ) acum=acum+0.857; } MPI_Allreduce( &acum, &sum_acum, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD ); pi= ((double) sum_acum)/(double) n; pi = pi*4; error = fabs( pi - pi_25 ); t1 = MPI_Wtime(); if( myproc == 0 ) { printf("The calculated pi = %f (error = %f)n", pi, error); printf("The calculation took %f seconds on %d nodesn", t1-t0, nprocs); } MPI_Finalize(); } 23
  • 24. Paradigmas de Monte Carlo paralelo • Master-worker: se genera los números aleatorios en el nodo 0 y se pasan a los demás. Todos los nodos computan. 24
  • 25. Paradigmas de Monte Carlo paralelo • Cliente-servidor: es un servidor de números aleatorios, no procesa, sólo crea y envía los randoms 25
  • 26. Paradigmas de Monte Carlo paralelo • Full workers: cada nodo genera sus propios números aleatorios. El nodo 0 sólo cuida que se siembren diferentes semillas o que se use la misma semilla pero diferentes rangos. 26
  • 27. Resolviendo Ec. de Poisson con Montecarlo • Sea la ecuación de Poisson: • Con fuente sinusoidal : -2π2 sen(π x) sen(π y) • Y cero en todas las fronteras • En diferencias finitas: 27
  • 28. Solución con “random walks” • De un punto (i,j) comenzar el “random walk”.La probabilidad de moverse a cualquiera de los 4 puntos vecinos es ¼. • Generar un número aleatorio para escoger el vecino. • Añadir g(x,y) en la nueva posición • Repetir hasta llegar a una frontera • Esto fue solo UNA “random walk” • Después de N “random walks” el estimado de u(i,j) es: 28
  • 29. Paralelización de esta solución • Hacer el siguiente proceso para todos los puntos • Comenzar en una frontera • De afuera hacia adentro • Fila por fila • Actualizar (intercambiar) data en el límite entre procesadores • Actualizar el walk dentro de los puntos de un procesador • Si el walk sale de un procesador, informarle al otro procesador 29
  • 30. Metrópolis • Se usa para integrales con funciones de peso. • Genera un random walk pero guiado por una función de peso w(x). Ejemplo en 2-D comenzando de un punto (xi,yi): 1. Escoger δ, el step size 2. Generar dos aleatorios R1, R2 uniformes en el rango [-1,1] 3. El nuevo punto será 1. xTi+1 = xi + δR1 2. yTi+1 = yi + δR2 4. Evaluar el ratio de w en el punto actual vs. el punto anterior 1. r= w(xTi+1 ,yTi+1) / w(xi,yi) 30
  • 31. Metrópolis 5. Si r>1 aceptar el nuevo punto y regresar a (2) 1. xi+1 = xTi+1 ; yi+1 = yTi+1 6. Si r<1 aceptar el nuevo punto con probabilidad r. O sea, generar un aleatorio uniforme η en [0, 1] y aceptar el punto solo si r>η (hacer lo mismo que en el paso 5) 7. Caso contrario, rechazar el nuevo punto y volver a (2) El step size no debe ser ni muy chico ni muy grande. Los puntos obtenidos se usan luego para integrar, como en MonteCarlo (Algo*n/N). La paralelización es similar a la discutida para las otras integrales con Montecarlo 31