Download PARADIGMAS Y LENGUAJES DE PROGRAMACIÓN Licenciatura
Document related concepts
no text concepts found
Transcript
PARADIGMAS Y LENGUAJES DE PROGRAMACIÓN Licenciatura en Sistemas de Información Año 2016 Trabajo práctico - Unidad III (MPI - OpenMP) En cada ejercicio anexar los códigos resueltos con el formato del código de inicio del ejercicio 4. Entorno MPI 1. Resolver el ejercicio planteado en el siguiente link (No se admite Ctrl+C Ctrl+V): http://lsi.ugr.es/jmantas/pdp/tutoriales/tutorial_mpi.php?tuto=01_helloworld a) Explique el brevemente cómo funciona el código fuente. b) Describa las instrucciones propias del MPI utilizadas en el ejercicio. ¿cuáles son los parámetros de entrada cuales son de salida? 2. Resolver el ejercicio planteado en el siguiente link (No se admite Ctrl+C Ctrl+V): http://lsi.ugr.es/jmantas/pdp/tutoriales/tutorial_mpi.php?tuto=02_send_receive a) Explique el brevemente cómo funciona el código fuente. b) Describa las instrucciones propias del MPI utilizadas en el ejercicio. ¿cuáles son los parámetros de entrada cuales son de salida? MPI_Send, MPI_Receive, MPI_Isend, MPI_Ireceive 3. Adapte el ejercicio 2 al siguiente planteamiento. El proceso 0 envía 2 mensajes, un mensaje “11111” al proceso 1 y un mensaje “22222” al proceso 2. Luego el mensaje “11111” debe ir pasando por los procesos impares y el mensaje “22222” por los procesos pares. 4. Se tiene un algoritmo que envía un mensaje '100' hacia los procesos superiores y al llegar al último nodo reenvía al proceso 0. Se solicita adaptar el código para que aparte del mensaje '100', se envié un mensaje '200' que se dirija en dirección contraria. Código de inicio: #include "mpi.h" #include <stdio.h> main(int argc, char *argv[]){ PARADIGMAS Y LENGUAJES DE PROGRAMACIÓN Licenciatura en Sistemas de Información Año 2016 int numtasks, rank, next, prev, msjForward=100, buzonForward, tag1=1; MPI_Status estado1; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD, &numtasks); MPI_Comm_rank(MPI_COMM_WORLD, &rank); // SE DEFINEN LOS VECINOS next = rank+1; if (rank == (numtasks - 1)) next = 0; prev=rank-1; if (rank == 0) prev = (numtasks - 1); //////////////////// Se envian los mensajes /////////////////////////// MPI_Send(&msjForward, 1, MPI_INT, next, tag1, MPI_COMM_WORLD); ///////////////////Se reciben los mensajes //////////////////////////// MPI_Recv(&buzonForward, 1, MPI_INT,prev , tag1, MPI_COMM_WORLD, &estado1); printf("soy %d y recibi el msj %d de %d \n ",rank,buzonForward,estado1.MPI_SOURCE); MPI_Finalize(); } MPI_Reduce, MPI_Gather, MPI_Scatter, 5. Resuelva el ejercicio planteado en el siguiente link: <código fuente simplificado en aula virtual> http://lsi.ugr.es/jmantas/pdp/tutoriales/tutorial_mpi.php?tuto=04_producto_escalar a) Mostrar las capturas de pantallas de la ejecución del ejercicio. b) Explique el brevemente cómo funciona el código fuente. c) Describa las instrucciones propias del MPI utilizadas para el presente ejercicio. ¿cuáles son los parámetros de entrada cuales son de salida? 6. Realizar un ejercicio, que dado un vector de tamaño X (X=10*la cantidad de procesos lanzados), se seccione el vector y se los distribuya entre los procesos (Scatter), cada proceso debe realizar el ordenamiento de su parte del vector, y luego se deben unir los vectores locales ordenados en el proceso 0 (Gather). PARADIGMAS Y LENGUAJES DE PROGRAMACIÓN Licenciatura en Sistemas de Información Año 2016 OPENMP 1. Resuelva el ejercicio planteado en el siguiente link: http://lsi.ugr.es/jmantas/pdp/tutoriales/tutorial_omp.php?tuto=01_omp_holamundo a) Mostrar las capturas de pantallas de la ejecución del ejercicio. b) Explique el brevemente que hace el código fuente. c) Describa las instrucciones propias del OPENMP utilizadas para el presente ejercicio. Explicar cómo trabaja cláusula de compartición de datos. 2. Resuelva el ejercicio planteado en el siguiente link: http://lsi.ugr.es/jmantas/pdp/tutoriales/tutorial_omp.php?tuto=01_omp_holamundo a) Mostrar las capturas de pantallas de la ejecución del ejercicio. b) Explique el brevemente cómo funciona el código fuente. c) Describa las instrucciones propias del OPENMP utilizadas para el presente ejercicio. Como trabaja cada uno de los planificadores que se pueden definir para un FOR. 3. Analizar el código fuente del archivo “OPENMP_sumavector.cpp” del aula virtual. a) Explique el brevemente el funcionamiento. b) Mencione las instrucciones propias de OPENMP utilizadas. 4. Escribir un programa que realice el producto escalar entre 2 vectores utilizando OPENMP.