Hoy en día, la computación paralela se está volviendo muy popular y tiene un futuro brillante, pero ¿cuál es la principal dificultad en la computación paralela?

Una dificultad clave en la computación paralela es que debe realizarse en un espacio físico, donde

  1. Los elementos informáticos paralelos (servidores blade, CPU, núcleos de CPU, puertas lógicas, lo que sea) tienen tamaños distintos de cero.
  2. La velocidad de comunicación entre elementos informáticos es limitada (por la velocidad de la luz, y generalmente algo más pequeño).
  3. El espacio físico tiene solo [matemáticas] d [/ matemáticas] = 2 o 3 dimensiones.

Estos tres supuestos implican que el tiempo de ejecución paralelo será al menos la raíz [math] d [/ math] -th del tiempo de ejecución secuencial. En particular, las aceleraciones exponenciales reclamadas en libros y cursos para la multiplicación de matrices y otros problemas “fáciles” son imposibles. Puede encontrar más detalles y límites adicionales basados ​​en E / S en este documento de 4 páginas

  • David C. Fisher: Tus algoritmos paralelos favoritos podrían no ser tan rápidos como crees. IEEE Trans. Computadoras 37 (2): 211-213 (1988)

Sorprendentemente, pocas personas entienden el impacto de las restricciones físicas en la computación paralela, a pesar de que estas restricciones se están volviendo más significativas con cada nueva generación de tecnología. En particular, si toma un ciclo de reloj de una CPU (lenta) de 1 GHz, eso le daría 1ns. La luz solo puede viajar 1 pie durante este tiempo, pero eso está en el vacío. En un chip de silicio con cables de cobre, ahora es imposible que la señal cruce el chip (incluso la mitad) en un ciclo de reloj.

Si la interconexión domina o no su aplicación particular, depende de la aplicación, los algoritmos, el hardware y la organización espacial de las unidades paralelas. Los servidores rápidos encargados de la reducción de números pueden no necesitar mucha comunicación y pueden ignorar el espacio físico. Por ejemplo, si está utilizando una búsqueda exhaustiva para descifrar una contraseña, puede enviar mensajes de operador entre los servidores 🙂

Existen otros límites para la computación paralela que la mayoría de las personas simplemente desconocen, como la completitud P de ciertos problemas combinatorios. Estos no dependen de la velocidad de interconexión, pero son específicos del problema.
Ver la reseña de este libro que escribí recientemente
http://web.eecs.umich.edu/~imark…

En cuanto al brillante futuro de la computación paralela, solo será parte de la caja de herramientas de ingeniería de todos. La magia en la computación paralela es algo exagerada.

La dificultad clave en la computación paralela es que la informática estándar no describe algoritmos para implementar un par de operaciones fundamentales de manera masivamente paralela en las topologías convencionales de la estructura de conmutación. Si su aplicación requiere una de estas operaciones, el paralelismo eficiente será problemático.

El primer problema son las estructuras indexadas y las redes superpuestas que pueden manejar eficientemente los tipos de datos de intervalo, por ejemplo, polígonos geoespaciales o restricciones de búsqueda. El segundo problema son los algoritmos de unión masivamente paralelizables, que son críticos para la manipulación de las relaciones entre entidades, por ejemplo, análisis de gráficos sociales o bases de datos semánticas. Si resuelve estos dos problemas, entonces sabemos cómo implementar un álgebra relacional recursiva completa y paralelizable sobre la cual construir sistemas paralelos, ampliando en gran medida el alcance de lo que las personas pueden paralelizar hoy.

Hay diferentes tipos de paralelismo. Kalyana describe uno, y en su solicitud seguiré su análisis.

Sin embargo, en la computación científica, el paralelismo a menudo surge de forma bastante natural: tiene grandes conjuntos de datos y se realiza un cálculo en cada punto de datos, o cada par de puntos, o cada par y algunos que están conectados a él. En otras palabras: toneladas de paralelismo. La mayoría de los científicos a mi alrededor no tienen problemas para mantener girando 10s de miles de núcleos, y el paralelismo surge de forma bastante natural de la aplicación. El problema aquí es principalmente el equilibrio de carga, la elección del algoritmo correcto y asegurarse de que la comunicación sea lo más eficiente posible. A menudo, el problema es principalmente de programación: el código más eficiente es también el más tedioso.

Recientemente hay un nuevo tipo de computación paralela, que involucra gráficos grandes como internet, facebook, netflix y otros. Aquí nuevamente hay toneladas de paralelismo de datos, pero ahora los datos no están estructurados y las conexiones no están estructuradas. Las arquitecturas de clúster tradicionales no funcionan bien en absoluto, y en cambio las personas han tenido éxito al usar máquinas algo exóticas como Cray MTA-2 o Cray XMT. El problema aquí es el acceso a datos irregulares de baja latencia. Esta área aún está abierta para la investigación.