MPI: computación distribuida simplificada

El problema subyacente

Para facilitar las cosas, pasemos directamente a algunas estadísticas:

  • Facebook, actualmente, tiene 1.500 millones de usuarios mensuales activos.
  • Google realiza al menos 1 billón de búsquedas al año.
  • Cada minuto se suben unas 48 horas de vídeo a Youtube.

Con una demanda tan alta, creo que un solo sistema no podría manejar el procesamiento. Por lo tanto, surge la necesidad de Sistemas Distribuidos.

¿Qué es la computación distribuida?

Un sistema distribuido consiste en una colección de computadoras autónomas, conectadas a través de una red y un middleware de distribución, que permite a las computadoras coordinar sus actividades y compartir los recursos del sistema para que los usuarios perciban el sistema como una única instalación informática integrada.

Digamos sobre el servidor web de Google, desde la perspectiva de los usuarios, mientras envían la consulta buscada, asumen el servidor web de Google como un sistema único. Sin embargo, detrás de la cortina, Google ha construido una gran cantidad de servidores que se distribuyen (geográfica y computacionalmente) para darnos el resultado en unos pocos segundos.

¿Ventajas de la Computación Distribuida?

  • Altamente eficiente
  • Escalabilidad
  • Menos tolerante a los fracasos.
  • Alta disponibilidad

Veamos un ejemplo en el que ahorramos tiempo de cálculo mediante el uso de computación distribuida. 

Por ejemplo, si tenemos una array, a , que tiene n elementos, a=[1, 2, 3, 4, 5, 6]

Queremos resumir todos los elementos de la array y generarlos. Ahora, supongamos que hay 10 20 elementos en el arreglo y el tiempo para calcular la suma es x.

Si ahora dividimos el arreglo en 3 partes, a1 , a2 y a3 donde a1 = { Conjunto de elementos donde módulo(elemento de a) == 0 } a2 = { Conjunto de elementos donde módulo(elemento de a) == 1 } a3 = { Conjunto de elementos donde modulo(elemento de a) == 2 }

Enviaremos estas 3 arrays a 3 procesos diferentes para calcular la suma de estos procesos individuales. En promedio, supongamos que cada array tiene n/3 elementos . Por lo tanto, el tiempo que toma cada proceso también se reducirá a x/3 . Dado que estos procesos se ejecutarán en paralelo, los tres «x/3» se calcularán simultáneamente y la suma de cada array se devolverá al proceso principal. Al final, podemos calcular la suma final de a sumando la suma individual de las arrays: a1, a2 y a3 .

Por lo tanto, podemos reducir el tiempo de x a x/3 , si estamos ejecutando el proceso simultáneamente. ¿Qué es MPI?

Message Passing Interface (MPI) es un sistema de paso de mensajes estandarizado y portátil desarrollado para computación distribuida y paralela. MPI proporciona a los proveedores de hardware paralelos un conjunto básico de rutinas claramente definido que se puede implementar de manera eficiente. Como resultado, los proveedores de hardware pueden aprovechar esta colección de rutinas estándar de bajo nivel para crear rutinas de mayor nivel para el entorno de comunicación de memoria distribuida suministrado con sus máquinas paralelas.

MPI ofrece a los usuarios la flexibilidad de llamar a un conjunto de rutinas desde C, C++, Fortran, C#, Java o Python. Las ventajas de MPI sobre las bibliotecas de paso de mensajes más antiguas son la portabilidad (porque MPI se ha implementado para casi todas las arquitecturas de memoria distribuida) y la velocidad (porque cada implementación está, en principio, optimizada para el hardware en el que se ejecuta)

Las ventajas de MPI sobre otros marcos de paso de mensajes son la portabilidad y la velocidad. Se ha implementado para casi todas las arquitecturas de memoria distribuida y, en principio, cada implementación está optimizada para el hardware en el que se ejecuta.

Aunque hay opciones disponibles para varios idiomas, Python es el más preferido debido a su simplicidad y facilidad para escribir el código. Entonces, ahora veremos cómo instalar MPI en ubuntu 14.10. 

Instalar MPI en Ubuntu 

1) Paso No. 1: Copia la siguiente línea de código en tu terminal para instalar NumPy, un paquete para toda la computación científica en python.

sudo apt-get install python-numpy

2) Después de completar con éxito el paso anterior, ejecute los siguientes comandos para actualizar el sistema e instalar el paquete pip.

sudo apt-get update
sudo apt-get -y install python-pip

3) Ahora, descargaremos el documento de la última versión del MPI.

sudo apt-get install libcr-dev mpich2 mpich2-doc

4) Ingrese el comando para descargar MPI usando pip para python

sudo pip install mpi4py

MPI se instaló correctamente ahora. A veces, puede surgir un problema al limpiar los paquetes después de instalar MPI debido a la ausencia de herramientas de desarrollo en python. Puede instalarlos usando el siguiente comando:

sudo apt-get install python-dev

  MPI en Windows/MAC 

Para usuarios de Windows/MAC, pueden visitar el siguiente enlace y descargar el archivo .zip y descomprimirlo y ejecutarlo: 

marco IPM

Tutoriales

Después de la instalación, puede consultar la siguiente documentación para usar MPI usando python.

https://mpi4py.scipy.org/docs/usrman/tutorial.html 

Referencias https://www.open-mpi.org/ https://en.wikipedia.org/wiki/Message_Passing_Interface 

Si también desea exhibir su blog aquí, consulte GBlog para escribir un blog invitado en GeeksforGeeks.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *