Pregunta

¿Cuál es el significado de "software paralelo"? y cuáles son las diferencias entre "software paralelo" y "software normal"

¿Cuáles son sus ventajas y desventajas?

¿Escribir " software paralelo " ¿requiere un hardware específico o un lenguaje de programación?

¿Fue útil?

Solución

http://en.wikipedia.org/wiki/Thread_(computer_science)

  

En informática, un hilo de   resultados de ejecución de una bifurcación de una   programa de computadora en dos o más   Tareas simultáneas. los   implementación de hilos y   los procesos difieren de uno operativo   sistema a otro, pero en la mayoría de los casos,   un hilo está contenido dentro de un   proceso. Pueden existir múltiples hilos   dentro del mismo proceso y compartir   recursos como la memoria, mientras   diferentes procesos no comparten estos   recursos.

La mayoría de los lenguajes de programación modernos admiten subprocesos múltiples de una forma u otra (incluso Javascript en las versiones más recientes). :-)

Las ventajas y desventajas pueden depender de la tarea. Si tiene mucho procesamiento que necesita hacer, entonces el subprocesamiento múltiple puede ayudarlo a dividirlo en unidades de trabajo más pequeñas en las que cada CPU puede trabajar de forma independiente al mismo tiempo. Sin embargo, el código multiproceso generalmente será más complejo de escribir y mantener que el código de un solo hilo.

Todavía puede escribir / ejecutar código multiproceso en una máquina que solo tiene un procesador. Aunque solo habrá un procesador para ejecutar las tareas, el sistema operativo se asegurará de que sucedan simultáneamente cambiando rápidamente el contexto y ejecutando algunas instrucciones para cada hilo a la vez.

Algún hardware especializado con el que puede estar familiarizado y que realiza tareas paralelas es la GPU que se puede encontrar en la mayoría de las computadoras nuevas. En este video, los Mythbusters demuestran la diferencia entre dibujar en una CPU de un solo subproceso y una GPU de subprocesos múltiples:
http://www.youtube.com/watch?v=XtGf0HaW7x4&feature=player_embedded

Otros consejos

  

¿Son el "software paralelo"? requiere un hardware específico o lenguaje de programación?

Sí y sí.

El primero es trivialmente fácil. La mayoría de las CPU modernas (digamos algo más nuevo que el m6800) tienen características de hardware que permiten hacer más de una cosa a la vez, aunque no necesariamente ambas al mismo tiempo. Por ejemplo, cuando se produce una interrupción del temporizador, una CPU puede guardar lo que está haciendo y luego comenzar a hacer otra cosa. Esas tareas se ejecutan simultáneamente.

Incluso sin eso, podría obtener dos máquinas con algún tipo de conexión entre sí (como una simple conexión en serie a través de un adaptador de módem nulo) y ambas pueden trabajar en la misma tarea en paralelo.

La mayoría de las CPU nuevas (no solo modernas sino recientes) tienen recursos de computación paralelos incorporados. Estas CPU multinúcleo en realidad pueden estar trabajando en dos o más tareas al mismo tiempo, una tarea por núcleo, y tienen características especiales que hacen que es un poco más eficiente para esas tareas cooperar.

El segundo, que requiere herramientas de software especiales, como un lenguaje habilitado en paralelo, es de alguna manera la parte más difícil de la computación paralela. Si eres la única persona en la cocina, es bastante fácil cocinar una comida, siguiendo cada receta de principio a fin, una tras otra, hasta que todos los platos estén cocidos. Si quieres acelerar eso agregando más cocineros, debes ser un poco más cuidadoso para no pisar los pies del otro.

La forma más sencilla de manejar esto es mediante el uso de una biblioteca de subprocesos que ofrece algunas herramientas para que múltiples tareas puedan organizarse para no golpearse entre sí. Esto no es tan fácil como marcar un programa como paralelo y el sistema se encarga del resto, más bien, debe escribir cada tarea para comunicarse con cualquier otra tarea en cada lugar donde existe la posibilidad de que interfieran.

El software paralelo

puede aprovechar de forma nativa múltiples núcleos / cpus en una computadora o, a veces, en varias computadoras. Los ejemplos incluyen software de representación gráfica y software de diseño de circuitos.

No estoy tan seguro acerca de las desventajas que no sean el software compatible con varios procesadores que tienden a ser un CPU hog.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top