miércoles, 9 de mayo de 2012

MPI con IPython


A menudo, un algoritmo paralelo requiere movimiento de datos entre motores. Una forma de conseguir esto es haciendo un tirón y luego un empujón con el cliente multimotor. Sin embargo, esta será lenta como todos los datos tienen que pasar por el controlador para el cliente y luego de vuelta a través del controlador, a su destino final.

Una manera mucho mejor de mover datos entre los motores es el uso de una biblioteca de paso de mensajes, como la interfaz de paso de mensajes (MPI). Arquitectura de cómputo paralelo IPython ha sido diseñado desde cero para integrarse con MPI.


Requisitos adicionales de instalación

  • El estandar MPI como OpenMPI o MPICH.
  • El mpi4py paquete.

Inicio de los motores con MPI


Para utilizar el código que llama a MPI, normalmente hay dos cosas que MPI requiere.

  • El proceso que se quiere llamar a MPI se debe iniciar con mpiexec o un sistema de proceso por lotes (como PBS), que cuenta con el apoyo de MPI.
  • Una vez iniciado el proceso, se debe llamar a MPI_Init ().

Hay un par de maneras para comenzar a los motores de ipython y conseguir que estas cosas pasen.

Arranque automático con mpiexec y ipcluster


El enfoque más sencillo es utilizar los lanzadores de MPI en ipcluster, que primero se iniciará un controlador y, a continuación un conjunto de motores que utilizan mpiexec:

$ ipcluster start -n 4 --engines=MPIEngineSetLauncher

Este enfoque es mejor que la interrupción de ipcluster se detendrá automáticamente y limpiará el controlador y los motores.

Empezar manualmente a usar mpiexec

Si desea arrancar los motores ipython utilizando el mpiexec, lo que hay que hacer es:

$ mpiexec -n 4 ipengine --mpi=mpi4py



Esto requiere tener un controlador en marcha y que los archivos FURL para los motores están en su lugar. También se ha construido en apoyo a PyTrilinos , que se puede utilizar (suponiendo que se instala) por el arranque de motores con:

$ mpiexec -n 4 ipengine --mpi=pytrilinos


Una vez que los motores están funcionando con el MPI, que están listos para ir. Ahora se puede llamar a cualquier código que utilice MPI en los motores de ipython. Y, todo esto se puede hacer de forma interactiva. Este es un muy sencillo ejemplo de la página oficial.

En primer lugar, permite definir una función simplemente que utiliza MPI para calcular la suma de una matriz distribuida. Y guarda el texto en un archivo llamado psum.py:


Referencias

iPy

1 comentario: