Tendré que buscar Pregel, pero los pasos superiores y sus barreras son esenciales para BSP. Las sincronizaciones son necesarias porque BSP utiliza la comunicación unilateral, por lo que debe tener alguna forma de decir “ahora estoy seguro de que la comunicación se ha completado con éxito”. La comunicación unilateral hace que BSP sea mucho más fácil de programar que MPI (o productos similares) porque no tiene que preocuparse por el punto muerto y la orquestación precisa de su comunicación.
Por supuesto, BSP fue diseñado por un teórico. Una vez que las personas comenzaron a implementar la comunicación unilateral, se dieron cuenta de cuán malas eran las barreras. Esto, por ejemplo, condujo a que MPI (versión 2) tuviera 3 mecanismos diferentes para la comunicación unilateral. Primero está el mecanismo de “cerca”, que básicamente establece una barrera global al final de un episodio similar a BSP. No entraré en el tercer tipo (sincronización pasiva de objetivos), pero el segundo tipo intenta mitigar los malos efectos de las barreras.
Las llamadas de la ventana MPI post / wait / start / complete delinean un episodio de comunicación y, por lo tanto, hacen una barrera, pero solo en un grupo de procesos. Esto significa que si sabes con quién te estás comunicando (¡unilateralmente!) Solo necesitas sincronizar con ellos. Por supuesto, esto va en contra de BSP, que realiza una suscripción excesiva y una asignación aleatoria de tareas, por lo que no puede usar este mecanismo.
- Cómo imprimir todas las permutaciones de una cadena tanto de forma iterativa como recursiva
- ¿Debo aprender algoritmos si quiero ser desarrollador web / móvil?
- ¿Qué es un algoritmo para generar una lista de secuencias numéricas que consta de cinco números (00-99) de modo que cada número en una secuencia siempre ocurra en combinación ÚNICA con los otros números y no haya secuencias duplicadas?
- Cómo entender algoritmos en lenguajes de programación
- ¿Cuáles son algunos buenos libros para aprender algoritmos y estructuras de datos usando Java?