En pocas palabras, la computación paralela se refiere a dividir una gran tarea en un grupo de tareas más pequeñas y asignar cada tarea a una computadora o procesador diferente, de modo que se pueda hacer más trabajo al mismo tiempo usando más recursos que si el mismo trabajo fuera hecho una tarea a la vez por una sola computadora.
Por supuesto, esto puede tener muchas ventajas, entre las cuales se encuentra el trabajo más rápido (y en casos extremos, puede marcar la diferencia entre una tarea totalmente inviable y una tarea fácil). Pero también tiene algunas desventajas:
- Es más difícil: se necesita un poco de trabajo extra, una mentalidad diferente en general y, a veces, incluso un lenguaje o estilo de programación diferente, para escribir programas que puedan hacer un procesamiento paralelo de manera eficiente. Esto se debe a que es más que escribir los algoritmos para realizar sus tareas individuales, sino también escribir o integrarse con el marco que le permite dividir esas tareas, coordinar el “estado común” entre ellas, asegurarse de que todos los nodos de procesamiento sigan activos, manejar fallas transitorias y reintentos, etc. En mi experiencia, no todos pueden hacer esto, por lo que a menudo hay equipos especiales o desarrolladores especializados dedicados a escribir sistemas que hacen que sea más fácil para otros desarrolladores trabajar con ellos.
- Requiere más recursos: en un caso simple, este procesamiento paralelo podría significar que está utilizando todos los núcleos en su CPU en lugar de solo uno. Pero en casos más grandes, es posible que necesite una granja de servidores completa, o incluso algo a la escala de [correo electrónico protegido] (uno de los proyectos de procesamiento paralelo más grandes del mundo) donde las computadoras de todo el mundo se utilizan para analizar cantidades realmente masivas de datos . Coordinar, y por supuesto pagar, este tipo de recursos no es trivial.
- Requiere expectativas realistas: muchas personas simplemente asumen que si ejecuta un proyecto paralelo con 4 computadoras, el trabajo se realiza cuatro veces más rápido. En un escenario ideal, esto puede ser cierto, pero en términos generales, cuanto mayor sea su grupo de trabajadores, menos eficiente será cada trabajador adicional debido a la sobrecarga adicional involucrada en la coordinación de todo el trabajo, asegurando que el mismo trabajo no sea entregado a dos o más trabajadores a la vez, etc. Habiendo desarrollado varios de estos sistemas, puedo decirle que tratar de explicar todo esto a la gerencia puede ser un verdadero desafío. 🙂
Finalmente, hay algunos casos en los que el procesamiento paralelo no vale la pena. Por ejemplo, si tiene tareas que realmente deben realizarse en orden (una tarea depende de otra), entonces, por definición, deben realizarse de una en una, y no tiene sentido tratar de paralelizarlas. Te sorprendería cuántas veces he tenido esa discusión con gerentes y personas no técnicas también, muchos tienden a asumir que “Oye, tenemos los recursos, también podríamos usarlos, ¿verdad?” , sin comprender completamente los problemas que estamos tratando de resolver.
- ¿Qué aplicación de almacenamiento en la nube para Mac usa menos CPU?
- ¿Cómo funciona el precio spot de AWS?
- ¿Qué puedo hacer para convencer a Quora de alojar en Joyent en lugar de AWS?
- ¿Quién inventó la computación en la nube? ¿Cómo ayudó esta invención a las empresas?
- ¿Cuánto paga Pinterest a AWS?
Entonces, de alguna manera, uno de los mayores desafíos para el procesamiento paralelo es saber cuándo usarlo y, lo que es más importante, cuándo NO usarlo.