elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Broadcast en MPI espera confirmación de recepción?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Broadcast en MPI espera confirmación de recepción?  (Leído 1,748 veces)
fileteruso

Desconectado Desconectado

Mensajes: 18



Ver Perfil
¿Broadcast en MPI espera confirmación de recepción?
« en: 25 Noviembre 2020, 20:16 pm »

Buenas,

me ha surgido una dudilla haciendo un ejercicio básico de MPI, ¿al hacer un broadcast se espera confirmación de recepción por parte del resto procesos?

Código
  1. #include "mpi.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main (int argc, char *argv[]){
  6. int numtasks, taskid, len, buffer, root, count;
  7. char hostname[MPI_MAX_PROCESSOR_NAME];
  8.  
  9. MPI_Init(&argc, &argv);
  10. MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
  11. MPI_Comm_rank(MPI_COMM_WORLD,&taskid);
  12. MPI_Get_processor_name(hostname, &len);
  13.  
  14. printf ("Task %d on %s starting...\n", taskid, hostname);
  15. root = 0;
  16. count = taskid;
  17. if (taskid == root)
  18. buffer = 23;
  19. printf("Root: Number of MPI tasks is: %d\n", numtasks);
  20.  
  21. MPI_Bcast(&buffer, count, MPI_INT, root, MPI_COMM_WORLD);
  22.  
  23. printf("Buffer is %d from task %d\n", buffer, taskid);
  24.  
  25. MPI_Finalize();
  26.  
  27. }
  28.  

La duda me ha surgido porque hay un error en él, que es que el tamaño de lo que se envía es igual al identificador del proceso que lo está ejecutando, y este error produce un interbloqueo. No entiendo por qué pasa esto. El broadcast como tal solo lo va a ejecutar el proceso maestro, así que para el código de arriba el count sería como un 0, lo que estaría mal. La cosa es que si meto un 0 a mano funciona y no entiendo por qué.
Código:
MPI_Bcast(&buffer, 0, MPI_INT, root, MPI_COMM_WORLD);

Solo es en el caso de que count sea taskid, que como repito al ejecutar el maestro sería 0, cuando no funciona.

La única conclusión posible a la que he llegado es que el broadcast espera confirmación de recepción del envío por parte del resto de procesos y al no llegar a recibirlo se produce el interbloqueo, pero no lo sé.

¡Un saludito y gracias!


« Última modificación: 26 Noviembre 2020, 01:04 am por K-YreX » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
plastic animation paper broadcast 3.0
Ingeniería Inversa
abrac 1 1,989 Último mensaje 3 Junio 2005, 03:56 am
por abrac
Problema con Broadcast
Multimedia
marco_fr90 1 1,619 Último mensaje 19 Agosto 2007, 01:01 am
por marco_fr90
Broadcast a una red por internet - WINSOCK
Programación Visual Basic
barzata 8 4,688 Último mensaje 17 Febrero 2011, 19:17 pm
por raul338
broadcast
Redes
ferminta 0 2,215 Último mensaje 7 Febrero 2012, 06:57 am
por ferminta
Ayuda sobre funcionamiento de broadcast ping
Dudas Generales
Kaxperday 0 2,316 Último mensaje 2 Julio 2015, 12:50 pm
por Kaxperday
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines