SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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
 

Tendances (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
 

Similaire à Paralela4

Similaire à 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
 

Plus 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
 

Dernier

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
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoJosDanielEstradaHern
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
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
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 

Dernier (20)

Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.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
 
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
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° grado
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 
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
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 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
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 

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