##Práctica sobre MPI (Lenguaje C)
#Introducción.
Conocida una función f(x) mediante una secuencia de N pares (xi,f(xi)) , tal que xi-1 < xi .
Se conoce como:
Suma de Riemann por la izquierda.
Sizquierda = Sumatorio(i=1, i=N-1) (f(xi-1) * (xi - x i-1))
Suma de Riemann por la derecha.
Sderecha = Sumatorio(i=1, i=N-1) (f(xi) * (xi - x i-1))
Suma de Riemann trapezoidal.
Strapezoidal = Sumatorio(i=1, i=N-1) ((f(xi-1) + f(xi))/2) * (xi - x i-1))
#Enunciado.
Desarrollar un programa en C con MPI que calcule de forma paralela, en un entorno con P procesadores, los valores Sizquierda, Sderecha y Strapezoidal de una función definida por puntos almacenada en un fichero secuencial data.dat de N puntos, y muestre el tiempo que ha tardado en ejecutarse.
El fichero almacena los puntos por parejas [x0,f(x0),x1,f(x1), ...., ,xN-1,f(XN-1)}.
Todos los valores son de tipo double.
#Nota
Realizar la implementación mediante un proceso inicial que lee el fichero y distribuye los datos entre los demas procesos, para finalmente mostrar el resultado.
El tiempo de ejecución a calcular, será el transcurrido a partir de recibir todos los procesos sus datos.
#Entrega.
-
Documento Teoria.pdf. En este documento se explicita los pasos necesarios para realizar el algoritmos paralelo: división, comunicaciones, agrupación y asignación. Támbien se uncluirá una breve descripción del algoritmo y su implementación.
-
Fichero fuente Riemann.c Este fichero deberá de compilarse mpic -o riemann Riemann.c sin errores para poder ejecutar sin error el siguiente comando: mpirun -np numero_procesadores riemann tamaño_del_problema Fichero.dat. El resultado deberá ser:
-
Sizq = Valor
-
Sder = Valor
-
Strap = Valor
-
Tiempo máximo de ejecución = Valor segundos.