¿La programación en paralelo es == programación multiproceso?¿La programación en paralelo es == programación multiproceso?
Respuesta
La programación multiproceso es paralela, pero la programación paralela no es necesariamente multiproceso.
A menos que el multihilo se produzca en un solo núcleo, en cuyo caso solo es concurrente.
AFAIK, en un procesador de núcleo único, el enhebrado no es paralelo. Es concurrente, pero no paralelo. –
@Ionut: http: //thesaurus.reference.com/browse/concurrent <- Si mira bajo el encabezado 'Sinónimos' del primer resultado. –
la diferencia que hago entre concurrente y paralelo es que el paralelo es verdaderamente simultáneo, mientras que el concurrente simplemente parece como si fuera simultáneo. El cambio entre hilos es tan rápido que parece como si fuera paralelo, pero no lo es. Tal vez hay otros términos que designan esto, pero eso es lo que entiendo. –
No necesariamente. Puede distribuir trabajos entre múltiples procesos e incluso múltiples máquinas; no clasificaría eso como programación de "múltiples hilos", ya que cada proceso puede usar solo un hilo, pero ciertamente es una programación paralela. Es cierto que podría argumentar que con múltiples procesos hay múltiples hilos dentro del sistema como un todo ...
En última instancia, definiciones como esta solo son útiles dentro de un contexto. En su caso particular, ¿qué diferencia va a hacer? ¿O esto solo está fuera de interés?
¿Deberíamos considerar SIMD como programación paralela? Estamos realizando las mismas operaciones en múltiples datos en paralelo, pero no sé si esto se considera una micro-paralelización para ser incluida en una definición de programación paralela. –
Diría que SIMD es un diseño de hardware más paralelo, pero supongo que en algún nivel debe considerar el lado de la programación de tener hardware paralelo dedicado, p. ¿Qué hay de la programación de una GPU? –
No. La programación multiproceso significa que tiene un único proceso, y este proceso genera un montón de hilos. Todos los subprocesos se ejecutan al mismo tiempo, pero están todos en el mismo espacio de proceso: pueden acceder a la misma memoria, tener los mismos descriptores de archivo abierto, y así sucesivamente.
La programación en paralelo 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 conductos o tomas de red/unix. Las bibliotecas de MPI proporcionan funciones específicas para mover datos de un lado a otro de los nodos, en estilo síncrono o asincrónico.
Por el contrario, OpenMP logra la paralelización a través de multiprocesamiento y memoria compartida. Especificas directivas especiales para el compilador y automáticamente realiza la ejecución en paralelo para ti.
La ventaja de OpenMP es que es muy transparente. ¿Tiene un bucle para paralelizar? solo agregue un par de directivas y el compilador lo fragmenta y asigne cada parte del ciclo a un procesador diferente. Desafortunadamente, necesita una arquitectura de memoria compartida para esto. Los clústeres que tienen una arquitectura basada en nodos no pueden usar OpenMP en el 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.
ow, entonces es malo 1 trabajo es procesado por n proceso no 1 trabajo es procesado por n thread –
Me parece recordar que el trabajo _se_ está haciendo en la paralelización de estilo OpenMP para arquitecturas multiproceso ... No puedo recordar si es parte de OpenMP en sí, o algo más? –
@Eko: no exactamente. MPI inicia n instancias del mismo programa, cada una con un número de identificación diferente en una variable especial (busque MPI_Comm_Rank). Qué hacer con esas n instancias depende de usted. –
- 1. ¿La programación simultánea es igual a la programación en paralelo?
- 2. Problemas de programación en paralelo
- 3. Diseñar una asignación para la programación multiproceso
- 4. ¿Cómo empiezo a usar la programación multiproceso?
- 5. ¿Qué API de programación en paralelo usa?
- 6. Algoritmo de programación en paralelo más útil?
- 7. Un caso curioso en la programación en paralelo
- 8. ¿La programación funcional es un subconjunto de la programación imperativa?
- 9. ¿Qué es "Compartir Falso" en la programación en paralelo .net 4.0
- 10. ¿Qué es la programación lineal?
- 11. ¿Qué es la programación basada en datos?
- 12. Reducciones en la programación
- 13. Programación basada en eventos vs programación secuencial
- 14. Programación paralela dinámica
- 15. ¿Qué es la programación orientada a datos?
- 16. La programación de Clojure GUI es difícil
- 17. ¿Qué es la programación de escopeta/vudú?
- 18. Programación de Common Lisp Parallel
- 19. ¿Por qué es buena la programación funcional?
- 20. ¿Qué es la programación orientada a aspectos?
- 21. Programación paralela y C++
- 22. ¿Qué es zip (programación funcional?)
- 23. Frijoles en la programación java
- 24. Programación algoritmo
- 25. Memcpy() en la programación segura?
- 26. Crear un código existente en Java paralelo/multiproceso
- 27. Cuál es la diferencia entre la programación de Seaside y otra programación web
- 28. ¿Qué es exactamente "programación basada en interfaz"?
- 29. Programación paralela en C#
- 30. ¿Se debe enseñar la programación funcional antes de la programación imperativa?
Posible duplicado -> http://stackoverflow.com/questions/1073098/panellel-coding-vs-multithreading-on-single-cpu – Bhaskar