Para poder ejecutar nuestras librerías de computación paralela necesitamos que nuestro interprete de Python sea capaz de ejecutar una aplicación bajo una plataforma de computación paralela bajo el interfaz de intercambio de mensajes MPI. Sin embargo, no es el caso , puesto que Python se caracteriza por ser un lenguaje de alto nivel que se ejecuta de modo mono-proceso en su distribución estándar. Por tanto, el interprete de Python incluido en la distribución estándar no se configura como una solución valida para poder ejecutar un mismo código en un sistema multiproceso.
Sin embargo, el interprete de comandos proporcionado en la distribución estándar de su página principal http://www.python.org/, se distribuye libremente bajo licencia de código abierto (GNU) y se encuentra disponible junto con una extensa librería estandar de programación para poder modificar esta distribución adaptando el interprete a nuestras necesidades.
Con el fin de obtener un interprete de Python que se pueda ejecutar en modo multiproceso, modificaremos el código fuente de la distribución estándar. De este modo necesitamos un nuevo interprete de Python que inicialice un entorno de computación paralela a través del paradigma de paso de mensajes. Ante esta necesidad tenemos dos soluciones posibles:
PyMPI
%mpirun -np 3 pyMPI >>> import mpi >>> print 'Soy el ', mpi.rank,' de ',mpi.size Soy el 0 de 3 Soy el 2 de 3 Soy el 1 de 3 >>>
Se puede comprobar en este ejemplo cómo se lanzan tres procesos en ejecución asíncrona puesto que cada se escribe su valor identificativo sin orden aparente. Los atributos size y rank del modulo importado mpi se corresponden con el número de procesos ejecutándose y con el identificador de cada uno de ellos respectivamente.
mpipython
http://ideafix.umh.es/pyacts/mpipython.tgz
o bien a traves desde la página de inicio de la distribución oficial de PyACTS (http://ideafix.umh.es/pyacts/).
Se desea destacar que la utilización de cualquiera de las dos soluciones es totalmente válida y el paquete PyACTS ha sido probado con ambos interpretes y en múltiples plataformas (LINUX, IBM SP2,...). En el resto del presente capítulo describiremos el proceso de compilación y generación del ejecutable mpipython
que será el interprete utilizado para ilustrar los ejemplos de cada una de las rutinas incluidas en el paquete PyACTS.
Por otro lado, queremos destacar que el código fuente del ejecutable mpipython
no se adjunta en la actual
distribución de PyACTS, sin embargo está accesible desde la página de la distribución antes descrita. Este intérprete se ha obtenido a
partir de la distribución de
Scientific Python de Konrad Hinsen . La colección de rutinas para Python de Konrad Hinsen proporciona un
amplio conjunto de funciones y librerías muy útiles en la computación
científica. El numero de rutinas y librerías es muy amplio y si se desea
profundizar recomendamos la lectura de la referencia indicada. Sin embargo, para
el problema que nos ocupa, sólo una parte del código nos resultaba útil en
nuestro proposito de generar un interprete de Python multiproceso. De este modo,
hemos indentificado las partes necesarias de esta librerías y las adjuntamos
en la actual distribución.