Autor: David Camuñas
Esta práctica perteneciente al laboratorio de la asignatura de Diseño de Infraestructura de Redes (DIR) de ESI - UCLM.
Es una simulación de una Red Toroidal o de anillo, mediante la utilización de programación paralela MPI en lenguaje C.
Dado un archivo con nombre datos.dat, cuyo contenido es una lista de valores separados por comas, nuestro programa realizará lo siguiente: El proceso de rank 0 destribuirá a cada uno de los nodos de un toroide de lado L, los L x L numeros reales que estarán contenidos en el archivo datos.dat.
En caso de que no se hayan lanzado suficientes elementos de proceso para los datos del programa, éste emitirá un error y todos los procesos finalizarán. En caso de que todos los procesos han recibido su correspondiente elemento,comenzará el proceso normal del programa.
Se pide calcular el elemento menor de toda la red, el elemento de proceso con rank 0 mostrará en su salida estándar el valor obtenido. La complejidad del algoritmo no superará O(raiz_cuadrada(n)) Con n número de elementos de la red.
Con este comando se crearan los diferentes directorios entre ellos el directorio que contiene el archivo ejecutable del programa.
$ make dirs
Este comando se ha utilizado para limpiar los directorios en los que se almacenan los ejecutables y las clases objetos (explicada anteriormente su creación).
$ make clean
El proceso de compilación, se puede realizar de varias formas:
-
Automaticamente con Makefile: $ make toroidalNet
-
Manualmente: $ mpicc src/toroidalNet.c -I include/ -lm -o exec/toroidalNet
Donde se puede observar la opción -I include/ la cual define donde se encuentran las librerias propias (definitions.h). Y la opción -lm esta opción define la utilización de la libreria math.h de C.
Para la ejecución del programa se puede realizar al igual que la compilación de varias formas:
-
Automaticamente con Makefile: $ make solution
Se ejecutará el ejecutable ./exec/toroidalNet -
Manualmente: $ mpirun -n 9 ./exec/toroidalNet
Donde la opción -n 9 en este caso indica el número de nodos que contiene la red toroidal.