sistemas que programacion paralela operativos multihilos ejemplos multithreading terminology parallel-processing concurrent-programming

multithreading - que - ¿Es la programación paralela== programación multihilo?



programacion paralela ejemplos (3)

¿Es la programación paralela == programación multihilo?


La programación multiproceso es paralela, pero la programación paralela no es necesariamente multihebra.

A menos que el subprocesamiento múltiple ocurra en un solo núcleo, en cuyo caso solo es concurrente.


No necesariamente . Puede distribuir trabajos entre múltiples procesos e incluso múltiples máquinas. No clasificaría eso como programación "multiproceso", ya que cada proceso puede usar solo un solo hilo, pero ciertamente es una programación paralela. Es cierto que podría argumentar que con varios procesos hay varios subprocesos dentro del sistema en su conjunto ...

En última instancia, definiciones como esta solo son útiles dentro de un contexto. En su caso particular, ¿qué diferencia va a hacer? ¿O es esto solo por interés?


No. La programación multihilo significa que tienes un solo proceso, y este proceso genera un montón de hilos. Todos los subprocesos se ejecutan al mismo tiempo, pero todos están en el mismo espacio de proceso: pueden acceder a la misma memoria, tienen los mismos descriptores de archivo abiertos, etc.

La programación paralela es un poco más "general" como definición. en MPI, realiza la programación paralela ejecutando el mismo proceso varias veces, con la diferencia de que cada proceso obtiene un "identificador" diferente, por lo que si lo desea, puede diferenciar cada proceso, pero no es necesario. Además, estos procesos son independientes entre sí, y tienen que comunicarse a través de canalizaciones o sockets de red / unix. Las bibliotecas MPI proporcionan funciones específicas para mover datos de un lado a otro de los nodos, en estilo síncrono o asíncrono.

En contraste, OpenMP logra la paralelización a través de multiprocesamiento y memoria compartida. Usted especifica directivas especiales para el compilador, y realiza automáticamente para usted la ejecución paralela.

La ventaja de OpenMP es que es muy transparente. ¿Tienes un bucle para paralelizar? solo agregue un par de directivas y el compilador lo fragmenta en partes y asigne cada parte del bucle a un procesador diferente. Desafortunadamente, necesitas una arquitectura de memoria compartida para esto. Los clústeres que tienen una arquitectura basada en nodos no pueden usar OpenMP a nivel de clúster. MPI le permite trabajar en una arquitectura basada en nodos, pero debe pagar el precio de un uso más complejo y no transparente.