Por el contrario, la mayoría de las computadoras paralelas que construimos no son deterministas; lo más probable es que esté leyendo esta respuesta en una de ellas. Tienden a demostrar su no determinismo cada vez que pasa por alto algunos detalles en su programa paralelo.
Considere este programa trivial en C, que usa MPI para ejecución paralela:
#include
#include
- ¿Por qué los electrones emiten fotones?
- ¿Cuáles son los límites interpretativos difíciles de una teoría de modelado matemático exitosa como QM?
- ¿Por qué los físicos cuánticos no han podido resolver el problema de medición?
- Cómo combinar la mecánica cuántica y la relatividad en términos simples
- ¿Cuáles son los m de los orbitales p y d?
int main (int argc, char ** argv)
{
rango int, tamaño;
MPI_Init (& argc, & argv);
MPI_Comm_rank (MPI_COMM_WORLD, y rango);
MPI_Comm_size (MPI_COMM_WORLD, y tamaño);
printf (“Hola desde el rango% d de% d \ n”, rango, tamaño);
MPI_Finalize ();
}
Todo lo que hace es generar el número de procesos paralelos que le pides y hacer que cada uno de ellos informe su propio identificador único ( rango ). Voy a compilarlo y ejecutarlo dos veces, usando todos los núcleos de mi computadora portátil de 4 vías en paralelo:
% make CC = mpicc hola
mpicc hola.c -o hola
% mpirun -np 4 hola
Hola desde el rango 0 de 4
Hola desde el rango 2 de 4
Hola desde el rango 3 de 4
Hola desde el rango 1 de 4
% mpirun -np 4 hola
Hola desde el rango 1 de 4
Hola desde el rango 0 de 4
Hola desde el rango 2 de 4
Hola desde el rango 3 de 4
Como ningún mecanismo de sincronización fuerza ninguna secuencia en la salida, estos 4 procesos alcanzan la declaración ‘ printf
‘ en un orden impredecible y responden a medida que llegan. Por lo tanto, no puede saber si el mismo programa producirá resultados diferentes para ejecuciones consecutivas con la misma entrada. No es porque el programa sea incorrecto, se define de manera válida de esta manera.
Sin mecanismos para la exclusión / sincronización mutua, la computación paralela se vuelve no determinista con mucha facilidad.