1elkin Mauricio Mendez Pinzon Emmendezp
1elkin Mauricio Mendez Pinzon Emmendezp
Computación Paralela y
Distribuida
Con base en capítulo 2 del texto Structured Parallel Programming realizar las siguientes actividades,
1. El texto utiliza los siguientes símbolos, entre otros, para representar los componentes fundamentales
de los algoritmos.
3. Los autores del libro consideran ambiguo el término de paralelismo basado en tareas (task
parallelism) y consideran más útil una clasificación basada en el grado de regularidad.
¿cuáles sonlos términos propuestos por ellos para esta clasificación?
• Evitan el termino task parallelismo porque su significado varia, dado que algunos
desarrolladores lo usan para significade descomposición funcional (no escalable) y otros para
significar (escalable) y otro simplemente significan cualquier tipo de paralelismo
¿qué características tienen las tareas queincluye cada término?
• Paralelismo regular: Las tareas son similares y tienen dependencias predecibles.
• Paralelismo irregular: las tareas son diferentes de una manera que crea dependencias
impredecibles
4. Traduzca el siguiente párrafo a español.
We use task to refer to a unit of potentially parallel work with a separate flow of control. Tasks are executed
by scheduling them onto software threads, which in turn the OS schedules onto hardware threads. A single
software thread may run many tasks, though it actively runs only one task at a time. Scheduling of software
threads onto hardware threads is usually preemptive—it can happen at any time. In contrast, scheduling of
tasks onto software threads is typically non-preemptive (cooperative)—a thread switches tasks only at
predictable switch points. Non-preemptive scheduling enables significantly lower overhead and stronger
reasoning about space and time requirements tan threads. Hence, tasks are preferable to software threads as
an abstraction for scalable parallelism.
Traducción: Usamos tarea para referirnos a una unidad de trabajo potencialmente paralela con un flujo de
control separado. Las tareas se ejecutan programándolas en hilos de software, que a su vez el sistema
operativo programa en hilos de hardware. Un único hilo de software puede ejecutar muchas tareas, aunque
sólo ejecuta activamente una tarea a la vez. La programación de los hilos de software en los hilos de
hardware suele ser preventiva: puede ocurrir en cualquier momento. En cambio, la programación de tareas
en hilos de software suele ser no preventiva (cooperativa): un hilo cambia de tarea sólo en puntos de
cambio predecibles. La programación no preventiva permite una sobrecarga significativamente menor y un
mayor razonamiento sobre los requisitos de espacio y tiempo de los hilos. Por lo tanto, las tareas son
preferibles a los hilos de software como abstracción para el paralelismo escalable.
• SISD : Un único procesador ejecuta un solo flujo de instrucciones para operar datos en
una única memoria
• SIMD: Todas las unidades ejecutan una misma instrucción, pero con datos diferentes
Es un computador que explota varios flujos de datos dentro de un único flujo de
instrucciones para realizar operaciones que pueden ser paralelizadas de manera natural
• MISD: usado generalmente en paralelismo redundante, donde muchas unidades
realizan diferentes operacións en los mismo datos
• MIND: a diferencia de la anterior en este caso Varios procesadores autónomos que
ejecutan simultáneamente instrucciones diferentes sobre datos diferentes, usualmente
utilizado en sistemas distribuidos