Giter VIP home page Giter VIP logo

mpi-pi's Introduction

Los ejercicios están resueltos cada uno en una rama, para facilitar ver el resultado

  • Aproximación geométrica el valor de PI
  • Genera N puntos aleatorios dentro de un cuadrado S con longitud de lado 2, centrado en (0,0)
  • Asume un círculo D de radio 1 también dentrado en (0,0)
  • La cantidad de puntos aleatorios que caen dentro del círculo es proporcional a pi

  • A mayor N, más precisa la aproximación de PI

Nuestro trabajo consistía en hacer una implementación SPMD con la entrada y salida en el proceso 0. Distribuir n y recoger la estimación de PI en cada proceso usando Send y Recv. Se nos indicó repartir la carga de trabajo en el bucle for con “pasos” (i+=numprocs) para que los procesos se alternaran en lugar de hacerlo por bloques.

Para distribuir n desde el proceso 0 usamos un bucle for con MPI_Send mientras que el resto de procesos lo reciben con MPI_Recv. Para recoger la estimación de PI hacemos lo contrario, los procesos usan MPI_send para enviar su parte y el proceso 0 las recive con MPI_Recv y luego suma.

P2 Colectivas MPI en la etimación de PI

Para la segunda práctica tuvimos que mejorar el código de la primera.

Substituir los Send/Recv por operaciones colectivas

Para distribuir n ahora usamos MPI_Bcast y para recoger la estimación MPI_Reduce

Implementación propia de las funciones colectivas. Para al distribución de n una implementación en árbol binomial MPI_BinomialColectiva Para la recolección del count implementar MPI_FlattreeColectiva asumiendo que la operación a realizar será una suma.

La implementación de MPI_FlattreeColectiva es esencialmente lo mismo que hicimos en la práctica 1, pero generalizando para cualquier caso de root

Para MPI_BinomialBCast usamos el desplazamiento de bits para simplificar las operaciones. Tenemos una máscara que se irá incrementando y la usamos para calcular a que procesos se enviará el dato. Esto se entiendo bien al ver los números en una tabla traducidos a binario.

Máscara 00000001

SendRecv
000000000100000001

Máscara 00000010

SendRecv
000000000200000010
100000001300000011

Máscara 00000100

SendRecv
000000000400000100
100000001500000101
200000010600000110
300000011700000111

mpi-pi's People

Contributors

migueldeoleiros avatar xxoel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.